[CRYPTO] tcrypt: Add test vectors for RIPEMD-256 and RIPEMD-320
[linux-block.git] / crypto / tcrypt.h
CommitLineData
1da177e4
LT
1/*
2 * Quick & dirty crypto testing module.
3 *
4 * This will only exist until we have a better testing mechanism
5 * (e.g. a char device).
6 *
7 * Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
8 * Copyright (c) 2002 Jean-Francois Dive <jef@linuxbe.org>
e3a4ea4f 9 * Copyright (c) 2007 Nokia Siemens Networks
1da177e4
LT
10 *
11 * This program is free software; you can redistribute it and/or modify it
12 * under the terms of the GNU General Public License as published by the Free
ef2736fc 13 * Software Foundation; either version 2 of the License, or (at your option)
1da177e4
LT
14 * any later version.
15 *
1da177e4
LT
16 */
17#ifndef _CRYPTO_TCRYPT_H
18#define _CRYPTO_TCRYPT_H
19
20#define MAX_DIGEST_SIZE 64
21#define MAX_TAP 8
22
23#define MAX_KEYLEN 56
24#define MAX_IVLEN 32
25
26struct hash_testvec {
06b42aa9 27 /* only used with keyed hash algorithms */
de224c30
SS
28 char *key;
29 char *plaintext;
30 char *digest;
ef2736fc 31 unsigned char tap[MAX_TAP];
06b42aa9
AN
32 unsigned char psize;
33 unsigned char np;
1da177e4
LT
34 unsigned char ksize;
35};
36
1da177e4 37struct cipher_testvec {
de224c30
SS
38 char *key;
39 char *iv;
40 char *input;
41 char *result;
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
1866
1867static struct cipher_testvec des_enc_tv_template[] = {
1868 { /* From Applied Cryptography */
de224c30 1869 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1870 .klen = 8,
de224c30 1871 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
1da177e4 1872 .ilen = 8,
de224c30 1873 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
1da177e4
LT
1874 .rlen = 8,
1875 }, { /* Same key, different plaintext block */
de224c30 1876 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1877 .klen = 8,
de224c30 1878 .input = "\x22\x33\x44\x55\x66\x77\x88\x99",
1da177e4 1879 .ilen = 8,
de224c30 1880 .result = "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
1da177e4
LT
1881 .rlen = 8,
1882 }, { /* Sbox test from NBS */
de224c30 1883 .key = "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57",
1da177e4 1884 .klen = 8,
de224c30 1885 .input = "\x01\xa1\xd6\xd0\x39\x77\x67\x42",
1da177e4 1886 .ilen = 8,
de224c30 1887 .result = "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
1da177e4
LT
1888 .rlen = 8,
1889 }, { /* Three blocks */
de224c30 1890 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1891 .klen = 8,
de224c30
SS
1892 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1893 "\x22\x33\x44\x55\x66\x77\x88\x99"
1894 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef",
1da177e4 1895 .ilen = 24,
de224c30
SS
1896 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1897 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1898 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90",
1da177e4
LT
1899 .rlen = 24,
1900 }, { /* Weak key */
1901 .fail = 1,
1902 .wk = 1,
de224c30 1903 .key = "\x01\x01\x01\x01\x01\x01\x01\x01",
1da177e4 1904 .klen = 8,
de224c30 1905 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
1da177e4 1906 .ilen = 8,
de224c30 1907 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
1da177e4
LT
1908 .rlen = 8,
1909 }, { /* Two blocks -- for testing encryption across pages */
de224c30 1910 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1911 .klen = 8,
de224c30
SS
1912 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1913 "\x22\x33\x44\x55\x66\x77\x88\x99",
1da177e4 1914 .ilen = 16,
de224c30
SS
1915 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1916 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
1da177e4
LT
1917 .rlen = 16,
1918 .np = 2,
1919 .tap = { 8, 8 }
1920 }, { /* Four blocks -- for testing encryption with chunking */
de224c30 1921 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1922 .klen = 8,
de224c30
SS
1923 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1924 "\x22\x33\x44\x55\x66\x77\x88\x99"
1925 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef"
1926 "\x22\x33\x44\x55\x66\x77\x88\x99",
1da177e4 1927 .ilen = 32,
de224c30
SS
1928 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1929 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1930 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90"
1931 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
1da177e4
LT
1932 .rlen = 32,
1933 .np = 3,
ef2736fc 1934 .tap = { 14, 10, 8 }
1da177e4 1935 }, {
de224c30 1936 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1937 .klen = 8,
de224c30
SS
1938 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1939 "\x22\x33\x44\x55\x66\x77\x88\x99"
1940 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef",
1da177e4 1941 .ilen = 24,
de224c30
SS
1942 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1943 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1944 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90",
1da177e4
LT
1945 .rlen = 24,
1946 .np = 4,
ef2736fc 1947 .tap = { 2, 1, 3, 18 }
1da177e4 1948 }, {
de224c30 1949 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1950 .klen = 8,
de224c30
SS
1951 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1952 "\x22\x33\x44\x55\x66\x77\x88\x99",
1da177e4 1953 .ilen = 16,
de224c30
SS
1954 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1955 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
1da177e4
LT
1956 .rlen = 16,
1957 .np = 5,
ef2736fc 1958 .tap = { 2, 2, 2, 2, 8 }
1da177e4 1959 }, {
de224c30 1960 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1961 .klen = 8,
de224c30 1962 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
1da177e4 1963 .ilen = 8,
de224c30 1964 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
1da177e4
LT
1965 .rlen = 8,
1966 .np = 8,
ef2736fc 1967 .tap = { 1, 1, 1, 1, 1, 1, 1, 1 }
1da177e4
LT
1968 },
1969};
1970
1971static struct cipher_testvec des_dec_tv_template[] = {
1972 { /* From Applied Cryptography */
de224c30 1973 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1974 .klen = 8,
de224c30 1975 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
1da177e4 1976 .ilen = 8,
de224c30 1977 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
1da177e4
LT
1978 .rlen = 8,
1979 }, { /* Sbox test from NBS */
de224c30 1980 .key = "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57",
1da177e4 1981 .klen = 8,
de224c30 1982 .input = "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
1da177e4 1983 .ilen = 8,
de224c30 1984 .result = "\x01\xa1\xd6\xd0\x39\x77\x67\x42",
1da177e4
LT
1985 .rlen = 8,
1986 }, { /* Two blocks, for chunking test */
de224c30 1987 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1988 .klen = 8,
de224c30
SS
1989 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1990 "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
1da177e4 1991 .ilen = 16,
de224c30
SS
1992 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1993 "\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
1da177e4
LT
1994 .rlen = 16,
1995 .np = 2,
1996 .tap = { 8, 8 }
1997 }, {
de224c30 1998 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1999 .klen = 8,
de224c30
SS
2000 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
2001 "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
1da177e4 2002 .ilen = 16,
de224c30
SS
2003 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
2004 "\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
1da177e4
LT
2005 .rlen = 16,
2006 .np = 3,
2007 .tap = { 3, 12, 1 }
2008 },
2009};
2010
2011static struct cipher_testvec des_cbc_enc_tv_template[] = {
2012 { /* From OpenSSL */
de224c30 2013 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2014 .klen = 8,
de224c30
SS
2015 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
2016 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
2017 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
2018 "\x68\x65\x20\x74\x69\x6d\x65\x20",
1da177e4 2019 .ilen = 24,
de224c30
SS
2020 .result = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
2021 "\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb"
2022 "\x46\x8e\x91\x15\x78\x88\xba\x68",
1da177e4
LT
2023 .rlen = 24,
2024 }, { /* FIPS Pub 81 */
de224c30 2025 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2026 .klen = 8,
de224c30
SS
2027 .iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
2028 .input = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
1da177e4 2029 .ilen = 8,
de224c30 2030 .result = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
1da177e4
LT
2031 .rlen = 8,
2032 }, {
de224c30 2033 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2034 .klen = 8,
de224c30
SS
2035 .iv = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
2036 .input = "\x68\x65\x20\x74\x69\x6d\x65\x20",
1da177e4 2037 .ilen = 8,
de224c30 2038 .result = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1da177e4 2039 .rlen = 8,
ef2736fc 2040 }, {
de224c30 2041 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2042 .klen = 8,
de224c30
SS
2043 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
2044 .input = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
1da177e4 2045 .ilen = 8,
de224c30 2046 .result = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
1da177e4 2047 .rlen = 8,
ef2736fc 2048 }, { /* Copy of openssl vector for chunk testing */
1da177e4 2049 /* From OpenSSL */
de224c30 2050 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2051 .klen = 8,
de224c30
SS
2052 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
2053 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
2054 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
2055 "\x68\x65\x20\x74\x69\x6d\x65\x20",
1da177e4 2056 .ilen = 24,
de224c30
SS
2057 .result = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
2058 "\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb"
2059 "\x46\x8e\x91\x15\x78\x88\xba\x68",
1da177e4
LT
2060 .rlen = 24,
2061 .np = 2,
2062 .tap = { 13, 11 }
2063 },
2064};
2065
2066static struct cipher_testvec des_cbc_dec_tv_template[] = {
2067 { /* FIPS Pub 81 */
de224c30 2068 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2069 .klen = 8,
de224c30
SS
2070 .iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
2071 .input = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
1da177e4 2072 .ilen = 8,
de224c30 2073 .result = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
1da177e4
LT
2074 .rlen = 8,
2075 }, {
de224c30 2076 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2077 .klen = 8,
de224c30
SS
2078 .iv = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
2079 .input = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1da177e4 2080 .ilen = 8,
de224c30 2081 .result = "\x68\x65\x20\x74\x69\x6d\x65\x20",
1da177e4
LT
2082 .rlen = 8,
2083 }, {
de224c30 2084 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2085 .klen = 8,
de224c30
SS
2086 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
2087 .input = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
1da177e4 2088 .ilen = 8,
de224c30 2089 .result = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
1da177e4 2090 .rlen = 8,
ef2736fc 2091 }, { /* Copy of above, for chunk testing */
de224c30 2092 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2093 .klen = 8,
de224c30
SS
2094 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
2095 .input = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
1da177e4 2096 .ilen = 8,
de224c30 2097 .result = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
1da177e4
LT
2098 .rlen = 8,
2099 .np = 2,
2100 .tap = { 4, 4 }
2101 },
2102};
2103
2104/*
2105 * We really need some more test vectors, especially for DES3 CBC.
2106 */
2107static struct cipher_testvec des3_ede_enc_tv_template[] = {
2108 { /* These are from openssl */
de224c30
SS
2109 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2110 "\x55\x55\x55\x55\x55\x55\x55\x55"
2111 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 2112 .klen = 24,
de224c30 2113 .input = "\x73\x6f\x6d\x65\x64\x61\x74\x61",
1da177e4 2114 .ilen = 8,
de224c30 2115 .result = "\x18\xd7\x48\xe5\x63\x62\x05\x72",
1da177e4
LT
2116 .rlen = 8,
2117 }, {
de224c30
SS
2118 .key = "\x03\x52\x02\x07\x67\x20\x82\x17"
2119 "\x86\x02\x87\x66\x59\x08\x21\x98"
2120 "\x64\x05\x6a\xbd\xfe\xa9\x34\x57",
1da177e4 2121 .klen = 24,
de224c30 2122 .input = "\x73\x71\x75\x69\x67\x67\x6c\x65",
1da177e4 2123 .ilen = 8,
de224c30 2124 .result = "\xc0\x7d\x2a\x0f\xa5\x66\xfa\x30",
1da177e4
LT
2125 .rlen = 8,
2126 }, {
de224c30
SS
2127 .key = "\x10\x46\x10\x34\x89\x98\x80\x20"
2128 "\x91\x07\xd0\x15\x89\x19\x01\x01"
2129 "\x19\x07\x92\x10\x98\x1a\x01\x01",
1da177e4 2130 .klen = 24,
de224c30 2131 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2132 .ilen = 8,
de224c30 2133 .result = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b",
1da177e4
LT
2134 .rlen = 8,
2135 },
2136};
2137
2138static struct cipher_testvec des3_ede_dec_tv_template[] = {
2139 { /* These are from openssl */
de224c30
SS
2140 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2141 "\x55\x55\x55\x55\x55\x55\x55\x55"
2142 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 2143 .klen = 24,
de224c30 2144 .input = "\x18\xd7\x48\xe5\x63\x62\x05\x72",
1da177e4 2145 .ilen = 8,
de224c30 2146 .result = "\x73\x6f\x6d\x65\x64\x61\x74\x61",
1da177e4
LT
2147 .rlen = 8,
2148 }, {
de224c30
SS
2149 .key = "\x03\x52\x02\x07\x67\x20\x82\x17"
2150 "\x86\x02\x87\x66\x59\x08\x21\x98"
2151 "\x64\x05\x6a\xbd\xfe\xa9\x34\x57",
1da177e4 2152 .klen = 24,
de224c30 2153 .input = "\xc0\x7d\x2a\x0f\xa5\x66\xfa\x30",
1da177e4 2154 .ilen = 8,
de224c30 2155 .result = "\x73\x71\x75\x69\x67\x67\x6c\x65",
1da177e4
LT
2156 .rlen = 8,
2157 }, {
de224c30
SS
2158 .key = "\x10\x46\x10\x34\x89\x98\x80\x20"
2159 "\x91\x07\xd0\x15\x89\x19\x01\x01"
2160 "\x19\x07\x92\x10\x98\x1a\x01\x01",
1da177e4 2161 .klen = 24,
de224c30 2162 .input = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b",
1da177e4 2163 .ilen = 8,
de224c30 2164 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
2165 .rlen = 8,
2166 },
2167};
2168
2169/*
2170 * Blowfish test vectors.
2171 */
2172#define BF_ENC_TEST_VECTORS 6
2173#define BF_DEC_TEST_VECTORS 6
2174#define BF_CBC_ENC_TEST_VECTORS 1
2175#define BF_CBC_DEC_TEST_VECTORS 1
2176
2177static struct cipher_testvec bf_enc_tv_template[] = {
2178 { /* DES test vectors from OpenSSL */
de224c30 2179 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2180 .klen = 8,
de224c30 2181 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2182 .ilen = 8,
de224c30 2183 .result = "\x4e\xf9\x97\x45\x61\x98\xdd\x78",
1da177e4
LT
2184 .rlen = 8,
2185 }, {
de224c30 2186 .key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
1da177e4 2187 .klen = 8,
de224c30 2188 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 2189 .ilen = 8,
de224c30 2190 .result = "\xa7\x90\x79\x51\x08\xea\x3c\xae",
1da177e4
LT
2191 .rlen = 8,
2192 }, {
de224c30 2193 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
1da177e4 2194 .klen = 8,
de224c30 2195 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 2196 .ilen = 8,
de224c30 2197 .result = "\xe8\x7a\x24\x4e\x2c\xc8\x5e\x82",
1da177e4 2198 .rlen = 8,
ef2736fc 2199 }, { /* Vary the keylength... */
de224c30
SS
2200 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2201 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f",
1da177e4 2202 .klen = 16,
de224c30 2203 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 2204 .ilen = 8,
de224c30 2205 .result = "\x93\x14\x28\x87\xee\x3b\xe1\x5c",
1da177e4
LT
2206 .rlen = 8,
2207 }, {
de224c30
SS
2208 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2209 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
2210 "\x00\x11\x22\x33\x44",
1da177e4 2211 .klen = 21,
de224c30 2212 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 2213 .ilen = 8,
de224c30 2214 .result = "\xe6\xf5\x1e\xd7\x9b\x9d\xb2\x1f",
1da177e4
LT
2215 .rlen = 8,
2216 }, { /* Generated with bf488 */
de224c30
SS
2217 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2218 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
2219 "\x00\x11\x22\x33\x44\x55\x66\x77"
2220 "\x04\x68\x91\x04\xc2\xfd\x3b\x2f"
2221 "\x58\x40\x23\x64\x1a\xba\x61\x76"
2222 "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e"
2223 "\xff\xff\xff\xff\xff\xff\xff\xff",
1da177e4 2224 .klen = 56,
de224c30 2225 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 2226 .ilen = 8,
de224c30 2227 .result = "\xc0\x45\x04\x01\x2e\x4e\x1f\x53",
1da177e4
LT
2228 .rlen = 8,
2229 },
2230};
2231
2232static struct cipher_testvec bf_dec_tv_template[] = {
2233 { /* DES test vectors from OpenSSL */
de224c30 2234 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2235 .klen = 8,
de224c30 2236 .input = "\x4e\xf9\x97\x45\x61\x98\xdd\x78",
1da177e4 2237 .ilen = 8,
de224c30 2238 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
2239 .rlen = 8,
2240 }, {
de224c30 2241 .key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
1da177e4 2242 .klen = 8,
de224c30 2243 .input = "\xa7\x90\x79\x51\x08\xea\x3c\xae",
1da177e4 2244 .ilen = 8,
de224c30 2245 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
2246 .rlen = 8,
2247 }, {
de224c30 2248 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
1da177e4 2249 .klen = 8,
de224c30 2250 .input = "\xe8\x7a\x24\x4e\x2c\xc8\x5e\x82",
1da177e4 2251 .ilen = 8,
de224c30 2252 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 2253 .rlen = 8,
ef2736fc 2254 }, { /* Vary the keylength... */
de224c30
SS
2255 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2256 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f",
1da177e4 2257 .klen = 16,
de224c30 2258 .input = "\x93\x14\x28\x87\xee\x3b\xe1\x5c",
1da177e4 2259 .ilen = 8,
de224c30 2260 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4
LT
2261 .rlen = 8,
2262 }, {
de224c30
SS
2263 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2264 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
2265 "\x00\x11\x22\x33\x44",
1da177e4 2266 .klen = 21,
de224c30 2267 .input = "\xe6\xf5\x1e\xd7\x9b\x9d\xb2\x1f",
1da177e4 2268 .ilen = 8,
de224c30 2269 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4
LT
2270 .rlen = 8,
2271 }, { /* Generated with bf488, using OpenSSL, Libgcrypt and Nettle */
de224c30
SS
2272 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2273 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
2274 "\x00\x11\x22\x33\x44\x55\x66\x77"
2275 "\x04\x68\x91\x04\xc2\xfd\x3b\x2f"
2276 "\x58\x40\x23\x64\x1a\xba\x61\x76"
2277 "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e"
2278 "\xff\xff\xff\xff\xff\xff\xff\xff",
1da177e4 2279 .klen = 56,
de224c30 2280 .input = "\xc0\x45\x04\x01\x2e\x4e\x1f\x53",
1da177e4 2281 .ilen = 8,
de224c30 2282 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4
LT
2283 .rlen = 8,
2284 },
2285};
2286
2287static struct cipher_testvec bf_cbc_enc_tv_template[] = {
2288 { /* From OpenSSL */
de224c30
SS
2289 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2290 "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
1da177e4 2291 .klen = 16,
de224c30
SS
2292 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
2293 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
2294 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
2295 "\x68\x65\x20\x74\x69\x6d\x65\x20"
2296 "\x66\x6f\x72\x20\x00\x00\x00\x00",
1da177e4 2297 .ilen = 32,
de224c30
SS
2298 .result = "\x6b\x77\xb4\xd6\x30\x06\xde\xe6"
2299 "\x05\xb1\x56\xe2\x74\x03\x97\x93"
2300 "\x58\xde\xb9\xe7\x15\x46\x16\xd9"
2301 "\x59\xf1\x65\x2b\xd5\xff\x92\xcc",
1da177e4
LT
2302 .rlen = 32,
2303 },
2304};
2305
2306static struct cipher_testvec bf_cbc_dec_tv_template[] = {
2307 { /* From OpenSSL */
de224c30
SS
2308 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2309 "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
1da177e4 2310 .klen = 16,
de224c30
SS
2311 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
2312 .input = "\x6b\x77\xb4\xd6\x30\x06\xde\xe6"
2313 "\x05\xb1\x56\xe2\x74\x03\x97\x93"
2314 "\x58\xde\xb9\xe7\x15\x46\x16\xd9"
2315 "\x59\xf1\x65\x2b\xd5\xff\x92\xcc",
1da177e4 2316 .ilen = 32,
de224c30
SS
2317 .result = "\x37\x36\x35\x34\x33\x32\x31\x20"
2318 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
2319 "\x68\x65\x20\x74\x69\x6d\x65\x20"
2320 "\x66\x6f\x72\x20\x00\x00\x00\x00",
1da177e4
LT
2321 .rlen = 32,
2322 },
2323};
2324
2325/*
2326 * Twofish test vectors.
2327 */
2328#define TF_ENC_TEST_VECTORS 3
2329#define TF_DEC_TEST_VECTORS 3
2330#define TF_CBC_ENC_TEST_VECTORS 4
2331#define TF_CBC_DEC_TEST_VECTORS 4
2332
2333static struct cipher_testvec tf_enc_tv_template[] = {
2334 {
de224c30 2335 .key = zeroed_string,
1da177e4 2336 .klen = 16,
de224c30 2337 .input = zeroed_string,
1da177e4 2338 .ilen = 16,
de224c30
SS
2339 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2340 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1da177e4
LT
2341 .rlen = 16,
2342 }, {
de224c30
SS
2343 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2344 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
2345 "\x00\x11\x22\x33\x44\x55\x66\x77",
1da177e4 2346 .klen = 24,
de224c30 2347 .input = zeroed_string,
1da177e4 2348 .ilen = 16,
de224c30
SS
2349 .result = "\xcf\xd1\xd2\xe5\xa9\xbe\x9c\xdf"
2350 "\x50\x1f\x13\xb8\x92\xbd\x22\x48",
1da177e4
LT
2351 .rlen = 16,
2352 }, {
de224c30
SS
2353 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2354 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
2355 "\x00\x11\x22\x33\x44\x55\x66\x77"
2356 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4 2357 .klen = 32,
de224c30 2358 .input = zeroed_string,
1da177e4 2359 .ilen = 16,
de224c30
SS
2360 .result = "\x37\x52\x7b\xe0\x05\x23\x34\xb8"
2361 "\x9f\x0c\xfc\xca\xe8\x7c\xfa\x20",
1da177e4
LT
2362 .rlen = 16,
2363 },
2364};
2365
2366static struct cipher_testvec tf_dec_tv_template[] = {
2367 {
de224c30 2368 .key = zeroed_string,
1da177e4 2369 .klen = 16,
de224c30
SS
2370 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2371 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1da177e4 2372 .ilen = 16,
de224c30 2373 .result = zeroed_string,
1da177e4
LT
2374 .rlen = 16,
2375 }, {
de224c30
SS
2376 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2377 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
2378 "\x00\x11\x22\x33\x44\x55\x66\x77",
1da177e4 2379 .klen = 24,
de224c30
SS
2380 .input = "\xcf\xd1\xd2\xe5\xa9\xbe\x9c\xdf"
2381 "\x50\x1f\x13\xb8\x92\xbd\x22\x48",
1da177e4 2382 .ilen = 16,
de224c30 2383 .result = zeroed_string,
1da177e4
LT
2384 .rlen = 16,
2385 }, {
de224c30
SS
2386 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2387 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
2388 "\x00\x11\x22\x33\x44\x55\x66\x77"
2389 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4 2390 .klen = 32,
de224c30
SS
2391 .input = "\x37\x52\x7b\xe0\x05\x23\x34\xb8"
2392 "\x9f\x0c\xfc\xca\xe8\x7c\xfa\x20",
1da177e4 2393 .ilen = 16,
de224c30 2394 .result = zeroed_string,
1da177e4
LT
2395 .rlen = 16,
2396 },
2397};
2398
2399static struct cipher_testvec tf_cbc_enc_tv_template[] = {
2400 { /* Generated with Nettle */
de224c30 2401 .key = zeroed_string,
1da177e4 2402 .klen = 16,
de224c30
SS
2403 .iv = zeroed_string,
2404 .input = zeroed_string,
1da177e4 2405 .ilen = 16,
de224c30
SS
2406 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2407 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1da177e4
LT
2408 .rlen = 16,
2409 }, {
de224c30 2410 .key = zeroed_string,
1da177e4 2411 .klen = 16,
de224c30
SS
2412 .iv = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2413 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
2414 .input = zeroed_string,
1da177e4 2415 .ilen = 16,
de224c30
SS
2416 .result = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2417 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
1da177e4
LT
2418 .rlen = 16,
2419 }, {
de224c30 2420 .key = zeroed_string,
1da177e4 2421 .klen = 16,
de224c30
SS
2422 .iv = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2423 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
2424 .input = zeroed_string,
1da177e4 2425 .ilen = 16,
de224c30
SS
2426 .result = "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2427 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
1da177e4
LT
2428 .rlen = 16,
2429 }, {
de224c30 2430 .key = zeroed_string,
1da177e4 2431 .klen = 16,
de224c30
SS
2432 .iv = zeroed_string,
2433 .input = zeroed_string,
1da177e4 2434 .ilen = 48,
de224c30
SS
2435 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2436 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a"
2437 "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2438 "\x86\xcb\x08\x6b\x78\x9f\x54\x19"
2439 "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2440 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
1da177e4
LT
2441 .rlen = 48,
2442 },
2443};
2444
2445static struct cipher_testvec tf_cbc_dec_tv_template[] = {
2446 { /* Reverse of the first four above */
de224c30 2447 .key = zeroed_string,
1da177e4 2448 .klen = 16,
de224c30
SS
2449 .iv = zeroed_string,
2450 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2451 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1da177e4 2452 .ilen = 16,
de224c30 2453 .result = zeroed_string,
1da177e4
LT
2454 .rlen = 16,
2455 }, {
de224c30 2456 .key = zeroed_string,
1da177e4 2457 .klen = 16,
de224c30
SS
2458 .iv = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2459 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
2460 .input = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2461 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
1da177e4 2462 .ilen = 16,
de224c30 2463 .result = zeroed_string,
1da177e4
LT
2464 .rlen = 16,
2465 }, {
de224c30 2466 .key = zeroed_string,
1da177e4 2467 .klen = 16,
de224c30
SS
2468 .iv = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2469 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
2470 .input = "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2471 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
1da177e4 2472 .ilen = 16,
de224c30 2473 .result = zeroed_string,
1da177e4
LT
2474 .rlen = 16,
2475 }, {
de224c30 2476 .key = zeroed_string,
1da177e4 2477 .klen = 16,
de224c30
SS
2478 .iv = zeroed_string,
2479 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2480 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a"
2481 "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2482 "\x86\xcb\x08\x6b\x78\x9f\x54\x19"
2483 "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2484 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
1da177e4 2485 .ilen = 48,
de224c30 2486 .result = zeroed_string,
1da177e4
LT
2487 .rlen = 48,
2488 },
2489};
2490
2491/*
2492 * Serpent test vectors. These are backwards because Serpent writes
2493 * octet sequences in right-to-left mode.
2494 */
2495#define SERPENT_ENC_TEST_VECTORS 4
2496#define SERPENT_DEC_TEST_VECTORS 4
2497
2498#define TNEPRES_ENC_TEST_VECTORS 4
2499#define TNEPRES_DEC_TEST_VECTORS 4
2500
ef2736fc 2501static struct cipher_testvec serpent_enc_tv_template[] = {
1da177e4 2502 {
de224c30
SS
2503 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2504 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2505 .ilen = 16,
de224c30
SS
2506 .result = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
2507 "\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
1da177e4
LT
2508 .rlen = 16,
2509 }, {
de224c30
SS
2510 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2511 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2512 .klen = 16,
de224c30
SS
2513 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2514 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2515 .ilen = 16,
de224c30
SS
2516 .result = "\x4c\x7d\x8a\x32\x80\x72\xa2\x2c"
2517 "\x82\x3e\x4a\x1f\x3a\xcd\xa1\x6d",
1da177e4
LT
2518 .rlen = 16,
2519 }, {
de224c30
SS
2520 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2521 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2522 "\x10\x11\x12\x13\x14\x15\x16\x17"
2523 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1da177e4 2524 .klen = 32,
de224c30
SS
2525 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2526 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2527 .ilen = 16,
de224c30
SS
2528 .result = "\xde\x26\x9f\xf8\x33\xe4\x32\xb8"
2529 "\x5b\x2e\x88\xd2\x70\x1c\xe7\x5c",
1da177e4
LT
2530 .rlen = 16,
2531 }, {
de224c30 2532 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
1da177e4 2533 .klen = 16,
de224c30 2534 .input = zeroed_string,
1da177e4 2535 .ilen = 16,
de224c30
SS
2536 .result = "\xdd\xd2\x6b\x98\xa5\xff\xd8\x2c"
2537 "\x05\x34\x5a\x9d\xad\xbf\xaf\x49",
1da177e4
LT
2538 .rlen = 16,
2539 },
2540};
2541
ef2736fc 2542static struct cipher_testvec tnepres_enc_tv_template[] = {
1da177e4 2543 { /* KeySize=128, PT=0, I=1 */
de224c30
SS
2544 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2545 "\x00\x00\x00\x00\x00\x00\x00\x00",
2546 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2547 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
2548 .klen = 16,
2549 .ilen = 16,
de224c30
SS
2550 .result = "\x49\xaf\xbf\xad\x9d\x5a\x34\x05"
2551 "\x2c\xd8\xff\xa5\x98\x6b\xd2\xdd",
1da177e4
LT
2552 .rlen = 16,
2553 }, { /* KeySize=192, PT=0, I=1 */
de224c30
SS
2554 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2555 "\x00\x00\x00\x00\x00\x00\x00\x00"
2556 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2557 .klen = 24,
de224c30
SS
2558 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2559 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2560 .ilen = 16,
de224c30
SS
2561 .result = "\xe7\x8e\x54\x02\xc7\x19\x55\x68"
2562 "\xac\x36\x78\xf7\xa3\xf6\x0c\x66",
1da177e4
LT
2563 .rlen = 16,
2564 }, { /* KeySize=256, PT=0, I=1 */
de224c30
SS
2565 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2566 "\x00\x00\x00\x00\x00\x00\x00\x00"
2567 "\x00\x00\x00\x00\x00\x00\x00\x00"
2568 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2569 .klen = 32,
de224c30
SS
2570 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2571 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2572 .ilen = 16,
de224c30
SS
2573 .result = "\xab\xed\x96\xe7\x66\xbf\x28\xcb"
2574 "\xc0\xeb\xd2\x1a\x82\xef\x08\x19",
1da177e4
LT
2575 .rlen = 16,
2576 }, { /* KeySize=256, I=257 */
de224c30
SS
2577 .key = "\x1f\x1e\x1d\x1c\x1b\x1a\x19\x18"
2578 "\x17\x16\x15\x14\x13\x12\x11\x10"
2579 "\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08"
2580 "\x07\x06\x05\x04\x03\x02\x01\x00",
1da177e4 2581 .klen = 32,
de224c30
SS
2582 .input = "\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08"
2583 "\x07\x06\x05\x04\x03\x02\x01\x00",
1da177e4 2584 .ilen = 16,
de224c30
SS
2585 .result = "\x5c\xe7\x1c\x70\xd2\x88\x2e\x5b"
2586 "\xb8\x32\xe4\x33\xf8\x9f\x26\xde",
1da177e4
LT
2587 .rlen = 16,
2588 },
2589};
2590
2591
ef2736fc 2592static struct cipher_testvec serpent_dec_tv_template[] = {
1da177e4 2593 {
de224c30
SS
2594 .input = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
2595 "\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
1da177e4 2596 .ilen = 16,
de224c30
SS
2597 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2598 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2599 .rlen = 16,
2600 }, {
de224c30
SS
2601 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2602 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2603 .klen = 16,
de224c30
SS
2604 .input = "\x4c\x7d\x8a\x32\x80\x72\xa2\x2c"
2605 "\x82\x3e\x4a\x1f\x3a\xcd\xa1\x6d",
1da177e4 2606 .ilen = 16,
de224c30
SS
2607 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2608 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2609 .rlen = 16,
2610 }, {
de224c30
SS
2611 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2612 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2613 "\x10\x11\x12\x13\x14\x15\x16\x17"
2614 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1da177e4 2615 .klen = 32,
de224c30
SS
2616 .input = "\xde\x26\x9f\xf8\x33\xe4\x32\xb8"
2617 "\x5b\x2e\x88\xd2\x70\x1c\xe7\x5c",
1da177e4 2618 .ilen = 16,
de224c30
SS
2619 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2620 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2621 .rlen = 16,
2622 }, {
de224c30 2623 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
1da177e4 2624 .klen = 16,
de224c30
SS
2625 .input = "\xdd\xd2\x6b\x98\xa5\xff\xd8\x2c"
2626 "\x05\x34\x5a\x9d\xad\xbf\xaf\x49",
1da177e4 2627 .ilen = 16,
de224c30 2628 .result = zeroed_string,
1da177e4
LT
2629 .rlen = 16,
2630 },
2631};
2632
ef2736fc 2633static struct cipher_testvec tnepres_dec_tv_template[] = {
1da177e4 2634 {
de224c30
SS
2635 .input = "\x41\xcc\x6b\x31\x59\x31\x45\x97"
2636 "\x6d\x6f\xbb\x38\x4b\x37\x21\x28",
1da177e4 2637 .ilen = 16,
de224c30
SS
2638 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2639 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2640 .rlen = 16,
2641 }, {
de224c30
SS
2642 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2643 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2644 .klen = 16,
de224c30
SS
2645 .input = "\xea\xf4\xd7\xfc\xd8\x01\x34\x47"
2646 "\x81\x45\x0b\xfa\x0c\xd6\xad\x6e",
1da177e4 2647 .ilen = 16,
de224c30
SS
2648 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2649 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2650 .rlen = 16,
2651 }, {
de224c30
SS
2652 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2653 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2654 "\x10\x11\x12\x13\x14\x15\x16\x17"
2655 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1da177e4 2656 .klen = 32,
de224c30
SS
2657 .input = "\x64\xa9\x1a\x37\xed\x9f\xe7\x49"
2658 "\xa8\x4e\x76\xd6\xf5\x0d\x78\xee",
1da177e4 2659 .ilen = 16,
de224c30
SS
2660 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2661 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2662 .rlen = 16,
2663 }, { /* KeySize=128, I=121 */
de224c30 2664 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
1da177e4 2665 .klen = 16,
de224c30
SS
2666 .input = "\x3d\xda\xbf\xc0\x06\xda\xab\x06"
2667 "\x46\x2a\xf4\xef\x81\x54\x4e\x26",
1da177e4 2668 .ilen = 16,
de224c30 2669 .result = zeroed_string,
1da177e4
LT
2670 .rlen = 16,
2671 },
2672};
2673
2674
2675/* Cast6 test vectors from RFC 2612 */
2676#define CAST6_ENC_TEST_VECTORS 3
2677#define CAST6_DEC_TEST_VECTORS 3
2678
ef2736fc 2679static struct cipher_testvec cast6_enc_tv_template[] = {
1da177e4 2680 {
de224c30
SS
2681 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2682 "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
1da177e4 2683 .klen = 16,
de224c30 2684 .input = zeroed_string,
1da177e4 2685 .ilen = 16,
de224c30
SS
2686 .result = "\xc8\x42\xa0\x89\x72\xb4\x3d\x20"
2687 "\x83\x6c\x91\xd1\xb7\x53\x0f\x6b",
1da177e4
LT
2688 .rlen = 16,
2689 }, {
de224c30
SS
2690 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2691 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2692 "\xba\xc7\x7a\x77\x17\x94\x28\x63",
1da177e4 2693 .klen = 24,
de224c30 2694 .input = zeroed_string,
1da177e4 2695 .ilen = 16,
de224c30
SS
2696 .result = "\x1b\x38\x6c\x02\x10\xdc\xad\xcb"
2697 "\xdd\x0e\x41\xaa\x08\xa7\xa7\xe8",
1da177e4
LT
2698 .rlen = 16,
2699 }, {
de224c30
SS
2700 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2701 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2702 "\x8d\x7c\x47\xce\x26\x49\x08\x46"
2703 "\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04",
1da177e4 2704 .klen = 32,
de224c30 2705 .input = zeroed_string,
1da177e4 2706 .ilen = 16,
de224c30
SS
2707 .result = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
2708 "\xc9\x87\x01\x36\x55\x33\x17\xfa",
1da177e4
LT
2709 .rlen = 16,
2710 },
2711};
2712
ef2736fc 2713static struct cipher_testvec cast6_dec_tv_template[] = {
1da177e4 2714 {
de224c30
SS
2715 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2716 "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
1da177e4 2717 .klen = 16,
de224c30
SS
2718 .input = "\xc8\x42\xa0\x89\x72\xb4\x3d\x20"
2719 "\x83\x6c\x91\xd1\xb7\x53\x0f\x6b",
1da177e4 2720 .ilen = 16,
de224c30 2721 .result = zeroed_string,
1da177e4
LT
2722 .rlen = 16,
2723 }, {
de224c30
SS
2724 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2725 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2726 "\xba\xc7\x7a\x77\x17\x94\x28\x63",
1da177e4 2727 .klen = 24,
de224c30
SS
2728 .input = "\x1b\x38\x6c\x02\x10\xdc\xad\xcb"
2729 "\xdd\x0e\x41\xaa\x08\xa7\xa7\xe8",
1da177e4 2730 .ilen = 16,
de224c30 2731 .result = zeroed_string,
1da177e4
LT
2732 .rlen = 16,
2733 }, {
de224c30
SS
2734 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2735 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2736 "\x8d\x7c\x47\xce\x26\x49\x08\x46"
2737 "\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04",
1da177e4 2738 .klen = 32,
de224c30
SS
2739 .input = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
2740 "\xc9\x87\x01\x36\x55\x33\x17\xfa",
1da177e4 2741 .ilen = 16,
de224c30 2742 .result = zeroed_string,
1da177e4
LT
2743 .rlen = 16,
2744 },
2745};
2746
2747
2748/*
2749 * AES test vectors.
2750 */
2751#define AES_ENC_TEST_VECTORS 3
2752#define AES_DEC_TEST_VECTORS 3
9617d6ef
JG
2753#define AES_CBC_ENC_TEST_VECTORS 4
2754#define AES_CBC_DEC_TEST_VECTORS 4
f3d1044c
RS
2755#define AES_LRW_ENC_TEST_VECTORS 8
2756#define AES_LRW_DEC_TEST_VECTORS 8
f19f5111
RS
2757#define AES_XTS_ENC_TEST_VECTORS 4
2758#define AES_XTS_DEC_TEST_VECTORS 4
a773edb3 2759#define AES_CTR_ENC_TEST_VECTORS 7
23e353c8 2760#define AES_CTR_DEC_TEST_VECTORS 6
28db8e3e
MH
2761#define AES_GCM_ENC_TEST_VECTORS 9
2762#define AES_GCM_DEC_TEST_VECTORS 8
93cc74e0
JL
2763#define AES_CCM_ENC_TEST_VECTORS 7
2764#define AES_CCM_DEC_TEST_VECTORS 7
1da177e4 2765
ef2736fc 2766static struct cipher_testvec aes_enc_tv_template[] = {
1da177e4 2767 { /* From FIPS-197 */
de224c30
SS
2768 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2769 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2770 .klen = 16,
de224c30
SS
2771 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2772 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4 2773 .ilen = 16,
de224c30
SS
2774 .result = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
2775 "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
1da177e4
LT
2776 .rlen = 16,
2777 }, {
de224c30
SS
2778 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2779 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2780 "\x10\x11\x12\x13\x14\x15\x16\x17",
1da177e4 2781 .klen = 24,
de224c30
SS
2782 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2783 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4 2784 .ilen = 16,
de224c30
SS
2785 .result = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
2786 "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
1da177e4
LT
2787 .rlen = 16,
2788 }, {
de224c30
SS
2789 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2790 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2791 "\x10\x11\x12\x13\x14\x15\x16\x17"
2792 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1da177e4 2793 .klen = 32,
de224c30
SS
2794 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2795 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4 2796 .ilen = 16,
de224c30
SS
2797 .result = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
2798 "\xea\xfc\x49\x90\x4b\x49\x60\x89",
1da177e4
LT
2799 .rlen = 16,
2800 },
2801};
2802
ef2736fc 2803static struct cipher_testvec aes_dec_tv_template[] = {
1da177e4 2804 { /* From FIPS-197 */
de224c30
SS
2805 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2806 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2807 .klen = 16,
de224c30
SS
2808 .input = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
2809 "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
1da177e4 2810 .ilen = 16,
de224c30
SS
2811 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2812 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4
LT
2813 .rlen = 16,
2814 }, {
de224c30
SS
2815 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2816 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2817 "\x10\x11\x12\x13\x14\x15\x16\x17",
1da177e4 2818 .klen = 24,
de224c30
SS
2819 .input = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
2820 "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
1da177e4 2821 .ilen = 16,
de224c30
SS
2822 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2823 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4
LT
2824 .rlen = 16,
2825 }, {
de224c30
SS
2826 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2827 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2828 "\x10\x11\x12\x13\x14\x15\x16\x17"
2829 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1da177e4 2830 .klen = 32,
de224c30
SS
2831 .input = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
2832 "\xea\xfc\x49\x90\x4b\x49\x60\x89",
1da177e4 2833 .ilen = 16,
de224c30
SS
2834 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2835 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4
LT
2836 .rlen = 16,
2837 },
2838};
2839
05f29fcd
JG
2840static struct cipher_testvec aes_cbc_enc_tv_template[] = {
2841 { /* From RFC 3602 */
de224c30
SS
2842 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
2843 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
05f29fcd 2844 .klen = 16,
de224c30
SS
2845 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
2846 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
2847 .input = "Single block msg",
05f29fcd 2848 .ilen = 16,
de224c30
SS
2849 .result = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
2850 "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
05f29fcd
JG
2851 .rlen = 16,
2852 }, {
de224c30
SS
2853 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
2854 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
05f29fcd 2855 .klen = 16,
de224c30
SS
2856 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
2857 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
2858 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2859 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2860 "\x10\x11\x12\x13\x14\x15\x16\x17"
2861 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
05f29fcd 2862 .ilen = 32,
de224c30
SS
2863 .result = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
2864 "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
2865 "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
2866 "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
05f29fcd 2867 .rlen = 32,
9617d6ef 2868 }, { /* From NIST SP800-38A */
de224c30
SS
2869 .key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
2870 "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
2871 "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
9617d6ef 2872 .klen = 24,
de224c30
SS
2873 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2874 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2875 .input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2876 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2877 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2878 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2879 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2880 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2881 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2882 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
9617d6ef 2883 .ilen = 64,
de224c30
SS
2884 .result = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
2885 "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
2886 "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
2887 "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
2888 "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
2889 "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
2890 "\x08\xb0\xe2\x79\x88\x59\x88\x81"
2891 "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
9617d6ef
JG
2892 .rlen = 64,
2893 }, {
de224c30
SS
2894 .key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
2895 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
2896 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
2897 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
9617d6ef 2898 .klen = 32,
de224c30
SS
2899 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2900 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2901 .input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2902 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2903 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2904 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2905 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2906 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2907 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2908 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
9617d6ef 2909 .ilen = 64,
de224c30
SS
2910 .result = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
2911 "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
2912 "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
2913 "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
2914 "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
2915 "\xa5\x30\xe2\x63\x04\x23\x14\x61"
2916 "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
2917 "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
9617d6ef 2918 .rlen = 64,
05f29fcd
JG
2919 },
2920};
2921
2922static struct cipher_testvec aes_cbc_dec_tv_template[] = {
2923 { /* From RFC 3602 */
de224c30
SS
2924 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
2925 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
05f29fcd 2926 .klen = 16,
de224c30
SS
2927 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
2928 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
2929 .input = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
2930 "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
05f29fcd 2931 .ilen = 16,
de224c30 2932 .result = "Single block msg",
05f29fcd
JG
2933 .rlen = 16,
2934 }, {
de224c30
SS
2935 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
2936 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
05f29fcd 2937 .klen = 16,
de224c30
SS
2938 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
2939 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
2940 .input = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
2941 "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
2942 "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
2943 "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
05f29fcd 2944 .ilen = 32,
de224c30
SS
2945 .result = "\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 .rlen = 32,
9617d6ef 2950 }, { /* From NIST SP800-38A */
de224c30
SS
2951 .key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
2952 "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
2953 "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
9617d6ef 2954 .klen = 24,
de224c30
SS
2955 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2956 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2957 .input = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
2958 "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
2959 "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
2960 "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
2961 "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
2962 "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
2963 "\x08\xb0\xe2\x79\x88\x59\x88\x81"
2964 "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
9617d6ef 2965 .ilen = 64,
de224c30
SS
2966 .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2967 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2968 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2969 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2970 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2971 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2972 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2973 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
9617d6ef
JG
2974 .rlen = 64,
2975 }, {
de224c30
SS
2976 .key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
2977 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
2978 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
2979 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
9617d6ef 2980 .klen = 32,
de224c30
SS
2981 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2982 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2983 .input = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
2984 "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
2985 "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
2986 "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
2987 "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
2988 "\xa5\x30\xe2\x63\x04\x23\x14\x61"
2989 "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
2990 "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
9617d6ef 2991 .ilen = 64,
de224c30
SS
2992 .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2993 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2994 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2995 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2996 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2997 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2998 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2999 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
9617d6ef 3000 .rlen = 64,
05f29fcd
JG
3001 },
3002};
3003
f3d1044c
RS
3004static struct cipher_testvec aes_lrw_enc_tv_template[] = {
3005 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
3006 { /* LRW-32-AES 1 */
de224c30
SS
3007 .key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
3008 "\x4c\x26\x84\x14\xb5\x68\x01\x85"
3009 "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
3010 "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
f3d1044c 3011 .klen = 32,
de224c30
SS
3012 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3013 "\x00\x00\x00\x00\x00\x00\x00\x01",
3014 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3015 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 3016 .ilen = 16,
de224c30
SS
3017 .result = "\xf1\xb2\x73\xcd\x65\xa3\xdf\x5f"
3018 "\xe9\x5d\x48\x92\x54\x63\x4e\xb8",
f3d1044c
RS
3019 .rlen = 16,
3020 }, { /* LRW-32-AES 2 */
de224c30
SS
3021 .key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
3022 "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
3023 "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
3024 "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
f3d1044c 3025 .klen = 32,
de224c30
SS
3026 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3027 "\x00\x00\x00\x00\x00\x00\x00\x02",
3028 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3029 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 3030 .ilen = 16,
de224c30
SS
3031 .result = "\x00\xc8\x2b\xae\x95\xbb\xcd\xe5"
3032 "\x27\x4f\x07\x69\xb2\x60\xe1\x36",
f3d1044c
RS
3033 .rlen = 16,
3034 }, { /* LRW-32-AES 3 */
de224c30
SS
3035 .key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
3036 "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
3037 "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
3038 "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
f3d1044c 3039 .klen = 32,
de224c30
SS
3040 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3041 "\x00\x00\x00\x02\x00\x00\x00\x00",
3042 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3043 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 3044 .ilen = 16,
de224c30
SS
3045 .result = "\x76\x32\x21\x83\xed\x8f\xf1\x82"
3046 "\xf9\x59\x62\x03\x69\x0e\x5e\x01",
f3d1044c
RS
3047 .rlen = 16,
3048 }, { /* LRW-32-AES 4 */
de224c30
SS
3049 .key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
3050 "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
3051 "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
3052 "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
3053 "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
f3d1044c 3054 .klen = 40,
de224c30
SS
3055 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3056 "\x00\x00\x00\x00\x00\x00\x00\x01",
3057 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3058 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 3059 .ilen = 16,
de224c30
SS
3060 .result = "\x9c\x0f\x15\x2f\x55\xa2\xd8\xf0"
3061 "\xd6\x7b\x8f\x9e\x28\x22\xbc\x41",
f3d1044c
RS
3062 .rlen = 16,
3063 }, { /* LRW-32-AES 5 */
de224c30
SS
3064 .key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
3065 "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
3066 "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
3067 "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
3068 "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
f3d1044c 3069 .klen = 40,
de224c30
SS
3070 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3071 "\x00\x00\x00\x02\x00\x00\x00\x00",
3072 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3073 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 3074 .ilen = 16,
de224c30
SS
3075 .result = "\xd4\x27\x6a\x7f\x14\x91\x3d\x65"
3076 "\xc8\x60\x48\x02\x87\xe3\x34\x06",
f3d1044c
RS
3077 .rlen = 16,
3078 }, { /* LRW-32-AES 6 */
de224c30
SS
3079 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
3080 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
3081 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
3082 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
3083 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
3084 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
f3d1044c 3085 .klen = 48,
de224c30
SS
3086 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3087 "\x00\x00\x00\x00\x00\x00\x00\x01",
3088 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3089 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 3090 .ilen = 16,
de224c30
SS
3091 .result = "\xbd\x06\xb8\xe1\xdb\x98\x89\x9e"
3092 "\xc4\x98\xe4\x91\xcf\x1c\x70\x2b",
f3d1044c
RS
3093 .rlen = 16,
3094 }, { /* LRW-32-AES 7 */
de224c30
SS
3095 .key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
3096 "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
3097 "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
3098 "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
3099 "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
3100 "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
f3d1044c 3101 .klen = 48,
de224c30
SS
3102 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3103 "\x00\x00\x00\x02\x00\x00\x00\x00",
3104 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3105 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 3106 .ilen = 16,
de224c30
SS
3107 .result = "\x5b\x90\x8e\xc1\xab\xdd\x67\x5f"
3108 "\x3d\x69\x8a\x95\x53\xc8\x9c\xe5",
f3d1044c
RS
3109 .rlen = 16,
3110 }, {
3111/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
de224c30
SS
3112 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
3113 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
3114 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
3115 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
3116 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
3117 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
f3d1044c 3118 .klen = 48,
de224c30
SS
3119 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3120 "\x00\x00\x00\x00\x00\x00\x00\x01",
3121 .input = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
3122 "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
3123 "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
3124 "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
3125 "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
3126 "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
3127 "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
3128 "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
3129 "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
3130 "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
3131 "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
3132 "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
3133 "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
3134 "\x4c\x96\x12\xed\x7c\x92\x03\x01"
3135 "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
3136 "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
3137 "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
3138 "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
3139 "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
3140 "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
3141 "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
3142 "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
3143 "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
3144 "\x76\x12\x73\x44\x1a\x56\xd7\x72"
3145 "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
3146 "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
3147 "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
3148 "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
3149 "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
3150 "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
3151 "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
3152 "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
3153 "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
3154 "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
3155 "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
3156 "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
3157 "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
3158 "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
3159 "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
3160 "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
3161 "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
3162 "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
3163 "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
3164 "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
3165 "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
3166 "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
3167 "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
3168 "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
3169 "\x62\x73\x65\xfd\x46\x63\x25\x3d"
3170 "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
3171 "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
3172 "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
3173 "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
3174 "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
3175 "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
3176 "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
3177 "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
3178 "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
3179 "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
3180 "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
3181 "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
3182 "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
3183 "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
3184 "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
f3d1044c 3185 .ilen = 512,
de224c30
SS
3186 .result = "\x1a\x1d\xa9\x30\xad\xf9\x2f\x9b"
3187 "\xb6\x1d\xae\xef\xf0\x2f\xf8\x5a"
3188 "\x39\x3c\xbf\x2a\xb2\x45\xb2\x23"
3189 "\x1b\x63\x3c\xcf\xaa\xbe\xcf\x4e"
3190 "\xfa\xe8\x29\xc2\x20\x68\x2b\x3c"
3191 "\x2e\x8b\xf7\x6e\x25\xbd\xe3\x3d"
3192 "\x66\x27\xd6\xaf\xd6\x64\x3e\xe3"
3193 "\xe8\x58\x46\x97\x39\x51\x07\xde"
3194 "\xcb\x37\xbc\xa9\xc0\x5f\x75\xc3"
3195 "\x0e\x84\x23\x1d\x16\xd4\x1c\x59"
3196 "\x9c\x1a\x02\x55\xab\x3a\x97\x1d"
3197 "\xdf\xdd\xc7\x06\x51\xd7\x70\xae"
3198 "\x23\xc6\x8c\xf5\x1e\xa0\xe5\x82"
3199 "\xb8\xb2\xbf\x04\xa0\x32\x8e\x68"
3200 "\xeb\xaf\x6e\x2d\x94\x22\x2f\xce"
3201 "\x4c\xb5\x59\xe2\xa2\x2f\xa0\x98"
3202 "\x1a\x97\xc6\xd4\xb5\x00\x59\xf2"
3203 "\x84\x14\x72\xb1\x9a\x6e\xa3\x7f"
3204 "\xea\x20\xe7\xcb\x65\x77\x3a\xdf"
3205 "\xc8\x97\x67\x15\xc2\x2a\x27\xcc"
3206 "\x18\x55\xa1\x24\x0b\x24\x24\xaf"
3207 "\x5b\xec\x68\xb8\xc8\xf5\xba\x63"
3208 "\xff\xed\x89\xce\xd5\x3d\x88\xf3"
3209 "\x25\xef\x05\x7c\x3a\xef\xeb\xd8"
3210 "\x7a\x32\x0d\xd1\x1e\x58\x59\x99"
3211 "\x90\x25\xb5\x26\xb0\xe3\x2b\x6c"
3212 "\x4c\xa9\x8b\x84\x4f\x5e\x01\x50"
3213 "\x41\x30\x58\xc5\x62\x74\x52\x1d"
3214 "\x45\x24\x6a\x42\x64\x4f\x97\x1c"
3215 "\xa8\x66\xb5\x6d\x79\xd4\x0d\x48"
3216 "\xc5\x5f\xf3\x90\x32\xdd\xdd\xe1"
3217 "\xe4\xa9\x9f\xfc\xc3\x52\x5a\x46"
3218 "\xe4\x81\x84\x95\x36\x59\x7a\x6b"
3219 "\xaa\xb3\x60\xad\xce\x9f\x9f\x28"
3220 "\xe0\x01\x75\x22\xc4\x4e\xa9\x62"
3221 "\x5c\x62\x0d\x00\xcb\x13\xe8\x43"
3222 "\x72\xd4\x2d\x53\x46\xb5\xd1\x16"
3223 "\x22\x18\xdf\x34\x33\xf5\xd6\x1c"
3224 "\xb8\x79\x78\x97\x94\xff\x72\x13"
3225 "\x4c\x27\xfc\xcb\xbf\x01\x53\xa6"
3226 "\xb4\x50\x6e\xde\xdf\xb5\x43\xa4"
3227 "\x59\xdf\x52\xf9\x7c\xe0\x11\x6f"
3228 "\x2d\x14\x8e\x24\x61\x2c\xe1\x17"
3229 "\xcc\xce\x51\x0c\x19\x8a\x82\x30"
3230 "\x94\xd5\x3d\x6a\x53\x06\x5e\xbd"
3231 "\xb7\xeb\xfa\xfd\x27\x51\xde\x85"
3232 "\x1e\x86\x53\x11\x53\x94\x00\xee"
3233 "\x2b\x8c\x08\x2a\xbf\xdd\xae\x11"
3234 "\xcb\x1e\xa2\x07\x9a\x80\xcf\x62"
3235 "\x9b\x09\xdc\x95\x3c\x96\x8e\xb1"
3236 "\x09\xbd\xe4\xeb\xdb\xca\x70\x7a"
3237 "\x9e\xfa\x31\x18\x45\x3c\x21\x33"
3238 "\xb0\xb3\x2b\xea\xf3\x71\x2d\xe1"
3239 "\x03\xad\x1b\x48\xd4\x67\x27\xf0"
3240 "\x62\xe4\x3d\xfb\x9b\x08\x76\xe7"
3241 "\xdd\x2b\x01\x39\x04\x5a\x58\x7a"
3242 "\xf7\x11\x90\xec\xbd\x51\x5c\x32"
3243 "\x6b\xd7\x35\x39\x02\x6b\xf2\xa6"
3244 "\xd0\x0d\x07\xe1\x06\xc4\x5b\x7d"
3245 "\xe4\x6a\xd7\xee\x15\x1f\x83\xb4"
3246 "\xa3\xa7\x5e\xc3\x90\xb7\xef\xd3"
3247 "\xb7\x4f\xf8\x92\x4c\xb7\x3c\x29"
3248 "\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
3249 "\x74\x3f\x7d\x58\x88\x75\xde\x3e",
f3d1044c
RS
3250 .rlen = 512,
3251 }
3252};
3253
3254static struct cipher_testvec aes_lrw_dec_tv_template[] = {
3255 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
3256 /* same as enc vectors with input and result reversed */
3257 { /* LRW-32-AES 1 */
de224c30
SS
3258 .key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
3259 "\x4c\x26\x84\x14\xb5\x68\x01\x85"
3260 "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
3261 "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
f3d1044c 3262 .klen = 32,
de224c30
SS
3263 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3264 "\x00\x00\x00\x00\x00\x00\x00\x01",
3265 .input = "\xf1\xb2\x73\xcd\x65\xa3\xdf\x5f"
3266 "\xe9\x5d\x48\x92\x54\x63\x4e\xb8",
f3d1044c 3267 .ilen = 16,
de224c30
SS
3268 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3269 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
3270 .rlen = 16,
3271 }, { /* LRW-32-AES 2 */
de224c30
SS
3272 .key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
3273 "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
3274 "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
3275 "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
f3d1044c 3276 .klen = 32,
de224c30
SS
3277 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3278 "\x00\x00\x00\x00\x00\x00\x00\x02",
3279 .input = "\x00\xc8\x2b\xae\x95\xbb\xcd\xe5"
3280 "\x27\x4f\x07\x69\xb2\x60\xe1\x36",
f3d1044c 3281 .ilen = 16,
de224c30
SS
3282 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3283 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
3284 .rlen = 16,
3285 }, { /* LRW-32-AES 3 */
de224c30
SS
3286 .key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
3287 "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
3288 "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
3289 "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
f3d1044c 3290 .klen = 32,
de224c30
SS
3291 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3292 "\x00\x00\x00\x02\x00\x00\x00\x00",
3293 .input = "\x76\x32\x21\x83\xed\x8f\xf1\x82"
3294 "\xf9\x59\x62\x03\x69\x0e\x5e\x01",
f3d1044c 3295 .ilen = 16,
de224c30
SS
3296 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3297 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
3298 .rlen = 16,
3299 }, { /* LRW-32-AES 4 */
de224c30
SS
3300 .key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
3301 "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
3302 "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
3303 "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
3304 "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
f3d1044c 3305 .klen = 40,
de224c30
SS
3306 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3307 "\x00\x00\x00\x00\x00\x00\x00\x01",
3308 .input = "\x9c\x0f\x15\x2f\x55\xa2\xd8\xf0"
3309 "\xd6\x7b\x8f\x9e\x28\x22\xbc\x41",
f3d1044c 3310 .ilen = 16,
de224c30
SS
3311 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3312 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
3313 .rlen = 16,
3314 }, { /* LRW-32-AES 5 */
de224c30
SS
3315 .key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
3316 "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
3317 "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
3318 "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
3319 "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
f3d1044c 3320 .klen = 40,
de224c30
SS
3321 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3322 "\x00\x00\x00\x02\x00\x00\x00\x00",
3323 .input = "\xd4\x27\x6a\x7f\x14\x91\x3d\x65"
3324 "\xc8\x60\x48\x02\x87\xe3\x34\x06",
f3d1044c 3325 .ilen = 16,
de224c30
SS
3326 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3327 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
3328 .rlen = 16,
3329 }, { /* LRW-32-AES 6 */
de224c30
SS
3330 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
3331 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
3332 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
3333 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
3334 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
3335 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
f3d1044c 3336 .klen = 48,
de224c30
SS
3337 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3338 "\x00\x00\x00\x00\x00\x00\x00\x01",
3339 .input = "\xbd\x06\xb8\xe1\xdb\x98\x89\x9e"
3340 "\xc4\x98\xe4\x91\xcf\x1c\x70\x2b",
f3d1044c 3341 .ilen = 16,
de224c30
SS
3342 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3343 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
3344 .rlen = 16,
3345 }, { /* LRW-32-AES 7 */
de224c30
SS
3346 .key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
3347 "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
3348 "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
3349 "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
3350 "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
3351 "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
f3d1044c 3352 .klen = 48,
de224c30
SS
3353 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3354 "\x00\x00\x00\x02\x00\x00\x00\x00",
3355 .input = "\x5b\x90\x8e\xc1\xab\xdd\x67\x5f"
3356 "\x3d\x69\x8a\x95\x53\xc8\x9c\xe5",
f3d1044c 3357 .ilen = 16,
de224c30
SS
3358 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3359 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
3360 .rlen = 16,
3361 }, {
3362/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
de224c30
SS
3363 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
3364 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
3365 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
3366 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
3367 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
3368 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
f3d1044c 3369 .klen = 48,
de224c30
SS
3370 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3371 "\x00\x00\x00\x00\x00\x00\x00\x01",
3372 .input = "\x1a\x1d\xa9\x30\xad\xf9\x2f\x9b"
3373 "\xb6\x1d\xae\xef\xf0\x2f\xf8\x5a"
3374 "\x39\x3c\xbf\x2a\xb2\x45\xb2\x23"
3375 "\x1b\x63\x3c\xcf\xaa\xbe\xcf\x4e"
3376 "\xfa\xe8\x29\xc2\x20\x68\x2b\x3c"
3377 "\x2e\x8b\xf7\x6e\x25\xbd\xe3\x3d"
3378 "\x66\x27\xd6\xaf\xd6\x64\x3e\xe3"
3379 "\xe8\x58\x46\x97\x39\x51\x07\xde"
3380 "\xcb\x37\xbc\xa9\xc0\x5f\x75\xc3"
3381 "\x0e\x84\x23\x1d\x16\xd4\x1c\x59"
3382 "\x9c\x1a\x02\x55\xab\x3a\x97\x1d"
3383 "\xdf\xdd\xc7\x06\x51\xd7\x70\xae"
3384 "\x23\xc6\x8c\xf5\x1e\xa0\xe5\x82"
3385 "\xb8\xb2\xbf\x04\xa0\x32\x8e\x68"
3386 "\xeb\xaf\x6e\x2d\x94\x22\x2f\xce"
3387 "\x4c\xb5\x59\xe2\xa2\x2f\xa0\x98"
3388 "\x1a\x97\xc6\xd4\xb5\x00\x59\xf2"
3389 "\x84\x14\x72\xb1\x9a\x6e\xa3\x7f"
3390 "\xea\x20\xe7\xcb\x65\x77\x3a\xdf"
3391 "\xc8\x97\x67\x15\xc2\x2a\x27\xcc"
3392 "\x18\x55\xa1\x24\x0b\x24\x24\xaf"
3393 "\x5b\xec\x68\xb8\xc8\xf5\xba\x63"
3394 "\xff\xed\x89\xce\xd5\x3d\x88\xf3"
3395 "\x25\xef\x05\x7c\x3a\xef\xeb\xd8"
3396 "\x7a\x32\x0d\xd1\x1e\x58\x59\x99"
3397 "\x90\x25\xb5\x26\xb0\xe3\x2b\x6c"
3398 "\x4c\xa9\x8b\x84\x4f\x5e\x01\x50"
3399 "\x41\x30\x58\xc5\x62\x74\x52\x1d"
3400 "\x45\x24\x6a\x42\x64\x4f\x97\x1c"
3401 "\xa8\x66\xb5\x6d\x79\xd4\x0d\x48"
3402 "\xc5\x5f\xf3\x90\x32\xdd\xdd\xe1"
3403 "\xe4\xa9\x9f\xfc\xc3\x52\x5a\x46"
3404 "\xe4\x81\x84\x95\x36\x59\x7a\x6b"
3405 "\xaa\xb3\x60\xad\xce\x9f\x9f\x28"
3406 "\xe0\x01\x75\x22\xc4\x4e\xa9\x62"
3407 "\x5c\x62\x0d\x00\xcb\x13\xe8\x43"
3408 "\x72\xd4\x2d\x53\x46\xb5\xd1\x16"
3409 "\x22\x18\xdf\x34\x33\xf5\xd6\x1c"
3410 "\xb8\x79\x78\x97\x94\xff\x72\x13"
3411 "\x4c\x27\xfc\xcb\xbf\x01\x53\xa6"
3412 "\xb4\x50\x6e\xde\xdf\xb5\x43\xa4"
3413 "\x59\xdf\x52\xf9\x7c\xe0\x11\x6f"
3414 "\x2d\x14\x8e\x24\x61\x2c\xe1\x17"
3415 "\xcc\xce\x51\x0c\x19\x8a\x82\x30"
3416 "\x94\xd5\x3d\x6a\x53\x06\x5e\xbd"
3417 "\xb7\xeb\xfa\xfd\x27\x51\xde\x85"
3418 "\x1e\x86\x53\x11\x53\x94\x00\xee"
3419 "\x2b\x8c\x08\x2a\xbf\xdd\xae\x11"
3420 "\xcb\x1e\xa2\x07\x9a\x80\xcf\x62"
3421 "\x9b\x09\xdc\x95\x3c\x96\x8e\xb1"
3422 "\x09\xbd\xe4\xeb\xdb\xca\x70\x7a"
3423 "\x9e\xfa\x31\x18\x45\x3c\x21\x33"
3424 "\xb0\xb3\x2b\xea\xf3\x71\x2d\xe1"
3425 "\x03\xad\x1b\x48\xd4\x67\x27\xf0"
3426 "\x62\xe4\x3d\xfb\x9b\x08\x76\xe7"
3427 "\xdd\x2b\x01\x39\x04\x5a\x58\x7a"
3428 "\xf7\x11\x90\xec\xbd\x51\x5c\x32"
3429 "\x6b\xd7\x35\x39\x02\x6b\xf2\xa6"
3430 "\xd0\x0d\x07\xe1\x06\xc4\x5b\x7d"
3431 "\xe4\x6a\xd7\xee\x15\x1f\x83\xb4"
3432 "\xa3\xa7\x5e\xc3\x90\xb7\xef\xd3"
3433 "\xb7\x4f\xf8\x92\x4c\xb7\x3c\x29"
3434 "\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
3435 "\x74\x3f\x7d\x58\x88\x75\xde\x3e",
f3d1044c 3436 .ilen = 512,
de224c30
SS
3437 .result = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
3438 "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
3439 "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
3440 "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
3441 "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
3442 "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
3443 "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
3444 "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
3445 "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
3446 "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
3447 "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
3448 "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
3449 "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
3450 "\x4c\x96\x12\xed\x7c\x92\x03\x01"
3451 "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
3452 "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
3453 "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
3454 "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
3455 "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
3456 "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
3457 "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
3458 "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
3459 "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
3460 "\x76\x12\x73\x44\x1a\x56\xd7\x72"
3461 "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
3462 "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
3463 "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
3464 "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
3465 "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
3466 "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
3467 "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
3468 "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
3469 "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
3470 "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
3471 "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
3472 "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
3473 "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
3474 "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
3475 "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
3476 "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
3477 "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
3478 "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
3479 "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
3480 "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
3481 "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
3482 "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
3483 "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
3484 "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
3485 "\x62\x73\x65\xfd\x46\x63\x25\x3d"
3486 "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
3487 "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
3488 "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
3489 "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
3490 "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
3491 "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
3492 "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
3493 "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
3494 "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
3495 "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
3496 "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
3497 "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
3498 "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
3499 "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
3500 "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
f3d1044c
RS
3501 .rlen = 512,
3502 }
3503};
3504
f19f5111
RS
3505static struct cipher_testvec aes_xts_enc_tv_template[] = {
3506 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
3507 { /* XTS-AES 1 */
de224c30
SS
3508 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
3509 "\x00\x00\x00\x00\x00\x00\x00\x00"
3510 "\x00\x00\x00\x00\x00\x00\x00\x00"
3511 "\x00\x00\x00\x00\x00\x00\x00\x00",
f19f5111 3512 .klen = 32,
de224c30
SS
3513 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3514 "\x00\x00\x00\x00\x00\x00\x00\x00",
3515 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
3516 "\x00\x00\x00\x00\x00\x00\x00\x00"
3517 "\x00\x00\x00\x00\x00\x00\x00\x00"
3518 "\x00\x00\x00\x00\x00\x00\x00\x00",
f19f5111 3519 .ilen = 32,
de224c30
SS
3520 .result = "\x91\x7c\xf6\x9e\xbd\x68\xb2\xec"
3521 "\x9b\x9f\xe9\xa3\xea\xdd\xa6\x92"
3522 "\xcd\x43\xd2\xf5\x95\x98\xed\x85"
3523 "\x8c\x02\xc2\x65\x2f\xbf\x92\x2e",
f19f5111
RS
3524 .rlen = 32,
3525 }, { /* XTS-AES 2 */
de224c30
SS
3526 .key = "\x11\x11\x11\x11\x11\x11\x11\x11"
3527 "\x11\x11\x11\x11\x11\x11\x11\x11"
3528 "\x22\x22\x22\x22\x22\x22\x22\x22"
3529 "\x22\x22\x22\x22\x22\x22\x22\x22",
f19f5111 3530 .klen = 32,
de224c30
SS
3531 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3532 "\x00\x00\x00\x00\x00\x00\x00\x00",
3533 .input = "\x44\x44\x44\x44\x44\x44\x44\x44"
3534 "\x44\x44\x44\x44\x44\x44\x44\x44"
3535 "\x44\x44\x44\x44\x44\x44\x44\x44"
3536 "\x44\x44\x44\x44\x44\x44\x44\x44",
f19f5111 3537 .ilen = 32,
de224c30
SS
3538 .result = "\xc4\x54\x18\x5e\x6a\x16\x93\x6e"
3539 "\x39\x33\x40\x38\xac\xef\x83\x8b"
3540 "\xfb\x18\x6f\xff\x74\x80\xad\xc4"
3541 "\x28\x93\x82\xec\xd6\xd3\x94\xf0",
f19f5111
RS
3542 .rlen = 32,
3543 }, { /* XTS-AES 3 */
de224c30
SS
3544 .key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
3545 "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
3546 "\x22\x22\x22\x22\x22\x22\x22\x22"
3547 "\x22\x22\x22\x22\x22\x22\x22\x22",
f19f5111 3548 .klen = 32,
de224c30
SS
3549 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3550 "\x00\x00\x00\x00\x00\x00\x00\x00",
3551 .input = "\x44\x44\x44\x44\x44\x44\x44\x44"
3552 "\x44\x44\x44\x44\x44\x44\x44\x44"
3553 "\x44\x44\x44\x44\x44\x44\x44\x44"
3554 "\x44\x44\x44\x44\x44\x44\x44\x44",
f19f5111 3555 .ilen = 32,
de224c30
SS
3556 .result = "\xaf\x85\x33\x6b\x59\x7a\xfc\x1a"
3557 "\x90\x0b\x2e\xb2\x1e\xc9\x49\xd2"
3558 "\x92\xdf\x4c\x04\x7e\x0b\x21\x53"
3559 "\x21\x86\xa5\x97\x1a\x22\x7a\x89",
f19f5111
RS
3560 .rlen = 32,
3561 }, { /* XTS-AES 4 */
de224c30
SS
3562 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
3563 "\x23\x53\x60\x28\x74\x71\x35\x26"
3564 "\x31\x41\x59\x26\x53\x58\x97\x93"
3565 "\x23\x84\x62\x64\x33\x83\x27\x95",
f19f5111 3566 .klen = 32,
de224c30
SS
3567 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3568 "\x00\x00\x00\x00\x00\x00\x00\x00",
3569 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3570 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3571 "\x10\x11\x12\x13\x14\x15\x16\x17"
3572 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3573 "\x20\x21\x22\x23\x24\x25\x26\x27"
3574 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3575 "\x30\x31\x32\x33\x34\x35\x36\x37"
3576 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3577 "\x40\x41\x42\x43\x44\x45\x46\x47"
3578 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3579 "\x50\x51\x52\x53\x54\x55\x56\x57"
3580 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3581 "\x60\x61\x62\x63\x64\x65\x66\x67"
3582 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3583 "\x70\x71\x72\x73\x74\x75\x76\x77"
3584 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3585 "\x80\x81\x82\x83\x84\x85\x86\x87"
3586 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3587 "\x90\x91\x92\x93\x94\x95\x96\x97"
3588 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3589 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3590 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3591 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3592 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3593 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3594 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3595 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3596 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3597 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3598 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3599 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3600 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3601 "\x00\x01\x02\x03\x04\x05\x06\x07"
3602 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3603 "\x10\x11\x12\x13\x14\x15\x16\x17"
3604 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3605 "\x20\x21\x22\x23\x24\x25\x26\x27"
3606 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3607 "\x30\x31\x32\x33\x34\x35\x36\x37"
3608 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3609 "\x40\x41\x42\x43\x44\x45\x46\x47"
3610 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3611 "\x50\x51\x52\x53\x54\x55\x56\x57"
3612 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3613 "\x60\x61\x62\x63\x64\x65\x66\x67"
3614 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3615 "\x70\x71\x72\x73\x74\x75\x76\x77"
3616 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3617 "\x80\x81\x82\x83\x84\x85\x86\x87"
3618 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3619 "\x90\x91\x92\x93\x94\x95\x96\x97"
3620 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3621 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3622 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3623 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3624 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3625 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3626 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3627 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3628 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3629 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3630 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3631 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3632 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
f19f5111 3633 .ilen = 512,
de224c30
SS
3634 .result = "\x27\xa7\x47\x9b\xef\xa1\xd4\x76"
3635 "\x48\x9f\x30\x8c\xd4\xcf\xa6\xe2"
3636 "\xa9\x6e\x4b\xbe\x32\x08\xff\x25"
3637 "\x28\x7d\xd3\x81\x96\x16\xe8\x9c"
3638 "\xc7\x8c\xf7\xf5\xe5\x43\x44\x5f"
3639 "\x83\x33\xd8\xfa\x7f\x56\x00\x00"
3640 "\x05\x27\x9f\xa5\xd8\xb5\xe4\xad"
3641 "\x40\xe7\x36\xdd\xb4\xd3\x54\x12"
3642 "\x32\x80\x63\xfd\x2a\xab\x53\xe5"
3643 "\xea\x1e\x0a\x9f\x33\x25\x00\xa5"
3644 "\xdf\x94\x87\xd0\x7a\x5c\x92\xcc"
3645 "\x51\x2c\x88\x66\xc7\xe8\x60\xce"
3646 "\x93\xfd\xf1\x66\xa2\x49\x12\xb4"
3647 "\x22\x97\x61\x46\xae\x20\xce\x84"
3648 "\x6b\xb7\xdc\x9b\xa9\x4a\x76\x7a"
3649 "\xae\xf2\x0c\x0d\x61\xad\x02\x65"
3650 "\x5e\xa9\x2d\xc4\xc4\xe4\x1a\x89"
3651 "\x52\xc6\x51\xd3\x31\x74\xbe\x51"
3652 "\xa1\x0c\x42\x11\x10\xe6\xd8\x15"
3653 "\x88\xed\xe8\x21\x03\xa2\x52\xd8"
3654 "\xa7\x50\xe8\x76\x8d\xef\xff\xed"
3655 "\x91\x22\x81\x0a\xae\xb9\x9f\x91"
3656 "\x72\xaf\x82\xb6\x04\xdc\x4b\x8e"
3657 "\x51\xbc\xb0\x82\x35\xa6\xf4\x34"
3658 "\x13\x32\xe4\xca\x60\x48\x2a\x4b"
3659 "\xa1\xa0\x3b\x3e\x65\x00\x8f\xc5"
3660 "\xda\x76\xb7\x0b\xf1\x69\x0d\xb4"
3661 "\xea\xe2\x9c\x5f\x1b\xad\xd0\x3c"
3662 "\x5c\xcf\x2a\x55\xd7\x05\xdd\xcd"
3663 "\x86\xd4\x49\x51\x1c\xeb\x7e\xc3"
3664 "\x0b\xf1\x2b\x1f\xa3\x5b\x91\x3f"
3665 "\x9f\x74\x7a\x8a\xfd\x1b\x13\x0e"
3666 "\x94\xbf\xf9\x4e\xff\xd0\x1a\x91"
3667 "\x73\x5c\xa1\x72\x6a\xcd\x0b\x19"
3668 "\x7c\x4e\x5b\x03\x39\x36\x97\xe1"
3669 "\x26\x82\x6f\xb6\xbb\xde\x8e\xcc"
3670 "\x1e\x08\x29\x85\x16\xe2\xc9\xed"
3671 "\x03\xff\x3c\x1b\x78\x60\xf6\xde"
3672 "\x76\xd4\xce\xcd\x94\xc8\x11\x98"
3673 "\x55\xef\x52\x97\xca\x67\xe9\xf3"
3674 "\xe7\xff\x72\xb1\xe9\x97\x85\xca"
3675 "\x0a\x7e\x77\x20\xc5\xb3\x6d\xc6"
3676 "\xd7\x2c\xac\x95\x74\xc8\xcb\xbc"
3677 "\x2f\x80\x1e\x23\xe5\x6f\xd3\x44"
3678 "\xb0\x7f\x22\x15\x4b\xeb\xa0\xf0"
3679 "\x8c\xe8\x89\x1e\x64\x3e\xd9\x95"
3680 "\xc9\x4d\x9a\x69\xc9\xf1\xb5\xf4"
3681 "\x99\x02\x7a\x78\x57\x2a\xee\xbd"
3682 "\x74\xd2\x0c\xc3\x98\x81\xc2\x13"
3683 "\xee\x77\x0b\x10\x10\xe4\xbe\xa7"
3684 "\x18\x84\x69\x77\xae\x11\x9f\x7a"
3685 "\x02\x3a\xb5\x8c\xca\x0a\xd7\x52"
3686 "\xaf\xe6\x56\xbb\x3c\x17\x25\x6a"
3687 "\x9f\x6e\x9b\xf1\x9f\xdd\x5a\x38"
3688 "\xfc\x82\xbb\xe8\x72\xc5\x53\x9e"
3689 "\xdb\x60\x9e\xf4\xf7\x9c\x20\x3e"
3690 "\xbb\x14\x0f\x2e\x58\x3c\xb2\xad"
3691 "\x15\xb4\xaa\x5b\x65\x50\x16\xa8"
3692 "\x44\x92\x77\xdb\xd4\x77\xef\x2c"
3693 "\x8d\x6c\x01\x7d\xb7\x38\xb1\x8d"
3694 "\xeb\x4a\x42\x7d\x19\x23\xce\x3f"
3695 "\xf2\x62\x73\x57\x79\xa4\x18\xf2"
3696 "\x0a\x28\x2d\xf9\x20\x14\x7b\xea"
3697 "\xbe\x42\x1e\xe5\x31\x9d\x05\x68",
f19f5111
RS
3698 .rlen = 512,
3699 }
3700};
3701
3702static struct cipher_testvec aes_xts_dec_tv_template[] = {
3703 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
3704 { /* XTS-AES 1 */
de224c30
SS
3705 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
3706 "\x00\x00\x00\x00\x00\x00\x00\x00"
3707 "\x00\x00\x00\x00\x00\x00\x00\x00"
3708 "\x00\x00\x00\x00\x00\x00\x00\x00",
f19f5111 3709 .klen = 32,
de224c30
SS
3710 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3711 "\x00\x00\x00\x00\x00\x00\x00\x00",
3712 .input = "\x91\x7c\xf6\x9e\xbd\x68\xb2\xec"
3713 "\x9b\x9f\xe9\xa3\xea\xdd\xa6\x92"
3714 "\xcd\x43\xd2\xf5\x95\x98\xed\x85"
3715 "\x8c\x02\xc2\x65\x2f\xbf\x92\x2e",
f19f5111 3716 .ilen = 32,
de224c30
SS
3717 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
3718 "\x00\x00\x00\x00\x00\x00\x00\x00"
3719 "\x00\x00\x00\x00\x00\x00\x00\x00"
3720 "\x00\x00\x00\x00\x00\x00\x00\x00",
f19f5111
RS
3721 .rlen = 32,
3722 }, { /* XTS-AES 2 */
de224c30
SS
3723 .key = "\x11\x11\x11\x11\x11\x11\x11\x11"
3724 "\x11\x11\x11\x11\x11\x11\x11\x11"
3725 "\x22\x22\x22\x22\x22\x22\x22\x22"
3726 "\x22\x22\x22\x22\x22\x22\x22\x22",
f19f5111 3727 .klen = 32,
de224c30
SS
3728 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3729 "\x00\x00\x00\x00\x00\x00\x00\x00",
3730 .input = "\xc4\x54\x18\x5e\x6a\x16\x93\x6e"
3731 "\x39\x33\x40\x38\xac\xef\x83\x8b"
3732 "\xfb\x18\x6f\xff\x74\x80\xad\xc4"
3733 "\x28\x93\x82\xec\xd6\xd3\x94\xf0",
f19f5111 3734 .ilen = 32,
de224c30
SS
3735 .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
3736 "\x44\x44\x44\x44\x44\x44\x44\x44"
3737 "\x44\x44\x44\x44\x44\x44\x44\x44"
3738 "\x44\x44\x44\x44\x44\x44\x44\x44",
f19f5111
RS
3739 .rlen = 32,
3740 }, { /* XTS-AES 3 */
de224c30
SS
3741 .key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
3742 "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
3743 "\x22\x22\x22\x22\x22\x22\x22\x22"
3744 "\x22\x22\x22\x22\x22\x22\x22\x22",
f19f5111 3745 .klen = 32,
de224c30
SS
3746 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3747 "\x00\x00\x00\x00\x00\x00\x00\x00",
3748 .input = "\xaf\x85\x33\x6b\x59\x7a\xfc\x1a"
3749 "\x90\x0b\x2e\xb2\x1e\xc9\x49\xd2"
3750 "\x92\xdf\x4c\x04\x7e\x0b\x21\x53"
3751 "\x21\x86\xa5\x97\x1a\x22\x7a\x89",
f19f5111 3752 .ilen = 32,
de224c30
SS
3753 .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
3754 "\x44\x44\x44\x44\x44\x44\x44\x44"
3755 "\x44\x44\x44\x44\x44\x44\x44\x44"
3756 "\x44\x44\x44\x44\x44\x44\x44\x44",
f19f5111
RS
3757 .rlen = 32,
3758 }, { /* XTS-AES 4 */
de224c30
SS
3759 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
3760 "\x23\x53\x60\x28\x74\x71\x35\x26"
3761 "\x31\x41\x59\x26\x53\x58\x97\x93"
3762 "\x23\x84\x62\x64\x33\x83\x27\x95",
f19f5111 3763 .klen = 32,
de224c30
SS
3764 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3765 "\x00\x00\x00\x00\x00\x00\x00\x00",
3766 .input = "\x27\xa7\x47\x9b\xef\xa1\xd4\x76"
3767 "\x48\x9f\x30\x8c\xd4\xcf\xa6\xe2"
3768 "\xa9\x6e\x4b\xbe\x32\x08\xff\x25"
3769 "\x28\x7d\xd3\x81\x96\x16\xe8\x9c"
3770 "\xc7\x8c\xf7\xf5\xe5\x43\x44\x5f"
3771 "\x83\x33\xd8\xfa\x7f\x56\x00\x00"
3772 "\x05\x27\x9f\xa5\xd8\xb5\xe4\xad"
3773 "\x40\xe7\x36\xdd\xb4\xd3\x54\x12"
3774 "\x32\x80\x63\xfd\x2a\xab\x53\xe5"
3775 "\xea\x1e\x0a\x9f\x33\x25\x00\xa5"
3776 "\xdf\x94\x87\xd0\x7a\x5c\x92\xcc"
3777 "\x51\x2c\x88\x66\xc7\xe8\x60\xce"
3778 "\x93\xfd\xf1\x66\xa2\x49\x12\xb4"
3779 "\x22\x97\x61\x46\xae\x20\xce\x84"
3780 "\x6b\xb7\xdc\x9b\xa9\x4a\x76\x7a"
3781 "\xae\xf2\x0c\x0d\x61\xad\x02\x65"
3782 "\x5e\xa9\x2d\xc4\xc4\xe4\x1a\x89"
3783 "\x52\xc6\x51\xd3\x31\x74\xbe\x51"
3784 "\xa1\x0c\x42\x11\x10\xe6\xd8\x15"
3785 "\x88\xed\xe8\x21\x03\xa2\x52\xd8"
3786 "\xa7\x50\xe8\x76\x8d\xef\xff\xed"
3787 "\x91\x22\x81\x0a\xae\xb9\x9f\x91"
3788 "\x72\xaf\x82\xb6\x04\xdc\x4b\x8e"
3789 "\x51\xbc\xb0\x82\x35\xa6\xf4\x34"
3790 "\x13\x32\xe4\xca\x60\x48\x2a\x4b"
3791 "\xa1\xa0\x3b\x3e\x65\x00\x8f\xc5"
3792 "\xda\x76\xb7\x0b\xf1\x69\x0d\xb4"
3793 "\xea\xe2\x9c\x5f\x1b\xad\xd0\x3c"
3794 "\x5c\xcf\x2a\x55\xd7\x05\xdd\xcd"
3795 "\x86\xd4\x49\x51\x1c\xeb\x7e\xc3"
3796 "\x0b\xf1\x2b\x1f\xa3\x5b\x91\x3f"
3797 "\x9f\x74\x7a\x8a\xfd\x1b\x13\x0e"
3798 "\x94\xbf\xf9\x4e\xff\xd0\x1a\x91"
3799 "\x73\x5c\xa1\x72\x6a\xcd\x0b\x19"
3800 "\x7c\x4e\x5b\x03\x39\x36\x97\xe1"
3801 "\x26\x82\x6f\xb6\xbb\xde\x8e\xcc"
3802 "\x1e\x08\x29\x85\x16\xe2\xc9\xed"
3803 "\x03\xff\x3c\x1b\x78\x60\xf6\xde"
3804 "\x76\xd4\xce\xcd\x94\xc8\x11\x98"
3805 "\x55\xef\x52\x97\xca\x67\xe9\xf3"
3806 "\xe7\xff\x72\xb1\xe9\x97\x85\xca"
3807 "\x0a\x7e\x77\x20\xc5\xb3\x6d\xc6"
3808 "\xd7\x2c\xac\x95\x74\xc8\xcb\xbc"
3809 "\x2f\x80\x1e\x23\xe5\x6f\xd3\x44"
3810 "\xb0\x7f\x22\x15\x4b\xeb\xa0\xf0"
3811 "\x8c\xe8\x89\x1e\x64\x3e\xd9\x95"
3812 "\xc9\x4d\x9a\x69\xc9\xf1\xb5\xf4"
3813 "\x99\x02\x7a\x78\x57\x2a\xee\xbd"
3814 "\x74\xd2\x0c\xc3\x98\x81\xc2\x13"
3815 "\xee\x77\x0b\x10\x10\xe4\xbe\xa7"
3816 "\x18\x84\x69\x77\xae\x11\x9f\x7a"
3817 "\x02\x3a\xb5\x8c\xca\x0a\xd7\x52"
3818 "\xaf\xe6\x56\xbb\x3c\x17\x25\x6a"
3819 "\x9f\x6e\x9b\xf1\x9f\xdd\x5a\x38"
3820 "\xfc\x82\xbb\xe8\x72\xc5\x53\x9e"
3821 "\xdb\x60\x9e\xf4\xf7\x9c\x20\x3e"
3822 "\xbb\x14\x0f\x2e\x58\x3c\xb2\xad"
3823 "\x15\xb4\xaa\x5b\x65\x50\x16\xa8"
3824 "\x44\x92\x77\xdb\xd4\x77\xef\x2c"
3825 "\x8d\x6c\x01\x7d\xb7\x38\xb1\x8d"
3826 "\xeb\x4a\x42\x7d\x19\x23\xce\x3f"
3827 "\xf2\x62\x73\x57\x79\xa4\x18\xf2"
3828 "\x0a\x28\x2d\xf9\x20\x14\x7b\xea"
3829 "\xbe\x42\x1e\xe5\x31\x9d\x05\x68",
f19f5111 3830 .ilen = 512,
de224c30
SS
3831 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
3832 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3833 "\x10\x11\x12\x13\x14\x15\x16\x17"
3834 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3835 "\x20\x21\x22\x23\x24\x25\x26\x27"
3836 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3837 "\x30\x31\x32\x33\x34\x35\x36\x37"
3838 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3839 "\x40\x41\x42\x43\x44\x45\x46\x47"
3840 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3841 "\x50\x51\x52\x53\x54\x55\x56\x57"
3842 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3843 "\x60\x61\x62\x63\x64\x65\x66\x67"
3844 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3845 "\x70\x71\x72\x73\x74\x75\x76\x77"
3846 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3847 "\x80\x81\x82\x83\x84\x85\x86\x87"
3848 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3849 "\x90\x91\x92\x93\x94\x95\x96\x97"
3850 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3851 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3852 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3853 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3854 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3855 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3856 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3857 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3858 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3859 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3860 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3861 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3862 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3863 "\x00\x01\x02\x03\x04\x05\x06\x07"
3864 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3865 "\x10\x11\x12\x13\x14\x15\x16\x17"
3866 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3867 "\x20\x21\x22\x23\x24\x25\x26\x27"
3868 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3869 "\x30\x31\x32\x33\x34\x35\x36\x37"
3870 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3871 "\x40\x41\x42\x43\x44\x45\x46\x47"
3872 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3873 "\x50\x51\x52\x53\x54\x55\x56\x57"
3874 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3875 "\x60\x61\x62\x63\x64\x65\x66\x67"
3876 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3877 "\x70\x71\x72\x73\x74\x75\x76\x77"
3878 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3879 "\x80\x81\x82\x83\x84\x85\x86\x87"
3880 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3881 "\x90\x91\x92\x93\x94\x95\x96\x97"
3882 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3883 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3884 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3885 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3886 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3887 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3888 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3889 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3890 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3891 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3892 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3893 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3894 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
f19f5111
RS
3895 .rlen = 512,
3896 }
3897};
3898
23e353c8
JL
3899
3900static struct cipher_testvec aes_ctr_enc_tv_template[] = {
3901 { /* From RFC 3686 */
de224c30
SS
3902 .key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
3903 "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
3904 "\x00\x00\x00\x30",
23e353c8 3905 .klen = 20,
de224c30
SS
3906 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
3907 .input = "Single block msg",
23e353c8 3908 .ilen = 16,
de224c30
SS
3909 .result = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
3910 "\x2d\x61\x75\xa3\x26\x13\x11\xb8",
23e353c8
JL
3911 .rlen = 16,
3912 }, {
de224c30
SS
3913 .key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
3914 "\x43\xd6\xce\x1f\x32\x53\x91\x63"
3915 "\x00\x6c\xb6\xdb",
23e353c8 3916 .klen = 20,
de224c30
SS
3917 .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
3918 .input = "\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 .ilen = 32,
3923 .result = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
3924 "\x79\x0d\x41\xee\x8e\xda\xd3\x88"
3925 "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
3926 "\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
23e353c8
JL
3927 .rlen = 32,
3928 }, {
de224c30
SS
3929 .key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
3930 "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
3931 "\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
3932 "\x00\x00\x00\x48",
3933 .klen = 28,
3934 .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
3935 .input = "Single block msg",
3936 .ilen = 16,
3937 .result = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
3938 "\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
23e353c8
JL
3939 .rlen = 16,
3940 }, {
de224c30
SS
3941 .key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
3942 "\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
3943 "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
3944 "\x00\x96\xb0\x3b",
23e353c8 3945 .klen = 28,
de224c30
SS
3946 .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
3947 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3948 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3949 "\x10\x11\x12\x13\x14\x15\x16\x17"
3950 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
23e353c8 3951 .ilen = 32,
de224c30
SS
3952 .result = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
3953 "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
3954 "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
3955 "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
3956 .rlen = 32,
3957 }, {
3958 .key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
3959 "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
3960 "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
3961 "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
3962 "\x00\x00\x00\x60",
23e353c8 3963 .klen = 36,
de224c30
SS
3964 .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
3965 .input = "Single block msg",
23e353c8 3966 .ilen = 16,
de224c30
SS
3967 .result = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
3968 "\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
3969 .rlen = 16,
3970 }, {
3971 .key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
3972 "\x07\x96\x36\x58\x79\xef\xf8\x86"
3973 "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
3974 "\x4b\x50\x59\x0c\x87\xa2\x38\x84"
3975 "\x00\xfa\xac\x24",
3976 .klen = 36,
3977 .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
3978 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3979 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3980 "\x10\x11\x12\x13\x14\x15\x16\x17"
3981 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
23e353c8 3982 .ilen = 32,
de224c30
SS
3983 .result = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
3984 "\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
3985 "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
3986 "\x55\x30\x83\x1d\x93\x44\xaf\x1c",
23e353c8 3987 .rlen = 32,
a773edb3
TSH
3988 }, {
3989 // generated using Crypto++
de224c30
SS
3990 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
3991 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3992 "\x10\x11\x12\x13\x14\x15\x16\x17"
3993 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3994 "\x00\x00\x00\x00",
a773edb3 3995 .klen = 32 + 4,
de224c30
SS
3996 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
3997 .input =
3998 "\x00\x01\x02\x03\x04\x05\x06\x07"
3999 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4000 "\x10\x11\x12\x13\x14\x15\x16\x17"
4001 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
4002 "\x20\x21\x22\x23\x24\x25\x26\x27"
4003 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
4004 "\x30\x31\x32\x33\x34\x35\x36\x37"
4005 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
4006 "\x40\x41\x42\x43\x44\x45\x46\x47"
4007 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
4008 "\x50\x51\x52\x53\x54\x55\x56\x57"
4009 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
4010 "\x60\x61\x62\x63\x64\x65\x66\x67"
4011 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
4012 "\x70\x71\x72\x73\x74\x75\x76\x77"
4013 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
4014 "\x80\x81\x82\x83\x84\x85\x86\x87"
4015 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
4016 "\x90\x91\x92\x93\x94\x95\x96\x97"
4017 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
4018 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
4019 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
4020 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
4021 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
4022 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
4023 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
4024 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
4025 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
4026 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
4027 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
4028 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
4029 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
4030 "\x00\x03\x06\x09\x0c\x0f\x12\x15"
4031 "\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
4032 "\x30\x33\x36\x39\x3c\x3f\x42\x45"
4033 "\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
4034 "\x60\x63\x66\x69\x6c\x6f\x72\x75"
4035 "\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
4036 "\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
4037 "\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
4038 "\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
4039 "\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
4040 "\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
4041 "\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
4042 "\x20\x23\x26\x29\x2c\x2f\x32\x35"
4043 "\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
4044 "\x50\x53\x56\x59\x5c\x5f\x62\x65"
4045 "\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
4046 "\x80\x83\x86\x89\x8c\x8f\x92\x95"
4047 "\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
4048 "\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
4049 "\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
4050 "\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
4051 "\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
4052 "\x10\x13\x16\x19\x1c\x1f\x22\x25"
4053 "\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
4054 "\x40\x43\x46\x49\x4c\x4f\x52\x55"
4055 "\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
4056 "\x70\x73\x76\x79\x7c\x7f\x82\x85"
4057 "\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
4058 "\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
4059 "\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
4060 "\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
4061 "\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
4062 "\x00\x05\x0a\x0f\x14\x19\x1e\x23"
4063 "\x28\x2d\x32\x37\x3c\x41\x46\x4b"
4064 "\x50\x55\x5a\x5f\x64\x69\x6e\x73"
4065 "\x78\x7d\x82\x87\x8c\x91\x96\x9b"
4066 "\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
4067 "\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
4068 "\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
4069 "\x18\x1d\x22\x27\x2c\x31\x36\x3b"
4070 "\x40\x45\x4a\x4f\x54\x59\x5e\x63"
4071 "\x68\x6d\x72\x77\x7c\x81\x86\x8b"
4072 "\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
4073 "\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
4074 "\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
4075 "\x08\x0d\x12\x17\x1c\x21\x26\x2b"
4076 "\x30\x35\x3a\x3f\x44\x49\x4e\x53"
4077 "\x58\x5d\x62\x67\x6c\x71\x76\x7b"
4078 "\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
4079 "\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
4080 "\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
4081 "\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
4082 "\x20\x25\x2a\x2f\x34\x39\x3e\x43"
4083 "\x48\x4d\x52\x57\x5c\x61\x66\x6b"
4084 "\x70\x75\x7a\x7f\x84\x89\x8e\x93"
4085 "\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
4086 "\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
4087 "\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
4088 "\x10\x15\x1a\x1f\x24\x29\x2e\x33"
4089 "\x38\x3d\x42\x47\x4c\x51\x56\x5b"
4090 "\x60\x65\x6a\x6f\x74\x79\x7e\x83"
4091 "\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
4092 "\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
4093 "\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
4094 "\x00\x07\x0e\x15\x1c\x23\x2a\x31"
4095 "\x38\x3f\x46\x4d\x54\x5b\x62\x69"
4096 "\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
4097 "\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
4098 "\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
4099 "\x18\x1f\x26\x2d\x34\x3b\x42\x49"
4100 "\x50\x57\x5e\x65\x6c\x73\x7a\x81"
4101 "\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
4102 "\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
4103 "\xf8\xff\x06\x0d\x14\x1b\x22\x29"
4104 "\x30\x37\x3e\x45\x4c\x53\x5a\x61"
4105 "\x68\x6f\x76\x7d\x84\x8b\x92\x99"
4106 "\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
4107 "\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
4108 "\x10\x17\x1e\x25\x2c\x33\x3a\x41"
4109 "\x48\x4f\x56\x5d\x64\x6b\x72\x79"
4110 "\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
4111 "\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
4112 "\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
4113 "\x28\x2f\x36\x3d\x44\x4b\x52\x59"
4114 "\x60\x67\x6e\x75\x7c\x83\x8a\x91"
4115 "\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
4116 "\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
4117 "\x08\x0f\x16\x1d\x24\x2b\x32\x39"
4118 "\x40\x47\x4e\x55\x5c\x63\x6a\x71"
4119 "\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
4120 "\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
4121 "\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
4122 "\x20\x27\x2e\x35\x3c\x43\x4a\x51"
4123 "\x58\x5f\x66\x6d\x74\x7b\x82\x89"
4124 "\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
4125 "\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
4126 "\x00\x09\x12\x1b\x24\x2d\x36\x3f"
4127 "\x48\x51\x5a\x63\x6c\x75\x7e\x87"
4128 "\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
4129 "\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
4130 "\x20\x29\x32\x3b\x44\x4d\x56\x5f"
4131 "\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
4132 "\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
4133 "\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
4134 "\x40\x49\x52\x5b\x64\x6d\x76\x7f"
4135 "\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
4136 "\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
4137 "\x18\x21\x2a\x33\x3c\x45\x4e\x57"
4138 "\x60\x69\x72\x7b\x84\x8d\x96\x9f"
4139 "\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
4140 "\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
4141 "\x38\x41\x4a\x53\x5c\x65\x6e\x77"
4142 "\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
4143 "\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
4144 "\x10\x19\x22\x2b\x34\x3d\x46\x4f"
4145 "\x58\x61\x6a\x73\x7c\x85\x8e\x97"
4146 "\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
4147 "\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
4148 "\x30\x39\x42\x4b\x54\x5d\x66\x6f"
4149 "\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
4150 "\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
4151 "\x08\x11\x1a\x23\x2c\x35\x3e\x47"
4152 "\x50\x59\x62\x6b\x74\x7d\x86\x8f"
4153 "\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
4154 "\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
4155 "\x28\x31\x3a\x43\x4c\x55\x5e\x67"
4156 "\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
4157 "\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
4158 "\x00\x0b\x16\x21\x2c\x37\x42\x4d"
4159 "\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
4160 "\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
4161 "\x08\x13\x1e\x29\x34\x3f\x4a\x55"
4162 "\x60\x6b\x76\x81\x8c\x97\xa2\xad"
4163 "\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
4164 "\x10\x1b\x26\x31\x3c\x47\x52\x5d"
4165 "\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
4166 "\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
4167 "\x18\x23\x2e\x39\x44\x4f\x5a\x65"
4168 "\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
4169 "\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
4170 "\x20\x2b\x36\x41\x4c\x57\x62\x6d"
4171 "\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
4172 "\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
4173 "\x28\x33\x3e\x49\x54\x5f\x6a\x75"
4174 "\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
4175 "\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
4176 "\x30\x3b\x46\x51\x5c\x67\x72\x7d"
4177 "\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
4178 "\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
4179 "\x38\x43\x4e\x59\x64\x6f\x7a\x85"
4180 "\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
4181 "\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
4182 "\x40\x4b\x56\x61\x6c\x77\x82\x8d"
4183 "\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
4184 "\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
4185 "\x48\x53\x5e\x69\x74\x7f\x8a\x95"
4186 "\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
4187 "\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
4188 "\x50\x5b\x66\x71\x7c\x87\x92\x9d"
4189 "\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
4190 "\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
4191 "\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
4192 "\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
4193 "\x38\x45\x52\x5f\x6c\x79\x86\x93"
4194 "\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
4195 "\x08\x15\x22\x2f\x3c\x49\x56\x63"
4196 "\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
4197 "\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
4198 "\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
4199 "\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
4200 "\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
4201 "\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
4202 "\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
4203 "\x48\x55\x62\x6f\x7c\x89\x96\xa3"
4204 "\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
4205 "\x18\x25\x32\x3f\x4c\x59\x66\x73"
4206 "\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
4207 "\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
4208 "\x50\x5d\x6a\x77\x84\x91\x9e\xab"
4209 "\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
4210 "\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
4211 "\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
4212 "\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
4213 "\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
4214 "\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
4215 "\x28\x35\x42\x4f\x5c\x69\x76\x83"
4216 "\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
4217 "\xf8\x05\x12\x1f\x2c\x39\x46\x53"
4218 "\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
4219 "\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
4220 "\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
4221 "\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
4222 "\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
4223 "\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
4224 "\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
4225 "\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
4226 "\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
4227 "\x58\x67\x76\x85\x94\xa3\xb2\xc1"
4228 "\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
4229 "\x48\x57\x66\x75\x84\x93\xa2\xb1"
4230 "\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
4231 "\x38\x47\x56\x65\x74\x83\x92\xa1"
4232 "\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
4233 "\x28\x37\x46\x55\x64\x73\x82\x91"
4234 "\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
4235 "\x18\x27\x36\x45\x54\x63\x72\x81"
4236 "\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
4237 "\x08\x17\x26\x35\x44\x53\x62\x71"
4238 "\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
4239 "\xf8\x07\x16\x25\x34\x43\x52\x61"
4240 "\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
4241 "\xe8\xf7\x06\x15\x24\x33\x42\x51"
4242 "\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
4243 "\xd8\xe7\xf6\x05\x14\x23\x32\x41"
4244 "\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
4245 "\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
4246 "\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
4247 "\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
4248 "\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
4249 "\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
4250 "\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
4251 "\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
4252 "\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
4253 "\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
4254 "\x00\x11\x22\x33\x44\x55\x66\x77"
4255 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
4256 "\x10\x21\x32\x43\x54\x65\x76\x87"
4257 "\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
4258 "\x20\x31\x42\x53\x64\x75\x86\x97"
4259 "\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
4260 "\x30\x41\x52\x63\x74\x85\x96\xa7"
4261 "\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
4262 "\x40\x51\x62\x73\x84\x95\xa6\xb7"
4263 "\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
4264 "\x50\x61\x72\x83\x94\xa5\xb6\xc7"
4265 "\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
4266 "\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
4267 "\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
4268 "\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
4269 "\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
4270 "\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
4271 "\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
4272 "\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
4273 "\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
4274 "\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
4275 "\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
4276 "\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
4277 "\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
4278 "\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
4279 "\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
4280 "\xd0\xe1\xf2\x03\x14\x25\x36\x47"
4281 "\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
4282 "\xe0\xf1\x02\x13\x24\x35\x46\x57"
4283 "\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
4284 "\xf0\x01\x12\x23\x34\x45\x56\x67"
4285 "\x78\x89\x9a\xab\xbc\xcd\xde\xef"
4286 "\x00\x13\x26\x39\x4c\x5f\x72\x85"
4287 "\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
4288 "\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
4289 "\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
4290 "\x60\x73\x86\x99\xac\xbf\xd2\xe5"
4291 "\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
4292 "\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
4293 "\x28\x3b\x4e\x61\x74\x87\x9a\xad"
4294 "\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
4295 "\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
4296 "\xf0\x03\x16\x29\x3c\x4f\x62\x75"
4297 "\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
4298 "\x20\x33\x46\x59\x6c\x7f\x92\xa5"
4299 "\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
4300 "\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
4301 "\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
4302 "\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
4303 "\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
4304 "\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
4305 "\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
4306 "\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
4307 "\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
4308 "\x10\x23\x36\x49\x5c\x6f\x82\x95"
4309 "\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
4310 "\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
4311 "\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
4312 "\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
4313 "\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
4314 "\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
4315 "\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
4316 "\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
4317 "\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
4318 "\x00\x15\x2a\x3f\x54\x69\x7e\x93"
4319 "\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
4320 "\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
4321 "\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
4322 "\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
4323 "\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
4324 "\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
4325 "\x98\xad\xc2\xd7\xec\x01\x16\x2b"
4326 "\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
4327 "\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
4328 "\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
4329 "\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
4330 "\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
4331 "\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
4332 "\x30\x45\x5a\x6f\x84\x99\xae\xc3"
4333 "\xd8\xed\x02\x17\x2c\x41\x56\x6b"
4334 "\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
4335 "\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
4336 "\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
4337 "\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
4338 "\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
4339 "\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
4340 "\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
4341 "\x18\x2d\x42\x57\x6c\x81\x96\xab"
4342 "\xc0\xd5\xea\xff\x14\x29\x3e\x53"
4343 "\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
4344 "\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
4345 "\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
4346 "\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
4347 "\x08\x1d\x32\x47\x5c\x71\x86\x9b"
4348 "\xb0\xc5\xda\xef\x04\x19\x2e\x43"
4349 "\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
4350 "\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
4351 "\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
4352 "\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
4353 "\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
4354 "\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
4355 "\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
4356 "\x50\x67\x7e\x95\xac\xc3\xda\xf1"
4357 "\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
4358 "\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
4359 "\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
4360 "\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
4361 "\xe8\xff\x16\x2d\x44\x5b\x72\x89"
4362 "\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
4363 "\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
4364 "\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
4365 "\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
4366 "\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
4367 "\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
4368 "\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
4369 "\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
4370 "\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
4371 "\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
4372 "\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
4373 "\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
4374 "\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
4375 "\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
4376 "\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
4377 "\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
4378 "\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
4379 "\xd8\xef\x06\x1d\x34\x4b\x62\x79"
4380 "\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
4381 "\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
4382 "\x00\x19\x32\x4b\x64\x7d\x96\xaf"
4383 "\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
4384 "\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
4385 "\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
4386 "\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
4387 "\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
4388 "\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
4389 "\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
4390 "\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
4391 "\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
4392 "\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
4393 "\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
4394 "\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
4395 "\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
4396 "\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
4397 "\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
4398 "\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
4399 "\x48\x61\x7a\x93\xac\xc5\xde\xf7"
4400 "\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
4401 "\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
4402 "\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
4403 "\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
4404 "\x30\x49\x62\x7b\x94\xad\xc6\xdf"
4405 "\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
4406 "\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
4407 "\x88\xa1\xba\xd3\xec\x05\x1e\x37"
4408 "\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
4409 "\x18\x31\x4a\x63\x7c\x95\xae\xc7"
4410 "\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
4411 "\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
4412 "\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
4413 "\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
4414 "\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
4415 "\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
4416 "\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
4417 "\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
4418 "\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
4419 "\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
4420 "\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
4421 "\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
4422 "\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
4423 "\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
4424 "\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
4425 "\x48\x63\x7e\x99\xb4\xcf\xea\x05"
4426 "\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
4427 "\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
4428 "\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
4429 "\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
4430 "\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
4431 "\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
4432 "\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
4433 "\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
4434 "\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
4435 "\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
4436 "\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
4437 "\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
4438 "\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
4439 "\x18\x33\x4e\x69\x84\x9f\xba\xd5"
4440 "\xf0\x0b\x26\x41\x5c\x77\x92\xad"
4441 "\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
4442 "\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
4443 "\x78\x93\xae\xc9\xe4\xff\x1a\x35"
4444 "\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
4445 "\x28\x43\x5e\x79\x94\xaf\xca\xe5"
4446 "\x00\x1d\x3a\x57\x74\x91\xae\xcb"
4447 "\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
4448 "\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
4449 "\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
4450 "\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
4451 "\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
4452 "\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
4453 "\x58\x75\x92\xaf\xcc\xe9\x06\x23"
4454 "\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
4455 "\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
4456 "\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
4457 "\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
4458 "\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
4459 "\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
4460 "\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
4461 "\x98\xb5\xd2\xef\x0c\x29\x46\x63"
4462 "\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
4463 "\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
4464 "\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
4465 "\x38\x55\x72\x8f\xac\xc9\xe6\x03"
4466 "\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
4467 "\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
4468 "\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
4469 "\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
4470 "\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
4471 "\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
4472 "\x90\xad\xca\xe7\x04\x21\x3e\x5b"
4473 "\x78\x95\xb2\xcf\xec\x09\x26\x43"
4474 "\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
4475 "\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
4476 "\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
4477 "\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
4478 "\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
4479 "\xf8\x17\x36\x55\x74\x93\xb2\xd1"
4480 "\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
4481 "\xe8\x07\x26\x45\x64\x83\xa2\xc1"
4482 "\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
4483 "\xd8\xf7\x16\x35\x54\x73\x92\xb1"
4484 "\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
4485 "\xc8\xe7\x06\x25\x44\x63\x82\xa1"
4486 "\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
4487 "\xb8\xd7\xf6\x15\x34\x53\x72\x91"
4488 "\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
4489 "\xa8\xc7\xe6\x05\x24\x43\x62\x81"
4490 "\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
4491 "\x98\xb7\xd6\xf5\x14\x33\x52\x71"
4492 "\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
4493 "\x88\xa7\xc6\xe5\x04\x23\x42\x61"
4494 "\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
4495 "\x78\x97\xb6\xd5\xf4\x13\x32\x51"
4496 "\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
4497 "\x68\x87\xa6\xc5\xe4\x03\x22\x41"
4498 "\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
4499 "\x58\x77\x96\xb5\xd4\xf3\x12\x31"
4500 "\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
4501 "\x48\x67\x86\xa5\xc4\xe3\x02\x21"
4502 "\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
4503 "\x38\x57\x76\x95\xb4\xd3\xf2\x11"
4504 "\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
4505 "\x28\x47\x66\x85\xa4\xc3\xe2\x01"
4506 "\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
4507 "\x18\x37\x56\x75\x94\xb3\xd2\xf1"
4508 "\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
4509 "\x08\x27\x46\x65\x84\xa3\xc2\xe1"
4510 "\x00\x21\x42\x63",
a773edb3 4511 .ilen = 4100,
de224c30
SS
4512 .result =
4513 "\xf0\x5c\x74\xad\x4e\xbc\x99\xe2"
4514 "\xae\xff\x91\x3a\x44\xcf\x38\x32"
4515 "\x1e\xad\xa7\xcd\xa1\x39\x95\xaa"
4516 "\x10\xb1\xb3\x2e\x04\x31\x8f\x86"
4517 "\xf2\x62\x74\x70\x0c\xa4\x46\x08"
4518 "\xa8\xb7\x99\xa8\xe9\xd2\x73\x79"
4519 "\x7e\x6e\xd4\x8f\x1e\xc7\x8e\x31"
4520 "\x0b\xfa\x4b\xce\xfd\xf3\x57\x71"
4521 "\xe9\x46\x03\xa5\x3d\x34\x00\xe2"
4522 "\x18\xff\x75\x6d\x06\x2d\x00\xab"
4523 "\xb9\x3e\x6c\x59\xc5\x84\x06\xb5"
4524 "\x8b\xd0\x89\x9c\x4a\x79\x16\xc6"
4525 "\x3d\x74\x54\xfa\x44\xcd\x23\x26"
4526 "\x5c\xcf\x7e\x28\x92\x32\xbf\xdf"
4527 "\xa7\x20\x3c\x74\x58\x2a\x9a\xde"
4528 "\x61\x00\x1c\x4f\xff\x59\xc4\x22"
4529 "\xac\x3c\xd0\xe8\x6c\xf9\x97\x1b"
4530 "\x58\x9b\xad\x71\xe8\xa9\xb5\x0d"
4531 "\xee\x2f\x04\x1f\x7f\xbc\x99\xee"
4532 "\x84\xff\x42\x60\xdc\x3a\x18\xa5"
4533 "\x81\xf9\xef\xdc\x7a\x0f\x65\x41"
4534 "\x2f\xa3\xd3\xf9\xc2\xcb\xc0\x4d"
4535 "\x8f\xd3\x76\x96\xad\x49\x6d\x38"
4536 "\x3d\x39\x0b\x6c\x80\xb7\x54\x69"
4537 "\xf0\x2c\x90\x02\x29\x0d\x1c\x12"
4538 "\xad\x55\xc3\x8b\x68\xd9\xcc\xb3"
4539 "\xb2\x64\x33\x90\x5e\xca\x4b\xe2"
4540 "\xfb\x75\xdc\x63\xf7\x9f\x82\x74"
4541 "\xf0\xc9\xaa\x7f\xe9\x2a\x9b\x33"
4542 "\xbc\x88\x00\x7f\xca\xb2\x1f\x14"
4543 "\xdb\xc5\x8e\x7b\x11\x3c\x3e\x08"
4544 "\xf3\x83\xe8\xe0\x94\x86\x2e\x92"
4545 "\x78\x6b\x01\xc9\xc7\x83\xba\x21"
4546 "\x6a\x25\x15\x33\x4e\x45\x08\xec"
4547 "\x35\xdb\xe0\x6e\x31\x51\x79\xa9"
4548 "\x42\x44\x65\xc1\xa0\xf1\xf9\x2a"
4549 "\x70\xd5\xb6\xc6\xc1\x8c\x39\xfc"
4550 "\x25\xa6\x55\xd9\xdd\x2d\x4c\xec"
4551 "\x49\xc6\xeb\x0e\xa8\x25\x2a\x16"
4552 "\x1b\x66\x84\xda\xe2\x92\xe5\xc0"
4553 "\xc8\x53\x07\xaf\x80\x84\xec\xfd"
4554 "\xcd\xd1\x6e\xcd\x6f\x6a\xf5\x36"
4555 "\xc5\x15\xe5\x25\x7d\x77\xd1\x1a"
4556 "\x93\x36\xa9\xcf\x7c\xa4\x54\x4a"
4557 "\x06\x51\x48\x4e\xf6\x59\x87\xd2"
4558 "\x04\x02\xef\xd3\x44\xde\x76\x31"
4559 "\xb3\x34\x17\x1b\x9d\x66\x11\x9f"
4560 "\x1e\xcc\x17\xe9\xc7\x3c\x1b\xe7"
4561 "\xcb\x50\x08\xfc\xdc\x2b\x24\xdb"
4562 "\x65\x83\xd0\x3b\xe3\x30\xea\x94"
4563 "\x6c\xe7\xe8\x35\x32\xc7\xdb\x64"
4564 "\xb4\x01\xab\x36\x2c\x77\x13\xaf"
4565 "\xf8\x2b\x88\x3f\x54\x39\xc4\x44"
4566 "\xfe\xef\x6f\x68\x34\xbe\x0f\x05"
4567 "\x16\x6d\xf6\x0a\x30\xe7\xe3\xed"
4568 "\xc4\xde\x3c\x1b\x13\xd8\xdb\xfe"
4569 "\x41\x62\xe5\x28\xd4\x8d\xa3\xc7"
4570 "\x93\x97\xc6\x48\x45\x1d\x9f\x83"
4571 "\xdf\x4b\x40\x3e\x42\x25\x87\x80"
4572 "\x4c\x7d\xa8\xd4\x98\x23\x95\x75"
4573 "\x41\x8c\xda\x41\x9b\xd4\xa7\x06"
4574 "\xb5\xf1\x71\x09\x53\xbe\xca\xbf"
4575 "\x32\x03\xed\xf0\x50\x1c\x56\x39"
4576 "\x5b\xa4\x75\x18\xf7\x9b\x58\xef"
4577 "\x53\xfc\x2a\x38\x23\x15\x75\xcd"
4578 "\x45\xe5\x5a\x82\x55\xba\x21\xfa"
4579 "\xd4\xbd\xc6\x94\x7c\xc5\x80\x12"
4580 "\xf7\x4b\x32\xc4\x9a\x82\xd8\x28"
4581 "\x8f\xd9\xc2\x0f\x60\x03\xbe\x5e"
4582 "\x21\xd6\x5f\x58\xbf\x5c\xb1\x32"
4583 "\x82\x8d\xa9\xe5\xf2\x66\x1a\xc0"
4584 "\xa0\xbc\x58\x2f\x71\xf5\x2f\xed"
4585 "\xd1\x26\xb9\xd8\x49\x5a\x07\x19"
4586 "\x01\x7c\x59\xb0\xf8\xa4\xb7\xd3"
4587 "\x7b\x1a\x8c\x38\xf4\x50\xa4\x59"
4588 "\xb0\xcc\x41\x0b\x88\x7f\xe5\x31"
4589 "\xb3\x42\xba\xa2\x7e\xd4\x32\x71"
4590 "\x45\x87\x48\xa9\xc2\xf2\x89\xb3"
4591 "\xe4\xa7\x7e\x52\x15\x61\xfa\xfe"
4592 "\xc9\xdd\x81\xeb\x13\xab\xab\xc3"
4593 "\x98\x59\xd8\x16\x3d\x14\x7a\x1c"
4594 "\x3c\x41\x9a\x16\x16\x9b\xd2\xd2"
4595 "\x69\x3a\x29\x23\xac\x86\x32\xa5"
4596 "\x48\x9c\x9e\xf3\x47\x77\x81\x70"
4597 "\x24\xe8\x85\xd2\xf5\xb5\xfa\xff"
4598 "\x59\x6a\xd3\x50\x59\x43\x59\xde"
4599 "\xd9\xf1\x55\xa5\x0c\xc3\x1a\x1a"
4600 "\x18\x34\x0d\x1a\x63\x33\xed\x10"
4601 "\xe0\x1d\x2a\x18\xd2\xc0\x54\xa8"
4602 "\xca\xb5\x9a\xd3\xdd\xca\x45\x84"
4603 "\x50\xe7\x0f\xfe\xa4\x99\x5a\xbe"
4604 "\x43\x2d\x9a\xcb\x92\x3f\x5a\x1d"
4605 "\x85\xd8\xc9\xdf\x68\xc9\x12\x80"
4606 "\x56\x0c\xdc\x00\xdc\x3a\x7d\x9d"
4607 "\xa3\xa2\xe8\x4d\xbf\xf9\x70\xa0"
4608 "\xa4\x13\x4f\x6b\xaf\x0a\x89\x7f"
4609 "\xda\xf0\xbf\x9b\xc8\x1d\xe5\xf8"
4610 "\x2e\x8b\x07\xb5\x73\x1b\xcc\xa2"
4611 "\xa6\xad\x30\xbc\x78\x3c\x5b\x10"
4612 "\xfa\x5e\x62\x2d\x9e\x64\xb3\x33"
4613 "\xce\xf9\x1f\x86\xe7\x8b\xa2\xb8"
4614 "\xe8\x99\x57\x8c\x11\xed\x66\xd9"
4615 "\x3c\x72\xb9\xc3\xe6\x4e\x17\x3a"
4616 "\x6a\xcb\x42\x24\x06\xed\x3e\x4e"
4617 "\xa3\xe8\x6a\x94\xda\x0d\x4e\xd5"
4618 "\x14\x19\xcf\xb6\x26\xd8\x2e\xcc"
4619 "\x64\x76\x38\x49\x4d\xfe\x30\x6d"
4620 "\xe4\xc8\x8c\x7b\xc4\xe0\x35\xba"
4621 "\x22\x6e\x76\xe1\x1a\xf2\x53\xc3"
4622 "\x28\xa2\x82\x1f\x61\x69\xad\xc1"
4623 "\x7b\x28\x4b\x1e\x6c\x85\x95\x9b"
4624 "\x51\xb5\x17\x7f\x12\x69\x8c\x24"
4625 "\xd5\xc7\x5a\x5a\x11\x54\xff\x5a"
4626 "\xf7\x16\xc3\x91\xa6\xf0\xdc\x0a"
4627 "\xb6\xa7\x4a\x0d\x7a\x58\xfe\xa5"
4628 "\xf5\xcb\x8f\x7b\x0e\xea\x57\xe7"
4629 "\xbd\x79\xd6\x1c\x88\x23\x6c\xf2"
4630 "\x4d\x29\x77\x53\x35\x6a\x00\x8d"
4631 "\xcd\xa3\x58\xbe\x77\x99\x18\xf8"
4632 "\xe6\xe1\x8f\xe9\x37\x8f\xe3\xe2"
4633 "\x5a\x8a\x93\x25\xaf\xf3\x78\x80"
4634 "\xbe\xa6\x1b\xc6\xac\x8b\x1c\x91"
4635 "\x58\xe1\x9f\x89\x35\x9d\x1d\x21"
4636 "\x29\x9f\xf4\x99\x02\x27\x0f\xa8"
4637 "\x4f\x79\x94\x2b\x33\x2c\xda\xa2"
4638 "\x26\x39\x83\x94\xef\x27\xd8\x53"
4639 "\x8f\x66\x0d\xe4\x41\x7d\x34\xcd"
4640 "\x43\x7c\x95\x0a\x53\xef\x66\xda"
4641 "\x7e\x9b\xf3\x93\xaf\xd0\x73\x71"
4642 "\xba\x40\x9b\x74\xf8\xd7\xd7\x41"
4643 "\x6d\xaf\x72\x9c\x8d\x21\x87\x3c"
4644 "\xfd\x0a\x90\xa9\x47\x96\x9e\xd3"
4645 "\x88\xee\x73\xcf\x66\x2f\x52\x56"
4646 "\x6d\xa9\x80\x4c\xe2\x6f\x62\x88"
4647 "\x3f\x0e\x54\x17\x48\x80\x5d\xd3"
4648 "\xc3\xda\x25\x3d\xa1\xc8\xcb\x9f"
4649 "\x9b\x70\xb3\xa1\xeb\x04\x52\xa1"
4650 "\xf2\x22\x0f\xfc\xc8\x18\xfa\xf9"
4651 "\x85\x9c\xf1\xac\xeb\x0c\x02\x46"
4652 "\x75\xd2\xf5\x2c\xe3\xd2\x59\x94"
4653 "\x12\xf3\x3c\xfc\xd7\x92\xfa\x36"
4654 "\xba\x61\x34\x38\x7c\xda\x48\x3e"
4655 "\x08\xc9\x39\x23\x5e\x02\x2c\x1a"
4656 "\x18\x7e\xb4\xd9\xfd\x9e\x40\x02"
4657 "\xb1\x33\x37\x32\xe7\xde\xd6\xd0"
4658 "\x7c\x58\x65\x4b\xf8\x34\x27\x9c"
4659 "\x44\xb4\xbd\xe9\xe9\x4c\x78\x7d"
4660 "\x4b\x9f\xce\xb1\xcd\x47\xa5\x37"
4661 "\xe5\x6d\xbd\xb9\x43\x94\x0a\xd4"
4662 "\xd6\xf9\x04\x5f\xb5\x66\x6c\x1a"
4663 "\x35\x12\xe3\x36\x28\x27\x36\x58"
4664 "\x01\x2b\x79\xe4\xba\x6d\x10\x7d"
4665 "\x65\xdf\x84\x95\xf4\xd5\xb6\x8f"
4666 "\x2b\x9f\x96\x00\x86\x60\xf0\x21"
4667 "\x76\xa8\x6a\x8c\x28\x1c\xb3\x6b"
4668 "\x97\xd7\xb6\x53\x2a\xcc\xab\x40"
4669 "\x9d\x62\x79\x58\x52\xe6\x65\xb7"
4670 "\xab\x55\x67\x9c\x89\x7c\x03\xb0"
4671 "\x73\x59\xc5\x81\xf5\x18\x17\x5c"
4672 "\x89\xf3\x78\x35\x44\x62\x78\x72"
4673 "\xd0\x96\xeb\x31\xe7\x87\x77\x14"
4674 "\x99\x51\xf2\x59\x26\x9e\xb5\xa6"
4675 "\x45\xfe\x6e\xbd\x07\x4c\x94\x5a"
4676 "\xa5\x7d\xfc\xf1\x2b\x77\xe2\xfe"
4677 "\x17\xd4\x84\xa0\xac\xb5\xc7\xda"
4678 "\xa9\x1a\xb6\xf3\x74\x11\xb4\x9d"
4679 "\xfb\x79\x2e\x04\x2d\x50\x28\x83"
4680 "\xbf\xc6\x52\xd3\x34\xd6\xe8\x7a"
4681 "\xb6\xea\xe7\xa8\x6c\x15\x1e\x2c"
4682 "\x57\xbc\x48\x4e\x5f\x5c\xb6\x92"
4683 "\xd2\x49\x77\x81\x6d\x90\x70\xae"
4684 "\x98\xa1\x03\x0d\x6b\xb9\x77\x14"
4685 "\xf1\x4e\x23\xd3\xf8\x68\xbd\xc2"
4686 "\xfe\x04\xb7\x5c\xc5\x17\x60\x8f"
4687 "\x65\x54\xa4\x7a\x42\xdc\x18\x0d"
4688 "\xb5\xcf\x0f\xd3\xc7\x91\x66\x1b"
4689 "\x45\x42\x27\x75\x50\xe5\xee\xb8"
4690 "\x7f\x33\x2c\xba\x4a\x92\x4d\x2c"
4691 "\x3c\xe3\x0d\x80\x01\xba\x0d\x29"
4692 "\xd8\x3c\xe9\x13\x16\x57\xe6\xea"
4693 "\x94\x52\xe7\x00\x4d\x30\xb0\x0f"
4694 "\x35\xb8\xb8\xa7\xb1\xb5\x3b\x44"
4695 "\xe1\x2f\xfd\x88\xed\x43\xe7\x52"
4696 "\x10\x93\xb3\x8a\x30\x6b\x0a\xf7"
4697 "\x23\xc6\x50\x9d\x4a\xb0\xde\xc3"
4698 "\xdc\x9b\x2f\x01\x56\x36\x09\xc5"
4699 "\x2f\x6b\xfe\xf1\xd8\x27\x45\x03"
4700 "\x30\x5e\x5c\x5b\xb4\x62\x0e\x1a"
4701 "\xa9\x21\x2b\x92\x94\x87\x62\x57"
4702 "\x4c\x10\x74\x1a\xf1\x0a\xc5\x84"
4703 "\x3b\x9e\x72\x02\xd7\xcc\x09\x56"
4704 "\xbd\x54\xc1\xf0\xc3\xe3\xb3\xf8"
4705 "\xd2\x0d\x61\xcb\xef\xce\x0d\x05"
4706 "\xb0\x98\xd9\x8e\x4f\xf9\xbc\x93"
4707 "\xa6\xea\xc8\xcf\x10\x53\x4b\xf1"
4708 "\xec\xfc\x89\xf9\x64\xb0\x22\xbf"
4709 "\x9e\x55\x46\x9f\x7c\x50\x8e\x84"
4710 "\x54\x20\x98\xd7\x6c\x40\x1e\xdb"
4711 "\x69\x34\x78\x61\x24\x21\x9c\x8a"
4712 "\xb3\x62\x31\x8b\x6e\xf5\x2a\x35"
4713 "\x86\x13\xb1\x6c\x64\x2e\x41\xa5"
4714 "\x05\xf2\x42\xba\xd2\x3a\x0d\x8e"
4715 "\x8a\x59\x94\x3c\xcf\x36\x27\x82"
4716 "\xc2\x45\xee\x58\xcd\x88\xb4\xec"
4717 "\xde\xb2\x96\x0a\xaf\x38\x6f\x88"
4718 "\xd7\xd8\xe1\xdf\xb9\x96\xa9\x0a"
4719 "\xb1\x95\x28\x86\x20\xe9\x17\x49"
4720 "\xa2\x29\x38\xaa\xa5\xe9\x6e\xf1"
4721 "\x19\x27\xc0\xd5\x2a\x22\xc3\x0b"
4722 "\xdb\x7c\x73\x10\xb9\xba\x89\x76"
4723 "\x54\xae\x7d\x71\xb3\x93\xf6\x32"
4724 "\xe6\x47\x43\x55\xac\xa0\x0d\xc2"
4725 "\x93\x27\x4a\x8e\x0e\x74\x15\xc7"
4726 "\x0b\x85\xd9\x0c\xa9\x30\x7a\x3e"
4727 "\xea\x8f\x85\x6d\x3a\x12\x4f\x72"
4728 "\x69\x58\x7a\x80\xbb\xb5\x97\xf3"
4729 "\xcf\x70\xd2\x5d\xdd\x4d\x21\x79"
4730 "\x54\x4d\xe4\x05\xe8\xbd\xc2\x62"
4731 "\xb1\x3b\x77\x1c\xd6\x5c\xf3\xa0"
4732 "\x79\x00\xa8\x6c\x29\xd9\x18\x24"
4733 "\x36\xa2\x46\xc0\x96\x65\x7f\xbd"
4734 "\x2a\xed\x36\x16\x0c\xaa\x9f\xf4"
4735 "\xc5\xb4\xe2\x12\xed\x69\xed\x4f"
4736 "\x26\x2c\x39\x52\x89\x98\xe7\x2c"
4737 "\x99\xa4\x9e\xa3\x9b\x99\x46\x7a"
4738 "\x3a\xdc\xa8\x59\xa3\xdb\xc3\x3b"
4739 "\x95\x0d\x3b\x09\x6e\xee\x83\x5d"
4740 "\x32\x4d\xed\xab\xfa\x98\x14\x4e"
4741 "\xc3\x15\x45\x53\x61\xc4\x93\xbd"
4742 "\x90\xf4\x99\x95\x4c\xe6\x76\x92"
4743 "\x29\x90\x46\x30\x92\x69\x7d\x13"
4744 "\xf2\xa5\xcd\x69\x49\x44\xb2\x0f"
4745 "\x63\x40\x36\x5f\x09\xe2\x78\xf8"
4746 "\x91\xe3\xe2\xfa\x10\xf7\xc8\x24"
4747 "\xa8\x89\x32\x5c\x37\x25\x1d\xb2"
4748 "\xea\x17\x8a\x0a\xa9\x64\xc3\x7c"
4749 "\x3c\x7c\xbd\xc6\x79\x34\xe7\xe2"
4750 "\x85\x8e\xbf\xf8\xde\x92\xa0\xae"
4751 "\x20\xc4\xf6\xbb\x1f\x38\x19\x0e"
4752 "\xe8\x79\x9c\xa1\x23\xe9\x54\x7e"
4753 "\x37\x2f\xe2\x94\x32\xaf\xa0\x23"
4754 "\x49\xe4\xc0\xb3\xac\x00\x8f\x36"
4755 "\x05\xc4\xa6\x96\xec\x05\x98\x4f"
4756 "\x96\x67\x57\x1f\x20\x86\x1b\x2d"
4757 "\x69\xe4\x29\x93\x66\x5f\xaf\x6b"
4758 "\x88\x26\x2c\x67\x02\x4b\x52\xd0"
4759 "\x83\x7a\x43\x1f\xc0\x71\x15\x25"
4760 "\x77\x65\x08\x60\x11\x76\x4c\x8d"
4761 "\xed\xa9\x27\xc6\xb1\x2a\x2c\x6a"
4762 "\x4a\x97\xf5\xc6\xb7\x70\x42\xd3"
4763 "\x03\xd1\x24\x95\xec\x6d\xab\x38"
4764 "\x72\xce\xe2\x8b\x33\xd7\x51\x09"
4765 "\xdc\x45\xe0\x09\x96\x32\xf3\xc4"
4766 "\x84\xdc\x73\x73\x2d\x1b\x11\x98"
4767 "\xc5\x0e\x69\x28\x94\xc7\xb5\x4d"
4768 "\xc8\x8a\xd0\xaa\x13\x2e\x18\x74"
4769 "\xdd\xd1\x1e\xf3\x90\xe8\xfc\x9a"
4770 "\x72\x4a\x0e\xd1\xe4\xfb\x0d\x96"
4771 "\xd1\x0c\x79\x85\x1b\x1c\xfe\xe1"
4772 "\x62\x8f\x7a\x73\x32\xab\xc8\x18"
4773 "\x69\xe3\x34\x30\xdf\x13\xa6\xe5"
4774 "\xe8\x0e\x67\x7f\x81\x11\xb4\x60"
4775 "\xc7\xbd\x79\x65\x50\xdc\xc4\x5b"
4776 "\xde\x39\xa4\x01\x72\x63\xf3\xd1"
4777 "\x64\x4e\xdf\xfc\x27\x92\x37\x0d"
4778 "\x57\xcd\x11\x4f\x11\x04\x8e\x1d"
4779 "\x16\xf7\xcd\x92\x9a\x99\x30\x14"
4780 "\xf1\x7c\x67\x1b\x1f\x41\x0b\xe8"
4781 "\x32\xe8\xb8\xc1\x4f\x54\x86\x4f"
4782 "\xe5\x79\x81\x73\xcd\x43\x59\x68"
4783 "\x73\x02\x3b\x78\x21\x72\x43\x00"
4784 "\x49\x17\xf7\x00\xaf\x68\x24\x53"
4785 "\x05\x0a\xc3\x33\xe0\x33\x3f\x69"
4786 "\xd2\x84\x2f\x0b\xed\xde\x04\xf4"
4787 "\x11\x94\x13\x69\x51\x09\x28\xde"
4788 "\x57\x5c\xef\xdc\x9a\x49\x1c\x17"
4789 "\x97\xf3\x96\xc1\x7f\x5d\x2e\x7d"
4790 "\x55\xb8\xb3\x02\x09\xb3\x1f\xe7"
4791 "\xc9\x8d\xa3\x36\x34\x8a\x77\x13"
4792 "\x30\x63\x4c\xa5\xcd\xc3\xe0\x7e"
4793 "\x05\xa1\x7b\x0c\xcb\x74\x47\x31"
4794 "\x62\x03\x43\xf1\x87\xb4\xb0\x85"
4795 "\x87\x8e\x4b\x25\xc7\xcf\xae\x4b"
4796 "\x36\x46\x3e\x62\xbc\x6f\xeb\x5f"
4797 "\x73\xac\xe6\x07\xee\xc1\xa1\xd6"
4798 "\xc4\xab\xc9\xd6\x89\x45\xe1\xf1"
4799 "\x04\x4e\x1a\x6f\xbb\x4f\x3a\xa3"
4800 "\xa0\xcb\xa3\x0a\xd8\x71\x35\x55"
4801 "\xe4\xbc\x2e\x04\x06\xe6\xff\x5b"
4802 "\x1c\xc0\x11\x7c\xc5\x17\xf3\x38"
4803 "\xcf\xe9\xba\x0f\x0e\xef\x02\xc2"
4804 "\x8d\xc6\xbc\x4b\x67\x20\x95\xd7"
4805 "\x2c\x45\x5b\x86\x44\x8c\x6f\x2e"
4806 "\x7e\x9f\x1c\x77\xba\x6b\x0e\xa3"
4807 "\x69\xdc\xab\x24\x57\x60\x47\xc1"
4808 "\xd1\xa5\x9d\x23\xe6\xb1\x37\xfe"
4809 "\x93\xd2\x4c\x46\xf9\x0c\xc6\xfb"
4810 "\xd6\x9d\x99\x69\xab\x7a\x07\x0c"
4811 "\x65\xe7\xc4\x08\x96\xe2\xa5\x01"
4812 "\x3f\x46\x07\x05\x7e\xe8\x9a\x90"
4813 "\x50\xdc\xe9\x7a\xea\xa1\x39\x6e"
4814 "\x66\xe4\x6f\xa5\x5f\xb2\xd9\x5b"
4815 "\xf5\xdb\x2a\x32\xf0\x11\x6f\x7c"
4816 "\x26\x10\x8f\x3d\x80\xe9\x58\xf7"
4817 "\xe0\xa8\x57\xf8\xdb\x0e\xce\x99"
4818 "\x63\x19\x3d\xd5\xec\x1b\x77\x69"
4819 "\x98\xf6\xe4\x5f\x67\x17\x4b\x09"
4820 "\x85\x62\x82\x70\x18\xe2\x9a\x78"
4821 "\xe2\x62\xbd\xb4\xf1\x42\xc6\xfb"
4822 "\x08\xd0\xbd\xeb\x4e\x09\xf2\xc8"
4823 "\x1e\xdc\x3d\x32\x21\x56\x9c\x4f"
4824 "\x35\xf3\x61\x06\x72\x84\xc4\x32"
4825 "\xf2\xf1\xfa\x0b\x2f\xc3\xdb\x02"
4826 "\x04\xc2\xde\x57\x64\x60\x8d\xcf"
4827 "\xcb\x86\x5d\x97\x3e\xb1\x9c\x01"
4828 "\xd6\x28\x8f\x99\xbc\x46\xeb\x05"
4829 "\xaf\x7e\xb8\x21\x2a\x56\x85\x1c"
4830 "\xb3\x71\xa0\xde\xca\x96\xf1\x78"
4831 "\x49\xa2\x99\x81\x80\x5c\x01\xf5"
4832 "\xa0\xa2\x56\x63\xe2\x70\x07\xa5"
4833 "\x95\xd6\x85\xeb\x36\x9e\xa9\x51"
4834 "\x66\x56\x5f\x1d\x02\x19\xe2\xf6"
4835 "\x4f\x73\x38\x09\x75\x64\x48\xe0"
4836 "\xf1\x7e\x0e\xe8\x9d\xf9\xed\x94"
4837 "\xfe\x16\x26\x62\x49\x74\xf4\xb0"
4838 "\xd4\xa9\x6c\xb0\xfd\x53\xe9\x81"
4839 "\xe0\x7a\xbf\xcf\xb5\xc4\x01\x81"
4840 "\x79\x99\x77\x01\x3b\xe9\xa2\xb6"
4841 "\xe6\x6a\x8a\x9e\x56\x1c\x8d\x1e"
4842 "\x8f\x06\x55\x2c\x6c\xdc\x92\x87"
4843 "\x64\x3b\x4b\x19\xa1\x13\x64\x1d"
4844 "\x4a\xe9\xc0\x00\xb8\x95\xef\x6b"
4845 "\x1a\x86\x6d\x37\x52\x02\xc2\xe0"
4846 "\xc8\xbb\x42\x0c\x02\x21\x4a\xc9"
4847 "\xef\xa0\x54\xe4\x5e\x16\x53\x81"
4848 "\x70\x62\x10\xaf\xde\xb8\xb5\xd3"
4849 "\xe8\x5e\x6c\xc3\x8a\x3e\x18\x07"
4850 "\xf2\x2f\x7d\xa7\xe1\x3d\x4e\xb4"
4851 "\x26\xa7\xa3\x93\x86\xb2\x04\x1e"
4852 "\x53\x5d\x86\xd6\xde\x65\xca\xe3"
4853 "\x4e\xc1\xcf\xef\xc8\x70\x1b\x83"
4854 "\x13\xdd\x18\x8b\x0d\x76\xd2\xf6"
4855 "\x37\x7a\x93\x7a\x50\x11\x9f\x96"
4856 "\x86\x25\xfd\xac\xdc\xbe\x18\x93"
4857 "\x19\x6b\xec\x58\x4f\xb9\x75\xa7"
4858 "\xdd\x3f\x2f\xec\xc8\x5a\x84\xab"
4859 "\xd5\xe4\x8a\x07\xf6\x4d\x23\xd6"
4860 "\x03\xfb\x03\x6a\xea\x66\xbf\xd4"
4861 "\xb1\x34\xfb\x78\xe9\x55\xdc\x7c"
4862 "\x3d\x9c\xe5\x9a\xac\xc3\x7a\x80"
4863 "\x24\x6d\xa0\xef\x25\x7c\xb7\xea"
4864 "\xce\x4d\x5f\x18\x60\xce\x87\x22"
4865 "\x66\x2f\xd5\xdd\xdd\x02\x21\x75"
4866 "\x82\xa0\x1f\x58\xc6\xd3\x62\xf7"
4867 "\x32\xd8\xaf\x1e\x07\x77\x51\x96"
4868 "\xd5\x6b\x1e\x7e\x80\x02\xe8\x67"
4869 "\xea\x17\x0b\x10\xd2\x3f\x28\x25"
4870 "\x4f\x05\x77\x02\x14\x69\xf0\x2c"
4871 "\xbe\x0c\xf1\x74\x30\xd1\xb9\x9b"
4872 "\xfc\x8c\xbb\x04\x16\xd9\xba\xc3"
4873 "\xbc\x91\x8a\xc4\x30\xa4\xb0\x12"
4874 "\x4c\x21\x87\xcb\xc9\x1d\x16\x96"
4875 "\x07\x6f\x23\x54\xb9\x6f\x79\xe5"
4876 "\x64\xc0\x64\xda\xb1\xae\xdd\x60"
4877 "\x6c\x1a\x9d\xd3\x04\x8e\x45\xb0"
4878 "\x92\x61\xd0\x48\x81\xed\x5e\x1d"
4879 "\xa0\xc9\xa4\x33\xc7\x13\x51\x5d"
4880 "\x7f\x83\x73\xb6\x70\x18\x65\x3e"
4881 "\x2f\x0e\x7a\x12\x39\x98\xab\xd8"
4882 "\x7e\x6f\xa3\xd1\xba\x56\xad\xbd"
4883 "\xf0\x03\x01\x1c\x85\x35\x9f\xeb"
4884 "\x19\x63\xa1\xaf\xfe\x2d\x35\x50"
4885 "\x39\xa0\x65\x7c\x95\x7e\x6b\xfe"
4886 "\xc1\xac\x07\x7c\x98\x4f\xbe\x57"
4887 "\xa7\x22\xec\xe2\x7e\x29\x09\x53"
4888 "\xe8\xbf\xb4\x7e\x3f\x8f\xfc\x14"
4889 "\xce\x54\xf9\x18\x58\xb5\xff\x44"
4890 "\x05\x9d\xce\x1b\xb6\x82\x23\xc8"
4891 "\x2e\xbc\x69\xbb\x4a\x29\x0f\x65"
4892 "\x94\xf0\x63\x06\x0e\xef\x8c\xbd"
4893 "\xff\xfd\xb0\x21\x6e\x57\x05\x75"
4894 "\xda\xd5\xc4\xeb\x8d\x32\xf7\x50"
4895 "\xd3\x6f\x22\xed\x5f\x8e\xa2\x5b"
4896 "\x80\x8c\xc8\x78\x40\x24\x4b\x89"
4897 "\x30\xce\x7a\x97\x0e\xc4\xaf\xef"
4898 "\x9b\xb4\xcd\x66\x74\x14\x04\x2b"
4899 "\xf7\xce\x0b\x1c\x6e\xc2\x78\x8c"
4900 "\xca\xc5\xd0\x1c\x95\x4a\x91\x2d"
4901 "\xa7\x20\xeb\x86\x52\xb7\x67\xd8"
4902 "\x0c\xd6\x04\x14\xde\x51\x74\x75"
4903 "\xe7\x11\xb4\x87\xa3\x3d\x2d\xad"
4904 "\x4f\xef\xa0\x0f\x70\x00\x6d\x13"
4905 "\x19\x1d\x41\x50\xe9\xd8\xf0\x32"
4906 "\x71\xbc\xd3\x11\xf2\xac\xbe\xaf"
4907 "\x75\x46\x65\x4e\x07\x34\x37\xa3"
4908 "\x89\xfe\x75\xd4\x70\x4c\xc6\x3f"
4909 "\x69\x24\x0e\x38\x67\x43\x8c\xde"
4910 "\x06\xb5\xb8\xe7\xc4\xf0\x41\x8f"
4911 "\xf0\xbd\x2f\x0b\xb9\x18\xf8\xde"
4912 "\x64\xb1\xdb\xee\x00\x50\x77\xe1"
4913 "\xc7\xff\xa6\xfa\xdd\x70\xf4\xe3"
4914 "\x93\xe9\x77\x35\x3d\x4b\x2f\x2b"
4915 "\x6d\x55\xf0\xfc\x88\x54\x4e\x89"
4916 "\xc1\x8a\x23\x31\x2d\x14\x2a\xb8"
4917 "\x1b\x15\xdd\x9e\x6e\x7b\xda\x05"
4918 "\x91\x7d\x62\x64\x96\x72\xde\xfc"
4919 "\xc1\xec\xf0\x23\x51\x6f\xdb\x5b"
4920 "\x1d\x08\x57\xce\x09\xb8\xf6\xcd"
4921 "\x8d\x95\xf2\x20\xbf\x0f\x20\x57"
4922 "\x98\x81\x84\x4f\x15\x5c\x76\xe7"
4923 "\x3e\x0a\x3a\x6c\xc4\x8a\xbe\x78"
4924 "\x74\x77\xc3\x09\x4b\x5d\x48\xe4"
4925 "\xc8\xcb\x0b\xea\x17\x28\xcf\xcf"
4926 "\x31\x32\x44\xa4\xe5\x0e\x1a\x98"
4927 "\x94\xc4\xf0\xff\xae\x3e\x44\xe8"
4928 "\xa5\xb3\xb5\x37\x2f\xe8\xaf\x6f"
4929 "\x28\xc1\x37\x5f\x31\xd2\xb9\x33"
4930 "\xb1\xb2\x52\x94\x75\x2c\x29\x59"
4931 "\x06\xc2\x25\xe8\x71\x65\x4e\xed"
4932 "\xc0\x9c\xb1\xbb\x25\xdc\x6c\xe7"
4933 "\x4b\xa5\x7a\x54\x7a\x60\xff\x7a"
4934 "\xe0\x50\x40\x96\x35\x63\xe4\x0b"
4935 "\x76\xbd\xa4\x65\x00\x1b\x57\x88"
4936 "\xae\xed\x39\x88\x42\x11\x3c\xed"
4937 "\x85\x67\x7d\xb9\x68\x82\xe9\x43"
4938 "\x3c\x47\x53\xfa\xe8\xf8\x9f\x1f"
4939 "\x9f\xef\x0f\xf7\x30\xd9\x30\x0e"
4940 "\xb9\x9f\x69\x18\x2f\x7e\xf8\xf8"
4941 "\xf8\x8c\x0f\xd4\x02\x4d\xea\xcd"
4942 "\x0a\x9c\x6f\x71\x6d\x5a\x4c\x60"
4943 "\xce\x20\x56\x32\xc6\xc5\x99\x1f"
4944 "\x09\xe6\x4e\x18\x1a\x15\x13\xa8"
4945 "\x7d\xb1\x6b\xc0\xb2\x6d\xf8\x26"
4946 "\x66\xf8\x3d\x18\x74\x70\x66\x7a"
4947 "\x34\x17\xde\xba\x47\xf1\x06\x18"
4948 "\xcb\xaf\xeb\x4a\x1e\x8f\xa7\x77"
4949 "\xe0\x3b\x78\x62\x66\xc9\x10\xea"
4950 "\x1f\xb7\x29\x0a\x45\xa1\x1d\x1e"
4951 "\x1d\xe2\x65\x61\x50\x9c\xd7\x05"
4952 "\xf2\x0b\x5b\x12\x61\x02\xc8\xe5"
4953 "\x63\x4f\x20\x0c\x07\x17\x33\x5e"
4954 "\x03\x9a\x53\x0f\x2e\x55\xfe\x50"
4955 "\x43\x7d\xd0\xb6\x7e\x5a\xda\xae"
4956 "\x58\xef\x15\xa9\x83\xd9\x46\xb1"
4957 "\x42\xaa\xf5\x02\x6c\xce\x92\x06"
4958 "\x1b\xdb\x66\x45\x91\x79\xc2\x2d"
4959 "\xe6\x53\xd3\x14\xfd\xbb\x44\x63"
4960 "\xc6\xd7\x3d\x7a\x0c\x75\x78\x9d"
4961 "\x5c\xa6\x39\xb3\xe5\x63\xca\x8b"
4962 "\xfe\xd3\xef\x60\x83\xf6\x8e\x70"
4963 "\xb6\x67\xc7\x77\xed\x23\xef\x4c"
4964 "\xf0\xed\x2d\x07\x59\x6f\xc1\x01"
4965 "\x34\x37\x08\xab\xd9\x1f\x09\xb1"
4966 "\xce\x5b\x17\xff\x74\xf8\x9c\xd5"
4967 "\x2c\x56\x39\x79\x0f\x69\x44\x75"
4968 "\x58\x27\x01\xc4\xbf\xa7\xa1\x1d"
4969 "\x90\x17\x77\x86\x5a\x3f\xd9\xd1"
4970 "\x0e\xa0\x10\xf8\xec\x1e\xa5\x7f"
4971 "\x5e\x36\xd1\xe3\x04\x2c\x70\xf7"
4972 "\x8e\xc0\x98\x2f\x6c\x94\x2b\x41"
4973 "\xb7\x60\x00\xb7\x2e\xb8\x02\x8d"
4974 "\xb8\xb0\xd3\x86\xba\x1d\xd7\x90"
4975 "\xd6\xb6\xe1\xfc\xd7\xd8\x28\x06"
4976 "\x63\x9b\xce\x61\x24\x79\xc0\x70"
4977 "\x52\xd0\xb6\xd4\x28\x95\x24\x87"
4978 "\x03\x1f\xb7\x9a\xda\xa3\xfb\x52"
4979 "\x5b\x68\xe7\x4c\x8c\x24\xe1\x42"
4980 "\xf7\xd5\xfd\xad\x06\x32\x9f\xba"
4981 "\xc1\xfc\xdd\xc6\xfc\xfc\xb3\x38"
4982 "\x74\x56\x58\x40\x02\x37\x52\x2c"
4983 "\x55\xcc\xb3\x9e\x7a\xe9\xd4\x38"
4984 "\x41\x5e\x0c\x35\xe2\x11\xd1\x13"
4985 "\xf8\xb7\x8d\x72\x6b\x22\x2a\xb0"
4986 "\xdb\x08\xba\x35\xb9\x3f\xc8\xd3"
4987 "\x24\x90\xec\x58\xd2\x09\xc7\x2d"
4988 "\xed\x38\x80\x36\x72\x43\x27\x49"
4989 "\x4a\x80\x8a\xa2\xe8\xd3\xda\x30"
4990 "\x7d\xb6\x82\x37\x86\x92\x86\x3e"
4991 "\x08\xb2\x28\x5a\x55\x44\x24\x7d"
4992 "\x40\x48\x8a\xb6\x89\x58\x08\xa0"
4993 "\xd6\x6d\x3a\x17\xbf\xf6\x54\xa2"
4994 "\xf5\xd3\x8c\x0f\x78\x12\x57\x8b"
4995 "\xd5\xc2\xfd\x58\x5b\x7f\x38\xe3"
4996 "\xcc\xb7\x7c\x48\xb3\x20\xe8\x81"
4997 "\x14\x32\x45\x05\xe0\xdb\x9f\x75"
4998 "\x85\xb4\x6a\xfc\x95\xe3\x54\x22"
4999 "\x12\xee\x30\xfe\xd8\x30\xef\x34"
5000 "\x50\xab\x46\x30\x98\x2f\xb7\xc0"
5001 "\x15\xa2\x83\xb6\xf2\x06\x21\xa2"
5002 "\xc3\x26\x37\x14\xd1\x4d\xb5\x10"
5003 "\x52\x76\x4d\x6a\xee\xb5\x2b\x15"
5004 "\xb7\xf9\x51\xe8\x2a\xaf\xc7\xfa"
5005 "\x77\xaf\xb0\x05\x4d\xd1\x68\x8e"
5006 "\x74\x05\x9f\x9d\x93\xa5\x3e\x7f"
5007 "\x4e\x5f\x9d\xcb\x09\xc7\x83\xe3"
5008 "\x02\x9d\x27\x1f\xef\x85\x05\x8d"
5009 "\xec\x55\x88\x0f\x0d\x7c\x4c\xe8"
5010 "\xa1\x75\xa0\xd8\x06\x47\x14\xef"
5011 "\xaa\x61\xcf\x26\x15\xad\xd8\xa3"
5012 "\xaa\x75\xf2\x78\x4a\x5a\x61\xdf"
5013 "\x8b\xc7\x04\xbc\xb2\x32\xd2\x7e"
5014 "\x42\xee\xb4\x2f\x51\xff\x7b\x2e"
5015 "\xd3\x02\xe8\xdc\x5d\x0d\x50\xdc"
5016 "\xae\xb7\x46\xf9\xa8\xe6\xd0\x16"
5017 "\xcc\xe6\x2c\x81\xc7\xad\xe9\xf0"
5018 "\x05\x72\x6d\x3d\x0a\x7a\xa9\x02"
5019 "\xac\x82\x93\x6e\xb6\x1c\x28\xfc"
5020 "\x44\x12\xfb\x73\x77\xd4\x13\x39"
5021 "\x29\x88\x8a\xf3\x5c\xa6\x36\xa0"
5022 "\x2a\xed\x7e\xb1\x1d\xd6\x4c\x6b"
5023 "\x41\x01\x18\x5d\x5d\x07\x97\xa6"
5024 "\x4b\xef\x31\x18\xea\xac\xb1\x84"
5025 "\x21\xed\xda\x86",
a773edb3 5026 .rlen = 4100,
23e353c8
JL
5027 },
5028};
5029
5030static struct cipher_testvec aes_ctr_dec_tv_template[] = {
5031 { /* From RFC 3686 */
de224c30
SS
5032 .key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
5033 "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
5034 "\x00\x00\x00\x30",
23e353c8 5035 .klen = 20,
de224c30
SS
5036 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
5037 .input = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
5038 "\x2d\x61\x75\xa3\x26\x13\x11\xb8",
23e353c8 5039 .ilen = 16,
de224c30 5040 .result = "Single block msg",
23e353c8
JL
5041 .rlen = 16,
5042 }, {
de224c30
SS
5043 .key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
5044 "\x43\xd6\xce\x1f\x32\x53\x91\x63"
5045 "\x00\x6c\xb6\xdb",
23e353c8 5046 .klen = 20,
de224c30
SS
5047 .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
5048 .input = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
5049 "\x79\x0d\x41\xee\x8e\xda\xd3\x88"
5050 "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
5051 "\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
5052 .ilen = 32,
5053 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
5054 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5055 "\x10\x11\x12\x13\x14\x15\x16\x17"
5056 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
23e353c8
JL
5057 .rlen = 32,
5058 }, {
de224c30
SS
5059 .key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
5060 "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
5061 "\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
5062 "\x00\x00\x00\x48",
5063 .klen = 28,
5064 .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
5065 .input = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
5066 "\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
5067 .ilen = 16,
5068 .result = "Single block msg",
23e353c8
JL
5069 .rlen = 16,
5070 }, {
de224c30
SS
5071 .key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
5072 "\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
5073 "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
5074 "\x00\x96\xb0\x3b",
23e353c8 5075 .klen = 28,
de224c30
SS
5076 .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
5077 .input = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
5078 "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
5079 "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
5080 "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
23e353c8 5081 .ilen = 32,
de224c30
SS
5082 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
5083 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5084 "\x10\x11\x12\x13\x14\x15\x16\x17"
5085 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
5086 .rlen = 32,
23e353c8 5087 }, {
de224c30
SS
5088 .key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
5089 "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
5090 "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
5091 "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
5092 "\x00\x00\x00\x60",
23e353c8 5093 .klen = 36,
de224c30
SS
5094 .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
5095 .input = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
5096 "\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
23e353c8 5097 .ilen = 16,
de224c30
SS
5098 .result = "Single block msg",
5099 .rlen = 16,
5100 }, {
5101 .key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
5102 "\x07\x96\x36\x58\x79\xef\xf8\x86"
5103 "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
5104 "\x4b\x50\x59\x0c\x87\xa2\x38\x84"
5105 "\x00\xfa\xac\x24",
5106 .klen = 36,
5107 .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
5108 .input = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
5109 "\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
5110 "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
5111 "\x55\x30\x83\x1d\x93\x44\xaf\x1c",
23e353c8 5112 .ilen = 32,
de224c30
SS
5113 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
5114 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5115 "\x10\x11\x12\x13\x14\x15\x16\x17"
5116 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
23e353c8
JL
5117 .rlen = 32,
5118 },
5119};
5120
28db8e3e
MH
5121static struct aead_testvec aes_gcm_enc_tv_template[] = {
5122 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
de224c30 5123 .key = zeroed_string,
28db8e3e 5124 .klen = 16,
de224c30
SS
5125 .result = "\x58\xe2\xfc\xce\xfa\x7e\x30\x61"
5126 "\x36\x7f\x1d\x57\xa4\xe7\x45\x5a",
6160b289 5127 .rlen = 16,
28db8e3e 5128 }, {
de224c30 5129 .key = zeroed_string,
28db8e3e 5130 .klen = 16,
de224c30 5131 .input = zeroed_string,
28db8e3e 5132 .ilen = 16,
de224c30
SS
5133 .result = "\x03\x88\xda\xce\x60\xb6\xa3\x92"
5134 "\xf3\x28\xc2\xb9\x71\xb2\xfe\x78"
5135 "\xab\x6e\x47\xd4\x2c\xec\x13\xbd"
5136 "\xf5\x3a\x67\xb2\x12\x57\xbd\xdf",
6160b289 5137 .rlen = 32,
28db8e3e 5138 }, {
de224c30
SS
5139 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5140 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5141 .klen = 16,
de224c30
SS
5142 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5143 "\xde\xca\xf8\x88",
5144 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5145 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5146 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5147 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5148 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5149 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5150 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5151 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 5152 .ilen = 64,
de224c30
SS
5153 .result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5154 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5155 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5156 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5157 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5158 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5159 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5160 "\x3d\x58\xe0\x91\x47\x3f\x59\x85"
5161 "\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
5162 "\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
6160b289 5163 .rlen = 80,
28db8e3e 5164 }, {
de224c30
SS
5165 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5166 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5167 .klen = 16,
de224c30
SS
5168 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5169 "\xde\xca\xf8\x88",
5170 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5171 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5172 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5173 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5174 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5175 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5176 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5177 "\xba\x63\x7b\x39",
28db8e3e 5178 .ilen = 60,
de224c30
SS
5179 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5180 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5181 "\xab\xad\xda\xd2",
28db8e3e 5182 .alen = 20,
de224c30
SS
5183 .result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5184 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5185 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5186 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5187 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5188 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5189 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5190 "\x3d\x58\xe0\x91"
5191 "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
5192 "\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
6160b289 5193 .rlen = 76,
28db8e3e 5194 }, {
de224c30 5195 .key = zeroed_string,
28db8e3e 5196 .klen = 24,
de224c30
SS
5197 .result = "\xcd\x33\xb2\x8a\xc7\x73\xf7\x4b"
5198 "\xa0\x0e\xd1\xf3\x12\x57\x24\x35",
6160b289 5199 .rlen = 16,
28db8e3e 5200 }, {
de224c30 5201 .key = zeroed_string,
28db8e3e 5202 .klen = 24,
de224c30 5203 .input = zeroed_string,
28db8e3e 5204 .ilen = 16,
de224c30
SS
5205 .result = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
5206 "\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
5207 "\x2f\xf5\x8d\x80\x03\x39\x27\xab"
5208 "\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
6160b289 5209 .rlen = 32,
28db8e3e 5210 }, {
de224c30
SS
5211 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5212 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5213 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
28db8e3e 5214 .klen = 24,
de224c30
SS
5215 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5216 "\xde\xca\xf8\x88",
5217 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5218 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5219 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5220 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5221 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5222 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5223 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5224 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 5225 .ilen = 64,
de224c30
SS
5226 .result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5227 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5228 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5229 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5230 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5231 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5232 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5233 "\xcc\xda\x27\x10\xac\xad\xe2\x56"
5234 "\x99\x24\xa7\xc8\x58\x73\x36\xbf"
5235 "\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
6160b289 5236 .rlen = 80,
28db8e3e 5237 }, {
de224c30
SS
5238 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5239 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5240 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
28db8e3e 5241 .klen = 24,
de224c30
SS
5242 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5243 "\xde\xca\xf8\x88",
5244 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5245 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5246 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5247 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5248 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5249 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5250 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5251 "\xba\x63\x7b\x39",
28db8e3e 5252 .ilen = 60,
de224c30
SS
5253 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5254 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5255 "\xab\xad\xda\xd2",
28db8e3e 5256 .alen = 20,
de224c30
SS
5257 .result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5258 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5259 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5260 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5261 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5262 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5263 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5264 "\xcc\xda\x27\x10"
5265 "\x25\x19\x49\x8e\x80\xf1\x47\x8f"
5266 "\x37\xba\x55\xbd\x6d\x27\x61\x8c",
6160b289 5267 .rlen = 76,
28db8e3e
MH
5268 .np = 2,
5269 .tap = { 32, 28 },
5270 .anp = 2,
5271 .atap = { 8, 12 }
5272 }, {
de224c30 5273 .key = zeroed_string,
28db8e3e 5274 .klen = 32,
de224c30
SS
5275 .result = "\x53\x0f\x8a\xfb\xc7\x45\x36\xb9"
5276 "\xa9\x63\xb4\xf1\xc4\xcb\x73\x8b",
6160b289 5277 .rlen = 16,
28db8e3e
MH
5278 }
5279};
5280
5281static struct aead_testvec aes_gcm_dec_tv_template[] = {
5282 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
de224c30 5283 .key = zeroed_string,
28db8e3e 5284 .klen = 32,
de224c30
SS
5285 .input = "\xce\xa7\x40\x3d\x4d\x60\x6b\x6e"
5286 "\x07\x4e\xc5\xd3\xba\xf3\x9d\x18"
5287 "\xd0\xd1\xc8\xa7\x99\x99\x6b\xf0"
5288 "\x26\x5b\x98\xb5\xd4\x8a\xb9\x19",
6160b289 5289 .ilen = 32,
de224c30 5290 .result = zeroed_string,
6160b289 5291 .rlen = 16,
28db8e3e 5292 }, {
de224c30
SS
5293 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5294 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5295 "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5296 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5297 .klen = 32,
de224c30
SS
5298 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5299 "\xde\xca\xf8\x88",
5300 .input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
5301 "\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
5302 "\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
5303 "\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
5304 "\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
5305 "\xa7\xb0\x8b\x10\x56\x82\x88\x38"
5306 "\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
5307 "\xbc\xc9\xf6\x62\x89\x80\x15\xad"
5308 "\xb0\x94\xda\xc5\xd9\x34\x71\xbd"
5309 "\xec\x1a\x50\x22\x70\xe3\xcc\x6c",
6160b289 5310 .ilen = 80,
de224c30
SS
5311 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5312 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5313 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5314 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5315 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5316 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5317 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5318 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 5319 .rlen = 64,
28db8e3e 5320 }, {
de224c30
SS
5321 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5322 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5323 "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5324 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5325 .klen = 32,
de224c30
SS
5326 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5327 "\xde\xca\xf8\x88",
5328 .input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
5329 "\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
5330 "\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
5331 "\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
5332 "\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
5333 "\xa7\xb0\x8b\x10\x56\x82\x88\x38"
5334 "\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
5335 "\xbc\xc9\xf6\x62"
5336 "\x76\xfc\x6e\xce\x0f\x4e\x17\x68"
5337 "\xcd\xdf\x88\x53\xbb\x2d\x55\x1b",
6160b289 5338 .ilen = 76,
de224c30
SS
5339 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5340 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5341 "\xab\xad\xda\xd2",
28db8e3e 5342 .alen = 20,
de224c30
SS
5343 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5344 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5345 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5346 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5347 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5348 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5349 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5350 "\xba\x63\x7b\x39",
28db8e3e 5351 .rlen = 60,
28db8e3e 5352 .np = 2,
6160b289 5353 .tap = { 48, 28 },
28db8e3e
MH
5354 .anp = 3,
5355 .atap = { 8, 8, 4 }
5356 }, {
de224c30
SS
5357 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5358 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5359 .klen = 16,
de224c30
SS
5360 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5361 "\xde\xca\xf8\x88",
5362 .input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5363 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5364 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5365 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5366 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5367 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5368 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5369 "\x3d\x58\xe0\x91\x47\x3f\x59\x85"
5370 "\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
5371 "\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
6160b289 5372 .ilen = 80,
de224c30
SS
5373 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5374 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5375 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5376 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5377 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5378 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5379 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5380 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 5381 .rlen = 64,
28db8e3e 5382 }, {
de224c30
SS
5383 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5384 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 5385 .klen = 16,
de224c30
SS
5386 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5387 "\xde\xca\xf8\x88",
5388 .input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5389 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5390 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5391 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5392 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5393 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5394 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5395 "\x3d\x58\xe0\x91"
5396 "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
5397 "\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
6160b289 5398 .ilen = 76,
de224c30
SS
5399 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5400 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5401 "\xab\xad\xda\xd2",
28db8e3e 5402 .alen = 20,
de224c30
SS
5403 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5404 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5405 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5406 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5407 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5408 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5409 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5410 "\xba\x63\x7b\x39",
28db8e3e 5411 .rlen = 60,
28db8e3e 5412 }, {
de224c30 5413 .key = zeroed_string,
28db8e3e 5414 .klen = 24,
de224c30
SS
5415 .input = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
5416 "\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
5417 "\x2f\xf5\x8d\x80\x03\x39\x27\xab"
5418 "\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
6160b289 5419 .ilen = 32,
de224c30 5420 .result = zeroed_string,
6160b289 5421 .rlen = 16,
28db8e3e 5422 }, {
de224c30
SS
5423 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5424 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5425 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
28db8e3e 5426 .klen = 24,
de224c30
SS
5427 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5428 "\xde\xca\xf8\x88",
5429 .input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5430 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5431 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5432 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5433 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5434 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5435 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5436 "\xcc\xda\x27\x10\xac\xad\xe2\x56"
5437 "\x99\x24\xa7\xc8\x58\x73\x36\xbf"
5438 "\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
6160b289 5439 .ilen = 80,
de224c30
SS
5440 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5441 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5442 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5443 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5444 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5445 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5446 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5447 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 5448 .rlen = 64,
28db8e3e 5449 }, {
de224c30
SS
5450 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5451 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5452 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
28db8e3e 5453 .klen = 24,
de224c30
SS
5454 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5455 "\xde\xca\xf8\x88",
5456 .input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5457 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5458 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5459 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5460 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5461 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5462 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5463 "\xcc\xda\x27\x10"
5464 "\x25\x19\x49\x8e\x80\xf1\x47\x8f"
5465 "\x37\xba\x55\xbd\x6d\x27\x61\x8c",
6160b289 5466 .ilen = 76,
de224c30
SS
5467 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5468 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5469 "\xab\xad\xda\xd2",
28db8e3e 5470 .alen = 20,
de224c30
SS
5471 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5472 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5473 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5474 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5475 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5476 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5477 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5478 "\xba\x63\x7b\x39",
28db8e3e 5479 .rlen = 60,
28db8e3e
MH
5480 }
5481};
5482
93cc74e0
JL
5483static struct aead_testvec aes_ccm_enc_tv_template[] = {
5484 { /* From RFC 3610 */
de224c30
SS
5485 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5486 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5487 .klen = 16,
de224c30
SS
5488 .iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
5489 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5490 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
93cc74e0 5491 .alen = 8,
de224c30
SS
5492 .input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5493 "\x10\x11\x12\x13\x14\x15\x16\x17"
5494 "\x18\x19\x1a\x1b\x1c\x1d\x1e",
93cc74e0 5495 .ilen = 23,
de224c30
SS
5496 .result = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
5497 "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
5498 "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
5499 "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
93cc74e0
JL
5500 .rlen = 31,
5501 }, {
de224c30
SS
5502 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5503 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5504 .klen = 16,
de224c30
SS
5505 .iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
5506 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5507 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5508 "\x08\x09\x0a\x0b",
93cc74e0 5509 .alen = 12,
de224c30
SS
5510 .input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5511 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5512 "\x1c\x1d\x1e\x1f",
93cc74e0 5513 .ilen = 20,
de224c30
SS
5514 .result = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
5515 "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
5516 "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
5517 "\x7d\x9c\x2d\x93",
93cc74e0
JL
5518 .rlen = 28,
5519 }, {
de224c30
SS
5520 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5521 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5522 .klen = 16,
de224c30
SS
5523 .iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
5524 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5525 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
93cc74e0 5526 .alen = 8,
de224c30
SS
5527 .input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5528 "\x10\x11\x12\x13\x14\x15\x16\x17"
5529 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
5530 "\x20",
93cc74e0 5531 .ilen = 25,
de224c30
SS
5532 .result = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
5533 "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
5534 "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
5535 "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
5536 "\x7e\x5f\x4e",
93cc74e0
JL
5537 .rlen = 35,
5538 }, {
de224c30
SS
5539 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5540 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5541 .klen = 16,
de224c30
SS
5542 .iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
5543 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5544 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5545 "\x08\x09\x0a\x0b",
93cc74e0 5546 .alen = 12,
de224c30
SS
5547 .input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5548 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5549 "\x1c\x1d\x1e",
93cc74e0 5550 .ilen = 19,
de224c30
SS
5551 .result = "\x07\x34\x25\x94\x15\x77\x85\x15"
5552 "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
5553 "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
5554 "\x4d\x99\x99\x88\xdd",
93cc74e0
JL
5555 .rlen = 29,
5556 }, {
de224c30
SS
5557 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5558 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5559 .klen = 16,
de224c30
SS
5560 .iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
5561 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5562 .assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
93cc74e0 5563 .alen = 8,
de224c30
SS
5564 .input = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
5565 "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
5566 "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
93cc74e0 5567 .ilen = 24,
de224c30
SS
5568 .result = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
5569 "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
5570 "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
5571 "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
93cc74e0
JL
5572 .rlen = 32,
5573 }, {
de224c30
SS
5574 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5575 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5576 .klen = 16,
de224c30
SS
5577 .iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
5578 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5579 .assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
5580 "\x20\xea\x60\xc0",
93cc74e0 5581 .alen = 12,
de224c30
SS
5582 .input = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
5583 "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
5584 "\x3a\x80\x3b\xa8\x7f",
93cc74e0 5585 .ilen = 21,
de224c30
SS
5586 .result = "\x00\x97\x69\xec\xab\xdf\x48\x62"
5587 "\x55\x94\xc5\x92\x51\xe6\x03\x57"
5588 "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
5589 "\x5a\xe0\x70\x45\x51",
93cc74e0
JL
5590 .rlen = 29,
5591 }, {
de224c30
SS
5592 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5593 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5594 .klen = 16,
de224c30
SS
5595 .iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
5596 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5597 .assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
93cc74e0 5598 .alen = 8,
de224c30
SS
5599 .input = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
5600 "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
5601 "\x98\x09\xd6\x7d\xbe\xdd\x18",
93cc74e0 5602 .ilen = 23,
de224c30
SS
5603 .result = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
5604 "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
5605 "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
5606 "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
5607 "\xba",
93cc74e0
JL
5608 .rlen = 33,
5609 },
5610};
5611
5612static struct aead_testvec aes_ccm_dec_tv_template[] = {
5613 { /* From RFC 3610 */
de224c30
SS
5614 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5615 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5616 .klen = 16,
de224c30
SS
5617 .iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
5618 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5619 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
93cc74e0 5620 .alen = 8,
de224c30
SS
5621 .input = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
5622 "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
5623 "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
5624 "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
93cc74e0 5625 .ilen = 31,
de224c30
SS
5626 .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5627 "\x10\x11\x12\x13\x14\x15\x16\x17"
5628 "\x18\x19\x1a\x1b\x1c\x1d\x1e",
93cc74e0
JL
5629 .rlen = 23,
5630 }, {
de224c30
SS
5631 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5632 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5633 .klen = 16,
de224c30
SS
5634 .iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
5635 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5636 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5637 "\x08\x09\x0a\x0b",
93cc74e0 5638 .alen = 12,
de224c30
SS
5639 .input = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
5640 "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
5641 "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
5642 "\x7d\x9c\x2d\x93",
93cc74e0 5643 .ilen = 28,
de224c30
SS
5644 .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5645 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5646 "\x1c\x1d\x1e\x1f",
93cc74e0
JL
5647 .rlen = 20,
5648 }, {
de224c30
SS
5649 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5650 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5651 .klen = 16,
de224c30
SS
5652 .iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
5653 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5654 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
93cc74e0 5655 .alen = 8,
de224c30
SS
5656 .input = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
5657 "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
5658 "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
5659 "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
5660 "\x7e\x5f\x4e",
93cc74e0 5661 .ilen = 35,
de224c30
SS
5662 .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5663 "\x10\x11\x12\x13\x14\x15\x16\x17"
5664 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
5665 "\x20",
93cc74e0
JL
5666 .rlen = 25,
5667 }, {
de224c30
SS
5668 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5669 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5670 .klen = 16,
de224c30
SS
5671 .iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
5672 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5673 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5674 "\x08\x09\x0a\x0b",
93cc74e0 5675 .alen = 12,
de224c30
SS
5676 .input = "\x07\x34\x25\x94\x15\x77\x85\x15"
5677 "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
5678 "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
5679 "\x4d\x99\x99\x88\xdd",
93cc74e0 5680 .ilen = 29,
de224c30
SS
5681 .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5682 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5683 "\x1c\x1d\x1e",
93cc74e0
JL
5684 .rlen = 19,
5685 }, {
de224c30
SS
5686 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5687 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5688 .klen = 16,
de224c30
SS
5689 .iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
5690 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5691 .assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
93cc74e0 5692 .alen = 8,
de224c30
SS
5693 .input = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
5694 "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
5695 "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
5696 "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
93cc74e0 5697 .ilen = 32,
de224c30
SS
5698 .result = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
5699 "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
5700 "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
93cc74e0
JL
5701 .rlen = 24,
5702 }, {
de224c30
SS
5703 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5704 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5705 .klen = 16,
de224c30
SS
5706 .iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
5707 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5708 .assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
5709 "\x20\xea\x60\xc0",
93cc74e0 5710 .alen = 12,
de224c30
SS
5711 .input = "\x00\x97\x69\xec\xab\xdf\x48\x62"
5712 "\x55\x94\xc5\x92\x51\xe6\x03\x57"
5713 "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
5714 "\x5a\xe0\x70\x45\x51",
93cc74e0 5715 .ilen = 29,
de224c30
SS
5716 .result = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
5717 "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
5718 "\x3a\x80\x3b\xa8\x7f",
93cc74e0
JL
5719 .rlen = 21,
5720 }, {
de224c30
SS
5721 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5722 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5723 .klen = 16,
de224c30
SS
5724 .iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
5725 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5726 .assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
93cc74e0 5727 .alen = 8,
de224c30
SS
5728 .input = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
5729 "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
5730 "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
5731 "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
5732 "\xba",
93cc74e0 5733 .ilen = 33,
de224c30
SS
5734 .result = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
5735 "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
5736 "\x98\x09\xd6\x7d\xbe\xdd\x18",
93cc74e0
JL
5737 .rlen = 23,
5738 },
5739};
5740
1da177e4
LT
5741/* Cast5 test vectors from RFC 2144 */
5742#define CAST5_ENC_TEST_VECTORS 3
5743#define CAST5_DEC_TEST_VECTORS 3
5744
ef2736fc 5745static struct cipher_testvec cast5_enc_tv_template[] = {
1da177e4 5746 {
de224c30
SS
5747 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5748 "\x23\x45\x67\x89\x34\x56\x78\x9a",
1da177e4 5749 .klen = 16,
de224c30 5750 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5751 .ilen = 8,
de224c30 5752 .result = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
1da177e4
LT
5753 .rlen = 8,
5754 }, {
de224c30
SS
5755 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5756 "\x23\x45",
1da177e4 5757 .klen = 10,
de224c30 5758 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5759 .ilen = 8,
de224c30 5760 .result = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
1da177e4
LT
5761 .rlen = 8,
5762 }, {
de224c30 5763 .key = "\x01\x23\x45\x67\x12",
1da177e4 5764 .klen = 5,
de224c30 5765 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5766 .ilen = 8,
de224c30 5767 .result = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
1da177e4
LT
5768 .rlen = 8,
5769 },
5770};
5771
ef2736fc 5772static struct cipher_testvec cast5_dec_tv_template[] = {
1da177e4 5773 {
de224c30
SS
5774 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5775 "\x23\x45\x67\x89\x34\x56\x78\x9a",
1da177e4 5776 .klen = 16,
de224c30 5777 .input = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
1da177e4 5778 .ilen = 8,
de224c30 5779 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
5780 .rlen = 8,
5781 }, {
de224c30
SS
5782 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5783 "\x23\x45",
1da177e4 5784 .klen = 10,
de224c30 5785 .input = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
1da177e4 5786 .ilen = 8,
de224c30 5787 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
5788 .rlen = 8,
5789 }, {
de224c30 5790 .key = "\x01\x23\x45\x67\x12",
1da177e4 5791 .klen = 5,
de224c30 5792 .input = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
1da177e4 5793 .ilen = 8,
de224c30 5794 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
5795 .rlen = 8,
5796 },
5797};
5798
ef2736fc
HX
5799/*
5800 * ARC4 test vectors from OpenSSL
1da177e4
LT
5801 */
5802#define ARC4_ENC_TEST_VECTORS 7
5803#define ARC4_DEC_TEST_VECTORS 7
5804
ef2736fc 5805static struct cipher_testvec arc4_enc_tv_template[] = {
1da177e4 5806 {
de224c30 5807 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5808 .klen = 8,
de224c30 5809 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5810 .ilen = 8,
de224c30 5811 .result = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
1da177e4
LT
5812 .rlen = 8,
5813 }, {
de224c30 5814 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5815 .klen = 8,
de224c30 5816 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5817 .ilen = 8,
de224c30 5818 .result = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
1da177e4
LT
5819 .rlen = 8,
5820 }, {
de224c30 5821 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5822 .klen = 8,
de224c30 5823 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5824 .ilen = 8,
de224c30 5825 .result = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
1da177e4
LT
5826 .rlen = 8,
5827 }, {
de224c30 5828 .key = "\xef\x01\x23\x45",
1da177e4 5829 .klen = 4,
de224c30
SS
5830 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
5831 "\x00\x00\x00\x00\x00\x00\x00\x00"
5832 "\x00\x00\x00\x00",
1da177e4 5833 .ilen = 20,
de224c30
SS
5834 .result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5835 "\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
5836 "\x36\xb6\x78\x58",
1da177e4
LT
5837 .rlen = 20,
5838 }, {
de224c30 5839 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5840 .klen = 8,
de224c30
SS
5841 .input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5842 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5843 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5844 "\x12\x34\x56\x78",
1da177e4 5845 .ilen = 28,
de224c30
SS
5846 .result = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
5847 "\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
5848 "\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
5849 "\x40\x01\x1e\xcf",
1da177e4
LT
5850 .rlen = 28,
5851 }, {
de224c30 5852 .key = "\xef\x01\x23\x45",
1da177e4 5853 .klen = 4,
de224c30
SS
5854 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
5855 "\x00\x00",
1da177e4 5856 .ilen = 10,
de224c30
SS
5857 .result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5858 "\xbd\x61",
1da177e4
LT
5859 .rlen = 10,
5860 }, {
de224c30
SS
5861 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
5862 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5863 .klen = 16,
de224c30 5864 .input = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
1da177e4 5865 .ilen = 8,
de224c30 5866 .result = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
1da177e4
LT
5867 .rlen = 8,
5868 },
5869};
5870
ef2736fc 5871static struct cipher_testvec arc4_dec_tv_template[] = {
1da177e4 5872 {
de224c30 5873 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5874 .klen = 8,
de224c30 5875 .input = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
1da177e4 5876 .ilen = 8,
de224c30 5877 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
5878 .rlen = 8,
5879 }, {
de224c30 5880 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5881 .klen = 8,
de224c30 5882 .input = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
1da177e4 5883 .ilen = 8,
de224c30 5884 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
5885 .rlen = 8,
5886 }, {
de224c30 5887 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5888 .klen = 8,
de224c30 5889 .input = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
1da177e4 5890 .ilen = 8,
de224c30 5891 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
5892 .rlen = 8,
5893 }, {
de224c30 5894 .key = "\xef\x01\x23\x45",
1da177e4 5895 .klen = 4,
de224c30
SS
5896 .input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5897 "\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
5898 "\x36\xb6\x78\x58",
1da177e4 5899 .ilen = 20,
de224c30
SS
5900 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
5901 "\x00\x00\x00\x00\x00\x00\x00\x00"
5902 "\x00\x00\x00\x00",
1da177e4
LT
5903 .rlen = 20,
5904 }, {
de224c30 5905 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5906 .klen = 8,
de224c30
SS
5907 .input = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
5908 "\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
5909 "\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
5910 "\x40\x01\x1e\xcf",
1da177e4 5911 .ilen = 28,
de224c30
SS
5912 .result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5913 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5914 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5915 "\x12\x34\x56\x78",
1da177e4
LT
5916 .rlen = 28,
5917 }, {
de224c30 5918 .key = "\xef\x01\x23\x45",
1da177e4 5919 .klen = 4,
de224c30
SS
5920 .input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5921 "\xbd\x61",
1da177e4 5922 .ilen = 10,
de224c30
SS
5923 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
5924 "\x00\x00",
1da177e4
LT
5925 .rlen = 10,
5926 }, {
de224c30
SS
5927 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
5928 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5929 .klen = 16,
de224c30 5930 .input = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
1da177e4 5931 .ilen = 8,
de224c30 5932 .result = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
1da177e4
LT
5933 .rlen = 8,
5934 },
5935};
5936
ef2736fc 5937/*
1da177e4
LT
5938 * TEA test vectors
5939 */
5940#define TEA_ENC_TEST_VECTORS 4
5941#define TEA_DEC_TEST_VECTORS 4
5942
ef2736fc 5943static struct cipher_testvec tea_enc_tv_template[] = {
1da177e4 5944 {
de224c30 5945 .key = zeroed_string,
1da177e4 5946 .klen = 16,
de224c30 5947 .input = zeroed_string,
1da177e4 5948 .ilen = 8,
de224c30 5949 .result = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
1da177e4
LT
5950 .rlen = 8,
5951 }, {
de224c30
SS
5952 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5953 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
1da177e4 5954 .klen = 16,
de224c30 5955 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
1da177e4 5956 .ilen = 8,
de224c30 5957 .result = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
1da177e4
LT
5958 .rlen = 8,
5959 }, {
de224c30
SS
5960 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5961 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
1da177e4 5962 .klen = 16,
de224c30
SS
5963 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
5964 "\x65\x73\x74\x5f\x76\x65\x63\x74",
1da177e4 5965 .ilen = 16,
de224c30
SS
5966 .result = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
5967 "\xdd\x89\xa1\x25\x04\x21\xdf\x95",
1da177e4
LT
5968 .rlen = 16,
5969 }, {
de224c30
SS
5970 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5971 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
1da177e4 5972 .klen = 16,
de224c30
SS
5973 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
5974 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5975 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5976 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
1da177e4 5977 .ilen = 32,
de224c30
SS
5978 .result = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
5979 "\x94\x18\x95\x91\xa9\xfc\x49\xf8"
5980 "\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
5981 "\x07\x89\x73\xc2\x45\x92\xc6\x90",
1da177e4
LT
5982 .rlen = 32,
5983 }
5984};
5985
ef2736fc 5986static struct cipher_testvec tea_dec_tv_template[] = {
1da177e4 5987 {
de224c30 5988 .key = zeroed_string,
1da177e4 5989 .klen = 16,
de224c30 5990 .input = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
1da177e4 5991 .ilen = 8,
de224c30 5992 .result = zeroed_string,
1da177e4
LT
5993 .rlen = 8,
5994 }, {
de224c30
SS
5995 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5996 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
1da177e4 5997 .klen = 16,
de224c30 5998 .input = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
1da177e4 5999 .ilen = 8,
de224c30 6000 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
1da177e4
LT
6001 .rlen = 8,
6002 }, {
de224c30
SS
6003 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6004 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
1da177e4 6005 .klen = 16,
de224c30
SS
6006 .input = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
6007 "\xdd\x89\xa1\x25\x04\x21\xdf\x95",
ef2736fc 6008 .ilen = 16,
de224c30
SS
6009 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6010 "\x65\x73\x74\x5f\x76\x65\x63\x74",
1da177e4
LT
6011 .rlen = 16,
6012 }, {
de224c30
SS
6013 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6014 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
1da177e4 6015 .klen = 16,
de224c30
SS
6016 .input = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
6017 "\x94\x18\x95\x91\xa9\xfc\x49\xf8"
6018 "\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
6019 "\x07\x89\x73\xc2\x45\x92\xc6\x90",
1da177e4 6020 .ilen = 32,
de224c30
SS
6021 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
6022 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6023 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6024 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
1da177e4
LT
6025 .rlen = 32,
6026 }
6027};
6028
ef2736fc
HX
6029/*
6030 * XTEA test vectors
1da177e4
LT
6031 */
6032#define XTEA_ENC_TEST_VECTORS 4
6033#define XTEA_DEC_TEST_VECTORS 4
6034
ef2736fc 6035static struct cipher_testvec xtea_enc_tv_template[] = {
1da177e4 6036 {
de224c30 6037 .key = zeroed_string,
1da177e4 6038 .klen = 16,
de224c30 6039 .input = zeroed_string,
1da177e4 6040 .ilen = 8,
de224c30 6041 .result = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
1da177e4
LT
6042 .rlen = 8,
6043 }, {
de224c30
SS
6044 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6045 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
1da177e4 6046 .klen = 16,
de224c30 6047 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
1da177e4 6048 .ilen = 8,
de224c30 6049 .result = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
1da177e4
LT
6050 .rlen = 8,
6051 }, {
de224c30
SS
6052 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6053 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
1da177e4 6054 .klen = 16,
f0df30b1 6055 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
de224c30 6056 "\x65\x73\x74\x5f\x76\x65\x63\x74",
1da177e4 6057 .ilen = 16,
f0df30b1
SS
6058 .result = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
6059 "\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
1da177e4
LT
6060 .rlen = 16,
6061 }, {
de224c30
SS
6062 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6063 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
1da177e4 6064 .klen = 16,
de224c30
SS
6065 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
6066 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6067 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6068 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
1da177e4 6069 .ilen = 32,
de224c30
SS
6070 .result = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
6071 "\x86\xff\x6f\xd0\xe3\x87\x70\x07"
6072 "\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
6073 "\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
1da177e4
LT
6074 .rlen = 32,
6075 }
6076};
6077
ef2736fc 6078static struct cipher_testvec xtea_dec_tv_template[] = {
1da177e4 6079 {
de224c30 6080 .key = zeroed_string,
1da177e4 6081 .klen = 16,
de224c30 6082 .input = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
1da177e4 6083 .ilen = 8,
de224c30 6084 .result = zeroed_string,
1da177e4
LT
6085 .rlen = 8,
6086 }, {
de224c30
SS
6087 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6088 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
1da177e4 6089 .klen = 16,
de224c30 6090 .input = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
1da177e4 6091 .ilen = 8,
de224c30 6092 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
1da177e4
LT
6093 .rlen = 8,
6094 }, {
de224c30
SS
6095 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6096 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
1da177e4 6097 .klen = 16,
de224c30
SS
6098 .input = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
6099 "\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
1da177e4 6100 .ilen = 16,
de224c30
SS
6101 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6102 "\x65\x73\x74\x5f\x76\x65\x63\x74",
1da177e4
LT
6103 .rlen = 16,
6104 }, {
de224c30
SS
6105 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6106 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
1da177e4 6107 .klen = 16,
de224c30
SS
6108 .input = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
6109 "\x86\xff\x6f\xd0\xe3\x87\x70\x07"
6110 "\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
6111 "\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
1da177e4 6112 .ilen = 32,
de224c30
SS
6113 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
6114 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6115 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6116 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
1da177e4
LT
6117 .rlen = 32,
6118 }
6119};
6120
6121/*
6122 * KHAZAD test vectors.
6123 */
6124#define KHAZAD_ENC_TEST_VECTORS 5
6125#define KHAZAD_DEC_TEST_VECTORS 5
6126
ef2736fc
HX
6127static struct cipher_testvec khazad_enc_tv_template[] = {
6128 {
de224c30
SS
6129 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
6130 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 6131 .klen = 16,
de224c30 6132 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 6133 .ilen = 8,
de224c30 6134 .result = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
1da177e4
LT
6135 .rlen = 8,
6136 }, {
de224c30
SS
6137 .key = "\x38\x38\x38\x38\x38\x38\x38\x38"
6138 "\x38\x38\x38\x38\x38\x38\x38\x38",
1da177e4 6139 .klen = 16,
de224c30 6140 .input = "\x38\x38\x38\x38\x38\x38\x38\x38",
1da177e4 6141 .ilen = 8,
de224c30 6142 .result = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
1da177e4
LT
6143 .rlen = 8,
6144 }, {
de224c30
SS
6145 .key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
6146 "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
1da177e4 6147 .klen = 16,
de224c30 6148 .input = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
1da177e4 6149 .ilen = 8,
de224c30 6150 .result = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
1da177e4
LT
6151 .rlen = 8,
6152 }, {
de224c30
SS
6153 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6154 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6155 .klen = 16,
de224c30 6156 .input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6157 .ilen = 8,
de224c30 6158 .result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
1da177e4
LT
6159 .rlen = 8,
6160 }, {
de224c30
SS
6161 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6162 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6163 .klen = 16,
de224c30
SS
6164 .input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6165 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6166 .ilen = 16,
de224c30
SS
6167 .result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
6168 "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
1da177e4
LT
6169 .rlen = 16,
6170 },
6171};
6172
ef2736fc 6173static struct cipher_testvec khazad_dec_tv_template[] = {
1da177e4 6174 {
de224c30
SS
6175 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
6176 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 6177 .klen = 16,
de224c30 6178 .input = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
1da177e4 6179 .ilen = 8,
de224c30 6180 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
6181 .rlen = 8,
6182 }, {
de224c30
SS
6183 .key = "\x38\x38\x38\x38\x38\x38\x38\x38"
6184 "\x38\x38\x38\x38\x38\x38\x38\x38",
1da177e4 6185 .klen = 16,
de224c30 6186 .input = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
1da177e4 6187 .ilen = 8,
de224c30 6188 .result = "\x38\x38\x38\x38\x38\x38\x38\x38",
1da177e4
LT
6189 .rlen = 8,
6190 }, {
de224c30
SS
6191 .key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
6192 "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
1da177e4 6193 .klen = 16,
de224c30 6194 .input = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
1da177e4 6195 .ilen = 8,
de224c30 6196 .result = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
1da177e4
LT
6197 .rlen = 8,
6198 }, {
de224c30
SS
6199 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6200 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6201 .klen = 16,
de224c30 6202 .input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
1da177e4 6203 .ilen = 8,
de224c30 6204 .result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4
LT
6205 .rlen = 8,
6206 }, {
de224c30
SS
6207 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6208 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 6209 .klen = 16,
de224c30
SS
6210 .input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
6211 "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
1da177e4 6212 .ilen = 16,
de224c30
SS
6213 .result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6214 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4
LT
6215 .rlen = 16,
6216 },
6217};
6218
6219/*
6220 * Anubis test vectors.
6221 */
6222
6223#define ANUBIS_ENC_TEST_VECTORS 5
6224#define ANUBIS_DEC_TEST_VECTORS 5
6225#define ANUBIS_CBC_ENC_TEST_VECTORS 2
6226#define ANUBIS_CBC_DEC_TEST_VECTORS 2
6227
6228static struct cipher_testvec anubis_enc_tv_template[] = {
6229 {
de224c30
SS
6230 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6231 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6232 .klen = 16,
de224c30
SS
6233 .input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6234 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6235 .ilen = 16,
de224c30
SS
6236 .result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6237 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
1da177e4
LT
6238 .rlen = 16,
6239 }, {
6240
de224c30
SS
6241 .key = "\x03\x03\x03\x03\x03\x03\x03\x03"
6242 "\x03\x03\x03\x03\x03\x03\x03\x03"
6243 "\x03\x03\x03\x03",
1da177e4 6244 .klen = 20,
de224c30
SS
6245 .input = "\x03\x03\x03\x03\x03\x03\x03\x03"
6246 "\x03\x03\x03\x03\x03\x03\x03\x03",
1da177e4 6247 .ilen = 16,
de224c30
SS
6248 .result = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
6249 "\x87\x41\x6f\x82\x0a\x98\x64\xae",
1da177e4
LT
6250 .rlen = 16,
6251 }, {
de224c30
SS
6252 .key = "\x24\x24\x24\x24\x24\x24\x24\x24"
6253 "\x24\x24\x24\x24\x24\x24\x24\x24"
6254 "\x24\x24\x24\x24\x24\x24\x24\x24"
6255 "\x24\x24\x24\x24",
1da177e4 6256 .klen = 28,
de224c30
SS
6257 .input = "\x24\x24\x24\x24\x24\x24\x24\x24"
6258 "\x24\x24\x24\x24\x24\x24\x24\x24",
1da177e4 6259 .ilen = 16,
de224c30
SS
6260 .result = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
6261 "\x06\xd3\x61\x27\xfd\x13\x9e\xde",
1da177e4
LT
6262 .rlen = 16,
6263 }, {
de224c30
SS
6264 .key = "\x25\x25\x25\x25\x25\x25\x25\x25"
6265 "\x25\x25\x25\x25\x25\x25\x25\x25"
6266 "\x25\x25\x25\x25\x25\x25\x25\x25"
6267 "\x25\x25\x25\x25\x25\x25\x25\x25",
1da177e4 6268 .klen = 32,
de224c30
SS
6269 .input = "\x25\x25\x25\x25\x25\x25\x25\x25"
6270 "\x25\x25\x25\x25\x25\x25\x25\x25",
1da177e4 6271 .ilen = 16,
de224c30
SS
6272 .result = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
6273 "\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
1da177e4
LT
6274 .rlen = 16,
6275 }, {
de224c30
SS
6276 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6277 "\x35\x35\x35\x35\x35\x35\x35\x35"
6278 "\x35\x35\x35\x35\x35\x35\x35\x35"
6279 "\x35\x35\x35\x35\x35\x35\x35\x35"
6280 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 6281 .klen = 40,
de224c30
SS
6282 .input = "\x35\x35\x35\x35\x35\x35\x35\x35"
6283 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 6284 .ilen = 16,
de224c30
SS
6285 .result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6286 "\x9e\xc6\x84\x0f\x17\x21\x07\xee",
1da177e4
LT
6287 .rlen = 16,
6288 },
6289};
6290
6291static struct cipher_testvec anubis_dec_tv_template[] = {
6292 {
de224c30
SS
6293 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6294 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6295 .klen = 16,
de224c30
SS
6296 .input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6297 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
1da177e4 6298 .ilen = 16,
de224c30
SS
6299 .result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6300 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4
LT
6301 .rlen = 16,
6302 }, {
6303
de224c30
SS
6304 .key = "\x03\x03\x03\x03\x03\x03\x03\x03"
6305 "\x03\x03\x03\x03\x03\x03\x03\x03"
6306 "\x03\x03\x03\x03",
1da177e4 6307 .klen = 20,
de224c30
SS
6308 .input = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
6309 "\x87\x41\x6f\x82\x0a\x98\x64\xae",
1da177e4 6310 .ilen = 16,
de224c30
SS
6311 .result = "\x03\x03\x03\x03\x03\x03\x03\x03"
6312 "\x03\x03\x03\x03\x03\x03\x03\x03",
1da177e4
LT
6313 .rlen = 16,
6314 }, {
de224c30
SS
6315 .key = "\x24\x24\x24\x24\x24\x24\x24\x24"
6316 "\x24\x24\x24\x24\x24\x24\x24\x24"
6317 "\x24\x24\x24\x24\x24\x24\x24\x24"
6318 "\x24\x24\x24\x24",
1da177e4 6319 .klen = 28,
de224c30
SS
6320 .input = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
6321 "\x06\xd3\x61\x27\xfd\x13\x9e\xde",
1da177e4 6322 .ilen = 16,
de224c30
SS
6323 .result = "\x24\x24\x24\x24\x24\x24\x24\x24"
6324 "\x24\x24\x24\x24\x24\x24\x24\x24",
1da177e4
LT
6325 .rlen = 16,
6326 }, {
de224c30
SS
6327 .key = "\x25\x25\x25\x25\x25\x25\x25\x25"
6328 "\x25\x25\x25\x25\x25\x25\x25\x25"
6329 "\x25\x25\x25\x25\x25\x25\x25\x25"
6330 "\x25\x25\x25\x25\x25\x25\x25\x25",
1da177e4 6331 .klen = 32,
de224c30
SS
6332 .input = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
6333 "\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
1da177e4 6334 .ilen = 16,
de224c30
SS
6335 .result = "\x25\x25\x25\x25\x25\x25\x25\x25"
6336 "\x25\x25\x25\x25\x25\x25\x25\x25",
1da177e4
LT
6337 .rlen = 16,
6338 }, {
de224c30
SS
6339 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6340 "\x35\x35\x35\x35\x35\x35\x35\x35"
6341 "\x35\x35\x35\x35\x35\x35\x35\x35"
6342 "\x35\x35\x35\x35\x35\x35\x35\x35"
6343 "\x35\x35\x35\x35\x35\x35\x35\x35",
6344 .input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6345 "\x9e\xc6\x84\x0f\x17\x21\x07\xee",
1da177e4
LT
6346 .klen = 40,
6347 .ilen = 16,
de224c30
SS
6348 .result = "\x35\x35\x35\x35\x35\x35\x35\x35"
6349 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4
LT
6350 .rlen = 16,
6351 },
6352};
6353
6354static struct cipher_testvec anubis_cbc_enc_tv_template[] = {
6355 {
de224c30
SS
6356 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6357 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6358 .klen = 16,
de224c30
SS
6359 .input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6360 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6361 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6362 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6363 .ilen = 32,
de224c30
SS
6364 .result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6365 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
6366 "\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
6367 "\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
1da177e4
LT
6368 .rlen = 32,
6369 }, {
de224c30
SS
6370 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6371 "\x35\x35\x35\x35\x35\x35\x35\x35"
6372 "\x35\x35\x35\x35\x35\x35\x35\x35"
6373 "\x35\x35\x35\x35\x35\x35\x35\x35"
6374 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 6375 .klen = 40,
de224c30
SS
6376 .input = "\x35\x35\x35\x35\x35\x35\x35\x35"
6377 "\x35\x35\x35\x35\x35\x35\x35\x35"
6378 "\x35\x35\x35\x35\x35\x35\x35\x35"
6379 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 6380 .ilen = 32,
de224c30
SS
6381 .result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6382 "\x9e\xc6\x84\x0f\x17\x21\x07\xee"
6383 "\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
6384 "\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
1da177e4
LT
6385 .rlen = 32,
6386 },
6387};
6388
6389static struct cipher_testvec anubis_cbc_dec_tv_template[] = {
6390 {
de224c30
SS
6391 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6392 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 6393 .klen = 16,
de224c30
SS
6394 .input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6395 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
6396 "\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
6397 "\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
1da177e4 6398 .ilen = 32,
de224c30
SS
6399 .result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6400 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6401 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6402 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4
LT
6403 .rlen = 32,
6404 }, {
de224c30
SS
6405 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6406 "\x35\x35\x35\x35\x35\x35\x35\x35"
6407 "\x35\x35\x35\x35\x35\x35\x35\x35"
6408 "\x35\x35\x35\x35\x35\x35\x35\x35"
6409 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 6410 .klen = 40,
de224c30
SS
6411 .input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6412 "\x9e\xc6\x84\x0f\x17\x21\x07\xee"
6413 "\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
6414 "\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
1da177e4 6415 .ilen = 32,
de224c30
SS
6416 .result = "\x35\x35\x35\x35\x35\x35\x35\x35"
6417 "\x35\x35\x35\x35\x35\x35\x35\x35"
6418 "\x35\x35\x35\x35\x35\x35\x35\x35"
6419 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4
LT
6420 .rlen = 32,
6421 },
6422};
6423
fb4f10ed
AG
6424/*
6425 * XETA test vectors
6426 */
6427#define XETA_ENC_TEST_VECTORS 4
6428#define XETA_DEC_TEST_VECTORS 4
6429
6430static struct cipher_testvec xeta_enc_tv_template[] = {
6431 {
de224c30 6432 .key = zeroed_string,
fb4f10ed 6433 .klen = 16,
de224c30 6434 .input = zeroed_string,
fb4f10ed 6435 .ilen = 8,
de224c30 6436 .result = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
fb4f10ed
AG
6437 .rlen = 8,
6438 }, {
de224c30
SS
6439 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6440 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
fb4f10ed 6441 .klen = 16,
de224c30 6442 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
fb4f10ed 6443 .ilen = 8,
de224c30 6444 .result = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
fb4f10ed
AG
6445 .rlen = 8,
6446 }, {
de224c30
SS
6447 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6448 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
fb4f10ed 6449 .klen = 16,
de224c30
SS
6450 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6451 "\x65\x73\x74\x5f\x76\x65\x63\x74",
fb4f10ed 6452 .ilen = 16,
de224c30
SS
6453 .result = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
6454 "\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
fb4f10ed
AG
6455 .rlen = 16,
6456 }, {
de224c30
SS
6457 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6458 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
fb4f10ed 6459 .klen = 16,
de224c30
SS
6460 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
6461 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6462 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6463 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
fb4f10ed 6464 .ilen = 32,
de224c30
SS
6465 .result = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
6466 "\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
6467 "\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
6468 "\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
fb4f10ed
AG
6469 .rlen = 32,
6470 }
6471};
6472
6473static struct cipher_testvec xeta_dec_tv_template[] = {
6474 {
de224c30 6475 .key = zeroed_string,
fb4f10ed 6476 .klen = 16,
de224c30 6477 .input = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
fb4f10ed 6478 .ilen = 8,
de224c30 6479 .result = zeroed_string,
fb4f10ed
AG
6480 .rlen = 8,
6481 }, {
de224c30
SS
6482 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6483 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
fb4f10ed 6484 .klen = 16,
de224c30 6485 .input = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
fb4f10ed 6486 .ilen = 8,
de224c30 6487 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
fb4f10ed
AG
6488 .rlen = 8,
6489 }, {
de224c30
SS
6490 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6491 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
fb4f10ed 6492 .klen = 16,
de224c30
SS
6493 .input = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
6494 "\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
fb4f10ed 6495 .ilen = 16,
de224c30
SS
6496 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6497 "\x65\x73\x74\x5f\x76\x65\x63\x74",
fb4f10ed
AG
6498 .rlen = 16,
6499 }, {
de224c30
SS
6500 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6501 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
fb4f10ed 6502 .klen = 16,
de224c30
SS
6503 .input = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
6504 "\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
6505 "\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
6506 "\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
fb4f10ed 6507 .ilen = 32,
de224c30
SS
6508 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
6509 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6510 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6511 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
fb4f10ed
AG
6512 .rlen = 32,
6513 }
6514};
6515
90831639
DH
6516/*
6517 * FCrypt test vectors
6518 */
6519#define FCRYPT_ENC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_enc_tv_template)
6520#define FCRYPT_DEC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_dec_tv_template)
6521
6522static struct cipher_testvec fcrypt_pcbc_enc_tv_template[] = {
6523 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
de224c30 6524 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
90831639 6525 .klen = 8,
de224c30
SS
6526 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6527 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
90831639 6528 .ilen = 8,
de224c30 6529 .result = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
90831639
DH
6530 .rlen = 8,
6531 }, {
de224c30 6532 .key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
90831639 6533 .klen = 8,
de224c30
SS
6534 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6535 .input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
90831639 6536 .ilen = 8,
de224c30 6537 .result = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
90831639
DH
6538 .rlen = 8,
6539 }, { /* From Arla */
de224c30 6540 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
90831639 6541 .klen = 8,
de224c30 6542 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639
DH
6543 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6544 .ilen = 48,
de224c30
SS
6545 .result = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
6546 "\xee\xac\x98\x62\x44\x51\xe4\x84"
6547 "\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
6548 "\xd2\xd9\x13\x79\x72\xa3\x45\x03"
6549 "\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
6550 "\xf8\x91\x3c\xac\x44\x22\x92\xef",
90831639
DH
6551 .rlen = 48,
6552 }, {
de224c30 6553 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639 6554 .klen = 8,
de224c30 6555 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
90831639
DH
6556 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6557 .ilen = 48,
de224c30
SS
6558 .result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6559 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6560 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6561 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6562 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6563 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
90831639
DH
6564 .rlen = 48,
6565 }, { /* split-page version */
de224c30 6566 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639 6567 .klen = 8,
de224c30 6568 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
90831639
DH
6569 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6570 .ilen = 48,
de224c30
SS
6571 .result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6572 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6573 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6574 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6575 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6576 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
90831639
DH
6577 .rlen = 48,
6578 .np = 2,
6579 .tap = { 20, 28 },
6580 }
6581};
6582
6583static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
6584 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
de224c30 6585 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
90831639 6586 .klen = 8,
de224c30
SS
6587 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6588 .input = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
90831639 6589 .ilen = 8,
de224c30 6590 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
90831639
DH
6591 .rlen = 8,
6592 }, {
de224c30 6593 .key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
90831639 6594 .klen = 8,
de224c30
SS
6595 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6596 .input = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
90831639 6597 .ilen = 8,
de224c30 6598 .result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
90831639
DH
6599 .rlen = 8,
6600 }, { /* From Arla */
de224c30 6601 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
90831639 6602 .klen = 8,
de224c30
SS
6603 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6604 .input = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
6605 "\xee\xac\x98\x62\x44\x51\xe4\x84"
6606 "\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
6607 "\xd2\xd9\x13\x79\x72\xa3\x45\x03"
6608 "\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
6609 "\xf8\x91\x3c\xac\x44\x22\x92\xef",
90831639
DH
6610 .ilen = 48,
6611 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6612 .rlen = 48,
6613 }, {
de224c30 6614 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639 6615 .klen = 8,
de224c30
SS
6616 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6617 .input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6618 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6619 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6620 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6621 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6622 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
90831639
DH
6623 .ilen = 48,
6624 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6625 .rlen = 48,
6626 }, { /* split-page version */
de224c30 6627 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639 6628 .klen = 8,
de224c30
SS
6629 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6630 .input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6631 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6632 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6633 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6634 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6635 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
90831639
DH
6636 .ilen = 48,
6637 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6638 .rlen = 48,
6639 .np = 2,
6640 .tap = { 20, 28 },
6641 }
6642};
6643
02ab5a70
NT
6644/*
6645 * CAMELLIA test vectors.
6646 */
6647#define CAMELLIA_ENC_TEST_VECTORS 3
6648#define CAMELLIA_DEC_TEST_VECTORS 3
6649#define CAMELLIA_CBC_ENC_TEST_VECTORS 2
6650#define CAMELLIA_CBC_DEC_TEST_VECTORS 2
6651
6652static struct cipher_testvec camellia_enc_tv_template[] = {
6653 {
de224c30
SS
6654 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6655 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6656 .klen = 16,
de224c30
SS
6657 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6658 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6659 .ilen = 16,
de224c30
SS
6660 .result = "\x67\x67\x31\x38\x54\x96\x69\x73"
6661 "\x08\x57\x06\x56\x48\xea\xbe\x43",
02ab5a70
NT
6662 .rlen = 16,
6663 }, {
de224c30
SS
6664 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6665 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6666 "\x00\x11\x22\x33\x44\x55\x66\x77",
02ab5a70 6667 .klen = 24,
de224c30
SS
6668 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6669 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6670 .ilen = 16,
de224c30
SS
6671 .result = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
6672 "\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
02ab5a70
NT
6673 .rlen = 16,
6674 }, {
de224c30
SS
6675 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6676 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6677 "\x00\x11\x22\x33\x44\x55\x66\x77"
6678 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
02ab5a70 6679 .klen = 32,
de224c30
SS
6680 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6681 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6682 .ilen = 16,
de224c30
SS
6683 .result = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
6684 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
02ab5a70
NT
6685 .rlen = 16,
6686 },
6687};
6688
6689static struct cipher_testvec camellia_dec_tv_template[] = {
6690 {
de224c30
SS
6691 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6692 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6693 .klen = 16,
de224c30
SS
6694 .input = "\x67\x67\x31\x38\x54\x96\x69\x73"
6695 "\x08\x57\x06\x56\x48\xea\xbe\x43",
02ab5a70 6696 .ilen = 16,
de224c30
SS
6697 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6698 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70
NT
6699 .rlen = 16,
6700 }, {
de224c30
SS
6701 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6702 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6703 "\x00\x11\x22\x33\x44\x55\x66\x77",
02ab5a70 6704 .klen = 24,
de224c30
SS
6705 .input = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
6706 "\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
02ab5a70 6707 .ilen = 16,
de224c30
SS
6708 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6709 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70
NT
6710 .rlen = 16,
6711 }, {
de224c30
SS
6712 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6713 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6714 "\x00\x11\x22\x33\x44\x55\x66\x77"
6715 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
02ab5a70 6716 .klen = 32,
de224c30
SS
6717 .input = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
6718 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
02ab5a70 6719 .ilen = 16,
de224c30
SS
6720 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6721 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70
NT
6722 .rlen = 16,
6723 },
6724};
6725
6726static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
6727 {
de224c30
SS
6728 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
6729 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
02ab5a70 6730 .klen = 16,
de224c30
SS
6731 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
6732 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
6733 .input = "Single block msg",
02ab5a70 6734 .ilen = 16,
de224c30
SS
6735 .result = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
6736 "\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
02ab5a70
NT
6737 .rlen = 16,
6738 }, {
de224c30
SS
6739 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
6740 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
02ab5a70 6741 .klen = 16,
de224c30
SS
6742 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
6743 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
6744 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
6745 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6746 "\x10\x11\x12\x13\x14\x15\x16\x17"
6747 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
02ab5a70 6748 .ilen = 32,
de224c30
SS
6749 .result = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
6750 "\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
6751 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
6752 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
02ab5a70
NT
6753 .rlen = 32,
6754 },
6755};
6756
6757static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
6758 {
de224c30
SS
6759 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
6760 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
02ab5a70 6761 .klen = 16,
de224c30
SS
6762 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
6763 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
6764 .input = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
6765 "\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
02ab5a70 6766 .ilen = 16,
de224c30 6767 .result = "Single block msg",
02ab5a70
NT
6768 .rlen = 16,
6769 }, {
de224c30
SS
6770 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
6771 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
02ab5a70 6772 .klen = 16,
de224c30
SS
6773 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
6774 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
6775 .input = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
6776 "\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
6777 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
6778 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
02ab5a70 6779 .ilen = 32,
de224c30
SS
6780 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
6781 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6782 "\x10\x11\x12\x13\x14\x15\x16\x17"
6783 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
02ab5a70
NT
6784 .rlen = 32,
6785 },
6786};
6787
e2ee95b8
HSC
6788/*
6789 * SEED test vectors
6790 */
6791#define SEED_ENC_TEST_VECTORS 4
6792#define SEED_DEC_TEST_VECTORS 4
6793
6794static struct cipher_testvec seed_enc_tv_template[] = {
6795 {
de224c30 6796 .key = zeroed_string,
e2ee95b8 6797 .klen = 16,
de224c30
SS
6798 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
6799 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
e2ee95b8 6800 .ilen = 16,
de224c30
SS
6801 .result = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
6802 "\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
e2ee95b8
HSC
6803 .rlen = 16,
6804 }, {
de224c30
SS
6805 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6806 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
e2ee95b8 6807 .klen = 16,
de224c30 6808 .input = zeroed_string,
e2ee95b8 6809 .ilen = 16,
de224c30
SS
6810 .result = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
6811 "\x84\x48\x35\x97\xe4\x37\x0f\x43",
e2ee95b8
HSC
6812 .rlen = 16,
6813 }, {
de224c30
SS
6814 .key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
6815 "\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
e2ee95b8 6816 .klen = 16,
de224c30
SS
6817 .input = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
6818 "\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
e2ee95b8 6819 .ilen = 16,
de224c30
SS
6820 .result = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
6821 "\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
e2ee95b8
HSC
6822 .rlen = 16,
6823 }, {
de224c30
SS
6824 .key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
6825 "\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
e2ee95b8 6826 .klen = 16,
de224c30
SS
6827 .input = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
6828 "\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
e2ee95b8 6829 .ilen = 16,
de224c30
SS
6830 .result = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
6831 "\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
e2ee95b8
HSC
6832 .rlen = 16,
6833 }
6834};
6835
6836static struct cipher_testvec seed_dec_tv_template[] = {
6837 {
de224c30 6838 .key = zeroed_string,
e2ee95b8 6839 .klen = 16,
de224c30
SS
6840 .input = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
6841 "\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
e2ee95b8 6842 .ilen = 16,
de224c30
SS
6843 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
6844 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
e2ee95b8
HSC
6845 .rlen = 16,
6846 }, {
de224c30
SS
6847 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6848 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
e2ee95b8 6849 .klen = 16,
de224c30
SS
6850 .input = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
6851 "\x84\x48\x35\x97\xe4\x37\x0f\x43",
e2ee95b8 6852 .ilen = 16,
de224c30 6853 .result = zeroed_string,
e2ee95b8
HSC
6854 .rlen = 16,
6855 }, {
de224c30
SS
6856 .key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
6857 "\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
e2ee95b8 6858 .klen = 16,
de224c30
SS
6859 .input = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
6860 "\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
e2ee95b8 6861 .ilen = 16,
de224c30
SS
6862 .result = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
6863 "\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
e2ee95b8
HSC
6864 .rlen = 16,
6865 }, {
de224c30
SS
6866 .key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
6867 "\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
e2ee95b8 6868 .klen = 16,
de224c30
SS
6869 .input = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
6870 "\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
e2ee95b8 6871 .ilen = 16,
de224c30
SS
6872 .result = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
6873 "\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
e2ee95b8
HSC
6874 .rlen = 16,
6875 }
2407d608
TSH
6876};
6877
8bff664c 6878#define SALSA20_STREAM_ENC_TEST_VECTORS 5
2407d608
TSH
6879static struct cipher_testvec salsa20_stream_enc_tv_template[] = {
6880 /*
6881 * Testvectors from verified.test-vectors submitted to ECRYPT.
6882 * They are truncated to size 39, 64, 111, 129 to test a variety
6883 * of input length.
6884 */
6885 { /* Set 3, vector 0 */
de224c30
SS
6886 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6887 "\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F",
2407d608 6888 .klen = 16,
de224c30
SS
6889 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6890 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6891 "\x00\x00\x00\x00\x00\x00\x00\x00"
6892 "\x00\x00\x00\x00\x00\x00\x00\x00"
6893 "\x00\x00\x00\x00\x00\x00\x00\x00"
6894 "\x00\x00\x00\x00\x00\x00\x00",
2407d608 6895 .ilen = 39,
de224c30
SS
6896 .result = "\x2D\xD5\xC3\xF7\xBA\x2B\x20\xF7"
6897 "\x68\x02\x41\x0C\x68\x86\x88\x89"
6898 "\x5A\xD8\xC1\xBD\x4E\xA6\xC9\xB1"
6899 "\x40\xFB\x9B\x90\xE2\x10\x49\xBF"
6900 "\x58\x3F\x52\x79\x70\xEB\xC1",
2407d608
TSH
6901 .rlen = 39,
6902 }, { /* Set 5, vector 0 */
de224c30
SS
6903 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
6904 "\x00\x00\x00\x00\x00\x00\x00\x00",
2407d608 6905 .klen = 16,
de224c30
SS
6906 .iv = "\x80\x00\x00\x00\x00\x00\x00\x00",
6907 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6908 "\x00\x00\x00\x00\x00\x00\x00\x00"
6909 "\x00\x00\x00\x00\x00\x00\x00\x00"
6910 "\x00\x00\x00\x00\x00\x00\x00\x00"
6911 "\x00\x00\x00\x00\x00\x00\x00\x00"
6912 "\x00\x00\x00\x00\x00\x00\x00\x00"
6913 "\x00\x00\x00\x00\x00\x00\x00\x00"
6914 "\x00\x00\x00\x00\x00\x00\x00\x00",
2407d608 6915 .ilen = 64,
de224c30
SS
6916 .result = "\xB6\x6C\x1E\x44\x46\xDD\x95\x57"
6917 "\xE5\x78\xE2\x23\xB0\xB7\x68\x01"
6918 "\x7B\x23\xB2\x67\xBB\x02\x34\xAE"
6919 "\x46\x26\xBF\x44\x3F\x21\x97\x76"
6920 "\x43\x6F\xB1\x9F\xD0\xE8\x86\x6F"
6921 "\xCD\x0D\xE9\xA9\x53\x8F\x4A\x09"
6922 "\xCA\x9A\xC0\x73\x2E\x30\xBC\xF9"
6923 "\x8E\x4F\x13\xE4\xB9\xE2\x01\xD9",
2407d608
TSH
6924 .rlen = 64,
6925 }, { /* Set 3, vector 27 */
de224c30
SS
6926 .key = "\x1B\x1C\x1D\x1E\x1F\x20\x21\x22"
6927 "\x23\x24\x25\x26\x27\x28\x29\x2A"
6928 "\x2B\x2C\x2D\x2E\x2F\x30\x31\x32"
6929 "\x33\x34\x35\x36\x37\x38\x39\x3A",
2407d608 6930 .klen = 32,
de224c30
SS
6931 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6932 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6933 "\x00\x00\x00\x00\x00\x00\x00\x00"
6934 "\x00\x00\x00\x00\x00\x00\x00\x00"
6935 "\x00\x00\x00\x00\x00\x00\x00\x00"
6936 "\x00\x00\x00\x00\x00\x00\x00\x00"
6937 "\x00\x00\x00\x00\x00\x00\x00\x00"
6938 "\x00\x00\x00\x00\x00\x00\x00\x00"
6939 "\x00\x00\x00\x00\x00\x00\x00\x00"
6940 "\x00\x00\x00\x00\x00\x00\x00\x00"
6941 "\x00\x00\x00\x00\x00\x00\x00\x00"
6942 "\x00\x00\x00\x00\x00\x00\x00\x00"
6943 "\x00\x00\x00\x00\x00\x00\x00\x00"
6944 "\x00\x00\x00\x00\x00\x00\x00\x00"
6945 "\x00\x00\x00\x00\x00\x00\x00",
2407d608 6946 .ilen = 111,
de224c30
SS
6947 .result = "\xAE\x39\x50\x8E\xAC\x9A\xEC\xE7"
6948 "\xBF\x97\xBB\x20\xB9\xDE\xE4\x1F"
6949 "\x87\xD9\x47\xF8\x28\x91\x35\x98"
6950 "\xDB\x72\xCC\x23\x29\x48\x56\x5E"
6951 "\x83\x7E\x0B\xF3\x7D\x5D\x38\x7B"
6952 "\x2D\x71\x02\xB4\x3B\xB5\xD8\x23"
6953 "\xB0\x4A\xDF\x3C\xEC\xB6\xD9\x3B"
6954 "\x9B\xA7\x52\xBE\xC5\xD4\x50\x59"
6955 "\x15\x14\xB4\x0E\x40\xE6\x53\xD1"
6956 "\x83\x9C\x5B\xA0\x92\x29\x6B\x5E"
6957 "\x96\x5B\x1E\x2F\xD3\xAC\xC1\x92"
6958 "\xB1\x41\x3F\x19\x2F\xC4\x3B\xC6"
6959 "\x95\x46\x45\x54\xE9\x75\x03\x08"
6960 "\x44\xAF\xE5\x8A\x81\x12\x09",
2407d608 6961 .rlen = 111,
2407d608 6962 }, { /* Set 5, vector 27 */
de224c30
SS
6963 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
6964 "\x00\x00\x00\x00\x00\x00\x00\x00"
6965 "\x00\x00\x00\x00\x00\x00\x00\x00"
6966 "\x00\x00\x00\x00\x00\x00\x00\x00",
2407d608 6967 .klen = 32,
de224c30
SS
6968 .iv = "\x00\x00\x00\x10\x00\x00\x00\x00",
6969 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6970 "\x00\x00\x00\x00\x00\x00\x00\x00"
6971 "\x00\x00\x00\x00\x00\x00\x00\x00"
6972 "\x00\x00\x00\x00\x00\x00\x00\x00"
6973 "\x00\x00\x00\x00\x00\x00\x00\x00"
6974 "\x00\x00\x00\x00\x00\x00\x00\x00"
6975 "\x00\x00\x00\x00\x00\x00\x00\x00"
6976 "\x00\x00\x00\x00\x00\x00\x00\x00"
6977 "\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\x00"
6982 "\x00\x00\x00\x00\x00\x00\x00\x00"
6983 "\x00\x00\x00\x00\x00\x00\x00\x00"
6984 "\x00\x00\x00\x00\x00\x00\x00\x00"
6985 "\x00",
2407d608 6986 .ilen = 129,
de224c30
SS
6987 .result = "\xD2\xDB\x1A\x5C\xF1\xC1\xAC\xDB"
6988 "\xE8\x1A\x7A\x43\x40\xEF\x53\x43"
6989 "\x5E\x7F\x4B\x1A\x50\x52\x3F\x8D"
6990 "\x28\x3D\xCF\x85\x1D\x69\x6E\x60"
6991 "\xF2\xDE\x74\x56\x18\x1B\x84\x10"
6992 "\xD4\x62\xBA\x60\x50\xF0\x61\xF2"
6993 "\x1C\x78\x7F\xC1\x24\x34\xAF\x58"
6994 "\xBF\x2C\x59\xCA\x90\x77\xF3\xB0"
6995 "\x5B\x4A\xDF\x89\xCE\x2C\x2F\xFC"
6996 "\x67\xF0\xE3\x45\xE8\xB3\xB3\x75"
6997 "\xA0\x95\x71\xA1\x29\x39\x94\xCA"
6998 "\x45\x2F\xBD\xCB\x10\xB6\xBE\x9F"
6999 "\x8E\xF9\xB2\x01\x0A\x5A\x0A\xB7"
7000 "\x6B\x9D\x70\x8E\x4B\xD6\x2F\xCD"
7001 "\x2E\x40\x48\x75\xE9\xE2\x21\x45"
7002 "\x0B\xC9\xB6\xB5\x66\xBC\x9A\x59"
7003 "\x5A",
2407d608 7004 .rlen = 129,
8bff664c 7005 }, { /* large test vector generated using Crypto++ */
de224c30
SS
7006 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
7007 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
7008 "\x10\x11\x12\x13\x14\x15\x16\x17"
7009 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
8bff664c 7010 .klen = 32,
de224c30
SS
7011 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
7012 "\x00\x00\x00\x00\x00\x00\x00\x00",
7013 .input =
7014 "\x00\x01\x02\x03\x04\x05\x06\x07"
7015 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
7016 "\x10\x11\x12\x13\x14\x15\x16\x17"
7017 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
7018 "\x20\x21\x22\x23\x24\x25\x26\x27"
7019 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
7020 "\x30\x31\x32\x33\x34\x35\x36\x37"
7021 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
7022 "\x40\x41\x42\x43\x44\x45\x46\x47"
7023 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
7024 "\x50\x51\x52\x53\x54\x55\x56\x57"
7025 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
7026 "\x60\x61\x62\x63\x64\x65\x66\x67"
7027 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
7028 "\x70\x71\x72\x73\x74\x75\x76\x77"
7029 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
7030 "\x80\x81\x82\x83\x84\x85\x86\x87"
7031 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
7032 "\x90\x91\x92\x93\x94\x95\x96\x97"
7033 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
7034 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
7035 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
7036 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
7037 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
7038 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
7039 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
7040 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
7041 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
7042 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
7043 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
7044 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
7045 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
7046 "\x00\x03\x06\x09\x0c\x0f\x12\x15"
7047 "\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
7048 "\x30\x33\x36\x39\x3c\x3f\x42\x45"
7049 "\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
7050 "\x60\x63\x66\x69\x6c\x6f\x72\x75"
7051 "\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
7052 "\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
7053 "\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
7054 "\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
7055 "\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
7056 "\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
7057 "\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
7058 "\x20\x23\x26\x29\x2c\x2f\x32\x35"
7059 "\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
7060 "\x50\x53\x56\x59\x5c\x5f\x62\x65"
7061 "\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
7062 "\x80\x83\x86\x89\x8c\x8f\x92\x95"
7063 "\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
7064 "\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
7065 "\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
7066 "\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
7067 "\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
7068 "\x10\x13\x16\x19\x1c\x1f\x22\x25"
7069 "\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
7070 "\x40\x43\x46\x49\x4c\x4f\x52\x55"
7071 "\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
7072 "\x70\x73\x76\x79\x7c\x7f\x82\x85"
7073 "\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
7074 "\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
7075 "\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
7076 "\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
7077 "\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
7078 "\x00\x05\x0a\x0f\x14\x19\x1e\x23"
7079 "\x28\x2d\x32\x37\x3c\x41\x46\x4b"
7080 "\x50\x55\x5a\x5f\x64\x69\x6e\x73"
7081 "\x78\x7d\x82\x87\x8c\x91\x96\x9b"
7082 "\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
7083 "\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
7084 "\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
7085 "\x18\x1d\x22\x27\x2c\x31\x36\x3b"
7086 "\x40\x45\x4a\x4f\x54\x59\x5e\x63"
7087 "\x68\x6d\x72\x77\x7c\x81\x86\x8b"
7088 "\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
7089 "\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
7090 "\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
7091 "\x08\x0d\x12\x17\x1c\x21\x26\x2b"
7092 "\x30\x35\x3a\x3f\x44\x49\x4e\x53"
7093 "\x58\x5d\x62\x67\x6c\x71\x76\x7b"
7094 "\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
7095 "\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
7096 "\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
7097 "\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
7098 "\x20\x25\x2a\x2f\x34\x39\x3e\x43"
7099 "\x48\x4d\x52\x57\x5c\x61\x66\x6b"
7100 "\x70\x75\x7a\x7f\x84\x89\x8e\x93"
7101 "\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
7102 "\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
7103 "\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
7104 "\x10\x15\x1a\x1f\x24\x29\x2e\x33"
7105 "\x38\x3d\x42\x47\x4c\x51\x56\x5b"
7106 "\x60\x65\x6a\x6f\x74\x79\x7e\x83"
7107 "\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
7108 "\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
7109 "\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
7110 "\x00\x07\x0e\x15\x1c\x23\x2a\x31"
7111 "\x38\x3f\x46\x4d\x54\x5b\x62\x69"
7112 "\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
7113 "\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
7114 "\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
7115 "\x18\x1f\x26\x2d\x34\x3b\x42\x49"
7116 "\x50\x57\x5e\x65\x6c\x73\x7a\x81"
7117 "\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
7118 "\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
7119 "\xf8\xff\x06\x0d\x14\x1b\x22\x29"
7120 "\x30\x37\x3e\x45\x4c\x53\x5a\x61"
7121 "\x68\x6f\x76\x7d\x84\x8b\x92\x99"
7122 "\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
7123 "\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
7124 "\x10\x17\x1e\x25\x2c\x33\x3a\x41"
7125 "\x48\x4f\x56\x5d\x64\x6b\x72\x79"
7126 "\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
7127 "\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
7128 "\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
7129 "\x28\x2f\x36\x3d\x44\x4b\x52\x59"
7130 "\x60\x67\x6e\x75\x7c\x83\x8a\x91"
7131 "\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
7132 "\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
7133 "\x08\x0f\x16\x1d\x24\x2b\x32\x39"
7134 "\x40\x47\x4e\x55\x5c\x63\x6a\x71"
7135 "\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
7136 "\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
7137 "\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
7138 "\x20\x27\x2e\x35\x3c\x43\x4a\x51"
7139 "\x58\x5f\x66\x6d\x74\x7b\x82\x89"
7140 "\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
7141 "\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
7142 "\x00\x09\x12\x1b\x24\x2d\x36\x3f"
7143 "\x48\x51\x5a\x63\x6c\x75\x7e\x87"
7144 "\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
7145 "\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
7146 "\x20\x29\x32\x3b\x44\x4d\x56\x5f"
7147 "\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
7148 "\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
7149 "\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
7150 "\x40\x49\x52\x5b\x64\x6d\x76\x7f"
7151 "\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
7152 "\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
7153 "\x18\x21\x2a\x33\x3c\x45\x4e\x57"
7154 "\x60\x69\x72\x7b\x84\x8d\x96\x9f"
7155 "\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
7156 "\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
7157 "\x38\x41\x4a\x53\x5c\x65\x6e\x77"
7158 "\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
7159 "\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
7160 "\x10\x19\x22\x2b\x34\x3d\x46\x4f"
7161 "\x58\x61\x6a\x73\x7c\x85\x8e\x97"
7162 "\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
7163 "\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
7164 "\x30\x39\x42\x4b\x54\x5d\x66\x6f"
7165 "\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
7166 "\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
7167 "\x08\x11\x1a\x23\x2c\x35\x3e\x47"
7168 "\x50\x59\x62\x6b\x74\x7d\x86\x8f"
7169 "\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
7170 "\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
7171 "\x28\x31\x3a\x43\x4c\x55\x5e\x67"
7172 "\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
7173 "\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
7174 "\x00\x0b\x16\x21\x2c\x37\x42\x4d"
7175 "\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
7176 "\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
7177 "\x08\x13\x1e\x29\x34\x3f\x4a\x55"
7178 "\x60\x6b\x76\x81\x8c\x97\xa2\xad"
7179 "\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
7180 "\x10\x1b\x26\x31\x3c\x47\x52\x5d"
7181 "\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
7182 "\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
7183 "\x18\x23\x2e\x39\x44\x4f\x5a\x65"
7184 "\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
7185 "\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
7186 "\x20\x2b\x36\x41\x4c\x57\x62\x6d"
7187 "\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
7188 "\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
7189 "\x28\x33\x3e\x49\x54\x5f\x6a\x75"
7190 "\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
7191 "\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
7192 "\x30\x3b\x46\x51\x5c\x67\x72\x7d"
7193 "\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
7194 "\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
7195 "\x38\x43\x4e\x59\x64\x6f\x7a\x85"
7196 "\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
7197 "\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
7198 "\x40\x4b\x56\x61\x6c\x77\x82\x8d"
7199 "\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
7200 "\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
7201 "\x48\x53\x5e\x69\x74\x7f\x8a\x95"
7202 "\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
7203 "\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
7204 "\x50\x5b\x66\x71\x7c\x87\x92\x9d"
7205 "\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
7206 "\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
7207 "\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
7208 "\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
7209 "\x38\x45\x52\x5f\x6c\x79\x86\x93"
7210 "\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
7211 "\x08\x15\x22\x2f\x3c\x49\x56\x63"
7212 "\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
7213 "\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
7214 "\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
7215 "\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
7216 "\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
7217 "\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
7218 "\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
7219 "\x48\x55\x62\x6f\x7c\x89\x96\xa3"
7220 "\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
7221 "\x18\x25\x32\x3f\x4c\x59\x66\x73"
7222 "\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
7223 "\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
7224 "\x50\x5d\x6a\x77\x84\x91\x9e\xab"
7225 "\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
7226 "\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
7227 "\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
7228 "\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
7229 "\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
7230 "\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
7231 "\x28\x35\x42\x4f\x5c\x69\x76\x83"
7232 "\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
7233 "\xf8\x05\x12\x1f\x2c\x39\x46\x53"
7234 "\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
7235 "\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
7236 "\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
7237 "\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
7238 "\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
7239 "\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
7240 "\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
7241 "\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
7242 "\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
7243 "\x58\x67\x76\x85\x94\xa3\xb2\xc1"
7244 "\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
7245 "\x48\x57\x66\x75\x84\x93\xa2\xb1"
7246 "\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
7247 "\x38\x47\x56\x65\x74\x83\x92\xa1"
7248 "\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
7249 "\x28\x37\x46\x55\x64\x73\x82\x91"
7250 "\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
7251 "\x18\x27\x36\x45\x54\x63\x72\x81"
7252 "\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
7253 "\x08\x17\x26\x35\x44\x53\x62\x71"
7254 "\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
7255 "\xf8\x07\x16\x25\x34\x43\x52\x61"
7256 "\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
7257 "\xe8\xf7\x06\x15\x24\x33\x42\x51"
7258 "\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
7259 "\xd8\xe7\xf6\x05\x14\x23\x32\x41"
7260 "\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
7261 "\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
7262 "\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
7263 "\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
7264 "\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
7265 "\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
7266 "\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
7267 "\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
7268 "\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
7269 "\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
7270 "\x00\x11\x22\x33\x44\x55\x66\x77"
7271 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
7272 "\x10\x21\x32\x43\x54\x65\x76\x87"
7273 "\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
7274 "\x20\x31\x42\x53\x64\x75\x86\x97"
7275 "\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
7276 "\x30\x41\x52\x63\x74\x85\x96\xa7"
7277 "\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
7278 "\x40\x51\x62\x73\x84\x95\xa6\xb7"
7279 "\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
7280 "\x50\x61\x72\x83\x94\xa5\xb6\xc7"
7281 "\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
7282 "\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
7283 "\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
7284 "\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
7285 "\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
7286 "\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
7287 "\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
7288 "\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
7289 "\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
7290 "\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
7291 "\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
7292 "\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
7293 "\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
7294 "\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
7295 "\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
7296 "\xd0\xe1\xf2\x03\x14\x25\x36\x47"
7297 "\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
7298 "\xe0\xf1\x02\x13\x24\x35\x46\x57"
7299 "\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
7300 "\xf0\x01\x12\x23\x34\x45\x56\x67"
7301 "\x78\x89\x9a\xab\xbc\xcd\xde\xef"
7302 "\x00\x13\x26\x39\x4c\x5f\x72\x85"
7303 "\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
7304 "\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
7305 "\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
7306 "\x60\x73\x86\x99\xac\xbf\xd2\xe5"
7307 "\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
7308 "\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
7309 "\x28\x3b\x4e\x61\x74\x87\x9a\xad"
7310 "\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
7311 "\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
7312 "\xf0\x03\x16\x29\x3c\x4f\x62\x75"
7313 "\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
7314 "\x20\x33\x46\x59\x6c\x7f\x92\xa5"
7315 "\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
7316 "\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
7317 "\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
7318 "\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
7319 "\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
7320 "\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
7321 "\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
7322 "\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
7323 "\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
7324 "\x10\x23\x36\x49\x5c\x6f\x82\x95"
7325 "\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
7326 "\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
7327 "\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
7328 "\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
7329 "\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
7330 "\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
7331 "\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
7332 "\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
7333 "\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
7334 "\x00\x15\x2a\x3f\x54\x69\x7e\x93"
7335 "\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
7336 "\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
7337 "\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
7338 "\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
7339 "\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
7340 "\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
7341 "\x98\xad\xc2\xd7\xec\x01\x16\x2b"
7342 "\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
7343 "\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
7344 "\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
7345 "\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
7346 "\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
7347 "\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
7348 "\x30\x45\x5a\x6f\x84\x99\xae\xc3"
7349 "\xd8\xed\x02\x17\x2c\x41\x56\x6b"
7350 "\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
7351 "\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
7352 "\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
7353 "\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
7354 "\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
7355 "\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
7356 "\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
7357 "\x18\x2d\x42\x57\x6c\x81\x96\xab"
7358 "\xc0\xd5\xea\xff\x14\x29\x3e\x53"
7359 "\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
7360 "\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
7361 "\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
7362 "\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
7363 "\x08\x1d\x32\x47\x5c\x71\x86\x9b"
7364 "\xb0\xc5\xda\xef\x04\x19\x2e\x43"
7365 "\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
7366 "\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
7367 "\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
7368 "\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
7369 "\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
7370 "\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
7371 "\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
7372 "\x50\x67\x7e\x95\xac\xc3\xda\xf1"
7373 "\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
7374 "\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
7375 "\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
7376 "\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
7377 "\xe8\xff\x16\x2d\x44\x5b\x72\x89"
7378 "\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
7379 "\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
7380 "\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
7381 "\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
7382 "\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
7383 "\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
7384 "\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
7385 "\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
7386 "\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
7387 "\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
7388 "\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
7389 "\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
7390 "\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
7391 "\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
7392 "\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
7393 "\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
7394 "\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
7395 "\xd8\xef\x06\x1d\x34\x4b\x62\x79"
7396 "\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
7397 "\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
7398 "\x00\x19\x32\x4b\x64\x7d\x96\xaf"
7399 "\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
7400 "\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
7401 "\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
7402 "\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
7403 "\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
7404 "\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
7405 "\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
7406 "\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
7407 "\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
7408 "\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
7409 "\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
7410 "\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
7411 "\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
7412 "\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
7413 "\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
7414 "\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
7415 "\x48\x61\x7a\x93\xac\xc5\xde\xf7"
7416 "\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
7417 "\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
7418 "\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
7419 "\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
7420 "\x30\x49\x62\x7b\x94\xad\xc6\xdf"
7421 "\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
7422 "\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
7423 "\x88\xa1\xba\xd3\xec\x05\x1e\x37"
7424 "\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
7425 "\x18\x31\x4a\x63\x7c\x95\xae\xc7"
7426 "\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
7427 "\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
7428 "\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
7429 "\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
7430 "\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
7431 "\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
7432 "\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
7433 "\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
7434 "\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
7435 "\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
7436 "\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
7437 "\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
7438 "\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
7439 "\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
7440 "\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
7441 "\x48\x63\x7e\x99\xb4\xcf\xea\x05"
7442 "\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
7443 "\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
7444 "\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
7445 "\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
7446 "\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
7447 "\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
7448 "\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
7449 "\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
7450 "\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
7451 "\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
7452 "\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
7453 "\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
7454 "\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
7455 "\x18\x33\x4e\x69\x84\x9f\xba\xd5"
7456 "\xf0\x0b\x26\x41\x5c\x77\x92\xad"
7457 "\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
7458 "\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
7459 "\x78\x93\xae\xc9\xe4\xff\x1a\x35"
7460 "\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
7461 "\x28\x43\x5e\x79\x94\xaf\xca\xe5"
7462 "\x00\x1d\x3a\x57\x74\x91\xae\xcb"
7463 "\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
7464 "\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
7465 "\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
7466 "\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
7467 "\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
7468 "\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
7469 "\x58\x75\x92\xaf\xcc\xe9\x06\x23"
7470 "\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
7471 "\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
7472 "\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
7473 "\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
7474 "\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
7475 "\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
7476 "\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
7477 "\x98\xb5\xd2\xef\x0c\x29\x46\x63"
7478 "\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
7479 "\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
7480 "\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
7481 "\x38\x55\x72\x8f\xac\xc9\xe6\x03"
7482 "\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
7483 "\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
7484 "\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
7485 "\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
7486 "\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
7487 "\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
7488 "\x90\xad\xca\xe7\x04\x21\x3e\x5b"
7489 "\x78\x95\xb2\xcf\xec\x09\x26\x43"
7490 "\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
7491 "\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
7492 "\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
7493 "\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
7494 "\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
7495 "\xf8\x17\x36\x55\x74\x93\xb2\xd1"
7496 "\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
7497 "\xe8\x07\x26\x45\x64\x83\xa2\xc1"
7498 "\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
7499 "\xd8\xf7\x16\x35\x54\x73\x92\xb1"
7500 "\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
7501 "\xc8\xe7\x06\x25\x44\x63\x82\xa1"
7502 "\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
7503 "\xb8\xd7\xf6\x15\x34\x53\x72\x91"
7504 "\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
7505 "\xa8\xc7\xe6\x05\x24\x43\x62\x81"
7506 "\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
7507 "\x98\xb7\xd6\xf5\x14\x33\x52\x71"
7508 "\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
7509 "\x88\xa7\xc6\xe5\x04\x23\x42\x61"
7510 "\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
7511 "\x78\x97\xb6\xd5\xf4\x13\x32\x51"
7512 "\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
7513 "\x68\x87\xa6\xc5\xe4\x03\x22\x41"
7514 "\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
7515 "\x58\x77\x96\xb5\xd4\xf3\x12\x31"
7516 "\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
7517 "\x48\x67\x86\xa5\xc4\xe3\x02\x21"
7518 "\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
7519 "\x38\x57\x76\x95\xb4\xd3\xf2\x11"
7520 "\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
7521 "\x28\x47\x66\x85\xa4\xc3\xe2\x01"
7522 "\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
7523 "\x18\x37\x56\x75\x94\xb3\xd2\xf1"
7524 "\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
7525 "\x08\x27\x46\x65\x84\xa3\xc2\xe1"
7526 "\x00\x21\x42\x63",
8bff664c 7527 .ilen = 4100,
de224c30
SS
7528 .result =
7529 "\xb5\x81\xf5\x64\x18\x73\xe3\xf0"
7530 "\x4c\x13\xf2\x77\x18\x60\x65\x5e"
7531 "\x29\x01\xce\x98\x55\x53\xf9\x0c"
7532 "\x2a\x08\xd5\x09\xb3\x57\x55\x56"
7533 "\xc5\xe9\x56\x90\xcb\x6a\xa3\xc0"
7534 "\xff\xc4\x79\xb4\xd2\x97\x5d\xc4"
7535 "\x43\xd1\xfe\x94\x7b\x88\x06\x5a"
7536 "\xb2\x9e\x2c\xfc\x44\x03\xb7\x90"
7537 "\xa0\xc1\xba\x6a\x33\xb8\xc7\xb2"
7538 "\x9d\xe1\x12\x4f\xc0\x64\xd4\x01"
7539 "\xfe\x8c\x7a\x66\xf7\xe6\x5a\x91"
7540 "\xbb\xde\x56\x86\xab\x65\x21\x30"
7541 "\x00\x84\x65\x24\xa5\x7d\x85\xb4"
7542 "\xe3\x17\xed\x3a\xb7\x6f\xb4\x0b"
7543 "\x0b\xaf\x15\xae\x5a\x8f\xf2\x0c"
7544 "\x2f\x27\xf4\x09\xd8\xd2\x96\xb7"
7545 "\x71\xf2\xc5\x99\x4d\x7e\x7f\x75"
7546 "\x77\x89\x30\x8b\x59\xdb\xa2\xb2"
7547 "\xa0\xf3\x19\x39\x2b\xc5\x7e\x3f"
7548 "\x4f\xd9\xd3\x56\x28\x97\x44\xdc"
7549 "\xc0\x8b\x77\x24\xd9\x52\xe7\xc5"
7550 "\xaf\xf6\x7d\x59\xb2\x44\x05\x1d"
7551 "\xb1\xb0\x11\xa5\x0f\xec\x33\xe1"
7552 "\x6d\x1b\x4e\x1f\xff\x57\x91\xb4"
7553 "\x5b\x9a\x96\xc5\x53\xbc\xae\x20"
7554 "\x3c\xbb\x14\xe2\xe8\x22\x33\xc1"
7555 "\x5e\x76\x9e\x46\x99\xf6\x2a\x15"
7556 "\xc6\x97\x02\xa0\x66\x43\xd1\xa6"
7557 "\x31\xa6\x9f\xfb\xf4\xd3\x69\xe5"
7558 "\xcd\x76\x95\xb8\x7a\x82\x7f\x21"
7559 "\x45\xff\x3f\xce\x55\xf6\x95\x10"
7560 "\x08\x77\x10\x43\xc6\xf3\x09\xe5"
7561 "\x68\xe7\x3c\xad\x00\x52\x45\x0d"
7562 "\xfe\x2d\xc6\xc2\x94\x8c\x12\x1d"
7563 "\xe6\x25\xae\x98\x12\x8e\x19\x9c"
7564 "\x81\x68\xb1\x11\xf6\x69\xda\xe3"
7565 "\x62\x08\x18\x7a\x25\x49\x28\xac"
7566 "\xba\x71\x12\x0b\xe4\xa2\xe5\xc7"
7567 "\x5d\x8e\xec\x49\x40\x21\xbf\x5a"
7568 "\x98\xf3\x02\x68\x55\x03\x7f\x8a"
7569 "\xe5\x94\x0c\x32\x5c\x07\x82\x63"
7570 "\xaf\x6f\x91\x40\x84\x8e\x52\x25"
7571 "\xd0\xb0\x29\x53\x05\xe2\x50\x7a"
7572 "\x34\xeb\xc9\x46\x20\xa8\x3d\xde"
7573 "\x7f\x16\x5f\x36\xc5\x2e\xdc\xd1"
7574 "\x15\x47\xc7\x50\x40\x6d\x91\xc5"
7575 "\xe7\x93\x95\x1a\xd3\x57\xbc\x52"
7576 "\x33\xee\x14\x19\x22\x52\x89\xa7"
7577 "\x4a\x25\x56\x77\x4b\xca\xcf\x0a"
7578 "\xe1\xf5\x35\x85\x30\x7e\x59\x4a"
7579 "\xbd\x14\x5b\xdf\xe3\x46\xcb\xac"
7580 "\x1f\x6c\x96\x0e\xf4\x81\xd1\x99"
7581 "\xca\x88\x63\x3d\x02\x58\x6b\xa9"
7582 "\xe5\x9f\xb3\x00\xb2\x54\xc6\x74"
7583 "\x1c\xbf\x46\xab\x97\xcc\xf8\x54"
7584 "\x04\x07\x08\x52\xe6\xc0\xda\x93"
7585 "\x74\x7d\x93\x99\x5d\x78\x68\xa6"
7586 "\x2e\x6b\xd3\x6a\x69\xcc\x12\x6b"
7587 "\xd4\xc7\xa5\xc6\xe7\xf6\x03\x04"
7588 "\x5d\xcd\x61\x5e\x17\x40\xdc\xd1"
7589 "\x5c\xf5\x08\xdf\x5c\x90\x85\xa4"
7590 "\xaf\xf6\x78\xbb\x0d\xf1\xf4\xa4"
7591 "\x54\x26\x72\x9e\x61\xfa\x86\xcf"
7592 "\xe8\x9e\xa1\xe0\xc7\x48\x23\xae"
7593 "\x5a\x90\xae\x75\x0a\x74\x18\x89"
7594 "\x05\xb1\x92\xb2\x7f\xd0\x1b\xa6"
7595 "\x62\x07\x25\x01\xc7\xc2\x4f\xf9"
7596 "\xe8\xfe\x63\x95\x80\x07\xb4\x26"
7597 "\xcc\xd1\x26\xb6\xc4\x3f\x9e\xcb"
7598 "\x8e\x3b\x2e\x44\x16\xd3\x10\x9a"
7599 "\x95\x08\xeb\xc8\xcb\xeb\xbf\x6f"
7600 "\x0b\xcd\x1f\xc8\xca\x86\xaa\xec"
7601 "\x33\xe6\x69\xf4\x45\x25\x86\x3a"
7602 "\x22\x94\x4f\x00\x23\x6a\x44\xc2"
7603 "\x49\x97\x33\xab\x36\x14\x0a\x70"
7604 "\x24\xc3\xbe\x04\x3b\x79\xa0\xf9"
7605 "\xb8\xe7\x76\x29\x22\x83\xd7\xf2"
7606 "\x94\xf4\x41\x49\xba\x5f\x7b\x07"
7607 "\xb5\xfb\xdb\x03\x1a\x9f\xb6\x4c"
7608 "\xc2\x2e\x37\x40\x49\xc3\x38\x16"
7609 "\xe2\x4f\x77\x82\xb0\x68\x4c\x71"
7610 "\x1d\x57\x61\x9c\xd9\x4e\x54\x99"
7611 "\x47\x13\x28\x73\x3c\xbb\x00\x90"
7612 "\xf3\x4d\xc9\x0e\xfd\xe7\xb1\x71"
7613 "\xd3\x15\x79\xbf\xcc\x26\x2f\xbd"
7614 "\xad\x6c\x50\x69\x6c\x3e\x6d\x80"
7615 "\x9a\xea\x78\xaf\x19\xb2\x0d\x4d"
7616 "\xad\x04\x07\xae\x22\x90\x4a\x93"
7617 "\x32\x0e\x36\x9b\x1b\x46\xba\x3b"
7618 "\xb4\xac\xc6\xd1\xa2\x31\x53\x3b"
7619 "\x2a\x3d\x45\xfe\x03\x61\x10\x85"
7620 "\x17\x69\xa6\x78\xcc\x6c\x87\x49"
7621 "\x53\xf9\x80\x10\xde\x80\xa2\x41"
7622 "\x6a\xc3\x32\x02\xad\x6d\x3c\x56"
7623 "\x00\x71\x51\x06\xa7\xbd\xfb\xef"
7624 "\x3c\xb5\x9f\xfc\x48\x7d\x53\x7c"
7625 "\x66\xb0\x49\x23\xc4\x47\x10\x0e"
7626 "\xe5\x6c\x74\x13\xe6\xc5\x3f\xaa"
7627 "\xde\xff\x07\x44\xdd\x56\x1b\xad"
7628 "\x09\x77\xfb\x5b\x12\xb8\x0d\x38"
7629 "\x17\x37\x35\x7b\x9b\xbc\xfe\xd4"
7630 "\x7e\x8b\xda\x7e\x5b\x04\xa7\x22"
7631 "\xa7\x31\xa1\x20\x86\xc7\x1b\x99"
7632 "\xdb\xd1\x89\xf4\x94\xa3\x53\x69"
7633 "\x8d\xe7\xe8\x74\x11\x8d\x74\xd6"
7634 "\x07\x37\x91\x9f\xfd\x67\x50\x3a"
7635 "\xc9\xe1\xf4\x36\xd5\xa0\x47\xd1"
7636 "\xf9\xe5\x39\xa3\x31\xac\x07\x36"
7637 "\x23\xf8\x66\x18\x14\x28\x34\x0f"
7638 "\xb8\xd0\xe7\x29\xb3\x04\x4b\x55"
7639 "\x01\x41\xb2\x75\x8d\xcb\x96\x85"
7640 "\x3a\xfb\xab\x2b\x9e\xfa\x58\x20"
7641 "\x44\x1f\xc0\x14\x22\x75\x61\xe8"
7642 "\xaa\x19\xcf\xf1\x82\x56\xf4\xd7"
7643 "\x78\x7b\x3d\x5f\xb3\x9e\x0b\x8a"
7644 "\x57\x50\xdb\x17\x41\x65\x4d\xa3"
7645 "\x02\xc9\x9c\x9c\x53\xfb\x39\x39"
7646 "\x9b\x1d\x72\x24\xda\xb7\x39\xbe"
7647 "\x13\x3b\xfa\x29\xda\x9e\x54\x64"
7648 "\x6e\xba\xd8\xa1\xcb\xb3\x36\xfa"
7649 "\xcb\x47\x85\xe9\x61\x38\xbc\xbe"
7650 "\xc5\x00\x38\x2a\x54\xf7\xc4\xb9"
7651 "\xb3\xd3\x7b\xa0\xa0\xf8\x72\x7f"
7652 "\x8c\x8e\x82\x0e\xc6\x1c\x75\x9d"
7653 "\xca\x8e\x61\x87\xde\xad\x80\xd2"
7654 "\xf5\xf9\x80\xef\x15\x75\xaf\xf5"
7655 "\x80\xfb\xff\x6d\x1e\x25\xb7\x40"
7656 "\x61\x6a\x39\x5a\x6a\xb5\x31\xab"
7657 "\x97\x8a\x19\x89\x44\x40\xc0\xa6"
7658 "\xb4\x4e\x30\x32\x7b\x13\xe7\x67"
7659 "\xa9\x8b\x57\x04\xc2\x01\xa6\xf4"
7660 "\x28\x99\xad\x2c\x76\xa3\x78\xc2"
7661 "\x4a\xe6\xca\x5c\x50\x6a\xc1\xb0"
7662 "\x62\x4b\x10\x8e\x7c\x17\x43\xb3"
7663 "\x17\x66\x1c\x3e\x8d\x69\xf0\x5a"
7664 "\x71\xf5\x97\xdc\xd1\x45\xdd\x28"
7665 "\xf3\x5d\xdf\x53\x7b\x11\xe5\xbc"
7666 "\x4c\xdb\x1b\x51\x6b\xe9\xfb\x3d"
7667 "\xc1\xc3\x2c\xb9\x71\xf5\xb6\xb2"
7668 "\x13\x36\x79\x80\x53\xe8\xd3\xa6"
7669 "\x0a\xaf\xfd\x56\x97\xf7\x40\x8e"
7670 "\x45\xce\xf8\xb0\x9e\x5c\x33\x82"
7671 "\xb0\x44\x56\xfc\x05\x09\xe9\x2a"
7672 "\xac\x26\x80\x14\x1d\xc8\x3a\x35"
7673 "\x4c\x82\x97\xfd\x76\xb7\xa9\x0a"
7674 "\x35\x58\x79\x8e\x0f\x66\xea\xaf"
7675 "\x51\x6c\x09\xa9\x6e\x9b\xcb\x9a"
7676 "\x31\x47\xa0\x2f\x7c\x71\xb4\x4a"
7677 "\x11\xaa\x8c\x66\xc5\x64\xe6\x3a"
7678 "\x54\xda\x24\x6a\xc4\x41\x65\x46"
7679 "\x82\xa0\x0a\x0f\x5f\xfb\x25\xd0"
7680 "\x2c\x91\xa7\xee\xc4\x81\x07\x86"
7681 "\x75\x5e\x33\x69\x97\xe4\x2c\xa8"
7682 "\x9d\x9f\x0b\x6a\xbe\xad\x98\xda"
7683 "\x6d\x94\x41\xda\x2c\x1e\x89\xc4"
7684 "\xc2\xaf\x1e\x00\x05\x0b\x83\x60"
7685 "\xbd\x43\xea\x15\x23\x7f\xb9\xac"
7686 "\xee\x4f\x2c\xaf\x2a\xf3\xdf\xd0"
7687 "\xf3\x19\x31\xbb\x4a\x74\x84\x17"
7688 "\x52\x32\x2c\x7d\x61\xe4\xcb\xeb"
7689 "\x80\x38\x15\x52\xcb\x6f\xea\xe5"
7690 "\x73\x9c\xd9\x24\x69\xc6\x95\x32"
7691 "\x21\xc8\x11\xe4\xdc\x36\xd7\x93"
7692 "\x38\x66\xfb\xb2\x7f\x3a\xb9\xaf"
7693 "\x31\xdd\x93\x75\x78\x8a\x2c\x94"
7694 "\x87\x1a\x58\xec\x9e\x7d\x4d\xba"
7695 "\xe1\xe5\x4d\xfc\xbc\xa4\x2a\x14"
7696 "\xef\xcc\xa7\xec\xab\x43\x09\x18"
7697 "\xd3\xab\x68\xd1\x07\x99\x44\x47"
7698 "\xd6\x83\x85\x3b\x30\xea\xa9\x6b"
7699 "\x63\xea\xc4\x07\xfb\x43\x2f\xa4"
7700 "\xaa\xb0\xab\x03\x89\xce\x3f\x8c"
7701 "\x02\x7c\x86\x54\xbc\x88\xaf\x75"
7702 "\xd2\xdc\x63\x17\xd3\x26\xf6\x96"
7703 "\xa9\x3c\xf1\x61\x8c\x11\x18\xcc"
7704 "\xd6\xea\x5b\xe2\xcd\xf0\xf1\xb2"
7705 "\xe5\x35\x90\x1f\x85\x4c\x76\x5b"
7706 "\x66\xce\x44\xa4\x32\x9f\xe6\x7b"
7707 "\x71\x6e\x9f\x58\x15\x67\x72\x87"
7708 "\x64\x8e\x3a\x44\x45\xd4\x76\xfa"
7709 "\xc2\xf6\xef\x85\x05\x18\x7a\x9b"
7710 "\xba\x41\x54\xac\xf0\xfc\x59\x12"
7711 "\x3f\xdf\xa0\xe5\x8a\x65\xfd\x3a"
7712 "\x62\x8d\x83\x2c\x03\xbe\x05\x76"
7713 "\x2e\x53\x49\x97\x94\x33\xae\x40"
7714 "\x81\x15\xdb\x6e\xad\xaa\xf5\x4b"
7715 "\xe3\x98\x70\xdf\xe0\x7c\xcd\xdb"
7716 "\x02\xd4\x7d\x2f\xc1\xe6\xb4\xf3"
7717 "\xd7\x0d\x7a\xd9\x23\x9e\x87\x2d"
7718 "\xce\x87\xad\xcc\x72\x05\x00\x29"
7719 "\xdc\x73\x7f\x64\xc1\x15\x0e\xc2"
7720 "\xdf\xa7\x5f\xeb\x41\xa1\xcd\xef"
7721 "\x5c\x50\x79\x2a\x56\x56\x71\x8c"
7722 "\xac\xc0\x79\x50\x69\xca\x59\x32"
7723 "\x65\xf2\x54\xe4\x52\x38\x76\xd1"
7724 "\x5e\xde\x26\x9e\xfb\x75\x2e\x11"
7725 "\xb5\x10\xf4\x17\x73\xf5\x89\xc7"
7726 "\x4f\x43\x5c\x8e\x7c\xb9\x05\x52"
7727 "\x24\x40\x99\xfe\x9b\x85\x0b\x6c"
7728 "\x22\x3e\x8b\xae\x86\xa1\xd2\x79"
7729 "\x05\x68\x6b\xab\xe3\x41\x49\xed"
7730 "\x15\xa1\x8d\x40\x2d\x61\xdf\x1a"
7731 "\x59\xc9\x26\x8b\xef\x30\x4c\x88"
7732 "\x4b\x10\xf8\x8d\xa6\x92\x9f\x4b"
7733 "\xf3\xc4\x53\x0b\x89\x5d\x28\x92"
7734 "\xcf\x78\xb2\xc0\x5d\xed\x7e\xfc"
7735 "\xc0\x12\x23\x5f\x5a\x78\x86\x43"
7736 "\x6e\x27\xf7\x5a\xa7\x6a\xed\x19"
7737 "\x04\xf0\xb3\x12\xd1\xbd\x0e\x89"
7738 "\x6e\xbc\x96\xa8\xd8\x49\x39\x9f"
7739 "\x7e\x67\xf0\x2e\x3e\x01\xa9\xba"
7740 "\xec\x8b\x62\x8e\xcb\x4a\x70\x43"
7741 "\xc7\xc2\xc4\xca\x82\x03\x73\xe9"
7742 "\x11\xdf\xcf\x54\xea\xc9\xb0\x95"
7743 "\x51\xc0\x13\x3d\x92\x05\xfa\xf4"
7744 "\xa9\x34\xc8\xce\x6c\x3d\x54\xcc"
7745 "\xc4\xaf\xf1\xdc\x11\x44\x26\xa2"
7746 "\xaf\xf1\x85\x75\x7d\x03\x61\x68"
7747 "\x4e\x78\xc6\x92\x7d\x86\x7d\x77"
7748 "\xdc\x71\x72\xdb\xc6\xae\xa1\xcb"
7749 "\x70\x9a\x0b\x19\xbe\x4a\x6c\x2a"
7750 "\xe2\xba\x6c\x64\x9a\x13\x28\xdf"
7751 "\x85\x75\xe6\x43\xf6\x87\x08\x68"
7752 "\x6e\xba\x6e\x79\x9f\x04\xbc\x23"
7753 "\x50\xf6\x33\x5c\x1f\x24\x25\xbe"
7754 "\x33\x47\x80\x45\x56\xa3\xa7\xd7"
7755 "\x7a\xb1\x34\x0b\x90\x3c\x9c\xad"
7756 "\x44\x5f\x9e\x0e\x9d\xd4\xbd\x93"
7757 "\x5e\xfa\x3c\xe0\xb0\xd9\xed\xf3"
7758 "\xd6\x2e\xff\x24\xd8\x71\x6c\xed"
7759 "\xaf\x55\xeb\x22\xac\x93\x68\x32"
7760 "\x05\x5b\x47\xdd\xc6\x4a\xcb\xc7"
7761 "\x10\xe1\x3c\x92\x1a\xf3\x23\x78"
7762 "\x2b\xa1\xd2\x80\xf4\x12\xb1\x20"
7763 "\x8f\xff\x26\x35\xdd\xfb\xc7\x4e"
7764 "\x78\xf1\x2d\x50\x12\x77\xa8\x60"
7765 "\x7c\x0f\xf5\x16\x2f\x63\x70\x2a"
7766 "\xc0\x96\x80\x4e\x0a\xb4\x93\x35"
7767 "\x5d\x1d\x3f\x56\xf7\x2f\xbb\x90"
7768 "\x11\x16\x8f\xa2\xec\x47\xbe\xac"
7769 "\x56\x01\x26\x56\xb1\x8c\xb2\x10"
7770 "\xf9\x1a\xca\xf5\xd1\xb7\x39\x20"
7771 "\x63\xf1\x69\x20\x4f\x13\x12\x1f"
7772 "\x5b\x65\xfc\x98\xf7\xc4\x7a\xbe"
7773 "\xf7\x26\x4d\x2b\x84\x7b\x42\xad"
7774 "\xd8\x7a\x0a\xb4\xd8\x74\xbf\xc1"
7775 "\xf0\x6e\xb4\x29\xa3\xbb\xca\x46"
7776 "\x67\x70\x6a\x2d\xce\x0e\xa2\x8a"
7777 "\xa9\x87\xbf\x05\xc4\xc1\x04\xa3"
7778 "\xab\xd4\x45\x43\x8c\xb6\x02\xb0"
7779 "\x41\xc8\xfc\x44\x3d\x59\xaa\x2e"
7780 "\x44\x21\x2a\x8d\x88\x9d\x57\xf4"
7781 "\xa0\x02\x77\xb8\xa6\xa0\xe6\x75"
7782 "\x5c\x82\x65\x3e\x03\x5c\x29\x8f"
7783 "\x38\x55\xab\x33\x26\xef\x9f\x43"
7784 "\x52\xfd\x68\xaf\x36\xb4\xbb\x9a"
7785 "\x58\x09\x09\x1b\xc3\x65\x46\x46"
7786 "\x1d\xa7\x94\x18\x23\x50\x2c\xca"
7787 "\x2c\x55\x19\x97\x01\x9d\x93\x3b"
7788 "\x63\x86\xf2\x03\x67\x45\xd2\x72"
7789 "\x28\x52\x6c\xf4\xe3\x1c\xb5\x11"
7790 "\x13\xf1\xeb\x21\xc7\xd9\x56\x82"
7791 "\x2b\x82\x39\xbd\x69\x54\xed\x62"
7792 "\xc3\xe2\xde\x73\xd4\x6a\x12\xae"
7793 "\x13\x21\x7f\x4b\x5b\xfc\xbf\xe8"
7794 "\x2b\xbe\x56\xba\x68\x8b\x9a\xb1"
7795 "\x6e\xfa\xbf\x7e\x5a\x4b\xf1\xac"
7796 "\x98\x65\x85\xd1\x93\x53\xd3\x7b"
7797 "\x09\xdd\x4b\x10\x6d\x84\xb0\x13"
7798 "\x65\xbd\xcf\x52\x09\xc4\x85\xe2"
7799 "\x84\x74\x15\x65\xb7\xf7\x51\xaf"
7800 "\x55\xad\xa4\xd1\x22\x54\x70\x94"
7801 "\xa0\x1c\x90\x41\xfd\x99\xd7\x5a"
7802 "\x31\xef\xaa\x25\xd0\x7f\x4f\xea"
7803 "\x1d\x55\x42\xe5\x49\xb0\xd0\x46"
7804 "\x62\x36\x43\xb2\x82\x15\x75\x50"
7805 "\xa4\x72\xeb\x54\x27\x1f\x8a\xe4"
7806 "\x7d\xe9\x66\xc5\xf1\x53\xa4\xd1"
7807 "\x0c\xeb\xb8\xf8\xbc\xd4\xe2\xe7"
7808 "\xe1\xf8\x4b\xcb\xa9\xa1\xaf\x15"
7809 "\x83\xcb\x72\xd0\x33\x79\x00\x2d"
7810 "\x9f\xd7\xf1\x2e\x1e\x10\xe4\x45"
7811 "\xc0\x75\x3a\x39\xea\x68\xf7\x5d"
7812 "\x1b\x73\x8f\xe9\x8e\x0f\x72\x47"
7813 "\xae\x35\x0a\x31\x7a\x14\x4d\x4a"
7814 "\x6f\x47\xf7\x7e\x91\x6e\x74\x8b"
7815 "\x26\x47\xf9\xc3\xf9\xde\x70\xf5"
7816 "\x61\xab\xa9\x27\x9f\x82\xe4\x9c"
7817 "\x89\x91\x3f\x2e\x6a\xfd\xb5\x49"
7818 "\xe9\xfd\x59\x14\x36\x49\x40\x6d"
7819 "\x32\xd8\x85\x42\xf3\xa5\xdf\x0c"
7820 "\xa8\x27\xd7\x54\xe2\x63\x2f\xf2"
7821 "\x7e\x8b\x8b\xe7\xf1\x9a\x95\x35"
7822 "\x43\xdc\x3a\xe4\xb6\xf4\xd0\xdf"
7823 "\x9c\xcb\x94\xf3\x21\xa0\x77\x50"
7824 "\xe2\xc6\xc4\xc6\x5f\x09\x64\x5b"
7825 "\x92\x90\xd8\xe1\xd1\xed\x4b\x42"
7826 "\xd7\x37\xaf\x65\x3d\x11\x39\xb6"
7827 "\x24\x8a\x60\xae\xd6\x1e\xbf\x0e"
7828 "\x0d\xd7\xdc\x96\x0e\x65\x75\x4e"
7829 "\x29\x06\x9d\xa4\x51\x3a\x10\x63"
7830 "\x8f\x17\x07\xd5\x8e\x3c\xf4\x28"
7831 "\x00\x5a\x5b\x05\x19\xd8\xc0\x6c"
7832 "\xe5\x15\xe4\x9c\x9d\x71\x9d\x5e"
7833 "\x94\x29\x1a\xa7\x80\xfa\x0e\x33"
7834 "\x03\xdd\xb7\x3e\x9a\xa9\x26\x18"
7835 "\x37\xa9\x64\x08\x4d\x94\x5a\x88"
7836 "\xca\x35\xce\x81\x02\xe3\x1f\x1b"
7837 "\x89\x1a\x77\x85\xe3\x41\x6d\x32"
7838 "\x42\x19\x23\x7d\xc8\x73\xee\x25"
7839 "\x85\x0d\xf8\x31\x25\x79\x1b\x6f"
7840 "\x79\x25\xd2\xd8\xd4\x23\xfd\xf7"
7841 "\x82\x36\x6a\x0c\x46\x22\x15\xe9"
7842 "\xff\x72\x41\x91\x91\x7d\x3a\xb7"
7843 "\xdd\x65\x99\x70\xf6\x8d\x84\xf8"
7844 "\x67\x15\x20\x11\xd6\xb2\x55\x7b"
7845 "\xdb\x87\xee\xef\x55\x89\x2a\x59"
7846 "\x2b\x07\x8f\x43\x8a\x59\x3c\x01"
7847 "\x8b\x65\x54\xa1\x66\xd5\x38\xbd"
7848 "\xc6\x30\xa9\xcc\x49\xb6\xa8\x1b"
7849 "\xb8\xc0\x0e\xe3\x45\x28\xe2\xff"
7850 "\x41\x9f\x7e\x7c\xd1\xae\x9e\x25"
7851 "\x3f\x4c\x7c\x7c\xf4\xa8\x26\x4d"
7852 "\x5c\xfd\x4b\x27\x18\xf9\x61\x76"
7853 "\x48\xba\x0c\x6b\xa9\x4d\xfc\xf5"
7854 "\x3b\x35\x7e\x2f\x4a\xa9\xc2\x9a"
7855 "\xae\xab\x86\x09\x89\xc9\xc2\x40"
7856 "\x39\x2c\x81\xb3\xb8\x17\x67\xc2"
7857 "\x0d\x32\x4a\x3a\x67\x81\xd7\x1a"
7858 "\x34\x52\xc5\xdb\x0a\xf5\x63\x39"
7859 "\xea\x1f\xe1\x7c\xa1\x9e\xc1\x35"
7860 "\xe3\xb1\x18\x45\x67\xf9\x22\x38"
7861 "\x95\xd9\x34\x34\x86\xc6\x41\x94"
7862 "\x15\xf9\x5b\x41\xa6\x87\x8b\xf8"
7863 "\xd5\xe1\x1b\xe2\x5b\xf3\x86\x10"
7864 "\xff\xe6\xae\x69\x76\xbc\x0d\xb4"
7865 "\x09\x90\x0c\xa2\x65\x0c\xad\x74"
7866 "\xf5\xd7\xff\xda\xc1\xce\x85\xbe"
7867 "\x00\xa7\xff\x4d\x2f\x65\xd3\x8c"
7868 "\x86\x2d\x05\xe8\xed\x3e\x6b\x8b"
7869 "\x0f\x3d\x83\x8c\xf1\x1d\x5b\x96"
7870 "\x2e\xb1\x9c\xc2\x98\xe1\x70\xb9"
7871 "\xba\x5c\x8a\x43\xd6\x34\xa7\x2d"
7872 "\xc9\x92\xae\xf2\xa5\x7b\x05\x49"
7873 "\xa7\x33\x34\x86\xca\xe4\x96\x23"
7874 "\x76\x5b\xf2\xc6\xf1\x51\x28\x42"
7875 "\x7b\xcc\x76\x8f\xfa\xa2\xad\x31"
7876 "\xd4\xd6\x7a\x6d\x25\x25\x54\xe4"
7877 "\x3f\x50\x59\xe1\x5c\x05\xb7\x27"
7878 "\x48\xbf\x07\xec\x1b\x13\xbe\x2b"
7879 "\xa1\x57\x2b\xd5\xab\xd7\xd0\x4c"
7880 "\x1e\xcb\x71\x9b\xc5\x90\x85\xd3"
7881 "\xde\x59\xec\x71\xeb\x89\xbb\xd0"
7882 "\x09\x50\xe1\x16\x3f\xfd\x1c\x34"
7883 "\xc3\x1c\xa1\x10\x77\x53\x98\xef"
7884 "\xf2\xfd\xa5\x01\x59\xc2\x9b\x26"
7885 "\xc7\x42\xd9\x49\xda\x58\x2b\x6e"
7886 "\x9f\x53\x19\x76\x7e\xd9\xc9\x0e"
7887 "\x68\xc8\x7f\x51\x22\x42\xef\x49"
7888 "\xa4\x55\xb6\x36\xac\x09\xc7\x31"
7889 "\x88\x15\x4b\x2e\x8f\x3a\x08\xf7"
7890 "\xd8\xf7\xa8\xc5\xa9\x33\xa6\x45"
7891 "\xe4\xc4\x94\x76\xf3\x0d\x8f\x7e"
7892 "\xc8\xf6\xbc\x23\x0a\xb6\x4c\xd3"
7893 "\x6a\xcd\x36\xc2\x90\x5c\x5c\x3c"
7894 "\x65\x7b\xc2\xd6\xcc\xe6\x0d\x87"
7895 "\x73\x2e\x71\x79\x16\x06\x63\x28"
7896 "\x09\x15\xd8\x89\x38\x38\x3d\xb5"
7897 "\x42\x1c\x08\x24\xf7\x2a\xd2\x9d"
7898 "\xc8\xca\xef\xf9\x27\xd8\x07\x86"
7899 "\xf7\x43\x0b\x55\x15\x3f\x9f\x83"
7900 "\xef\xdc\x49\x9d\x2a\xc1\x54\x62"
7901 "\xbd\x9b\x66\x55\x9f\xb7\x12\xf3"
7902 "\x1b\x4d\x9d\x2a\x5c\xed\x87\x75"
7903 "\x87\x26\xec\x61\x2c\xb4\x0f\x89"
7904 "\xb0\xfb\x2e\x68\x5d\x15\xc7\x8d"
7905 "\x2e\xc0\xd9\xec\xaf\x4f\xd2\x25"
7906 "\x29\xe8\xd2\x26\x2b\x67\xe9\xfc"
7907 "\x2b\xa8\x67\x96\x12\x1f\x5b\x96"
7908 "\xc6\x14\x53\xaf\x44\xea\xd6\xe2"
7909 "\x94\x98\xe4\x12\x93\x4c\x92\xe0"
7910 "\x18\xa5\x8d\x2d\xe4\x71\x3c\x47"
7911 "\x4c\xf7\xe6\x47\x9e\xc0\x68\xdf"
7912 "\xd4\xf5\x5a\x74\xb1\x2b\x29\x03"
7913 "\x19\x07\xaf\x90\x62\x5c\x68\x98"
7914 "\x48\x16\x11\x02\x9d\xee\xb4\x9b"
7915 "\xe5\x42\x7f\x08\xfd\x16\x32\x0b"
7916 "\xd0\xb3\xfa\x2b\xb7\x99\xf9\x29"
7917 "\xcd\x20\x45\x9f\xb3\x1a\x5d\xa2"
7918 "\xaf\x4d\xe0\xbd\x42\x0d\xbc\x74"
7919 "\x99\x9c\x8e\x53\x1a\xb4\x3e\xbd"
7920 "\xa2\x9a\x2d\xf7\xf8\x39\x0f\x67"
7921 "\x63\xfc\x6b\xc0\xaf\xb3\x4b\x4f"
7922 "\x55\xc4\xcf\xa7\xc8\x04\x11\x3e"
7923 "\x14\x32\xbb\x1b\x38\x77\xd6\x7f"
7924 "\x54\x4c\xdf\x75\xf3\x07\x2d\x33"
7925 "\x9b\xa8\x20\xe1\x7b\x12\xb5\xf3"
7926 "\xef\x2f\xce\x72\xe5\x24\x60\xc1"
7927 "\x30\xe2\xab\xa1\x8e\x11\x09\xa8"
7928 "\x21\x33\x44\xfe\x7f\x35\x32\x93"
7929 "\x39\xa7\xad\x8b\x79\x06\xb2\xcb"
7930 "\x4e\xa9\x5f\xc7\xba\x74\x29\xec"
7931 "\x93\xa0\x4e\x54\x93\xc0\xbc\x55"
7932 "\x64\xf0\x48\xe5\x57\x99\xee\x75"
7933 "\xd6\x79\x0f\x66\xb7\xc6\x57\x76"
7934 "\xf7\xb7\xf3\x9c\xc5\x60\xe8\x7f"
7935 "\x83\x76\xd6\x0e\xaa\xe6\x90\x39"
7936 "\x1d\xa6\x32\x6a\x34\xe3\x55\xf8"
7937 "\x58\xa0\x58\x7d\x33\xe0\x22\x39"
7938 "\x44\x64\x87\x86\x5a\x2f\xa7\x7e"
7939 "\x0f\x38\xea\xb0\x30\xcc\x61\xa5"
7940 "\x6a\x32\xae\x1e\xf7\xe9\xd0\xa9"
7941 "\x0c\x32\x4b\xb5\x49\x28\xab\x85"
7942 "\x2f\x8e\x01\x36\x38\x52\xd0\xba"
7943 "\xd6\x02\x78\xf8\x0e\x3e\x9c\x8b"
7944 "\x6b\x45\x99\x3f\x5c\xfe\x58\xf1"
7945 "\x5c\x94\x04\xe1\xf5\x18\x6d\x51"
7946 "\xb2\x5d\x18\x20\xb6\xc2\x9a\x42"
7947 "\x1d\xb3\xab\x3c\xb6\x3a\x13\x03"
7948 "\xb2\x46\x82\x4f\xfc\x64\xbc\x4f"
7949 "\xca\xfa\x9c\xc0\xd5\xa7\xbd\x11"
7950 "\xb7\xe4\x5a\xf6\x6f\x4d\x4d\x54"
7951 "\xea\xa4\x98\x66\xd4\x22\x3b\xd3"
7952 "\x8f\x34\x47\xd9\x7c\xf4\x72\x3b"
7953 "\x4d\x02\x77\xf6\xd6\xdd\x08\x0a"
7954 "\x81\xe1\x86\x89\x3e\x56\x10\x3c"
7955 "\xba\xd7\x81\x8c\x08\xbc\x8b\xe2"
7956 "\x53\xec\xa7\x89\xee\xc8\x56\xb5"
7957 "\x36\x2c\xb2\x03\xba\x99\xdd\x7c"
7958 "\x48\xa0\xb0\xbc\x91\x33\xe9\xa8"
7959 "\xcb\xcd\xcf\x59\x5f\x1f\x15\xe2"
7960 "\x56\xf5\x4e\x01\x35\x27\x45\x77"
7961 "\x47\xc8\xbc\xcb\x7e\x39\xc1\x97"
7962 "\x28\xd3\x84\xfc\x2c\x3e\xc8\xad"
7963 "\x9c\xf8\x8a\x61\x9c\x28\xaa\xc5"
7964 "\x99\x20\x43\x85\x9d\xa5\xe2\x8b"
7965 "\xb8\xae\xeb\xd0\x32\x0d\x52\x78"
7966 "\x09\x56\x3f\xc7\xd8\x7e\x26\xfc"
7967 "\x37\xfb\x6f\x04\xfc\xfa\x92\x10"
7968 "\xac\xf8\x3e\x21\xdc\x8c\x21\x16"
7969 "\x7d\x67\x6e\xf6\xcd\xda\xb6\x98"
7970 "\x23\xab\x23\x3c\xb2\x10\xa0\x53"
7971 "\x5a\x56\x9f\xc5\xd0\xff\xbb\xe4"
7972 "\x98\x3c\x69\x1e\xdb\x38\x8f\x7e"
7973 "\x0f\xd2\x98\x88\x81\x8b\x45\x67"
7974 "\xea\x33\xf1\xeb\xe9\x97\x55\x2e"
7975 "\xd9\xaa\xeb\x5a\xec\xda\xe1\x68"
7976 "\xa8\x9d\x3c\x84\x7c\x05\x3d\x62"
7977 "\x87\x8f\x03\x21\x28\x95\x0c\x89"
7978 "\x25\x22\x4a\xb0\x93\xa9\x50\xa2"
7979 "\x2f\x57\x6e\x18\x42\x19\x54\x0c"
7980 "\x55\x67\xc6\x11\x49\xf4\x5c\xd2"
7981 "\xe9\x3d\xdd\x8b\x48\x71\x21\x00"
7982 "\xc3\x9a\x6c\x85\x74\x28\x83\x4a"
7983 "\x1b\x31\x05\xe1\x06\x92\xe7\xda"
7984 "\x85\x73\x78\x45\x20\x7f\xae\x13"
7985 "\x7c\x33\x06\x22\xf4\x83\xf9\x35"
7986 "\x3f\x6c\x71\xa8\x4e\x48\xbe\x9b"
7987 "\xce\x8a\xba\xda\xbe\x28\x08\xf7"
7988 "\xe2\x14\x8c\x71\xea\x72\xf9\x33"
7989 "\xf2\x88\x3f\xd7\xbb\x69\x6c\x29"
7990 "\x19\xdc\x84\xce\x1f\x12\x4f\xc8"
7991 "\xaf\xa5\x04\xba\x5a\xab\xb0\xd9"
7992 "\x14\x1f\x6c\x68\x98\x39\x89\x7a"
7993 "\xd9\xd8\x2f\xdf\xa8\x47\x4a\x25"
7994 "\xe2\xfb\x33\xf4\x59\x78\xe1\x68"
7995 "\x85\xcf\xfe\x59\x20\xd4\x05\x1d"
7996 "\x80\x99\xae\xbc\xca\xae\x0f\x2f"
7997 "\x65\x43\x34\x8e\x7e\xac\xd3\x93"
7998 "\x2f\xac\x6d\x14\x3d\x02\x07\x70"
7999 "\x9d\xa4\xf3\x1b\x5c\x36\xfc\x01"
8000 "\x73\x34\x85\x0c\x6c\xd6\xf1\xbd"
8001 "\x3f\xdf\xee\xf5\xd9\xba\x56\xef"
8002 "\xf4\x9b\x6b\xee\x9f\x5a\x78\x6d"
8003 "\x32\x19\xf4\xf7\xf8\x4c\x69\x0b"
8004 "\x4b\xbc\xbb\xb7\xf2\x85\xaf\x70"
8005 "\x75\x24\x6c\x54\xa7\x0e\x4d\x1d"
8006 "\x01\xbf\x08\xac\xcf\x7f\x2c\xe3"
8007 "\x14\x89\x5e\x70\x5a\x99\x92\xcd"
8008 "\x01\x84\xc8\xd2\xab\xe5\x4f\x58"
8009 "\xe7\x0f\x2f\x0e\xff\x68\xea\xfd"
8010 "\x15\xb3\x17\xe6\xb0\xe7\x85\xd8"
8011 "\x23\x2e\x05\xc7\xc9\xc4\x46\x1f"
8012 "\xe1\x9e\x49\x20\x23\x24\x4d\x7e"
8013 "\x29\x65\xff\xf4\xb6\xfd\x1a\x85"
8014 "\xc4\x16\xec\xfc\xea\x7b\xd6\x2c"
8015 "\x43\xf8\xb7\xbf\x79\xc0\x85\xcd"
8016 "\xef\xe1\x98\xd3\xa5\xf7\x90\x8c"
8017 "\xe9\x7f\x80\x6b\xd2\xac\x4c\x30"
8018 "\xa7\xc6\x61\x6c\xd2\xf9\x2c\xff"
8019 "\x30\xbc\x22\x81\x7d\x93\x12\xe4"
8020 "\x0a\xcd\xaf\xdd\xe8\xab\x0a\x1e"
8021 "\x13\xa4\x27\xc3\x5f\xf7\x4b\xbb"
8022 "\x37\x09\x4b\x91\x6f\x92\x4f\xaf"
8023 "\x52\xee\xdf\xef\x09\x6f\xf7\x5c"
8024 "\x6e\x12\x17\x72\x63\x57\xc7\xba"
8025 "\x3b\x6b\x38\x32\x73\x1b\x9c\x80"
8026 "\xc1\x7a\xc6\xcf\xcd\x35\xc0\x6b"
8027 "\x31\x1a\x6b\xe9\xd8\x2c\x29\x3f"
8028 "\x96\xfb\xb6\xcd\x13\x91\x3b\xc2"
8029 "\xd2\xa3\x31\x8d\xa4\xcd\x57\xcd"
8030 "\x13\x3d\x64\xfd\x06\xce\xe6\xdc"
8031 "\x0c\x24\x43\x31\x40\x57\xf1\x72"
8032 "\x17\xe3\x3a\x63\x6d\x35\xcf\x5d"
8033 "\x97\x40\x59\xdd\xf7\x3c\x02\xf7"
8034 "\x1c\x7e\x05\xbb\xa9\x0d\x01\xb1"
8035 "\x8e\xc0\x30\xa9\x53\x24\xc9\x89"
8036 "\x84\x6d\xaa\xd0\xcd\x91\xc2\x4d"
8037 "\x91\xb0\x89\xe2\xbf\x83\x44\xaa"
8038 "\x28\x72\x23\xa0\xc2\xad\xad\x1c"
8039 "\xfc\x3f\x09\x7a\x0b\xdc\xc5\x1b"
8040 "\x87\x13\xc6\x5b\x59\x8d\xf2\xc8"
8041 "\xaf\xdf\x11\x95",
8bff664c
TSH
8042 .rlen = 4100,
8043 },
e2ee95b8
HSC
8044};
8045
76cb9521
KC
8046/*
8047 * CTS (Cipher Text Stealing) mode tests
8048 */
8049#define CTS_MODE_ENC_TEST_VECTORS 6
8050#define CTS_MODE_DEC_TEST_VECTORS 6
8051static struct cipher_testvec cts_mode_enc_tv_template[] = {
8052 { /* from rfc3962 */
8053 .klen = 16,
8054 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8055 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8056 .ilen = 17,
8057 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8058 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8059 "\x20",
8060 .rlen = 17,
8061 .result = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
8062 "\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
8063 "\x97",
8064 }, {
8065 .klen = 16,
8066 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8067 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8068 .ilen = 31,
8069 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8070 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8071 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8072 "\x20\x47\x61\x75\x27\x73\x20",
8073 .rlen = 31,
8074 .result = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
8075 "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
8076 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8077 "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
8078 }, {
8079 .klen = 16,
8080 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8081 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8082 .ilen = 32,
8083 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8084 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8085 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8086 "\x20\x47\x61\x75\x27\x73\x20\x43",
8087 .rlen = 32,
8088 .result = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8089 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8090 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8091 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
8092 }, {
8093 .klen = 16,
8094 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8095 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8096 .ilen = 47,
8097 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8098 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8099 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8100 "\x20\x47\x61\x75\x27\x73\x20\x43"
8101 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8102 "\x70\x6c\x65\x61\x73\x65\x2c",
8103 .rlen = 47,
8104 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8105 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8106 "\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
8107 "\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
8108 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8109 "\xbe\x7f\xcb\xcc\x98\xeb\xf5",
8110 }, {
8111 .klen = 16,
8112 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8113 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8114 .ilen = 48,
8115 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8116 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8117 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8118 "\x20\x47\x61\x75\x27\x73\x20\x43"
8119 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8120 "\x70\x6c\x65\x61\x73\x65\x2c\x20",
8121 .rlen = 48,
8122 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8123 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8124 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8125 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
8126 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8127 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
8128 }, {
8129 .klen = 16,
8130 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8131 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8132 .ilen = 64,
8133 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8134 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8135 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8136 "\x20\x47\x61\x75\x27\x73\x20\x43"
8137 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8138 "\x70\x6c\x65\x61\x73\x65\x2c\x20"
8139 "\x61\x6e\x64\x20\x77\x6f\x6e\x74"
8140 "\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
8141 .rlen = 64,
8142 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8143 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8144 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8145 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8146 "\x48\x07\xef\xe8\x36\xee\x89\xa5"
8147 "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
8148 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8149 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
8150 }
8151};
8152
8153static struct cipher_testvec cts_mode_dec_tv_template[] = {
8154 { /* from rfc3962 */
8155 .klen = 16,
8156 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8157 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8158 .rlen = 17,
8159 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8160 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8161 "\x20",
8162 .ilen = 17,
8163 .input = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
8164 "\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
8165 "\x97",
8166 }, {
8167 .klen = 16,
8168 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8169 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8170 .rlen = 31,
8171 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8172 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8173 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8174 "\x20\x47\x61\x75\x27\x73\x20",
8175 .ilen = 31,
8176 .input = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
8177 "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
8178 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8179 "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
8180 }, {
8181 .klen = 16,
8182 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8183 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8184 .rlen = 32,
8185 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8186 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8187 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8188 "\x20\x47\x61\x75\x27\x73\x20\x43",
8189 .ilen = 32,
8190 .input = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8191 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8192 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8193 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
8194 }, {
8195 .klen = 16,
8196 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8197 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8198 .rlen = 47,
8199 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8200 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8201 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8202 "\x20\x47\x61\x75\x27\x73\x20\x43"
8203 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8204 "\x70\x6c\x65\x61\x73\x65\x2c",
8205 .ilen = 47,
8206 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8207 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8208 "\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
8209 "\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
8210 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8211 "\xbe\x7f\xcb\xcc\x98\xeb\xf5",
8212 }, {
8213 .klen = 16,
8214 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8215 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8216 .rlen = 48,
8217 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8218 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8219 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8220 "\x20\x47\x61\x75\x27\x73\x20\x43"
8221 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8222 "\x70\x6c\x65\x61\x73\x65\x2c\x20",
8223 .ilen = 48,
8224 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8225 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8226 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8227 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
8228 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8229 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
8230 }, {
8231 .klen = 16,
8232 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8233 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8234 .rlen = 64,
8235 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8236 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8237 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8238 "\x20\x47\x61\x75\x27\x73\x20\x43"
8239 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8240 "\x70\x6c\x65\x61\x73\x65\x2c\x20"
8241 "\x61\x6e\x64\x20\x77\x6f\x6e\x74"
8242 "\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
8243 .ilen = 64,
8244 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8245 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8246 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8247 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8248 "\x48\x07\xef\xe8\x36\xee\x89\xa5"
8249 "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
8250 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8251 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
8252 }
8253};
8254
1da177e4
LT
8255/*
8256 * Compression stuff.
8257 */
8258#define COMP_BUF_SIZE 512
8259
8260struct comp_testvec {
8261 int inlen, outlen;
8262 char input[COMP_BUF_SIZE];
8263 char output[COMP_BUF_SIZE];
8264};
8265
8266/*
8267 * Deflate test vectors (null-terminated strings).
8268 * Params: winbits=11, Z_DEFAULT_COMPRESSION, MAX_MEM_LEVEL.
8269 */
8270#define DEFLATE_COMP_TEST_VECTORS 2
8271#define DEFLATE_DECOMP_TEST_VECTORS 2
8272
8273static struct comp_testvec deflate_comp_tv_template[] = {
8274 {
8275 .inlen = 70,
8276 .outlen = 38,
de224c30
SS
8277 .input = "Join us now and share the software "
8278 "Join us now and share the software ",
8279 .output = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
8280 "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
8281 "\x28\xce\x48\x2c\x4a\x55\x28\xc9"
8282 "\x48\x55\x28\xce\x4f\x2b\x29\x07"
8283 "\x71\xbc\x08\x2b\x01\x00",
1da177e4
LT
8284 }, {
8285 .inlen = 191,
8286 .outlen = 122,
8287 .input = "This document describes a compression method based on the DEFLATE"
de224c30
SS
8288 "compression algorithm. This document defines the application of "
8289 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
8290 .output = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
8291 "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
8292 "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
8293 "\x24\xdb\x67\xd9\x47\xc1\xef\x49"
8294 "\x68\x12\x51\xae\x76\x67\xd6\x27"
8295 "\x19\x88\x1a\xde\x85\xab\x21\xf2"
8296 "\x08\x5d\x16\x1e\x20\x04\x2d\xad"
8297 "\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
8298 "\x42\x83\x23\xb6\x6c\x89\x71\x9b"
8299 "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
8300 "\xed\x62\xa9\x4c\x80\xff\x13\xaf"
8301 "\x52\x37\xed\x0e\x52\x6b\x59\x02"
8302 "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
8303 "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
8304 "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
8305 "\xfa\x02",
1da177e4
LT
8306 },
8307};
8308
8309static struct comp_testvec deflate_decomp_tv_template[] = {
8310 {
8311 .inlen = 122,
8312 .outlen = 191,
de224c30
SS
8313 .input = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
8314 "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
8315 "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
8316 "\x24\xdb\x67\xd9\x47\xc1\xef\x49"
8317 "\x68\x12\x51\xae\x76\x67\xd6\x27"
8318 "\x19\x88\x1a\xde\x85\xab\x21\xf2"
8319 "\x08\x5d\x16\x1e\x20\x04\x2d\xad"
8320 "\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
8321 "\x42\x83\x23\xb6\x6c\x89\x71\x9b"
8322 "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
8323 "\xed\x62\xa9\x4c\x80\xff\x13\xaf"
8324 "\x52\x37\xed\x0e\x52\x6b\x59\x02"
8325 "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
8326 "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
8327 "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
8328 "\xfa\x02",
1da177e4 8329 .output = "This document describes a compression method based on the DEFLATE"
de224c30
SS
8330 "compression algorithm. This document defines the application of "
8331 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
1da177e4
LT
8332 }, {
8333 .inlen = 38,
8334 .outlen = 70,
de224c30
SS
8335 .input = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
8336 "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
8337 "\x28\xce\x48\x2c\x4a\x55\x28\xc9"
8338 "\x48\x55\x28\xce\x4f\x2b\x29\x07"
8339 "\x71\xbc\x08\x2b\x01\x00",
1da177e4 8340 .output = "Join us now and share the software "
de224c30 8341 "Join us now and share the software ",
1da177e4
LT
8342 },
8343};
8344
0b77abb3
ZS
8345/*
8346 * LZO test vectors (null-terminated strings).
8347 */
8348#define LZO_COMP_TEST_VECTORS 2
8349#define LZO_DECOMP_TEST_VECTORS 2
8350
8351static struct comp_testvec lzo_comp_tv_template[] = {
8352 {
8353 .inlen = 70,
8354 .outlen = 46,
8355 .input = "Join us now and share the software "
de224c30
SS
8356 "Join us now and share the software ",
8357 .output = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
8358 "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
8359 "\x64\x20\x73\x68\x61\x72\x65\x20"
8360 "\x74\x68\x65\x20\x73\x6f\x66\x74"
8361 "\x77\x70\x01\x01\x4a\x6f\x69\x6e"
8362 "\x3d\x88\x00\x11\x00\x00",
0b77abb3
ZS
8363 }, {
8364 .inlen = 159,
8365 .outlen = 133,
8366 .input = "This document describes a compression method based on the LZO "
de224c30
SS
8367 "compression algorithm. This document defines the application of "
8368 "the LZO algorithm used in UBIFS.",
8369 .output = "\x00\x2b\x54\x68\x69\x73\x20\x64"
8370 "\x6f\x63\x75\x6d\x65\x6e\x74\x20"
8371 "\x64\x65\x73\x63\x72\x69\x62\x65"
8372 "\x73\x20\x61\x20\x63\x6f\x6d\x70"
8373 "\x72\x65\x73\x73\x69\x6f\x6e\x20"
8374 "\x6d\x65\x74\x68\x6f\x64\x20\x62"
8375 "\x61\x73\x65\x64\x20\x6f\x6e\x20"
8376 "\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
8377 "\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
8378 "\x69\x74\x68\x6d\x2e\x20\x20\x54"
8379 "\x68\x69\x73\x2a\x54\x01\x02\x66"
8380 "\x69\x6e\x65\x73\x94\x06\x05\x61"
8381 "\x70\x70\x6c\x69\x63\x61\x74\x76"
8382 "\x0a\x6f\x66\x88\x02\x60\x09\x27"
8383 "\xf0\x00\x0c\x20\x75\x73\x65\x64"
8384 "\x20\x69\x6e\x20\x55\x42\x49\x46"
8385 "\x53\x2e\x11\x00\x00",
0b77abb3
ZS
8386 },
8387};
8388
8389static struct comp_testvec lzo_decomp_tv_template[] = {
8390 {
8391 .inlen = 133,
8392 .outlen = 159,
de224c30
SS
8393 .input = "\x00\x2b\x54\x68\x69\x73\x20\x64"
8394 "\x6f\x63\x75\x6d\x65\x6e\x74\x20"
8395 "\x64\x65\x73\x63\x72\x69\x62\x65"
8396 "\x73\x20\x61\x20\x63\x6f\x6d\x70"
8397 "\x72\x65\x73\x73\x69\x6f\x6e\x20"
8398 "\x6d\x65\x74\x68\x6f\x64\x20\x62"
8399 "\x61\x73\x65\x64\x20\x6f\x6e\x20"
8400 "\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
8401 "\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
8402 "\x69\x74\x68\x6d\x2e\x20\x20\x54"
8403 "\x68\x69\x73\x2a\x54\x01\x02\x66"
8404 "\x69\x6e\x65\x73\x94\x06\x05\x61"
8405 "\x70\x70\x6c\x69\x63\x61\x74\x76"
8406 "\x0a\x6f\x66\x88\x02\x60\x09\x27"
8407 "\xf0\x00\x0c\x20\x75\x73\x65\x64"
8408 "\x20\x69\x6e\x20\x55\x42\x49\x46"
8409 "\x53\x2e\x11\x00\x00",
0b77abb3 8410 .output = "This document describes a compression method based on the LZO "
de224c30
SS
8411 "compression algorithm. This document defines the application of "
8412 "the LZO algorithm used in UBIFS.",
0b77abb3
ZS
8413 }, {
8414 .inlen = 46,
8415 .outlen = 70,
de224c30
SS
8416 .input = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
8417 "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
8418 "\x64\x20\x73\x68\x61\x72\x65\x20"
8419 "\x74\x68\x65\x20\x73\x6f\x66\x74"
8420 "\x77\x70\x01\x01\x4a\x6f\x69\x6e"
8421 "\x3d\x88\x00\x11\x00\x00",
0b77abb3 8422 .output = "Join us now and share the software "
de224c30 8423 "Join us now and share the software ",
0b77abb3
ZS
8424 },
8425};
8426
1da177e4
LT
8427/*
8428 * Michael MIC test vectors from IEEE 802.11i
8429 */
8430#define MICHAEL_MIC_TEST_VECTORS 6
8431
ef2736fc 8432static struct hash_testvec michael_mic_tv_template[] = {
1da177e4 8433 {
de224c30 8434 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 8435 .ksize = 8,
de224c30 8436 .plaintext = zeroed_string,
1da177e4 8437 .psize = 0,
de224c30 8438 .digest = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
1da177e4
LT
8439 },
8440 {
de224c30 8441 .key = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
1da177e4 8442 .ksize = 8,
de224c30 8443 .plaintext = "M",
1da177e4 8444 .psize = 1,
de224c30 8445 .digest = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
1da177e4
LT
8446 },
8447 {
de224c30 8448 .key = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
1da177e4 8449 .ksize = 8,
de224c30 8450 .plaintext = "Mi",
1da177e4 8451 .psize = 2,
de224c30 8452 .digest = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
1da177e4
LT
8453 },
8454 {
de224c30 8455 .key = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
1da177e4 8456 .ksize = 8,
de224c30 8457 .plaintext = "Mic",
1da177e4 8458 .psize = 3,
de224c30 8459 .digest = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
1da177e4
LT
8460 },
8461 {
de224c30 8462 .key = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
1da177e4 8463 .ksize = 8,
de224c30 8464 .plaintext = "Mich",
1da177e4 8465 .psize = 4,
de224c30 8466 .digest = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
1da177e4
LT
8467 },
8468 {
de224c30 8469 .key = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
1da177e4 8470 .ksize = 8,
de224c30 8471 .plaintext = "Michael",
1da177e4 8472 .psize = 7,
de224c30 8473 .digest = "\x0a\x94\x2b\x12\x4e\xca\xa5\x46",
1da177e4
LT
8474 }
8475};
8476
c907ee76
HX
8477/*
8478 * CRC32C test vectors
8479 */
8480#define CRC32C_TEST_VECTORS 14
8481
8482static struct hash_testvec crc32c_tv_template[] = {
8483 {
8484 .psize = 0,
de224c30 8485 .digest = "\x00\x00\x00\x00",
c907ee76
HX
8486 },
8487 {
de224c30 8488 .key = "\x87\xa9\xcb\xed",
c907ee76
HX
8489 .ksize = 4,
8490 .psize = 0,
de224c30 8491 .digest = "\x78\x56\x34\x12",
c907ee76
HX
8492 },
8493 {
de224c30 8494 .key = "\xff\xff\xff\xff",
c907ee76 8495 .ksize = 4,
de224c30
SS
8496 .plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08"
8497 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
8498 "\x11\x12\x13\x14\x15\x16\x17\x18"
8499 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
8500 "\x21\x22\x23\x24\x25\x26\x27\x28",
c907ee76 8501 .psize = 40,
de224c30 8502 .digest = "\x7f\x15\x2c\x0e",
c907ee76
HX
8503 },
8504 {
de224c30 8505 .key = "\xff\xff\xff\xff",
c907ee76 8506 .ksize = 4,
de224c30
SS
8507 .plaintext = "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8508 "\x31\x32\x33\x34\x35\x36\x37\x38"
8509 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8510 "\x41\x42\x43\x44\x45\x46\x47\x48"
8511 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50",
c907ee76 8512 .psize = 40,
de224c30 8513 .digest = "\xf6\xeb\x80\xe9",
c907ee76
HX
8514 },
8515 {
de224c30 8516 .key = "\xff\xff\xff\xff",
c907ee76 8517 .ksize = 4,
de224c30
SS
8518 .plaintext = "\x51\x52\x53\x54\x55\x56\x57\x58"
8519 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8520 "\x61\x62\x63\x64\x65\x66\x67\x68"
8521 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8522 "\x71\x72\x73\x74\x75\x76\x77\x78",
c907ee76 8523 .psize = 40,
de224c30 8524 .digest = "\xed\xbd\x74\xde",
c907ee76
HX
8525 },
8526 {
de224c30 8527 .key = "\xff\xff\xff\xff",
c907ee76 8528 .ksize = 4,
de224c30
SS
8529 .plaintext = "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8530 "\x81\x82\x83\x84\x85\x86\x87\x88"
8531 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8532 "\x91\x92\x93\x94\x95\x96\x97\x98"
8533 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0",
c907ee76 8534 .psize = 40,
de224c30 8535 .digest = "\x62\xc8\x79\xd5",
c907ee76
HX
8536 },
8537 {
de224c30 8538 .key = "\xff\xff\xff\xff",
c907ee76 8539 .ksize = 4,
de224c30
SS
8540 .plaintext = "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8541 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8542 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8543 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8544 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8",
c907ee76 8545 .psize = 40,
de224c30 8546 .digest = "\xd0\x9a\x97\xba",
c907ee76
HX
8547 },
8548 {
de224c30 8549 .key = "\xff\xff\xff\xff",
c907ee76 8550 .ksize = 4,
de224c30
SS
8551 .plaintext = "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8552 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8553 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8554 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8555 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
c907ee76 8556 .psize = 40,
de224c30 8557 .digest = "\x13\xd9\x29\x2b",
c907ee76
HX
8558 },
8559 {
de224c30 8560 .key = "\x80\xea\xd3\xf1",
c907ee76 8561 .ksize = 4,
de224c30
SS
8562 .plaintext = "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8563 "\x31\x32\x33\x34\x35\x36\x37\x38"
8564 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8565 "\x41\x42\x43\x44\x45\x46\x47\x48"
8566 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50",
c907ee76 8567 .psize = 40,
de224c30 8568 .digest = "\x0c\xb5\xe2\xa2",
c907ee76
HX
8569 },
8570 {
de224c30 8571 .key = "\xf3\x4a\x1d\x5d",
c907ee76 8572 .ksize = 4,
de224c30
SS
8573 .plaintext = "\x51\x52\x53\x54\x55\x56\x57\x58"
8574 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8575 "\x61\x62\x63\x64\x65\x66\x67\x68"
8576 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8577 "\x71\x72\x73\x74\x75\x76\x77\x78",
c907ee76 8578 .psize = 40,
de224c30 8579 .digest = "\xd1\x7f\xfb\xa6",
c907ee76
HX
8580 },
8581 {
de224c30 8582 .key = "\x2e\x80\x04\x59",
c907ee76 8583 .ksize = 4,
de224c30
SS
8584 .plaintext = "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8585 "\x81\x82\x83\x84\x85\x86\x87\x88"
8586 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8587 "\x91\x92\x93\x94\x95\x96\x97\x98"
8588 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0",
c907ee76 8589 .psize = 40,
de224c30 8590 .digest = "\x59\x33\xe6\x7a",
c907ee76
HX
8591 },
8592 {
de224c30 8593 .key = "\xa6\xcc\x19\x85",
c907ee76 8594 .ksize = 4,
de224c30
SS
8595 .plaintext = "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8596 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8597 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8598 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8599 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8",
c907ee76 8600 .psize = 40,
de224c30 8601 .digest = "\xbe\x03\x01\xd2",
c907ee76
HX
8602 },
8603 {
de224c30 8604 .key = "\x41\xfc\xfe\x2d",
c907ee76 8605 .ksize = 4,
de224c30
SS
8606 .plaintext = "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8607 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8608 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8609 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8610 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
c907ee76 8611 .psize = 40,
de224c30 8612 .digest = "\x75\xd3\xc5\x24",
c907ee76
HX
8613 },
8614 {
de224c30 8615 .key = "\xff\xff\xff\xff",
c907ee76 8616 .ksize = 4,
de224c30
SS
8617 .plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08"
8618 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
8619 "\x11\x12\x13\x14\x15\x16\x17\x18"
8620 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
8621 "\x21\x22\x23\x24\x25\x26\x27\x28"
8622 "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8623 "\x31\x32\x33\x34\x35\x36\x37\x38"
8624 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8625 "\x41\x42\x43\x44\x45\x46\x47\x48"
8626 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50"
8627 "\x51\x52\x53\x54\x55\x56\x57\x58"
8628 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8629 "\x61\x62\x63\x64\x65\x66\x67\x68"
8630 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8631 "\x71\x72\x73\x74\x75\x76\x77\x78"
8632 "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8633 "\x81\x82\x83\x84\x85\x86\x87\x88"
8634 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8635 "\x91\x92\x93\x94\x95\x96\x97\x98"
8636 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0"
8637 "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8638 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8639 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8640 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8641 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8"
8642 "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8643 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8644 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8645 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8646 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
c907ee76 8647 .psize = 240,
de224c30 8648 .digest = "\x75\xd3\xc5\x24",
c907ee76
HX
8649 .np = 2,
8650 .tap = { 31, 209 }
8651 },
8652};
8653
ebfd9bcf
HW
8654/*
8655 * Cipher speed tests
8656 */
d5dc3927
SS
8657static u8 speed_template_8[] = {8, 0};
8658static u8 speed_template_24[] = {24, 0};
8659static u8 speed_template_8_32[] = {8, 32, 0};
8660static u8 speed_template_16_32[] = {16, 32, 0};
8661static u8 speed_template_16_24_32[] = {16, 24, 32, 0};
8662static u8 speed_template_32_40_48[] = {32, 40, 48, 0};
8663static u8 speed_template_32_48_64[] = {32, 48, 64, 0};
f19f5111 8664
e8057928
ML
8665/*
8666 * Digest speed tests
8667 */
e9d41164 8668static struct hash_speed generic_hash_speed_template[] = {
de224c30 8669 { .blen = 16, .plen = 16, },
e8057928
ML
8670 { .blen = 64, .plen = 16, },
8671 { .blen = 64, .plen = 64, },
8672 { .blen = 256, .plen = 16, },
8673 { .blen = 256, .plen = 64, },
8674 { .blen = 256, .plen = 256, },
8675 { .blen = 1024, .plen = 16, },
8676 { .blen = 1024, .plen = 256, },
8677 { .blen = 1024, .plen = 1024, },
8678 { .blen = 2048, .plen = 16, },
8679 { .blen = 2048, .plen = 256, },
8680 { .blen = 2048, .plen = 1024, },
8681 { .blen = 2048, .plen = 2048, },
8682 { .blen = 4096, .plen = 16, },
8683 { .blen = 4096, .plen = 256, },
8684 { .blen = 4096, .plen = 1024, },
8685 { .blen = 4096, .plen = 4096, },
8686 { .blen = 8192, .plen = 16, },
8687 { .blen = 8192, .plen = 256, },
8688 { .blen = 8192, .plen = 1024, },
8689 { .blen = 8192, .plen = 4096, },
8690 { .blen = 8192, .plen = 8192, },
8691
8692 /* End marker */
8693 { .blen = 0, .plen = 0, }
8694};
8695
1da177e4 8696#endif /* _CRYPTO_TCRYPT_H */