async_tx: fix handling of the "out of descriptor" condition in async_xor
[deliverable/linux.git] / crypto / tcrypt.h
CommitLineData
1da177e4
LT
1/*
2 * Quick & dirty crypto testing module.
3 *
4 * This will only exist until we have a better testing mechanism
5 * (e.g. a char device).
6 *
7 * Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
8 * Copyright (c) 2002 Jean-Francois Dive <jef@linuxbe.org>
e3a4ea4f 9 * Copyright (c) 2007 Nokia Siemens Networks
1da177e4
LT
10 *
11 * This program is free software; you can redistribute it and/or modify it
12 * under the terms of the GNU General Public License as published by the Free
ef2736fc 13 * Software Foundation; either version 2 of the License, or (at your option)
1da177e4
LT
14 * any later version.
15 *
28db8e3e 16 * 2007-11-13 Added GCM tests
e3a4ea4f 17 * 2007-11-13 Added AEAD support
a28091ae 18 * 2006-12-07 Added SHA384 HMAC and SHA512 HMAC tests
ebfd9bcf
HW
19 * 2004-08-09 Cipher speed tests by Reyk Floeter <reyk@vantronix.net>
20 * 2003-09-14 Changes by Kartikey Mahendra Bhatt
1da177e4
LT
21 *
22 */
23#ifndef _CRYPTO_TCRYPT_H
24#define _CRYPTO_TCRYPT_H
25
26#define MAX_DIGEST_SIZE 64
27#define MAX_TAP 8
28
29#define MAX_KEYLEN 56
30#define MAX_IVLEN 32
31
32struct hash_testvec {
06b42aa9 33 /* only used with keyed hash algorithms */
de224c30
SS
34 char *key;
35 char *plaintext;
36 char *digest;
ef2736fc 37 unsigned char tap[MAX_TAP];
06b42aa9
AN
38 unsigned char psize;
39 unsigned char np;
1da177e4
LT
40 unsigned char ksize;
41};
42
1da177e4 43struct cipher_testvec {
de224c30
SS
44 char *key;
45 char *iv;
46 char *input;
47 char *result;
06b42aa9
AN
48 unsigned char tap[MAX_TAP];
49 int np;
1da177e4
LT
50 unsigned char fail;
51 unsigned char wk; /* weak key flag */
1da177e4 52 unsigned char klen;
f3d1044c
RS
53 unsigned short ilen;
54 unsigned short rlen;
1da177e4
LT
55};
56
e3a4ea4f 57struct aead_testvec {
de224c30
SS
58 char *key;
59 char *iv;
60 char *input;
61 char *assoc;
62 char *result;
e3a4ea4f
MH
63 unsigned char tap[MAX_TAP];
64 unsigned char atap[MAX_TAP];
65 int np;
66 int anp;
67 unsigned char fail;
68 unsigned char wk; /* weak key flag */
69 unsigned char klen;
70 unsigned short ilen;
71 unsigned short alen;
72 unsigned short rlen;
e3a4ea4f
MH
73};
74
e9d41164 75struct hash_speed {
e8057928
ML
76 unsigned int blen; /* buffer length */
77 unsigned int plen; /* per-update length */
78};
79
de224c30
SS
80static char zeroed_string[48];
81
1da177e4
LT
82/*
83 * MD4 test vectors from RFC1320
84 */
85#define MD4_TEST_VECTORS 7
86
87static struct hash_testvec md4_tv_template [] = {
88 {
89 .plaintext = "",
de224c30
SS
90 .digest = "\x31\xd6\xcf\xe0\xd1\x6a\xe9\x31"
91 "\xb7\x3c\x59\xd7\xe0\xc0\x89\xc0",
1da177e4
LT
92 }, {
93 .plaintext = "a",
94 .psize = 1,
de224c30
SS
95 .digest = "\xbd\xe5\x2c\xb3\x1d\xe3\x3e\x46"
96 "\x24\x5e\x05\xfb\xdb\xd6\xfb\x24",
1da177e4
LT
97 }, {
98 .plaintext = "abc",
99 .psize = 3,
de224c30
SS
100 .digest = "\xa4\x48\x01\x7a\xaf\x21\xd8\x52"
101 "\x5f\xc1\x0a\xe8\x7a\xa6\x72\x9d",
1da177e4
LT
102 }, {
103 .plaintext = "message digest",
104 .psize = 14,
de224c30
SS
105 .digest = "\xd9\x13\x0a\x81\x64\x54\x9f\xe8"
106 "\x18\x87\x48\x06\xe1\xc7\x01\x4b",
1da177e4
LT
107 }, {
108 .plaintext = "abcdefghijklmnopqrstuvwxyz",
109 .psize = 26,
de224c30
SS
110 .digest = "\xd7\x9e\x1c\x30\x8a\xa5\xbb\xcd"
111 "\xee\xa8\xed\x63\xdf\x41\x2d\xa9",
1da177e4
LT
112 .np = 2,
113 .tap = { 13, 13 },
114 }, {
115 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
116 .psize = 62,
de224c30
SS
117 .digest = "\x04\x3f\x85\x82\xf2\x41\xdb\x35"
118 "\x1c\xe6\x27\xe1\x53\xe7\xf0\xe4",
1da177e4
LT
119 }, {
120 .plaintext = "123456789012345678901234567890123456789012345678901234567890123"
de224c30 121 "45678901234567890",
1da177e4 122 .psize = 80,
de224c30
SS
123 .digest = "\xe3\x3b\x4d\xdc\x9c\x38\xf2\x19"
124 "\x9c\x3e\x7b\x16\x4f\xcc\x05\x36",
1da177e4
LT
125 },
126};
127
128/*
129 * MD5 test vectors from RFC1321
130 */
131#define MD5_TEST_VECTORS 7
132
133static struct hash_testvec md5_tv_template[] = {
134 {
de224c30
SS
135 .digest = "\xd4\x1d\x8c\xd9\x8f\x00\xb2\x04"
136 "\xe9\x80\x09\x98\xec\xf8\x42\x7e",
1da177e4
LT
137 }, {
138 .plaintext = "a",
139 .psize = 1,
de224c30
SS
140 .digest = "\x0c\xc1\x75\xb9\xc0\xf1\xb6\xa8"
141 "\x31\xc3\x99\xe2\x69\x77\x26\x61",
1da177e4
LT
142 }, {
143 .plaintext = "abc",
144 .psize = 3,
de224c30
SS
145 .digest = "\x90\x01\x50\x98\x3c\xd2\x4f\xb0"
146 "\xd6\x96\x3f\x7d\x28\xe1\x7f\x72",
1da177e4
LT
147 }, {
148 .plaintext = "message digest",
149 .psize = 14,
de224c30
SS
150 .digest = "\xf9\x6b\x69\x7d\x7c\xb7\x93\x8d"
151 "\x52\x5a\x2f\x31\xaa\xf1\x61\xd0",
1da177e4
LT
152 }, {
153 .plaintext = "abcdefghijklmnopqrstuvwxyz",
154 .psize = 26,
de224c30
SS
155 .digest = "\xc3\xfc\xd3\xd7\x61\x92\xe4\x00"
156 "\x7d\xfb\x49\x6c\xca\x67\xe1\x3b",
1da177e4
LT
157 .np = 2,
158 .tap = {13, 13}
159 }, {
160 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
161 .psize = 62,
de224c30
SS
162 .digest = "\xd1\x74\xab\x98\xd2\x77\xd9\xf5"
163 "\xa5\x61\x1c\x2c\x9f\x41\x9d\x9f",
1da177e4
LT
164 }, {
165 .plaintext = "12345678901234567890123456789012345678901234567890123456789012"
de224c30 166 "345678901234567890",
1da177e4 167 .psize = 80,
de224c30
SS
168 .digest = "\x57\xed\xf4\xa2\x2b\xe3\xc9\x55"
169 "\xac\x49\xda\x2e\x21\x07\xb6\x7a",
1da177e4
LT
170 }
171};
172
173/*
174 * SHA1 test vectors from from FIPS PUB 180-1
175 */
176#define SHA1_TEST_VECTORS 2
177
178static struct hash_testvec sha1_tv_template[] = {
ef2736fc 179 {
1da177e4
LT
180 .plaintext = "abc",
181 .psize = 3,
de224c30
SS
182 .digest = "\xa9\x99\x3e\x36\x47\x06\x81\x6a\xba\x3e"
183 "\x25\x71\x78\x50\xc2\x6c\x9c\xd0\xd8\x9d",
1da177e4
LT
184 }, {
185 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
186 .psize = 56,
de224c30
SS
187 .digest = "\x84\x98\x3e\x44\x1c\x3b\xd2\x6e\xba\xae"
188 "\x4a\xa1\xf9\x51\x29\xe5\xe5\x46\x70\xf1",
1da177e4
LT
189 .np = 2,
190 .tap = { 28, 28 }
191 }
192};
193
cd12fb90
JL
194
195/*
196 * SHA224 test vectors from from FIPS PUB 180-2
197 */
198#define SHA224_TEST_VECTORS 2
199
200static struct hash_testvec sha224_tv_template[] = {
201 {
202 .plaintext = "abc",
203 .psize = 3,
de224c30
SS
204 .digest = "\x23\x09\x7D\x22\x34\x05\xD8\x22"
205 "\x86\x42\xA4\x77\xBD\xA2\x55\xB3"
206 "\x2A\xAD\xBC\xE4\xBD\xA0\xB3\xF7"
207 "\xE3\x6C\x9D\xA7",
cd12fb90
JL
208 }, {
209 .plaintext =
210 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
211 .psize = 56,
de224c30
SS
212 .digest = "\x75\x38\x8B\x16\x51\x27\x76\xCC"
213 "\x5D\xBA\x5D\xA1\xFD\x89\x01\x50"
214 "\xB0\xC6\x45\x5C\xB4\xF5\x8B\x19"
215 "\x52\x52\x25\x25",
cd12fb90
JL
216 .np = 2,
217 .tap = { 28, 28 }
218 }
219};
220
1da177e4
LT
221/*
222 * SHA256 test vectors from from NIST
223 */
224#define SHA256_TEST_VECTORS 2
225
ef2736fc
HX
226static struct hash_testvec sha256_tv_template[] = {
227 {
1da177e4
LT
228 .plaintext = "abc",
229 .psize = 3,
de224c30
SS
230 .digest = "\xba\x78\x16\xbf\x8f\x01\xcf\xea"
231 "\x41\x41\x40\xde\x5d\xae\x22\x23"
232 "\xb0\x03\x61\xa3\x96\x17\x7a\x9c"
233 "\xb4\x10\xff\x61\xf2\x00\x15\xad",
1da177e4
LT
234 }, {
235 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
236 .psize = 56,
de224c30
SS
237 .digest = "\x24\x8d\x6a\x61\xd2\x06\x38\xb8"
238 "\xe5\xc0\x26\x93\x0c\x3e\x60\x39"
239 "\xa3\x3c\xe4\x59\x64\xff\x21\x67"
240 "\xf6\xec\xed\xd4\x19\xdb\x06\xc1",
1da177e4
LT
241 .np = 2,
242 .tap = { 28, 28 }
243 },
244};
245
246/*
247 * SHA384 test vectors from from NIST and kerneli
248 */
249#define SHA384_TEST_VECTORS 4
250
251static struct hash_testvec sha384_tv_template[] = {
ef2736fc 252 {
1da177e4
LT
253 .plaintext= "abc",
254 .psize = 3,
de224c30
SS
255 .digest = "\xcb\x00\x75\x3f\x45\xa3\x5e\x8b"
256 "\xb5\xa0\x3d\x69\x9a\xc6\x50\x07"
257 "\x27\x2c\x32\xab\x0e\xde\xd1\x63"
258 "\x1a\x8b\x60\x5a\x43\xff\x5b\xed"
259 "\x80\x86\x07\x2b\xa1\xe7\xcc\x23"
260 "\x58\xba\xec\xa1\x34\xc8\x25\xa7",
1da177e4
LT
261 }, {
262 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
263 .psize = 56,
de224c30
SS
264 .digest = "\x33\x91\xfd\xdd\xfc\x8d\xc7\x39"
265 "\x37\x07\xa6\x5b\x1b\x47\x09\x39"
266 "\x7c\xf8\xb1\xd1\x62\xaf\x05\xab"
267 "\xfe\x8f\x45\x0d\xe5\xf3\x6b\xc6"
268 "\xb0\x45\x5a\x85\x20\xbc\x4e\x6f"
269 "\x5f\xe9\x5b\x1f\xe3\xc8\x45\x2b",
1da177e4
LT
270 }, {
271 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
de224c30 272 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
1da177e4 273 .psize = 112,
de224c30
SS
274 .digest = "\x09\x33\x0c\x33\xf7\x11\x47\xe8"
275 "\x3d\x19\x2f\xc7\x82\xcd\x1b\x47"
276 "\x53\x11\x1b\x17\x3b\x3b\x05\xd2"
277 "\x2f\xa0\x80\x86\xe3\xb0\xf7\x12"
278 "\xfc\xc7\xc7\x1a\x55\x7e\x2d\xb9"
279 "\x66\xc3\xe9\xfa\x91\x74\x60\x39",
1da177e4
LT
280 }, {
281 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
de224c30 282 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
1da177e4 283 .psize = 104,
de224c30
SS
284 .digest = "\x3d\x20\x89\x73\xab\x35\x08\xdb"
285 "\xbd\x7e\x2c\x28\x62\xba\x29\x0a"
286 "\xd3\x01\x0e\x49\x78\xc1\x98\xdc"
287 "\x4d\x8f\xd0\x14\xe5\x82\x82\x3a"
288 "\x89\xe1\x6f\x9b\x2a\x7b\xbc\x1a"
289 "\xc9\x38\xe2\xd1\x99\xe8\xbe\xa4",
1da177e4
LT
290 .np = 4,
291 .tap = { 26, 26, 26, 26 }
292 },
293};
294
295/*
296 * SHA512 test vectors from from NIST and kerneli
297 */
298#define SHA512_TEST_VECTORS 4
299
300static struct hash_testvec sha512_tv_template[] = {
ef2736fc 301 {
1da177e4
LT
302 .plaintext = "abc",
303 .psize = 3,
de224c30
SS
304 .digest = "\xdd\xaf\x35\xa1\x93\x61\x7a\xba"
305 "\xcc\x41\x73\x49\xae\x20\x41\x31"
306 "\x12\xe6\xfa\x4e\x89\xa9\x7e\xa2"
307 "\x0a\x9e\xee\xe6\x4b\x55\xd3\x9a"
308 "\x21\x92\x99\x2a\x27\x4f\xc1\xa8"
309 "\x36\xba\x3c\x23\xa3\xfe\xeb\xbd"
310 "\x45\x4d\x44\x23\x64\x3c\xe8\x0e"
311 "\x2a\x9a\xc9\x4f\xa5\x4c\xa4\x9f",
1da177e4
LT
312 }, {
313 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
314 .psize = 56,
de224c30
SS
315 .digest = "\x20\x4a\x8f\xc6\xdd\xa8\x2f\x0a"
316 "\x0c\xed\x7b\xeb\x8e\x08\xa4\x16"
317 "\x57\xc1\x6e\xf4\x68\xb2\x28\xa8"
318 "\x27\x9b\xe3\x31\xa7\x03\xc3\x35"
319 "\x96\xfd\x15\xc1\x3b\x1b\x07\xf9"
320 "\xaa\x1d\x3b\xea\x57\x78\x9c\xa0"
321 "\x31\xad\x85\xc7\xa7\x1d\xd7\x03"
322 "\x54\xec\x63\x12\x38\xca\x34\x45",
1da177e4
LT
323 }, {
324 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
de224c30 325 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
1da177e4 326 .psize = 112,
de224c30
SS
327 .digest = "\x8e\x95\x9b\x75\xda\xe3\x13\xda"
328 "\x8c\xf4\xf7\x28\x14\xfc\x14\x3f"
329 "\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1"
330 "\x72\x99\xae\xad\xb6\x88\x90\x18"
331 "\x50\x1d\x28\x9e\x49\x00\xf7\xe4"
332 "\x33\x1b\x99\xde\xc4\xb5\x43\x3a"
333 "\xc7\xd3\x29\xee\xb6\xdd\x26\x54"
334 "\x5e\x96\xe5\x5b\x87\x4b\xe9\x09",
1da177e4
LT
335 }, {
336 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
de224c30 337 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
1da177e4 338 .psize = 104,
de224c30
SS
339 .digest = "\x93\x0d\x0c\xef\xcb\x30\xff\x11"
340 "\x33\xb6\x89\x81\x21\xf1\xcf\x3d"
341 "\x27\x57\x8a\xfc\xaf\xe8\x67\x7c"
342 "\x52\x57\xcf\x06\x99\x11\xf7\x5d"
343 "\x8f\x58\x31\xb5\x6e\xbf\xda\x67"
344 "\xb2\x78\xe6\x6d\xff\x8b\x84\xfe"
345 "\x2b\x28\x70\xf7\x42\xa5\x80\xd8"
346 "\xed\xb4\x19\x87\x23\x28\x50\xc9",
1da177e4
LT
347 .np = 4,
348 .tap = { 26, 26, 26, 26 }
349 },
350};
351
352
353/*
ef2736fc 354 * WHIRLPOOL test vectors from Whirlpool package
1da177e4
LT
355 * by Vincent Rijmen and Paulo S. L. M. Barreto as part of the NESSIE
356 * submission
357 */
358#define WP512_TEST_VECTORS 8
359
360static struct hash_testvec wp512_tv_template[] = {
ef2736fc 361 {
1da177e4
LT
362 .plaintext = "",
363 .psize = 0,
de224c30
SS
364 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
365 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
366 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
367 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7"
368 "\x3E\x83\xBE\x69\x8B\x28\x8F\xEB"
369 "\xCF\x88\xE3\xE0\x3C\x4F\x07\x57"
370 "\xEA\x89\x64\xE5\x9B\x63\xD9\x37"
371 "\x08\xB1\x38\xCC\x42\xA6\x6E\xB3",
1da177e4
LT
372
373
374 }, {
375 .plaintext = "a",
376 .psize = 1,
de224c30
SS
377 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
378 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
379 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
380 "\x73\xC4\x50\x01\xD0\x08\x7B\x42"
381 "\xD1\x1B\xC6\x45\x41\x3A\xEF\xF6"
382 "\x3A\x42\x39\x1A\x39\x14\x5A\x59"
383 "\x1A\x92\x20\x0D\x56\x01\x95\xE5"
384 "\x3B\x47\x85\x84\xFD\xAE\x23\x1A",
1da177e4
LT
385 }, {
386 .plaintext = "abc",
387 .psize = 3,
de224c30
SS
388 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
389 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
390 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
391 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C"
392 "\x71\x81\xEE\xBD\xB6\xC5\x7E\x27"
393 "\x7D\x0E\x34\x95\x71\x14\xCB\xD6"
394 "\xC7\x97\xFC\x9D\x95\xD8\xB5\x82"
395 "\xD2\x25\x29\x20\x76\xD4\xEE\xF5",
1da177e4
LT
396 }, {
397 .plaintext = "message digest",
398 .psize = 14,
de224c30
SS
399 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
400 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
401 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
402 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B"
403 "\x84\x21\x55\x76\x59\xEF\x55\xC1"
404 "\x06\xB4\xB5\x2A\xC5\xA4\xAA\xA6"
405 "\x92\xED\x92\x00\x52\x83\x8F\x33"
406 "\x62\xE8\x6D\xBD\x37\xA8\x90\x3E",
1da177e4
LT
407 }, {
408 .plaintext = "abcdefghijklmnopqrstuvwxyz",
409 .psize = 26,
de224c30
SS
410 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
411 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
412 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
413 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B"
414 "\x08\xBF\x2A\x92\x51\xC3\x0B\x6A"
415 "\x0B\x8A\xAE\x86\x17\x7A\xB4\xA6"
416 "\xF6\x8F\x67\x3E\x72\x07\x86\x5D"
417 "\x5D\x98\x19\xA3\xDB\xA4\xEB\x3B",
1da177e4
LT
418 }, {
419 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
de224c30 420 "abcdefghijklmnopqrstuvwxyz0123456789",
1da177e4 421 .psize = 62,
de224c30
SS
422 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
423 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
424 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
425 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E"
426 "\x08\xEB\xA2\x66\x29\x12\x9D\x8F"
427 "\xB7\xCB\x57\x21\x1B\x92\x81\xA6"
428 "\x55\x17\xCC\x87\x9D\x7B\x96\x21"
429 "\x42\xC6\x5F\x5A\x7A\xF0\x14\x67",
1da177e4
LT
430 }, {
431 .plaintext = "1234567890123456789012345678901234567890"
de224c30 432 "1234567890123456789012345678901234567890",
1da177e4 433 .psize = 80,
de224c30
SS
434 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
435 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
436 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
437 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29"
438 "\x4D\x5B\xD8\xDF\x2A\x6C\x44\xE5"
439 "\x38\xCD\x04\x7B\x26\x81\xA5\x1A"
440 "\x2C\x60\x48\x1E\x88\xC5\xA2\x0B"
441 "\x2C\x2A\x80\xCF\x3A\x9A\x08\x3B",
1da177e4
LT
442 }, {
443 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
444 .psize = 32,
de224c30
SS
445 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
446 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
447 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
448 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69"
449 "\x16\xBD\xC8\x03\x1B\xC5\xBE\x1B"
450 "\x7B\x94\x76\x39\xFE\x05\x0B\x56"
451 "\x93\x9B\xAA\xA0\xAD\xFF\x9A\xE6"
452 "\x74\x5B\x7B\x18\x1C\x3B\xE3\xFD",
1da177e4
LT
453 },
454};
455
456#define WP384_TEST_VECTORS 8
457
458static struct hash_testvec wp384_tv_template[] = {
ef2736fc 459 {
1da177e4
LT
460 .plaintext = "",
461 .psize = 0,
de224c30
SS
462 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
463 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
464 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
465 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7"
466 "\x3E\x83\xBE\x69\x8B\x28\x8F\xEB"
467 "\xCF\x88\xE3\xE0\x3C\x4F\x07\x57",
1da177e4
LT
468
469
470 }, {
471 .plaintext = "a",
472 .psize = 1,
de224c30
SS
473 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
474 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
475 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
476 "\x73\xC4\x50\x01\xD0\x08\x7B\x42"
477 "\xD1\x1B\xC6\x45\x41\x3A\xEF\xF6"
478 "\x3A\x42\x39\x1A\x39\x14\x5A\x59",
1da177e4
LT
479 }, {
480 .plaintext = "abc",
481 .psize = 3,
de224c30
SS
482 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
483 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
484 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
485 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C"
486 "\x71\x81\xEE\xBD\xB6\xC5\x7E\x27"
487 "\x7D\x0E\x34\x95\x71\x14\xCB\xD6",
1da177e4
LT
488 }, {
489 .plaintext = "message digest",
490 .psize = 14,
de224c30
SS
491 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
492 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
493 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
494 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B"
495 "\x84\x21\x55\x76\x59\xEF\x55\xC1"
496 "\x06\xB4\xB5\x2A\xC5\xA4\xAA\xA6",
1da177e4
LT
497 }, {
498 .plaintext = "abcdefghijklmnopqrstuvwxyz",
499 .psize = 26,
de224c30
SS
500 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
501 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
502 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
503 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B"
504 "\x08\xBF\x2A\x92\x51\xC3\x0B\x6A"
505 "\x0B\x8A\xAE\x86\x17\x7A\xB4\xA6",
1da177e4
LT
506 }, {
507 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
de224c30 508 "abcdefghijklmnopqrstuvwxyz0123456789",
1da177e4 509 .psize = 62,
de224c30
SS
510 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
511 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
512 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
513 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E"
514 "\x08\xEB\xA2\x66\x29\x12\x9D\x8F"
515 "\xB7\xCB\x57\x21\x1B\x92\x81\xA6",
1da177e4
LT
516 }, {
517 .plaintext = "1234567890123456789012345678901234567890"
de224c30 518 "1234567890123456789012345678901234567890",
1da177e4 519 .psize = 80,
de224c30
SS
520 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
521 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
522 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
523 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29"
524 "\x4D\x5B\xD8\xDF\x2A\x6C\x44\xE5"
525 "\x38\xCD\x04\x7B\x26\x81\xA5\x1A",
1da177e4
LT
526 }, {
527 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
528 .psize = 32,
de224c30
SS
529 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
530 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
531 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
532 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69"
533 "\x16\xBD\xC8\x03\x1B\xC5\xBE\x1B"
534 "\x7B\x94\x76\x39\xFE\x05\x0B\x56",
1da177e4
LT
535 },
536};
537
538#define WP256_TEST_VECTORS 8
539
540static struct hash_testvec wp256_tv_template[] = {
ef2736fc 541 {
1da177e4
LT
542 .plaintext = "",
543 .psize = 0,
de224c30
SS
544 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
545 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
546 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
547 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7",
1da177e4
LT
548
549
550 }, {
551 .plaintext = "a",
552 .psize = 1,
de224c30
SS
553 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
554 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
555 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
556 "\x73\xC4\x50\x01\xD0\x08\x7B\x42",
1da177e4
LT
557 }, {
558 .plaintext = "abc",
559 .psize = 3,
de224c30
SS
560 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
561 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
562 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
563 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C",
1da177e4
LT
564 }, {
565 .plaintext = "message digest",
566 .psize = 14,
de224c30
SS
567 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
568 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
569 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
570 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B",
1da177e4
LT
571 }, {
572 .plaintext = "abcdefghijklmnopqrstuvwxyz",
573 .psize = 26,
de224c30
SS
574 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
575 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
576 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
577 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B",
1da177e4
LT
578 }, {
579 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
de224c30 580 "abcdefghijklmnopqrstuvwxyz0123456789",
1da177e4 581 .psize = 62,
de224c30
SS
582 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
583 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
584 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
585 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E",
1da177e4
LT
586 }, {
587 .plaintext = "1234567890123456789012345678901234567890"
de224c30 588 "1234567890123456789012345678901234567890",
1da177e4 589 .psize = 80,
de224c30
SS
590 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
591 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
592 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
593 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29",
1da177e4
LT
594 }, {
595 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
596 .psize = 32,
de224c30
SS
597 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
598 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
599 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
600 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69",
1da177e4
LT
601 },
602};
603
604/*
ef2736fc 605 * TIGER test vectors from Tiger website
1da177e4
LT
606 */
607#define TGR192_TEST_VECTORS 6
608
609static struct hash_testvec tgr192_tv_template[] = {
610 {
611 .plaintext = "",
612 .psize = 0,
de224c30
SS
613 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
614 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f"
615 "\xf3\x73\xde\x2d\x49\x58\x4e\x7a",
1da177e4
LT
616 }, {
617 .plaintext = "abc",
618 .psize = 3,
de224c30
SS
619 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
620 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf"
621 "\x93\x5f\x7b\x95\x1c\x13\x29\x51",
1da177e4
LT
622 }, {
623 .plaintext = "Tiger",
624 .psize = 5,
de224c30
SS
625 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
626 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec"
627 "\x37\x79\x0c\x11\x6f\x9d\x2b\xdf",
1da177e4
LT
628 }, {
629 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
630 .psize = 64,
de224c30
SS
631 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
632 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e"
633 "\xb5\x86\x44\x50\x34\xa5\xa3\x86",
1da177e4
LT
634 }, {
635 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
636 .psize = 64,
de224c30
SS
637 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
638 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9"
639 "\x57\x89\x65\x65\x97\x5f\x91\x97",
1da177e4
LT
640 }, {
641 .plaintext = "Tiger - A Fast New Hash Function, "
de224c30
SS
642 "by Ross Anderson and Eli Biham, "
643 "proceedings of Fast Software Encryption 3, "
644 "Cambridge, 1996.",
1da177e4 645 .psize = 125,
de224c30
SS
646 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
647 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24"
648 "\xdd\x68\x15\x1d\x50\x39\x74\xfc",
1da177e4
LT
649 },
650};
651
652#define TGR160_TEST_VECTORS 6
653
654static struct hash_testvec tgr160_tv_template[] = {
655 {
656 .plaintext = "",
657 .psize = 0,
de224c30
SS
658 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
659 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f"
660 "\xf3\x73\xde\x2d",
1da177e4
LT
661 }, {
662 .plaintext = "abc",
663 .psize = 3,
de224c30
SS
664 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
665 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf"
666 "\x93\x5f\x7b\x95",
1da177e4
LT
667 }, {
668 .plaintext = "Tiger",
669 .psize = 5,
de224c30
SS
670 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
671 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec"
672 "\x37\x79\x0c\x11",
1da177e4
LT
673 }, {
674 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
675 .psize = 64,
de224c30
SS
676 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
677 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e"
678 "\xb5\x86\x44\x50",
1da177e4
LT
679 }, {
680 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
681 .psize = 64,
de224c30
SS
682 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
683 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9"
684 "\x57\x89\x65\x65",
1da177e4
LT
685 }, {
686 .plaintext = "Tiger - A Fast New Hash Function, "
de224c30
SS
687 "by Ross Anderson and Eli Biham, "
688 "proceedings of Fast Software Encryption 3, "
689 "Cambridge, 1996.",
1da177e4 690 .psize = 125,
de224c30
SS
691 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
692 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24"
693 "\xdd\x68\x15\x1d",
1da177e4
LT
694 },
695};
696
697#define TGR128_TEST_VECTORS 6
698
699static struct hash_testvec tgr128_tv_template[] = {
700 {
701 .plaintext = "",
702 .psize = 0,
de224c30
SS
703 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
704 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f",
1da177e4
LT
705 }, {
706 .plaintext = "abc",
707 .psize = 3,
de224c30
SS
708 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
709 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf",
1da177e4
LT
710 }, {
711 .plaintext = "Tiger",
712 .psize = 5,
de224c30
SS
713 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
714 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec",
1da177e4
LT
715 }, {
716 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
717 .psize = 64,
de224c30
SS
718 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
719 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e",
1da177e4
LT
720 }, {
721 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
722 .psize = 64,
de224c30
SS
723 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
724 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9",
1da177e4
LT
725 }, {
726 .plaintext = "Tiger - A Fast New Hash Function, "
de224c30
SS
727 "by Ross Anderson and Eli Biham, "
728 "proceedings of Fast Software Encryption 3, "
729 "Cambridge, 1996.",
1da177e4 730 .psize = 125,
de224c30
SS
731 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
732 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24",
1da177e4
LT
733 },
734};
735
1da177e4
LT
736/*
737 * HMAC-MD5 test vectors from RFC2202
738 * (These need to be fixed to not use strlen).
739 */
740#define HMAC_MD5_TEST_VECTORS 7
741
e9d41164 742static struct hash_testvec hmac_md5_tv_template[] =
ef2736fc 743{
1da177e4 744 {
de224c30 745 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
1da177e4
LT
746 .ksize = 16,
747 .plaintext = "Hi There",
748 .psize = 8,
de224c30
SS
749 .digest = "\x92\x94\x72\x7a\x36\x38\xbb\x1c"
750 "\x13\xf4\x8e\xf8\x15\x8b\xfc\x9d",
1da177e4 751 }, {
de224c30 752 .key = "Jefe",
1da177e4
LT
753 .ksize = 4,
754 .plaintext = "what do ya want for nothing?",
755 .psize = 28,
de224c30
SS
756 .digest = "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03"
757 "\xea\xa8\x6e\x31\x0a\x5d\xb7\x38",
1da177e4
LT
758 .np = 2,
759 .tap = {14, 14}
760 }, {
de224c30 761 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1da177e4 762 .ksize = 16,
de224c30
SS
763 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
764 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
765 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
766 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1da177e4 767 .psize = 50,
de224c30
SS
768 .digest = "\x56\xbe\x34\x52\x1d\x14\x4c\x88"
769 "\xdb\xb8\xc7\x33\xf0\xe8\xb3\xf6",
1da177e4 770 }, {
de224c30
SS
771 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
772 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
773 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
1da177e4 774 .ksize = 25,
de224c30
SS
775 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
776 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
777 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
778 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1da177e4 779 .psize = 50,
de224c30
SS
780 .digest = "\x69\x7e\xaf\x0a\xca\x3a\x3a\xea"
781 "\x3a\x75\x16\x47\x46\xff\xaa\x79",
1da177e4 782 }, {
de224c30 783 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
1da177e4
LT
784 .ksize = 16,
785 .plaintext = "Test With Truncation",
786 .psize = 20,
de224c30
SS
787 .digest = "\x56\x46\x1e\xf2\x34\x2e\xdc\x00"
788 "\xf9\xba\xb9\x95\x69\x0e\xfd\x4c",
789 }, {
790 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
791 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
792 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
793 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
794 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
795 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
796 "\xaa\xaa",
1da177e4
LT
797 .ksize = 80,
798 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
799 .psize = 54,
de224c30
SS
800 .digest = "\x6b\x1a\xb7\xfe\x4b\xd7\xbf\x8f"
801 "\x0b\x62\xe6\xce\x61\xb9\xd0\xcd",
802 }, {
803 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
804 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
805 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
806 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
807 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
808 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
809 "\xaa\xaa",
1da177e4
LT
810 .ksize = 80,
811 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
de224c30 812 "Block-Size Data",
1da177e4 813 .psize = 73,
de224c30
SS
814 .digest = "\x6f\x63\x0f\xad\x67\xcd\xa0\xee"
815 "\x1f\xb1\xf5\x62\xdb\x3a\xa5\x3e",
1da177e4
LT
816 },
817};
818
819/*
820 * HMAC-SHA1 test vectors from RFC2202
821 */
822#define HMAC_SHA1_TEST_VECTORS 7
823
e9d41164 824static struct hash_testvec hmac_sha1_tv_template[] = {
1da177e4 825 {
de224c30 826 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
1da177e4
LT
827 .ksize = 20,
828 .plaintext = "Hi There",
829 .psize = 8,
de224c30
SS
830 .digest = "\xb6\x17\x31\x86\x55\x05\x72\x64"
831 "\xe2\x8b\xc0\xb6\xfb\x37\x8c\x8e\xf1"
832 "\x46\xbe",
1da177e4 833 }, {
de224c30 834 .key = "Jefe",
1da177e4
LT
835 .ksize = 4,
836 .plaintext = "what do ya want for nothing?",
837 .psize = 28,
de224c30
SS
838 .digest = "\xef\xfc\xdf\x6a\xe5\xeb\x2f\xa2\xd2\x74"
839 "\x16\xd5\xf1\x84\xdf\x9c\x25\x9a\x7c\x79",
1da177e4
LT
840 .np = 2,
841 .tap = { 14, 14 }
842 }, {
de224c30 843 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1da177e4 844 .ksize = 20,
de224c30
SS
845 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
846 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
847 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
848 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1da177e4 849 .psize = 50,
de224c30
SS
850 .digest = "\x12\x5d\x73\x42\xb9\xac\x11\xcd\x91\xa3"
851 "\x9a\xf4\x8a\xa1\x7b\x4f\x63\xf1\x75\xd3",
1da177e4 852 }, {
de224c30
SS
853 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
854 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
855 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
1da177e4 856 .ksize = 25,
de224c30
SS
857 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
858 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
859 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
860 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1da177e4 861 .psize = 50,
de224c30
SS
862 .digest = "\x4c\x90\x07\xf4\x02\x62\x50\xc6\xbc\x84"
863 "\x14\xf9\xbf\x50\xc8\x6c\x2d\x72\x35\xda",
1da177e4 864 }, {
de224c30 865 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
1da177e4
LT
866 .ksize = 20,
867 .plaintext = "Test With Truncation",
868 .psize = 20,
de224c30
SS
869 .digest = "\x4c\x1a\x03\x42\x4b\x55\xe0\x7f\xe7\xf2"
870 "\x7b\xe1\xd5\x8b\xb9\x32\x4a\x9a\x5a\x04",
871 }, {
872 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
873 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
874 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
875 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
876 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
877 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
878 "\xaa\xaa",
1da177e4
LT
879 .ksize = 80,
880 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
881 .psize = 54,
de224c30
SS
882 .digest = "\xaa\x4a\xe5\xe1\x52\x72\xd0\x0e\x95\x70"
883 "\x56\x37\xce\x8a\x3b\x55\xed\x40\x21\x12",
884 }, {
885 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
886 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
887 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
888 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
889 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
890 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
891 "\xaa\xaa",
1da177e4
LT
892 .ksize = 80,
893 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
de224c30 894 "Block-Size Data",
1da177e4 895 .psize = 73,
de224c30
SS
896 .digest = "\xe8\xe9\x9d\x0f\x45\x23\x7d\x78\x6d\x6b"
897 "\xba\xa7\x96\x5c\x78\x08\xbb\xff\x1a\x91",
1da177e4
LT
898 },
899};
900
cd12fb90
JL
901
902/*
903 * SHA224 HMAC test vectors from RFC4231
904 */
905#define HMAC_SHA224_TEST_VECTORS 4
906
907static struct hash_testvec hmac_sha224_tv_template[] = {
908 {
de224c30
SS
909 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
910 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
911 "\x0b\x0b\x0b\x0b",
cd12fb90
JL
912 .ksize = 20,
913 /* ("Hi There") */
de224c30 914 .plaintext = "\x48\x69\x20\x54\x68\x65\x72\x65",
cd12fb90 915 .psize = 8,
de224c30
SS
916 .digest = "\x89\x6f\xb1\x12\x8a\xbb\xdf\x19"
917 "\x68\x32\x10\x7c\xd4\x9d\xf3\x3f"
918 "\x47\xb4\xb1\x16\x99\x12\xba\x4f"
919 "\x53\x68\x4b\x22",
cd12fb90 920 }, {
de224c30 921 .key = "Jefe",
cd12fb90
JL
922 .ksize = 4,
923 /* ("what do ya want for nothing?") */
de224c30
SS
924 .plaintext = "\x77\x68\x61\x74\x20\x64\x6f\x20"
925 "\x79\x61\x20\x77\x61\x6e\x74\x20"
926 "\x66\x6f\x72\x20\x6e\x6f\x74\x68"
927 "\x69\x6e\x67\x3f",
cd12fb90 928 .psize = 28,
de224c30
SS
929 .digest = "\xa3\x0e\x01\x09\x8b\xc6\xdb\xbf"
930 "\x45\x69\x0f\x3a\x7e\x9e\x6d\x0f"
931 "\x8b\xbe\xa2\xa3\x9e\x61\x48\x00"
932 "\x8f\xd0\x5e\x44",
cd12fb90
JL
933 .np = 4,
934 .tap = { 7, 7, 7, 7 }
935 }, {
de224c30
SS
936 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
937 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
938 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
939 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
940 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
941 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
942 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
943 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
944 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
945 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
946 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
947 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
948 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
949 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
950 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
951 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
952 "\xaa\xaa\xaa",
cd12fb90
JL
953 .ksize = 131,
954 /* ("Test Using Larger Than Block-Size Key - Hash Key First") */
de224c30
SS
955 .plaintext = "\x54\x65\x73\x74\x20\x55\x73\x69"
956 "\x6e\x67\x20\x4c\x61\x72\x67\x65"
957 "\x72\x20\x54\x68\x61\x6e\x20\x42"
958 "\x6c\x6f\x63\x6b\x2d\x53\x69\x7a"
959 "\x65\x20\x4b\x65\x79\x20\x2d\x20"
960 "\x48\x61\x73\x68\x20\x4b\x65\x79"
961 "\x20\x46\x69\x72\x73\x74",
cd12fb90 962 .psize = 54,
de224c30
SS
963 .digest = "\x95\xe9\xa0\xdb\x96\x20\x95\xad"
964 "\xae\xbe\x9b\x2d\x6f\x0d\xbc\xe2"
965 "\xd4\x99\xf1\x12\xf2\xd2\xb7\x27"
966 "\x3f\xa6\x87\x0e",
967 }, {
968 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
969 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
970 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
971 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
972 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
973 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
974 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
975 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
976 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
977 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
978 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
979 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
980 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
981 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
982 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
983 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
984 "\xaa\xaa\xaa",
cd12fb90
JL
985 .ksize = 131,
986 /* ("This is a test using a larger than block-size key and a")
987 (" larger than block-size data. The key needs to be")
988 (" hashed before being used by the HMAC algorithm.") */
de224c30
SS
989 .plaintext = "\x54\x68\x69\x73\x20\x69\x73\x20"
990 "\x61\x20\x74\x65\x73\x74\x20\x75"
991 "\x73\x69\x6e\x67\x20\x61\x20\x6c"
992 "\x61\x72\x67\x65\x72\x20\x74\x68"
993 "\x61\x6e\x20\x62\x6c\x6f\x63\x6b"
994 "\x2d\x73\x69\x7a\x65\x20\x6b\x65"
995 "\x79\x20\x61\x6e\x64\x20\x61\x20"
996 "\x6c\x61\x72\x67\x65\x72\x20\x74"
997 "\x68\x61\x6e\x20\x62\x6c\x6f\x63"
998 "\x6b\x2d\x73\x69\x7a\x65\x20\x64"
999 "\x61\x74\x61\x2e\x20\x54\x68\x65"
1000 "\x20\x6b\x65\x79\x20\x6e\x65\x65"
1001 "\x64\x73\x20\x74\x6f\x20\x62\x65"
1002 "\x20\x68\x61\x73\x68\x65\x64\x20"
1003 "\x62\x65\x66\x6f\x72\x65\x20\x62"
1004 "\x65\x69\x6e\x67\x20\x75\x73\x65"
1005 "\x64\x20\x62\x79\x20\x74\x68\x65"
1006 "\x20\x48\x4d\x41\x43\x20\x61\x6c"
1007 "\x67\x6f\x72\x69\x74\x68\x6d\x2e",
cd12fb90 1008 .psize = 152,
de224c30
SS
1009 .digest = "\x3a\x85\x41\x66\xac\x5d\x9f\x02"
1010 "\x3f\x54\xd5\x17\xd0\xb3\x9d\xbd"
1011 "\x94\x67\x70\xdb\x9c\x2b\x95\xc9"
1012 "\xf6\xf5\x65\xd1",
cd12fb90
JL
1013 },
1014};
1015
1da177e4
LT
1016/*
1017 * HMAC-SHA256 test vectors from
1018 * draft-ietf-ipsec-ciph-sha-256-01.txt
1019 */
1020#define HMAC_SHA256_TEST_VECTORS 10
1021
e9d41164 1022static struct hash_testvec hmac_sha256_tv_template[] = {
1da177e4 1023 {
de224c30
SS
1024 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1025 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1026 "\x11\x12\x13\x14\x15\x16\x17\x18"
1027 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
1da177e4
LT
1028 .ksize = 32,
1029 .plaintext = "abc",
1030 .psize = 3,
de224c30
SS
1031 .digest = "\xa2\x1b\x1f\x5d\x4c\xf4\xf7\x3a"
1032 "\x4d\xd9\x39\x75\x0f\x7a\x06\x6a"
1033 "\x7f\x98\xcc\x13\x1c\xb1\x6a\x66"
1034 "\x92\x75\x90\x21\xcf\xab\x81\x81",
1035 }, {
1036 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1037 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1038 "\x11\x12\x13\x14\x15\x16\x17\x18"
1039 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
1da177e4
LT
1040 .ksize = 32,
1041 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
1042 .psize = 56,
de224c30
SS
1043 .digest = "\x10\x4f\xdc\x12\x57\x32\x8f\x08"
1044 "\x18\x4b\xa7\x31\x31\xc5\x3c\xae"
1045 "\xe6\x98\xe3\x61\x19\x42\x11\x49"
1046 "\xea\x8c\x71\x24\x56\x69\x7d\x30",
1047 }, {
1048 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1049 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1050 "\x11\x12\x13\x14\x15\x16\x17\x18"
1051 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
1da177e4
LT
1052 .ksize = 32,
1053 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
de224c30 1054 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
1da177e4 1055 .psize = 112,
de224c30
SS
1056 .digest = "\x47\x03\x05\xfc\x7e\x40\xfe\x34"
1057 "\xd3\xee\xb3\xe7\x73\xd9\x5a\xab"
1058 "\x73\xac\xf0\xfd\x06\x04\x47\xa5"
1059 "\xeb\x45\x95\xbf\x33\xa9\xd1\xa3",
1060 }, {
1061 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1062 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1063 "\x0b\x0b\x0b\x0b\x0b\x0b",
1da177e4
LT
1064 .ksize = 32,
1065 .plaintext = "Hi There",
1066 .psize = 8,
de224c30
SS
1067 .digest = "\x19\x8a\x60\x7e\xb4\x4b\xfb\xc6"
1068 "\x99\x03\xa0\xf1\xcf\x2b\xbd\xc5"
1069 "\xba\x0a\xa3\xf3\xd9\xae\x3c\x1c"
1070 "\x7a\x3b\x16\x96\xa0\xb6\x8c\xf7",
1da177e4
LT
1071 }, {
1072 .key = "Jefe",
1073 .ksize = 4,
1074 .plaintext = "what do ya want for nothing?",
1075 .psize = 28,
de224c30
SS
1076 .digest = "\x5b\xdc\xc1\x46\xbf\x60\x75\x4e"
1077 "\x6a\x04\x24\x26\x08\x95\x75\xc7"
1078 "\x5a\x00\x3f\x08\x9d\x27\x39\x83"
1079 "\x9d\xec\x58\xb9\x64\xec\x38\x43",
1da177e4
LT
1080 .np = 2,
1081 .tap = { 14, 14 }
1082 }, {
de224c30
SS
1083 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1084 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1085 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1da177e4 1086 .ksize = 32,
de224c30
SS
1087 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1088 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1089 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1090 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1da177e4 1091 .psize = 50,
de224c30
SS
1092 .digest = "\xcd\xcb\x12\x20\xd1\xec\xcc\xea"
1093 "\x91\xe5\x3a\xba\x30\x92\xf9\x62"
1094 "\xe5\x49\xfe\x6c\xe9\xed\x7f\xdc"
1095 "\x43\x19\x1f\xbd\xe4\x5c\x30\xb0",
1096 }, {
1097 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1098 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1099 "\x11\x12\x13\x14\x15\x16\x17\x18"
1100 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
1101 "\x21\x22\x23\x24\x25",
1da177e4 1102 .ksize = 37,
de224c30
SS
1103 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1104 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1105 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1106 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1da177e4 1107 .psize = 50,
de224c30
SS
1108 .digest = "\xd4\x63\x3c\x17\xf6\xfb\x8d\x74"
1109 "\x4c\x66\xde\xe0\xf8\xf0\x74\x55"
1110 "\x6e\xc4\xaf\x55\xef\x07\x99\x85"
1111 "\x41\x46\x8e\xb4\x9b\xd2\xe9\x17",
1112 }, {
1113 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
1114 "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
1115 "\x0c\x0c\x0c\x0c\x0c\x0c",
1da177e4
LT
1116 .ksize = 32,
1117 .plaintext = "Test With Truncation",
1118 .psize = 20,
de224c30
SS
1119 .digest = "\x75\x46\xaf\x01\x84\x1f\xc0\x9b"
1120 "\x1a\xb9\xc3\x74\x9a\x5f\x1c\x17"
1121 "\xd4\xf5\x89\x66\x8a\x58\x7b\x27"
1122 "\x00\xa9\xc9\x7c\x11\x93\xcf\x42",
1123 }, {
1124 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1125 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1126 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1127 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1128 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1129 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1130 "\xaa\xaa",
1da177e4
LT
1131 .ksize = 80,
1132 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1133 .psize = 54,
de224c30
SS
1134 .digest = "\x69\x53\x02\x5e\xd9\x6f\x0c\x09"
1135 "\xf8\x0a\x96\xf7\x8e\x65\x38\xdb"
1136 "\xe2\xe7\xb8\x20\xe3\xdd\x97\x0e"
1137 "\x7d\xdd\x39\x09\x1b\x32\x35\x2f",
1138 }, {
1139 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1140 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1141 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1142 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1143 "\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",
1da177e4
LT
1146 .ksize = 80,
1147 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than "
de224c30 1148 "One Block-Size Data",
1da177e4 1149 .psize = 73,
de224c30
SS
1150 .digest = "\x63\x55\xac\x22\xe8\x90\xd0\xa3"
1151 "\xc8\x48\x1a\x5c\xa4\x82\x5b\xc8"
1152 "\x84\xd3\xe7\xa1\xff\x98\xa2\xfc"
1153 "\x2a\xc7\xd8\xe0\x64\xc3\xb2\xe6",
1da177e4
LT
1154 },
1155};
1156
5b2becf5
KM
1157#define XCBC_AES_TEST_VECTORS 6
1158
1159static struct hash_testvec aes_xcbc128_tv_template[] = {
1160 {
de224c30
SS
1161 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1162 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1163 .plaintext = zeroed_string,
1164 .digest = "\x75\xf0\x25\x1d\x52\x8a\xc0\x1c"
1165 "\x45\x73\xdf\xd5\x84\xd7\x9f\x29",
5b2becf5
KM
1166 .psize = 0,
1167 .ksize = 16,
1168 }, {
de224c30
SS
1169 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1170 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1171 .plaintext = "\x00\x01\x02",
1172 .digest = "\x5b\x37\x65\x80\xae\x2f\x19\xaf"
1173 "\xe7\x21\x9c\xee\xf1\x72\x75\x6f",
5b2becf5
KM
1174 .psize = 3,
1175 .ksize = 16,
1176 } , {
de224c30
SS
1177 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1178 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1179 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1180 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1181 .digest = "\xd2\xa2\x46\xfa\x34\x9b\x68\xa7"
1182 "\x99\x98\xa4\x39\x4f\xf7\xa2\x63",
5b2becf5
KM
1183 .psize = 16,
1184 .ksize = 16,
1185 }, {
de224c30
SS
1186 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1187 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1188 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1189 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1190 "\x10\x11\x12\x13",
1191 .digest = "\x47\xf5\x1b\x45\x64\x96\x62\x15"
1192 "\xb8\x98\x5c\x63\x05\x5e\xd3\x08",
5b2becf5
KM
1193 .tap = { 10, 10 },
1194 .psize = 20,
1195 .np = 2,
1196 .ksize = 16,
1197 }, {
de224c30
SS
1198 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1199 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1200 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1201 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1202 "\x10\x11\x12\x13\x14\x15\x16\x17"
1203 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1204 .digest = "\xf5\x4f\x0e\xc8\xd2\xb9\xf3\xd3"
1205 "\x68\x07\x73\x4b\xd5\x28\x3f\xd4",
5b2becf5
KM
1206 .psize = 32,
1207 .ksize = 16,
1208 }, {
de224c30
SS
1209 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1210 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1211 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1212 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1213 "\x10\x11\x12\x13\x14\x15\x16\x17"
1214 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
1215 "\x20\x21",
1216 .digest = "\xbe\xcb\xb3\xbc\xcd\xb5\x18\xa3"
1217 "\x06\x77\xd5\x48\x1f\xb6\xb4\xd8",
5b2becf5
KM
1218 .tap = { 17, 17 },
1219 .psize = 34,
1220 .np = 2,
1221 .ksize = 16,
1222 }
1223};
1224
a28091ae
AD
1225/*
1226 * SHA384 HMAC test vectors from RFC4231
1227 */
1228
1229#define HMAC_SHA384_TEST_VECTORS 4
1230
1231static struct hash_testvec hmac_sha384_tv_template[] = {
1232 {
de224c30
SS
1233 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1234 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1235 "\x0b\x0b\x0b\x0b",
a28091ae 1236 .ksize = 20,
de224c30 1237 .plaintext = "Hi There",
a28091ae 1238 .psize = 8,
de224c30
SS
1239 .digest = "\xaf\xd0\x39\x44\xd8\x48\x95\x62"
1240 "\x6b\x08\x25\xf4\xab\x46\x90\x7f"
1241 "\x15\xf9\xda\xdb\xe4\x10\x1e\xc6"
1242 "\x82\xaa\x03\x4c\x7c\xeb\xc5\x9c"
1243 "\xfa\xea\x9e\xa9\x07\x6e\xde\x7f"
1244 "\x4a\xf1\x52\xe8\xb2\xfa\x9c\xb6",
1245 }, {
1246 .key = "Jefe",
a28091ae 1247 .ksize = 4,
de224c30 1248 .plaintext = "what do ya want for nothing?",
a28091ae 1249 .psize = 28,
de224c30
SS
1250 .digest = "\xaf\x45\xd2\xe3\x76\x48\x40\x31"
1251 "\x61\x7f\x78\xd2\xb5\x8a\x6b\x1b"
1252 "\x9c\x7e\xf4\x64\xf5\xa0\x1b\x47"
1253 "\xe4\x2e\xc3\x73\x63\x22\x44\x5e"
1254 "\x8e\x22\x40\xca\x5e\x69\xe2\xc7"
1255 "\x8b\x32\x39\xec\xfa\xb2\x16\x49",
a28091ae
AD
1256 .np = 4,
1257 .tap = { 7, 7, 7, 7 }
1258 }, {
de224c30
SS
1259 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1260 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1261 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1262 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1263 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1264 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1265 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1266 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1267 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1268 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1269 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1270 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1271 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1272 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1273 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1274 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1275 "\xaa\xaa\xaa",
a28091ae 1276 .ksize = 131,
de224c30
SS
1277 .plaintext = "Test Using Larger Than Block-Siz"
1278 "e Key - Hash Key First",
a28091ae 1279 .psize = 54,
de224c30
SS
1280 .digest = "\x4e\xce\x08\x44\x85\x81\x3e\x90"
1281 "\x88\xd2\xc6\x3a\x04\x1b\xc5\xb4"
1282 "\x4f\x9e\xf1\x01\x2a\x2b\x58\x8f"
1283 "\x3c\xd1\x1f\x05\x03\x3a\xc4\xc6"
1284 "\x0c\x2e\xf6\xab\x40\x30\xfe\x82"
1285 "\x96\x24\x8d\xf1\x63\xf4\x49\x52",
1286 }, {
1287 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1288 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1289 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1290 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1291 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1292 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1293 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1294 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1295 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1296 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1297 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1298 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1299 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1300 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1301 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1302 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1303 "\xaa\xaa\xaa",
a28091ae 1304 .ksize = 131,
de224c30
SS
1305 .plaintext = "This is a test u"
1306 "sing a larger th"
1307 "an block-size ke"
1308 "y and a larger t"
1309 "han block-size d"
1310 "ata. The key nee"
1311 "ds to be hashed "
1312 "before being use"
1313 "d by the HMAC al"
1314 "gorithm.",
a28091ae 1315 .psize = 152,
de224c30
SS
1316 .digest = "\x66\x17\x17\x8e\x94\x1f\x02\x0d"
1317 "\x35\x1e\x2f\x25\x4e\x8f\xd3\x2c"
1318 "\x60\x24\x20\xfe\xb0\xb8\xfb\x9a"
1319 "\xdc\xce\xbb\x82\x46\x1e\x99\xc5"
1320 "\xa6\x78\xcc\x31\xe7\x99\x17\x6d"
1321 "\x38\x60\xe6\x11\x0c\x46\x52\x3e",
a28091ae
AD
1322 },
1323};
1324
1325/*
1326 * SHA512 HMAC test vectors from RFC4231
1327 */
1328
1329#define HMAC_SHA512_TEST_VECTORS 4
1330
1331static struct hash_testvec hmac_sha512_tv_template[] = {
1332 {
de224c30
SS
1333 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1334 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1335 "\x0b\x0b\x0b\x0b",
a28091ae 1336 .ksize = 20,
de224c30 1337 .plaintext = "Hi There",
a28091ae 1338 .psize = 8,
de224c30
SS
1339 .digest = "\x87\xaa\x7c\xde\xa5\xef\x61\x9d"
1340 "\x4f\xf0\xb4\x24\x1a\x1d\x6c\xb0"
1341 "\x23\x79\xf4\xe2\xce\x4e\xc2\x78"
1342 "\x7a\xd0\xb3\x05\x45\xe1\x7c\xde"
1343 "\xda\xa8\x33\xb7\xd6\xb8\xa7\x02"
1344 "\x03\x8b\x27\x4e\xae\xa3\xf4\xe4"
1345 "\xbe\x9d\x91\x4e\xeb\x61\xf1\x70"
1346 "\x2e\x69\x6c\x20\x3a\x12\x68\x54",
1347 }, {
1348 .key = "Jefe",
a28091ae 1349 .ksize = 4,
de224c30 1350 .plaintext = "what do ya want for nothing?",
a28091ae 1351 .psize = 28,
de224c30
SS
1352 .digest = "\x16\x4b\x7a\x7b\xfc\xf8\x19\xe2"
1353 "\xe3\x95\xfb\xe7\x3b\x56\xe0\xa3"
1354 "\x87\xbd\x64\x22\x2e\x83\x1f\xd6"
1355 "\x10\x27\x0c\xd7\xea\x25\x05\x54"
1356 "\x97\x58\xbf\x75\xc0\x5a\x99\x4a"
1357 "\x6d\x03\x4f\x65\xf8\xf0\xe6\xfd"
1358 "\xca\xea\xb1\xa3\x4d\x4a\x6b\x4b"
1359 "\x63\x6e\x07\x0a\x38\xbc\xe7\x37",
a28091ae
AD
1360 .np = 4,
1361 .tap = { 7, 7, 7, 7 }
1362 }, {
de224c30
SS
1363 .key = "\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\xaa\xaa\xaa\xaa\xaa"
1374 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1375 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1376 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1377 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1378 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1379 "\xaa\xaa\xaa",
a28091ae 1380 .ksize = 131,
de224c30
SS
1381 .plaintext = "Test Using Large"
1382 "r Than Block-Siz"
1383 "e Key - Hash Key"
1384 " First",
a28091ae 1385 .psize = 54,
de224c30
SS
1386 .digest = "\x80\xb2\x42\x63\xc7\xc1\xa3\xeb"
1387 "\xb7\x14\x93\xc1\xdd\x7b\xe8\xb4"
1388 "\x9b\x46\xd1\xf4\x1b\x4a\xee\xc1"
1389 "\x12\x1b\x01\x37\x83\xf8\xf3\x52"
1390 "\x6b\x56\xd0\x37\xe0\x5f\x25\x98"
1391 "\xbd\x0f\xd2\x21\x5d\x6a\x1e\x52"
1392 "\x95\xe6\x4f\x73\xf6\x3f\x0a\xec"
1393 "\x8b\x91\x5a\x98\x5d\x78\x65\x98",
1394 }, {
1395 .key = "\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\xaa\xaa\xaa\xaa\xaa"
1406 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1407 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1408 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1409 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1410 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1411 "\xaa\xaa\xaa",
a28091ae 1412 .ksize = 131,
de224c30
SS
1413 .plaintext =
1414 "This is a test u"
1415 "sing a larger th"
1416 "an block-size ke"
1417 "y and a larger t"
1418 "han block-size d"
1419 "ata. The key nee"
1420 "ds to be hashed "
1421 "before being use"
1422 "d by the HMAC al"
1423 "gorithm.",
a28091ae 1424 .psize = 152,
de224c30
SS
1425 .digest = "\xe3\x7b\x6a\x77\x5d\xc8\x7d\xba"
1426 "\xa4\xdf\xa9\xf9\x6e\x5e\x3f\xfd"
1427 "\xde\xbd\x71\xf8\x86\x72\x89\x86"
1428 "\x5d\xf5\xa3\x2d\x20\xcd\xc9\x44"
1429 "\xb6\x02\x2c\xac\x3c\x49\x82\xb1"
1430 "\x0d\x5e\xeb\x55\xc3\xe4\xde\x15"
1431 "\x13\x46\x76\xfb\x6d\xe0\x44\x60"
1432 "\x65\xc9\x74\x40\xfa\x8c\x6a\x58",
a28091ae
AD
1433 },
1434};
1435
1da177e4
LT
1436/*
1437 * DES test vectors.
1438 */
1439#define DES_ENC_TEST_VECTORS 10
1440#define DES_DEC_TEST_VECTORS 4
1441#define DES_CBC_ENC_TEST_VECTORS 5
1442#define DES_CBC_DEC_TEST_VECTORS 4
1443#define DES3_EDE_ENC_TEST_VECTORS 3
1444#define DES3_EDE_DEC_TEST_VECTORS 3
1445
1446static struct cipher_testvec des_enc_tv_template[] = {
1447 { /* From Applied Cryptography */
de224c30 1448 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1449 .klen = 8,
de224c30 1450 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
1da177e4 1451 .ilen = 8,
de224c30 1452 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
1da177e4
LT
1453 .rlen = 8,
1454 }, { /* Same key, different plaintext block */
de224c30 1455 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1456 .klen = 8,
de224c30 1457 .input = "\x22\x33\x44\x55\x66\x77\x88\x99",
1da177e4 1458 .ilen = 8,
de224c30 1459 .result = "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
1da177e4
LT
1460 .rlen = 8,
1461 }, { /* Sbox test from NBS */
de224c30 1462 .key = "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57",
1da177e4 1463 .klen = 8,
de224c30 1464 .input = "\x01\xa1\xd6\xd0\x39\x77\x67\x42",
1da177e4 1465 .ilen = 8,
de224c30 1466 .result = "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
1da177e4
LT
1467 .rlen = 8,
1468 }, { /* Three blocks */
de224c30 1469 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1470 .klen = 8,
de224c30
SS
1471 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1472 "\x22\x33\x44\x55\x66\x77\x88\x99"
1473 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef",
1da177e4 1474 .ilen = 24,
de224c30
SS
1475 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1476 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1477 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90",
1da177e4
LT
1478 .rlen = 24,
1479 }, { /* Weak key */
1480 .fail = 1,
1481 .wk = 1,
de224c30 1482 .key = "\x01\x01\x01\x01\x01\x01\x01\x01",
1da177e4 1483 .klen = 8,
de224c30 1484 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
1da177e4 1485 .ilen = 8,
de224c30 1486 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
1da177e4
LT
1487 .rlen = 8,
1488 }, { /* Two blocks -- for testing encryption across pages */
de224c30 1489 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1490 .klen = 8,
de224c30
SS
1491 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1492 "\x22\x33\x44\x55\x66\x77\x88\x99",
1da177e4 1493 .ilen = 16,
de224c30
SS
1494 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1495 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
1da177e4
LT
1496 .rlen = 16,
1497 .np = 2,
1498 .tap = { 8, 8 }
1499 }, { /* Four blocks -- for testing encryption with chunking */
de224c30 1500 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1501 .klen = 8,
de224c30
SS
1502 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1503 "\x22\x33\x44\x55\x66\x77\x88\x99"
1504 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef"
1505 "\x22\x33\x44\x55\x66\x77\x88\x99",
1da177e4 1506 .ilen = 32,
de224c30
SS
1507 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1508 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1509 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90"
1510 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
1da177e4
LT
1511 .rlen = 32,
1512 .np = 3,
ef2736fc 1513 .tap = { 14, 10, 8 }
1da177e4 1514 }, {
de224c30 1515 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1516 .klen = 8,
de224c30
SS
1517 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1518 "\x22\x33\x44\x55\x66\x77\x88\x99"
1519 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef",
1da177e4 1520 .ilen = 24,
de224c30
SS
1521 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1522 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1523 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90",
1da177e4
LT
1524 .rlen = 24,
1525 .np = 4,
ef2736fc 1526 .tap = { 2, 1, 3, 18 }
1da177e4 1527 }, {
de224c30 1528 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1529 .klen = 8,
de224c30
SS
1530 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1531 "\x22\x33\x44\x55\x66\x77\x88\x99",
1da177e4 1532 .ilen = 16,
de224c30
SS
1533 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1534 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
1da177e4
LT
1535 .rlen = 16,
1536 .np = 5,
ef2736fc 1537 .tap = { 2, 2, 2, 2, 8 }
1da177e4 1538 }, {
de224c30 1539 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1540 .klen = 8,
de224c30 1541 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
1da177e4 1542 .ilen = 8,
de224c30 1543 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
1da177e4
LT
1544 .rlen = 8,
1545 .np = 8,
ef2736fc 1546 .tap = { 1, 1, 1, 1, 1, 1, 1, 1 }
1da177e4
LT
1547 },
1548};
1549
1550static struct cipher_testvec des_dec_tv_template[] = {
1551 { /* From Applied Cryptography */
de224c30 1552 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1553 .klen = 8,
de224c30 1554 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
1da177e4 1555 .ilen = 8,
de224c30 1556 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
1da177e4
LT
1557 .rlen = 8,
1558 }, { /* Sbox test from NBS */
de224c30 1559 .key = "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57",
1da177e4 1560 .klen = 8,
de224c30 1561 .input = "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
1da177e4 1562 .ilen = 8,
de224c30 1563 .result = "\x01\xa1\xd6\xd0\x39\x77\x67\x42",
1da177e4
LT
1564 .rlen = 8,
1565 }, { /* Two blocks, for chunking test */
de224c30 1566 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1567 .klen = 8,
de224c30
SS
1568 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1569 "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
1da177e4 1570 .ilen = 16,
de224c30
SS
1571 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1572 "\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
1da177e4
LT
1573 .rlen = 16,
1574 .np = 2,
1575 .tap = { 8, 8 }
1576 }, {
de224c30 1577 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1578 .klen = 8,
de224c30
SS
1579 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1580 "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
1da177e4 1581 .ilen = 16,
de224c30
SS
1582 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1583 "\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
1da177e4
LT
1584 .rlen = 16,
1585 .np = 3,
1586 .tap = { 3, 12, 1 }
1587 },
1588};
1589
1590static struct cipher_testvec des_cbc_enc_tv_template[] = {
1591 { /* From OpenSSL */
de224c30 1592 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1593 .klen = 8,
de224c30
SS
1594 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1595 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
1596 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
1597 "\x68\x65\x20\x74\x69\x6d\x65\x20",
1da177e4 1598 .ilen = 24,
de224c30
SS
1599 .result = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
1600 "\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb"
1601 "\x46\x8e\x91\x15\x78\x88\xba\x68",
1da177e4
LT
1602 .rlen = 24,
1603 }, { /* FIPS Pub 81 */
de224c30 1604 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1605 .klen = 8,
de224c30
SS
1606 .iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
1607 .input = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
1da177e4 1608 .ilen = 8,
de224c30 1609 .result = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
1da177e4
LT
1610 .rlen = 8,
1611 }, {
de224c30 1612 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1613 .klen = 8,
de224c30
SS
1614 .iv = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
1615 .input = "\x68\x65\x20\x74\x69\x6d\x65\x20",
1da177e4 1616 .ilen = 8,
de224c30 1617 .result = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1da177e4 1618 .rlen = 8,
ef2736fc 1619 }, {
de224c30 1620 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1621 .klen = 8,
de224c30
SS
1622 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1623 .input = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
1da177e4 1624 .ilen = 8,
de224c30 1625 .result = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
1da177e4 1626 .rlen = 8,
ef2736fc 1627 }, { /* Copy of openssl vector for chunk testing */
1da177e4 1628 /* From OpenSSL */
de224c30 1629 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1630 .klen = 8,
de224c30
SS
1631 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1632 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
1633 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
1634 "\x68\x65\x20\x74\x69\x6d\x65\x20",
1da177e4 1635 .ilen = 24,
de224c30
SS
1636 .result = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
1637 "\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb"
1638 "\x46\x8e\x91\x15\x78\x88\xba\x68",
1da177e4
LT
1639 .rlen = 24,
1640 .np = 2,
1641 .tap = { 13, 11 }
1642 },
1643};
1644
1645static struct cipher_testvec des_cbc_dec_tv_template[] = {
1646 { /* FIPS Pub 81 */
de224c30 1647 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1648 .klen = 8,
de224c30
SS
1649 .iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
1650 .input = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
1da177e4 1651 .ilen = 8,
de224c30 1652 .result = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
1da177e4
LT
1653 .rlen = 8,
1654 }, {
de224c30 1655 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1656 .klen = 8,
de224c30
SS
1657 .iv = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
1658 .input = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1da177e4 1659 .ilen = 8,
de224c30 1660 .result = "\x68\x65\x20\x74\x69\x6d\x65\x20",
1da177e4
LT
1661 .rlen = 8,
1662 }, {
de224c30 1663 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1664 .klen = 8,
de224c30
SS
1665 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1666 .input = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
1da177e4 1667 .ilen = 8,
de224c30 1668 .result = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
1da177e4 1669 .rlen = 8,
ef2736fc 1670 }, { /* Copy of above, for chunk testing */
de224c30 1671 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1672 .klen = 8,
de224c30
SS
1673 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1674 .input = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
1da177e4 1675 .ilen = 8,
de224c30 1676 .result = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
1da177e4
LT
1677 .rlen = 8,
1678 .np = 2,
1679 .tap = { 4, 4 }
1680 },
1681};
1682
1683/*
1684 * We really need some more test vectors, especially for DES3 CBC.
1685 */
1686static struct cipher_testvec des3_ede_enc_tv_template[] = {
1687 { /* These are from openssl */
de224c30
SS
1688 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1689 "\x55\x55\x55\x55\x55\x55\x55\x55"
1690 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 1691 .klen = 24,
de224c30 1692 .input = "\x73\x6f\x6d\x65\x64\x61\x74\x61",
1da177e4 1693 .ilen = 8,
de224c30 1694 .result = "\x18\xd7\x48\xe5\x63\x62\x05\x72",
1da177e4
LT
1695 .rlen = 8,
1696 }, {
de224c30
SS
1697 .key = "\x03\x52\x02\x07\x67\x20\x82\x17"
1698 "\x86\x02\x87\x66\x59\x08\x21\x98"
1699 "\x64\x05\x6a\xbd\xfe\xa9\x34\x57",
1da177e4 1700 .klen = 24,
de224c30 1701 .input = "\x73\x71\x75\x69\x67\x67\x6c\x65",
1da177e4 1702 .ilen = 8,
de224c30 1703 .result = "\xc0\x7d\x2a\x0f\xa5\x66\xfa\x30",
1da177e4
LT
1704 .rlen = 8,
1705 }, {
de224c30
SS
1706 .key = "\x10\x46\x10\x34\x89\x98\x80\x20"
1707 "\x91\x07\xd0\x15\x89\x19\x01\x01"
1708 "\x19\x07\x92\x10\x98\x1a\x01\x01",
1da177e4 1709 .klen = 24,
de224c30 1710 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 1711 .ilen = 8,
de224c30 1712 .result = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b",
1da177e4
LT
1713 .rlen = 8,
1714 },
1715};
1716
1717static struct cipher_testvec des3_ede_dec_tv_template[] = {
1718 { /* These are from openssl */
de224c30
SS
1719 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1720 "\x55\x55\x55\x55\x55\x55\x55\x55"
1721 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 1722 .klen = 24,
de224c30 1723 .input = "\x18\xd7\x48\xe5\x63\x62\x05\x72",
1da177e4 1724 .ilen = 8,
de224c30 1725 .result = "\x73\x6f\x6d\x65\x64\x61\x74\x61",
1da177e4
LT
1726 .rlen = 8,
1727 }, {
de224c30
SS
1728 .key = "\x03\x52\x02\x07\x67\x20\x82\x17"
1729 "\x86\x02\x87\x66\x59\x08\x21\x98"
1730 "\x64\x05\x6a\xbd\xfe\xa9\x34\x57",
1da177e4 1731 .klen = 24,
de224c30 1732 .input = "\xc0\x7d\x2a\x0f\xa5\x66\xfa\x30",
1da177e4 1733 .ilen = 8,
de224c30 1734 .result = "\x73\x71\x75\x69\x67\x67\x6c\x65",
1da177e4
LT
1735 .rlen = 8,
1736 }, {
de224c30
SS
1737 .key = "\x10\x46\x10\x34\x89\x98\x80\x20"
1738 "\x91\x07\xd0\x15\x89\x19\x01\x01"
1739 "\x19\x07\x92\x10\x98\x1a\x01\x01",
1da177e4 1740 .klen = 24,
de224c30 1741 .input = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b",
1da177e4 1742 .ilen = 8,
de224c30 1743 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
1744 .rlen = 8,
1745 },
1746};
1747
1748/*
1749 * Blowfish test vectors.
1750 */
1751#define BF_ENC_TEST_VECTORS 6
1752#define BF_DEC_TEST_VECTORS 6
1753#define BF_CBC_ENC_TEST_VECTORS 1
1754#define BF_CBC_DEC_TEST_VECTORS 1
1755
1756static struct cipher_testvec bf_enc_tv_template[] = {
1757 { /* DES test vectors from OpenSSL */
de224c30 1758 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 1759 .klen = 8,
de224c30 1760 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 1761 .ilen = 8,
de224c30 1762 .result = "\x4e\xf9\x97\x45\x61\x98\xdd\x78",
1da177e4
LT
1763 .rlen = 8,
1764 }, {
de224c30 1765 .key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
1da177e4 1766 .klen = 8,
de224c30 1767 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 1768 .ilen = 8,
de224c30 1769 .result = "\xa7\x90\x79\x51\x08\xea\x3c\xae",
1da177e4
LT
1770 .rlen = 8,
1771 }, {
de224c30 1772 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
1da177e4 1773 .klen = 8,
de224c30 1774 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 1775 .ilen = 8,
de224c30 1776 .result = "\xe8\x7a\x24\x4e\x2c\xc8\x5e\x82",
1da177e4 1777 .rlen = 8,
ef2736fc 1778 }, { /* Vary the keylength... */
de224c30
SS
1779 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1780 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f",
1da177e4 1781 .klen = 16,
de224c30 1782 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 1783 .ilen = 8,
de224c30 1784 .result = "\x93\x14\x28\x87\xee\x3b\xe1\x5c",
1da177e4
LT
1785 .rlen = 8,
1786 }, {
de224c30
SS
1787 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1788 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
1789 "\x00\x11\x22\x33\x44",
1da177e4 1790 .klen = 21,
de224c30 1791 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 1792 .ilen = 8,
de224c30 1793 .result = "\xe6\xf5\x1e\xd7\x9b\x9d\xb2\x1f",
1da177e4
LT
1794 .rlen = 8,
1795 }, { /* Generated with bf488 */
de224c30
SS
1796 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1797 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
1798 "\x00\x11\x22\x33\x44\x55\x66\x77"
1799 "\x04\x68\x91\x04\xc2\xfd\x3b\x2f"
1800 "\x58\x40\x23\x64\x1a\xba\x61\x76"
1801 "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e"
1802 "\xff\xff\xff\xff\xff\xff\xff\xff",
1da177e4 1803 .klen = 56,
de224c30 1804 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 1805 .ilen = 8,
de224c30 1806 .result = "\xc0\x45\x04\x01\x2e\x4e\x1f\x53",
1da177e4
LT
1807 .rlen = 8,
1808 },
1809};
1810
1811static struct cipher_testvec bf_dec_tv_template[] = {
1812 { /* DES test vectors from OpenSSL */
de224c30 1813 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 1814 .klen = 8,
de224c30 1815 .input = "\x4e\xf9\x97\x45\x61\x98\xdd\x78",
1da177e4 1816 .ilen = 8,
de224c30 1817 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
1818 .rlen = 8,
1819 }, {
de224c30 1820 .key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
1da177e4 1821 .klen = 8,
de224c30 1822 .input = "\xa7\x90\x79\x51\x08\xea\x3c\xae",
1da177e4 1823 .ilen = 8,
de224c30 1824 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
1825 .rlen = 8,
1826 }, {
de224c30 1827 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
1da177e4 1828 .klen = 8,
de224c30 1829 .input = "\xe8\x7a\x24\x4e\x2c\xc8\x5e\x82",
1da177e4 1830 .ilen = 8,
de224c30 1831 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4 1832 .rlen = 8,
ef2736fc 1833 }, { /* Vary the keylength... */
de224c30
SS
1834 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1835 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f",
1da177e4 1836 .klen = 16,
de224c30 1837 .input = "\x93\x14\x28\x87\xee\x3b\xe1\x5c",
1da177e4 1838 .ilen = 8,
de224c30 1839 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4
LT
1840 .rlen = 8,
1841 }, {
de224c30
SS
1842 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1843 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
1844 "\x00\x11\x22\x33\x44",
1da177e4 1845 .klen = 21,
de224c30 1846 .input = "\xe6\xf5\x1e\xd7\x9b\x9d\xb2\x1f",
1da177e4 1847 .ilen = 8,
de224c30 1848 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4
LT
1849 .rlen = 8,
1850 }, { /* Generated with bf488, using OpenSSL, Libgcrypt and Nettle */
de224c30
SS
1851 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1852 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
1853 "\x00\x11\x22\x33\x44\x55\x66\x77"
1854 "\x04\x68\x91\x04\xc2\xfd\x3b\x2f"
1855 "\x58\x40\x23\x64\x1a\xba\x61\x76"
1856 "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e"
1857 "\xff\xff\xff\xff\xff\xff\xff\xff",
1da177e4 1858 .klen = 56,
de224c30 1859 .input = "\xc0\x45\x04\x01\x2e\x4e\x1f\x53",
1da177e4 1860 .ilen = 8,
de224c30 1861 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1da177e4
LT
1862 .rlen = 8,
1863 },
1864};
1865
1866static struct cipher_testvec bf_cbc_enc_tv_template[] = {
1867 { /* From OpenSSL */
de224c30
SS
1868 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1869 "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
1da177e4 1870 .klen = 16,
de224c30
SS
1871 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1872 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
1873 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
1874 "\x68\x65\x20\x74\x69\x6d\x65\x20"
1875 "\x66\x6f\x72\x20\x00\x00\x00\x00",
1da177e4 1876 .ilen = 32,
de224c30
SS
1877 .result = "\x6b\x77\xb4\xd6\x30\x06\xde\xe6"
1878 "\x05\xb1\x56\xe2\x74\x03\x97\x93"
1879 "\x58\xde\xb9\xe7\x15\x46\x16\xd9"
1880 "\x59\xf1\x65\x2b\xd5\xff\x92\xcc",
1da177e4
LT
1881 .rlen = 32,
1882 },
1883};
1884
1885static struct cipher_testvec bf_cbc_dec_tv_template[] = {
1886 { /* From OpenSSL */
de224c30
SS
1887 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1888 "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
1da177e4 1889 .klen = 16,
de224c30
SS
1890 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1891 .input = "\x6b\x77\xb4\xd6\x30\x06\xde\xe6"
1892 "\x05\xb1\x56\xe2\x74\x03\x97\x93"
1893 "\x58\xde\xb9\xe7\x15\x46\x16\xd9"
1894 "\x59\xf1\x65\x2b\xd5\xff\x92\xcc",
1da177e4 1895 .ilen = 32,
de224c30
SS
1896 .result = "\x37\x36\x35\x34\x33\x32\x31\x20"
1897 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
1898 "\x68\x65\x20\x74\x69\x6d\x65\x20"
1899 "\x66\x6f\x72\x20\x00\x00\x00\x00",
1da177e4
LT
1900 .rlen = 32,
1901 },
1902};
1903
1904/*
1905 * Twofish test vectors.
1906 */
1907#define TF_ENC_TEST_VECTORS 3
1908#define TF_DEC_TEST_VECTORS 3
1909#define TF_CBC_ENC_TEST_VECTORS 4
1910#define TF_CBC_DEC_TEST_VECTORS 4
1911
1912static struct cipher_testvec tf_enc_tv_template[] = {
1913 {
de224c30 1914 .key = zeroed_string,
1da177e4 1915 .klen = 16,
de224c30 1916 .input = zeroed_string,
1da177e4 1917 .ilen = 16,
de224c30
SS
1918 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
1919 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1da177e4
LT
1920 .rlen = 16,
1921 }, {
de224c30
SS
1922 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1923 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
1924 "\x00\x11\x22\x33\x44\x55\x66\x77",
1da177e4 1925 .klen = 24,
de224c30 1926 .input = zeroed_string,
1da177e4 1927 .ilen = 16,
de224c30
SS
1928 .result = "\xcf\xd1\xd2\xe5\xa9\xbe\x9c\xdf"
1929 "\x50\x1f\x13\xb8\x92\xbd\x22\x48",
1da177e4
LT
1930 .rlen = 16,
1931 }, {
de224c30
SS
1932 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1933 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
1934 "\x00\x11\x22\x33\x44\x55\x66\x77"
1935 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4 1936 .klen = 32,
de224c30 1937 .input = zeroed_string,
1da177e4 1938 .ilen = 16,
de224c30
SS
1939 .result = "\x37\x52\x7b\xe0\x05\x23\x34\xb8"
1940 "\x9f\x0c\xfc\xca\xe8\x7c\xfa\x20",
1da177e4
LT
1941 .rlen = 16,
1942 },
1943};
1944
1945static struct cipher_testvec tf_dec_tv_template[] = {
1946 {
de224c30 1947 .key = zeroed_string,
1da177e4 1948 .klen = 16,
de224c30
SS
1949 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
1950 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1da177e4 1951 .ilen = 16,
de224c30 1952 .result = zeroed_string,
1da177e4
LT
1953 .rlen = 16,
1954 }, {
de224c30
SS
1955 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1956 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
1957 "\x00\x11\x22\x33\x44\x55\x66\x77",
1da177e4 1958 .klen = 24,
de224c30
SS
1959 .input = "\xcf\xd1\xd2\xe5\xa9\xbe\x9c\xdf"
1960 "\x50\x1f\x13\xb8\x92\xbd\x22\x48",
1da177e4 1961 .ilen = 16,
de224c30 1962 .result = zeroed_string,
1da177e4
LT
1963 .rlen = 16,
1964 }, {
de224c30
SS
1965 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1966 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
1967 "\x00\x11\x22\x33\x44\x55\x66\x77"
1968 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4 1969 .klen = 32,
de224c30
SS
1970 .input = "\x37\x52\x7b\xe0\x05\x23\x34\xb8"
1971 "\x9f\x0c\xfc\xca\xe8\x7c\xfa\x20",
1da177e4 1972 .ilen = 16,
de224c30 1973 .result = zeroed_string,
1da177e4
LT
1974 .rlen = 16,
1975 },
1976};
1977
1978static struct cipher_testvec tf_cbc_enc_tv_template[] = {
1979 { /* Generated with Nettle */
de224c30 1980 .key = zeroed_string,
1da177e4 1981 .klen = 16,
de224c30
SS
1982 .iv = zeroed_string,
1983 .input = zeroed_string,
1da177e4 1984 .ilen = 16,
de224c30
SS
1985 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
1986 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1da177e4
LT
1987 .rlen = 16,
1988 }, {
de224c30 1989 .key = zeroed_string,
1da177e4 1990 .klen = 16,
de224c30
SS
1991 .iv = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
1992 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1993 .input = zeroed_string,
1da177e4 1994 .ilen = 16,
de224c30
SS
1995 .result = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
1996 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
1da177e4
LT
1997 .rlen = 16,
1998 }, {
de224c30 1999 .key = zeroed_string,
1da177e4 2000 .klen = 16,
de224c30
SS
2001 .iv = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2002 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
2003 .input = zeroed_string,
1da177e4 2004 .ilen = 16,
de224c30
SS
2005 .result = "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2006 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
1da177e4
LT
2007 .rlen = 16,
2008 }, {
de224c30 2009 .key = zeroed_string,
1da177e4 2010 .klen = 16,
de224c30
SS
2011 .iv = zeroed_string,
2012 .input = zeroed_string,
1da177e4 2013 .ilen = 48,
de224c30
SS
2014 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2015 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a"
2016 "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2017 "\x86\xcb\x08\x6b\x78\x9f\x54\x19"
2018 "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2019 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
1da177e4
LT
2020 .rlen = 48,
2021 },
2022};
2023
2024static struct cipher_testvec tf_cbc_dec_tv_template[] = {
2025 { /* Reverse of the first four above */
de224c30 2026 .key = zeroed_string,
1da177e4 2027 .klen = 16,
de224c30
SS
2028 .iv = zeroed_string,
2029 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2030 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1da177e4 2031 .ilen = 16,
de224c30 2032 .result = zeroed_string,
1da177e4
LT
2033 .rlen = 16,
2034 }, {
de224c30 2035 .key = zeroed_string,
1da177e4 2036 .klen = 16,
de224c30
SS
2037 .iv = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2038 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
2039 .input = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2040 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
1da177e4 2041 .ilen = 16,
de224c30 2042 .result = zeroed_string,
1da177e4
LT
2043 .rlen = 16,
2044 }, {
de224c30 2045 .key = zeroed_string,
1da177e4 2046 .klen = 16,
de224c30
SS
2047 .iv = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2048 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
2049 .input = "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2050 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
1da177e4 2051 .ilen = 16,
de224c30 2052 .result = zeroed_string,
1da177e4
LT
2053 .rlen = 16,
2054 }, {
de224c30 2055 .key = zeroed_string,
1da177e4 2056 .klen = 16,
de224c30
SS
2057 .iv = zeroed_string,
2058 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2059 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a"
2060 "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2061 "\x86\xcb\x08\x6b\x78\x9f\x54\x19"
2062 "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2063 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
1da177e4 2064 .ilen = 48,
de224c30 2065 .result = zeroed_string,
1da177e4
LT
2066 .rlen = 48,
2067 },
2068};
2069
2070/*
2071 * Serpent test vectors. These are backwards because Serpent writes
2072 * octet sequences in right-to-left mode.
2073 */
2074#define SERPENT_ENC_TEST_VECTORS 4
2075#define SERPENT_DEC_TEST_VECTORS 4
2076
2077#define TNEPRES_ENC_TEST_VECTORS 4
2078#define TNEPRES_DEC_TEST_VECTORS 4
2079
ef2736fc 2080static struct cipher_testvec serpent_enc_tv_template[] = {
1da177e4 2081 {
de224c30
SS
2082 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2083 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2084 .ilen = 16,
de224c30
SS
2085 .result = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
2086 "\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
1da177e4
LT
2087 .rlen = 16,
2088 }, {
de224c30
SS
2089 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2090 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2091 .klen = 16,
de224c30
SS
2092 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2093 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2094 .ilen = 16,
de224c30
SS
2095 .result = "\x4c\x7d\x8a\x32\x80\x72\xa2\x2c"
2096 "\x82\x3e\x4a\x1f\x3a\xcd\xa1\x6d",
1da177e4
LT
2097 .rlen = 16,
2098 }, {
de224c30
SS
2099 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2100 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2101 "\x10\x11\x12\x13\x14\x15\x16\x17"
2102 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1da177e4 2103 .klen = 32,
de224c30
SS
2104 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2105 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2106 .ilen = 16,
de224c30
SS
2107 .result = "\xde\x26\x9f\xf8\x33\xe4\x32\xb8"
2108 "\x5b\x2e\x88\xd2\x70\x1c\xe7\x5c",
1da177e4
LT
2109 .rlen = 16,
2110 }, {
de224c30 2111 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
1da177e4 2112 .klen = 16,
de224c30 2113 .input = zeroed_string,
1da177e4 2114 .ilen = 16,
de224c30
SS
2115 .result = "\xdd\xd2\x6b\x98\xa5\xff\xd8\x2c"
2116 "\x05\x34\x5a\x9d\xad\xbf\xaf\x49",
1da177e4
LT
2117 .rlen = 16,
2118 },
2119};
2120
ef2736fc 2121static struct cipher_testvec tnepres_enc_tv_template[] = {
1da177e4 2122 { /* KeySize=128, PT=0, I=1 */
de224c30
SS
2123 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2124 "\x00\x00\x00\x00\x00\x00\x00\x00",
2125 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2126 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
2127 .klen = 16,
2128 .ilen = 16,
de224c30
SS
2129 .result = "\x49\xaf\xbf\xad\x9d\x5a\x34\x05"
2130 "\x2c\xd8\xff\xa5\x98\x6b\xd2\xdd",
1da177e4
LT
2131 .rlen = 16,
2132 }, { /* KeySize=192, PT=0, I=1 */
de224c30
SS
2133 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2134 "\x00\x00\x00\x00\x00\x00\x00\x00"
2135 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2136 .klen = 24,
de224c30
SS
2137 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2138 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2139 .ilen = 16,
de224c30
SS
2140 .result = "\xe7\x8e\x54\x02\xc7\x19\x55\x68"
2141 "\xac\x36\x78\xf7\xa3\xf6\x0c\x66",
1da177e4
LT
2142 .rlen = 16,
2143 }, { /* KeySize=256, PT=0, I=1 */
de224c30
SS
2144 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2145 "\x00\x00\x00\x00\x00\x00\x00\x00"
2146 "\x00\x00\x00\x00\x00\x00\x00\x00"
2147 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2148 .klen = 32,
de224c30
SS
2149 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2150 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 2151 .ilen = 16,
de224c30
SS
2152 .result = "\xab\xed\x96\xe7\x66\xbf\x28\xcb"
2153 "\xc0\xeb\xd2\x1a\x82\xef\x08\x19",
1da177e4
LT
2154 .rlen = 16,
2155 }, { /* KeySize=256, I=257 */
de224c30
SS
2156 .key = "\x1f\x1e\x1d\x1c\x1b\x1a\x19\x18"
2157 "\x17\x16\x15\x14\x13\x12\x11\x10"
2158 "\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08"
2159 "\x07\x06\x05\x04\x03\x02\x01\x00",
1da177e4 2160 .klen = 32,
de224c30
SS
2161 .input = "\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08"
2162 "\x07\x06\x05\x04\x03\x02\x01\x00",
1da177e4 2163 .ilen = 16,
de224c30
SS
2164 .result = "\x5c\xe7\x1c\x70\xd2\x88\x2e\x5b"
2165 "\xb8\x32\xe4\x33\xf8\x9f\x26\xde",
1da177e4
LT
2166 .rlen = 16,
2167 },
2168};
2169
2170
ef2736fc 2171static struct cipher_testvec serpent_dec_tv_template[] = {
1da177e4 2172 {
de224c30
SS
2173 .input = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
2174 "\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
1da177e4 2175 .ilen = 16,
de224c30
SS
2176 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2177 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2178 .rlen = 16,
2179 }, {
de224c30
SS
2180 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2181 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2182 .klen = 16,
de224c30
SS
2183 .input = "\x4c\x7d\x8a\x32\x80\x72\xa2\x2c"
2184 "\x82\x3e\x4a\x1f\x3a\xcd\xa1\x6d",
1da177e4 2185 .ilen = 16,
de224c30
SS
2186 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2187 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2188 .rlen = 16,
2189 }, {
de224c30
SS
2190 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2191 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2192 "\x10\x11\x12\x13\x14\x15\x16\x17"
2193 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1da177e4 2194 .klen = 32,
de224c30
SS
2195 .input = "\xde\x26\x9f\xf8\x33\xe4\x32\xb8"
2196 "\x5b\x2e\x88\xd2\x70\x1c\xe7\x5c",
1da177e4 2197 .ilen = 16,
de224c30
SS
2198 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2199 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2200 .rlen = 16,
2201 }, {
de224c30 2202 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
1da177e4 2203 .klen = 16,
de224c30
SS
2204 .input = "\xdd\xd2\x6b\x98\xa5\xff\xd8\x2c"
2205 "\x05\x34\x5a\x9d\xad\xbf\xaf\x49",
1da177e4 2206 .ilen = 16,
de224c30 2207 .result = zeroed_string,
1da177e4
LT
2208 .rlen = 16,
2209 },
2210};
2211
ef2736fc 2212static struct cipher_testvec tnepres_dec_tv_template[] = {
1da177e4 2213 {
de224c30
SS
2214 .input = "\x41\xcc\x6b\x31\x59\x31\x45\x97"
2215 "\x6d\x6f\xbb\x38\x4b\x37\x21\x28",
1da177e4 2216 .ilen = 16,
de224c30
SS
2217 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2218 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2219 .rlen = 16,
2220 }, {
de224c30
SS
2221 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2222 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2223 .klen = 16,
de224c30
SS
2224 .input = "\xea\xf4\xd7\xfc\xd8\x01\x34\x47"
2225 "\x81\x45\x0b\xfa\x0c\xd6\xad\x6e",
1da177e4 2226 .ilen = 16,
de224c30
SS
2227 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2228 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2229 .rlen = 16,
2230 }, {
de224c30
SS
2231 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2232 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2233 "\x10\x11\x12\x13\x14\x15\x16\x17"
2234 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1da177e4 2235 .klen = 32,
de224c30
SS
2236 .input = "\x64\xa9\x1a\x37\xed\x9f\xe7\x49"
2237 "\xa8\x4e\x76\xd6\xf5\x0d\x78\xee",
1da177e4 2238 .ilen = 16,
de224c30
SS
2239 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2240 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4
LT
2241 .rlen = 16,
2242 }, { /* KeySize=128, I=121 */
de224c30 2243 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
1da177e4 2244 .klen = 16,
de224c30
SS
2245 .input = "\x3d\xda\xbf\xc0\x06\xda\xab\x06"
2246 "\x46\x2a\xf4\xef\x81\x54\x4e\x26",
1da177e4 2247 .ilen = 16,
de224c30 2248 .result = zeroed_string,
1da177e4
LT
2249 .rlen = 16,
2250 },
2251};
2252
2253
2254/* Cast6 test vectors from RFC 2612 */
2255#define CAST6_ENC_TEST_VECTORS 3
2256#define CAST6_DEC_TEST_VECTORS 3
2257
ef2736fc 2258static struct cipher_testvec cast6_enc_tv_template[] = {
1da177e4 2259 {
de224c30
SS
2260 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2261 "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
1da177e4 2262 .klen = 16,
de224c30 2263 .input = zeroed_string,
1da177e4 2264 .ilen = 16,
de224c30
SS
2265 .result = "\xc8\x42\xa0\x89\x72\xb4\x3d\x20"
2266 "\x83\x6c\x91\xd1\xb7\x53\x0f\x6b",
1da177e4
LT
2267 .rlen = 16,
2268 }, {
de224c30
SS
2269 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2270 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2271 "\xba\xc7\x7a\x77\x17\x94\x28\x63",
1da177e4 2272 .klen = 24,
de224c30 2273 .input = zeroed_string,
1da177e4 2274 .ilen = 16,
de224c30
SS
2275 .result = "\x1b\x38\x6c\x02\x10\xdc\xad\xcb"
2276 "\xdd\x0e\x41\xaa\x08\xa7\xa7\xe8",
1da177e4
LT
2277 .rlen = 16,
2278 }, {
de224c30
SS
2279 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2280 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2281 "\x8d\x7c\x47\xce\x26\x49\x08\x46"
2282 "\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04",
1da177e4 2283 .klen = 32,
de224c30 2284 .input = zeroed_string,
1da177e4 2285 .ilen = 16,
de224c30
SS
2286 .result = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
2287 "\xc9\x87\x01\x36\x55\x33\x17\xfa",
1da177e4
LT
2288 .rlen = 16,
2289 },
2290};
2291
ef2736fc 2292static struct cipher_testvec cast6_dec_tv_template[] = {
1da177e4 2293 {
de224c30
SS
2294 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2295 "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
1da177e4 2296 .klen = 16,
de224c30
SS
2297 .input = "\xc8\x42\xa0\x89\x72\xb4\x3d\x20"
2298 "\x83\x6c\x91\xd1\xb7\x53\x0f\x6b",
1da177e4 2299 .ilen = 16,
de224c30 2300 .result = zeroed_string,
1da177e4
LT
2301 .rlen = 16,
2302 }, {
de224c30
SS
2303 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2304 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2305 "\xba\xc7\x7a\x77\x17\x94\x28\x63",
1da177e4 2306 .klen = 24,
de224c30
SS
2307 .input = "\x1b\x38\x6c\x02\x10\xdc\xad\xcb"
2308 "\xdd\x0e\x41\xaa\x08\xa7\xa7\xe8",
1da177e4 2309 .ilen = 16,
de224c30 2310 .result = zeroed_string,
1da177e4
LT
2311 .rlen = 16,
2312 }, {
de224c30
SS
2313 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2314 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2315 "\x8d\x7c\x47\xce\x26\x49\x08\x46"
2316 "\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04",
1da177e4 2317 .klen = 32,
de224c30
SS
2318 .input = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
2319 "\xc9\x87\x01\x36\x55\x33\x17\xfa",
1da177e4 2320 .ilen = 16,
de224c30 2321 .result = zeroed_string,
1da177e4
LT
2322 .rlen = 16,
2323 },
2324};
2325
2326
2327/*
2328 * AES test vectors.
2329 */
2330#define AES_ENC_TEST_VECTORS 3
2331#define AES_DEC_TEST_VECTORS 3
9617d6ef
JG
2332#define AES_CBC_ENC_TEST_VECTORS 4
2333#define AES_CBC_DEC_TEST_VECTORS 4
f3d1044c
RS
2334#define AES_LRW_ENC_TEST_VECTORS 8
2335#define AES_LRW_DEC_TEST_VECTORS 8
f19f5111
RS
2336#define AES_XTS_ENC_TEST_VECTORS 4
2337#define AES_XTS_DEC_TEST_VECTORS 4
a773edb3 2338#define AES_CTR_ENC_TEST_VECTORS 7
23e353c8 2339#define AES_CTR_DEC_TEST_VECTORS 6
28db8e3e
MH
2340#define AES_GCM_ENC_TEST_VECTORS 9
2341#define AES_GCM_DEC_TEST_VECTORS 8
93cc74e0
JL
2342#define AES_CCM_ENC_TEST_VECTORS 7
2343#define AES_CCM_DEC_TEST_VECTORS 7
1da177e4 2344
ef2736fc 2345static struct cipher_testvec aes_enc_tv_template[] = {
1da177e4 2346 { /* From FIPS-197 */
de224c30
SS
2347 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2348 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2349 .klen = 16,
de224c30
SS
2350 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2351 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4 2352 .ilen = 16,
de224c30
SS
2353 .result = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
2354 "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
1da177e4
LT
2355 .rlen = 16,
2356 }, {
de224c30
SS
2357 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2358 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2359 "\x10\x11\x12\x13\x14\x15\x16\x17",
1da177e4 2360 .klen = 24,
de224c30
SS
2361 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2362 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4 2363 .ilen = 16,
de224c30
SS
2364 .result = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
2365 "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
1da177e4
LT
2366 .rlen = 16,
2367 }, {
de224c30
SS
2368 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2369 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2370 "\x10\x11\x12\x13\x14\x15\x16\x17"
2371 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1da177e4 2372 .klen = 32,
de224c30
SS
2373 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2374 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4 2375 .ilen = 16,
de224c30
SS
2376 .result = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
2377 "\xea\xfc\x49\x90\x4b\x49\x60\x89",
1da177e4
LT
2378 .rlen = 16,
2379 },
2380};
2381
ef2736fc 2382static struct cipher_testvec aes_dec_tv_template[] = {
1da177e4 2383 { /* From FIPS-197 */
de224c30
SS
2384 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2385 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1da177e4 2386 .klen = 16,
de224c30
SS
2387 .input = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
2388 "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
1da177e4 2389 .ilen = 16,
de224c30
SS
2390 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2391 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4
LT
2392 .rlen = 16,
2393 }, {
de224c30
SS
2394 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2395 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2396 "\x10\x11\x12\x13\x14\x15\x16\x17",
1da177e4 2397 .klen = 24,
de224c30
SS
2398 .input = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
2399 "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
1da177e4 2400 .ilen = 16,
de224c30
SS
2401 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2402 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4
LT
2403 .rlen = 16,
2404 }, {
de224c30
SS
2405 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2406 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2407 "\x10\x11\x12\x13\x14\x15\x16\x17"
2408 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1da177e4 2409 .klen = 32,
de224c30
SS
2410 .input = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
2411 "\xea\xfc\x49\x90\x4b\x49\x60\x89",
1da177e4 2412 .ilen = 16,
de224c30
SS
2413 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2414 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
1da177e4
LT
2415 .rlen = 16,
2416 },
2417};
2418
05f29fcd
JG
2419static struct cipher_testvec aes_cbc_enc_tv_template[] = {
2420 { /* From RFC 3602 */
de224c30
SS
2421 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
2422 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
05f29fcd 2423 .klen = 16,
de224c30
SS
2424 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
2425 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
2426 .input = "Single block msg",
05f29fcd 2427 .ilen = 16,
de224c30
SS
2428 .result = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
2429 "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
05f29fcd
JG
2430 .rlen = 16,
2431 }, {
de224c30
SS
2432 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
2433 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
05f29fcd 2434 .klen = 16,
de224c30
SS
2435 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
2436 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
2437 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2438 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2439 "\x10\x11\x12\x13\x14\x15\x16\x17"
2440 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
05f29fcd 2441 .ilen = 32,
de224c30
SS
2442 .result = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
2443 "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
2444 "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
2445 "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
05f29fcd 2446 .rlen = 32,
9617d6ef 2447 }, { /* From NIST SP800-38A */
de224c30
SS
2448 .key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
2449 "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
2450 "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
9617d6ef 2451 .klen = 24,
de224c30
SS
2452 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2453 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2454 .input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2455 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2456 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2457 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2458 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2459 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2460 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2461 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
9617d6ef 2462 .ilen = 64,
de224c30
SS
2463 .result = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
2464 "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
2465 "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
2466 "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
2467 "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
2468 "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
2469 "\x08\xb0\xe2\x79\x88\x59\x88\x81"
2470 "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
9617d6ef
JG
2471 .rlen = 64,
2472 }, {
de224c30
SS
2473 .key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
2474 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
2475 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
2476 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
9617d6ef 2477 .klen = 32,
de224c30
SS
2478 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2479 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2480 .input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2481 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2482 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2483 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2484 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2485 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2486 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2487 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
9617d6ef 2488 .ilen = 64,
de224c30
SS
2489 .result = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
2490 "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
2491 "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
2492 "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
2493 "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
2494 "\xa5\x30\xe2\x63\x04\x23\x14\x61"
2495 "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
2496 "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
9617d6ef 2497 .rlen = 64,
05f29fcd
JG
2498 },
2499};
2500
2501static struct cipher_testvec aes_cbc_dec_tv_template[] = {
2502 { /* From RFC 3602 */
de224c30
SS
2503 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
2504 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
05f29fcd 2505 .klen = 16,
de224c30
SS
2506 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
2507 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
2508 .input = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
2509 "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
05f29fcd 2510 .ilen = 16,
de224c30 2511 .result = "Single block msg",
05f29fcd
JG
2512 .rlen = 16,
2513 }, {
de224c30
SS
2514 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
2515 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
05f29fcd 2516 .klen = 16,
de224c30
SS
2517 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
2518 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
2519 .input = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
2520 "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
2521 "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
2522 "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
05f29fcd 2523 .ilen = 32,
de224c30
SS
2524 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2525 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2526 "\x10\x11\x12\x13\x14\x15\x16\x17"
2527 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
05f29fcd 2528 .rlen = 32,
9617d6ef 2529 }, { /* From NIST SP800-38A */
de224c30
SS
2530 .key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
2531 "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
2532 "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
9617d6ef 2533 .klen = 24,
de224c30
SS
2534 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2535 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2536 .input = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
2537 "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
2538 "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
2539 "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
2540 "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
2541 "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
2542 "\x08\xb0\xe2\x79\x88\x59\x88\x81"
2543 "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
9617d6ef 2544 .ilen = 64,
de224c30
SS
2545 .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2546 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2547 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2548 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2549 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2550 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2551 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2552 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
9617d6ef
JG
2553 .rlen = 64,
2554 }, {
de224c30
SS
2555 .key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
2556 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
2557 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
2558 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
9617d6ef 2559 .klen = 32,
de224c30
SS
2560 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2561 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2562 .input = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
2563 "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
2564 "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
2565 "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
2566 "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
2567 "\xa5\x30\xe2\x63\x04\x23\x14\x61"
2568 "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
2569 "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
9617d6ef 2570 .ilen = 64,
de224c30
SS
2571 .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2572 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2573 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2574 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2575 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2576 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2577 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2578 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
9617d6ef 2579 .rlen = 64,
05f29fcd
JG
2580 },
2581};
2582
f3d1044c
RS
2583static struct cipher_testvec aes_lrw_enc_tv_template[] = {
2584 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
2585 { /* LRW-32-AES 1 */
de224c30
SS
2586 .key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
2587 "\x4c\x26\x84\x14\xb5\x68\x01\x85"
2588 "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
2589 "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
f3d1044c 2590 .klen = 32,
de224c30
SS
2591 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2592 "\x00\x00\x00\x00\x00\x00\x00\x01",
2593 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2594 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 2595 .ilen = 16,
de224c30
SS
2596 .result = "\xf1\xb2\x73\xcd\x65\xa3\xdf\x5f"
2597 "\xe9\x5d\x48\x92\x54\x63\x4e\xb8",
f3d1044c
RS
2598 .rlen = 16,
2599 }, { /* LRW-32-AES 2 */
de224c30
SS
2600 .key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
2601 "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
2602 "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
2603 "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
f3d1044c 2604 .klen = 32,
de224c30
SS
2605 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2606 "\x00\x00\x00\x00\x00\x00\x00\x02",
2607 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2608 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 2609 .ilen = 16,
de224c30
SS
2610 .result = "\x00\xc8\x2b\xae\x95\xbb\xcd\xe5"
2611 "\x27\x4f\x07\x69\xb2\x60\xe1\x36",
f3d1044c
RS
2612 .rlen = 16,
2613 }, { /* LRW-32-AES 3 */
de224c30
SS
2614 .key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
2615 "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
2616 "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
2617 "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
f3d1044c 2618 .klen = 32,
de224c30
SS
2619 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2620 "\x00\x00\x00\x02\x00\x00\x00\x00",
2621 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2622 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 2623 .ilen = 16,
de224c30
SS
2624 .result = "\x76\x32\x21\x83\xed\x8f\xf1\x82"
2625 "\xf9\x59\x62\x03\x69\x0e\x5e\x01",
f3d1044c
RS
2626 .rlen = 16,
2627 }, { /* LRW-32-AES 4 */
de224c30
SS
2628 .key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
2629 "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
2630 "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
2631 "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
2632 "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
f3d1044c 2633 .klen = 40,
de224c30
SS
2634 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2635 "\x00\x00\x00\x00\x00\x00\x00\x01",
2636 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2637 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 2638 .ilen = 16,
de224c30
SS
2639 .result = "\x9c\x0f\x15\x2f\x55\xa2\xd8\xf0"
2640 "\xd6\x7b\x8f\x9e\x28\x22\xbc\x41",
f3d1044c
RS
2641 .rlen = 16,
2642 }, { /* LRW-32-AES 5 */
de224c30
SS
2643 .key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
2644 "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
2645 "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
2646 "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
2647 "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
f3d1044c 2648 .klen = 40,
de224c30
SS
2649 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2650 "\x00\x00\x00\x02\x00\x00\x00\x00",
2651 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2652 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 2653 .ilen = 16,
de224c30
SS
2654 .result = "\xd4\x27\x6a\x7f\x14\x91\x3d\x65"
2655 "\xc8\x60\x48\x02\x87\xe3\x34\x06",
f3d1044c
RS
2656 .rlen = 16,
2657 }, { /* LRW-32-AES 6 */
de224c30
SS
2658 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
2659 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
2660 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
2661 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
2662 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
2663 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
f3d1044c 2664 .klen = 48,
de224c30
SS
2665 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2666 "\x00\x00\x00\x00\x00\x00\x00\x01",
2667 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2668 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 2669 .ilen = 16,
de224c30
SS
2670 .result = "\xbd\x06\xb8\xe1\xdb\x98\x89\x9e"
2671 "\xc4\x98\xe4\x91\xcf\x1c\x70\x2b",
f3d1044c
RS
2672 .rlen = 16,
2673 }, { /* LRW-32-AES 7 */
de224c30
SS
2674 .key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
2675 "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
2676 "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
2677 "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
2678 "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
2679 "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
f3d1044c 2680 .klen = 48,
de224c30
SS
2681 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2682 "\x00\x00\x00\x02\x00\x00\x00\x00",
2683 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2684 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c 2685 .ilen = 16,
de224c30
SS
2686 .result = "\x5b\x90\x8e\xc1\xab\xdd\x67\x5f"
2687 "\x3d\x69\x8a\x95\x53\xc8\x9c\xe5",
f3d1044c
RS
2688 .rlen = 16,
2689 }, {
2690/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
de224c30
SS
2691 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
2692 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
2693 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
2694 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
2695 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
2696 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
f3d1044c 2697 .klen = 48,
de224c30
SS
2698 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2699 "\x00\x00\x00\x00\x00\x00\x00\x01",
2700 .input = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
2701 "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
2702 "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
2703 "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
2704 "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
2705 "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
2706 "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
2707 "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
2708 "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
2709 "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
2710 "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
2711 "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
2712 "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
2713 "\x4c\x96\x12\xed\x7c\x92\x03\x01"
2714 "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
2715 "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
2716 "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
2717 "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
2718 "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
2719 "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
2720 "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
2721 "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
2722 "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
2723 "\x76\x12\x73\x44\x1a\x56\xd7\x72"
2724 "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
2725 "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
2726 "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
2727 "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
2728 "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
2729 "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
2730 "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
2731 "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
2732 "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
2733 "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
2734 "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
2735 "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
2736 "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
2737 "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
2738 "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
2739 "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
2740 "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
2741 "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
2742 "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
2743 "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
2744 "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
2745 "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
2746 "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
2747 "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
2748 "\x62\x73\x65\xfd\x46\x63\x25\x3d"
2749 "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
2750 "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
2751 "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
2752 "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
2753 "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
2754 "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
2755 "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
2756 "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
2757 "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
2758 "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
2759 "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
2760 "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
2761 "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
2762 "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
2763 "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
f3d1044c 2764 .ilen = 512,
de224c30
SS
2765 .result = "\x1a\x1d\xa9\x30\xad\xf9\x2f\x9b"
2766 "\xb6\x1d\xae\xef\xf0\x2f\xf8\x5a"
2767 "\x39\x3c\xbf\x2a\xb2\x45\xb2\x23"
2768 "\x1b\x63\x3c\xcf\xaa\xbe\xcf\x4e"
2769 "\xfa\xe8\x29\xc2\x20\x68\x2b\x3c"
2770 "\x2e\x8b\xf7\x6e\x25\xbd\xe3\x3d"
2771 "\x66\x27\xd6\xaf\xd6\x64\x3e\xe3"
2772 "\xe8\x58\x46\x97\x39\x51\x07\xde"
2773 "\xcb\x37\xbc\xa9\xc0\x5f\x75\xc3"
2774 "\x0e\x84\x23\x1d\x16\xd4\x1c\x59"
2775 "\x9c\x1a\x02\x55\xab\x3a\x97\x1d"
2776 "\xdf\xdd\xc7\x06\x51\xd7\x70\xae"
2777 "\x23\xc6\x8c\xf5\x1e\xa0\xe5\x82"
2778 "\xb8\xb2\xbf\x04\xa0\x32\x8e\x68"
2779 "\xeb\xaf\x6e\x2d\x94\x22\x2f\xce"
2780 "\x4c\xb5\x59\xe2\xa2\x2f\xa0\x98"
2781 "\x1a\x97\xc6\xd4\xb5\x00\x59\xf2"
2782 "\x84\x14\x72\xb1\x9a\x6e\xa3\x7f"
2783 "\xea\x20\xe7\xcb\x65\x77\x3a\xdf"
2784 "\xc8\x97\x67\x15\xc2\x2a\x27\xcc"
2785 "\x18\x55\xa1\x24\x0b\x24\x24\xaf"
2786 "\x5b\xec\x68\xb8\xc8\xf5\xba\x63"
2787 "\xff\xed\x89\xce\xd5\x3d\x88\xf3"
2788 "\x25\xef\x05\x7c\x3a\xef\xeb\xd8"
2789 "\x7a\x32\x0d\xd1\x1e\x58\x59\x99"
2790 "\x90\x25\xb5\x26\xb0\xe3\x2b\x6c"
2791 "\x4c\xa9\x8b\x84\x4f\x5e\x01\x50"
2792 "\x41\x30\x58\xc5\x62\x74\x52\x1d"
2793 "\x45\x24\x6a\x42\x64\x4f\x97\x1c"
2794 "\xa8\x66\xb5\x6d\x79\xd4\x0d\x48"
2795 "\xc5\x5f\xf3\x90\x32\xdd\xdd\xe1"
2796 "\xe4\xa9\x9f\xfc\xc3\x52\x5a\x46"
2797 "\xe4\x81\x84\x95\x36\x59\x7a\x6b"
2798 "\xaa\xb3\x60\xad\xce\x9f\x9f\x28"
2799 "\xe0\x01\x75\x22\xc4\x4e\xa9\x62"
2800 "\x5c\x62\x0d\x00\xcb\x13\xe8\x43"
2801 "\x72\xd4\x2d\x53\x46\xb5\xd1\x16"
2802 "\x22\x18\xdf\x34\x33\xf5\xd6\x1c"
2803 "\xb8\x79\x78\x97\x94\xff\x72\x13"
2804 "\x4c\x27\xfc\xcb\xbf\x01\x53\xa6"
2805 "\xb4\x50\x6e\xde\xdf\xb5\x43\xa4"
2806 "\x59\xdf\x52\xf9\x7c\xe0\x11\x6f"
2807 "\x2d\x14\x8e\x24\x61\x2c\xe1\x17"
2808 "\xcc\xce\x51\x0c\x19\x8a\x82\x30"
2809 "\x94\xd5\x3d\x6a\x53\x06\x5e\xbd"
2810 "\xb7\xeb\xfa\xfd\x27\x51\xde\x85"
2811 "\x1e\x86\x53\x11\x53\x94\x00\xee"
2812 "\x2b\x8c\x08\x2a\xbf\xdd\xae\x11"
2813 "\xcb\x1e\xa2\x07\x9a\x80\xcf\x62"
2814 "\x9b\x09\xdc\x95\x3c\x96\x8e\xb1"
2815 "\x09\xbd\xe4\xeb\xdb\xca\x70\x7a"
2816 "\x9e\xfa\x31\x18\x45\x3c\x21\x33"
2817 "\xb0\xb3\x2b\xea\xf3\x71\x2d\xe1"
2818 "\x03\xad\x1b\x48\xd4\x67\x27\xf0"
2819 "\x62\xe4\x3d\xfb\x9b\x08\x76\xe7"
2820 "\xdd\x2b\x01\x39\x04\x5a\x58\x7a"
2821 "\xf7\x11\x90\xec\xbd\x51\x5c\x32"
2822 "\x6b\xd7\x35\x39\x02\x6b\xf2\xa6"
2823 "\xd0\x0d\x07\xe1\x06\xc4\x5b\x7d"
2824 "\xe4\x6a\xd7\xee\x15\x1f\x83\xb4"
2825 "\xa3\xa7\x5e\xc3\x90\xb7\xef\xd3"
2826 "\xb7\x4f\xf8\x92\x4c\xb7\x3c\x29"
2827 "\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
2828 "\x74\x3f\x7d\x58\x88\x75\xde\x3e",
f3d1044c
RS
2829 .rlen = 512,
2830 }
2831};
2832
2833static struct cipher_testvec aes_lrw_dec_tv_template[] = {
2834 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
2835 /* same as enc vectors with input and result reversed */
2836 { /* LRW-32-AES 1 */
de224c30
SS
2837 .key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
2838 "\x4c\x26\x84\x14\xb5\x68\x01\x85"
2839 "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
2840 "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
f3d1044c 2841 .klen = 32,
de224c30
SS
2842 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2843 "\x00\x00\x00\x00\x00\x00\x00\x01",
2844 .input = "\xf1\xb2\x73\xcd\x65\xa3\xdf\x5f"
2845 "\xe9\x5d\x48\x92\x54\x63\x4e\xb8",
f3d1044c 2846 .ilen = 16,
de224c30
SS
2847 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2848 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
2849 .rlen = 16,
2850 }, { /* LRW-32-AES 2 */
de224c30
SS
2851 .key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
2852 "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
2853 "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
2854 "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
f3d1044c 2855 .klen = 32,
de224c30
SS
2856 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2857 "\x00\x00\x00\x00\x00\x00\x00\x02",
2858 .input = "\x00\xc8\x2b\xae\x95\xbb\xcd\xe5"
2859 "\x27\x4f\x07\x69\xb2\x60\xe1\x36",
f3d1044c 2860 .ilen = 16,
de224c30
SS
2861 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2862 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
2863 .rlen = 16,
2864 }, { /* LRW-32-AES 3 */
de224c30
SS
2865 .key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
2866 "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
2867 "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
2868 "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
f3d1044c 2869 .klen = 32,
de224c30
SS
2870 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2871 "\x00\x00\x00\x02\x00\x00\x00\x00",
2872 .input = "\x76\x32\x21\x83\xed\x8f\xf1\x82"
2873 "\xf9\x59\x62\x03\x69\x0e\x5e\x01",
f3d1044c 2874 .ilen = 16,
de224c30
SS
2875 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2876 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
2877 .rlen = 16,
2878 }, { /* LRW-32-AES 4 */
de224c30
SS
2879 .key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
2880 "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
2881 "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
2882 "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
2883 "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
f3d1044c 2884 .klen = 40,
de224c30
SS
2885 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2886 "\x00\x00\x00\x00\x00\x00\x00\x01",
2887 .input = "\x9c\x0f\x15\x2f\x55\xa2\xd8\xf0"
2888 "\xd6\x7b\x8f\x9e\x28\x22\xbc\x41",
f3d1044c 2889 .ilen = 16,
de224c30
SS
2890 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2891 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
2892 .rlen = 16,
2893 }, { /* LRW-32-AES 5 */
de224c30
SS
2894 .key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
2895 "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
2896 "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
2897 "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
2898 "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
f3d1044c 2899 .klen = 40,
de224c30
SS
2900 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2901 "\x00\x00\x00\x02\x00\x00\x00\x00",
2902 .input = "\xd4\x27\x6a\x7f\x14\x91\x3d\x65"
2903 "\xc8\x60\x48\x02\x87\xe3\x34\x06",
f3d1044c 2904 .ilen = 16,
de224c30
SS
2905 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2906 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
2907 .rlen = 16,
2908 }, { /* LRW-32-AES 6 */
de224c30
SS
2909 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
2910 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
2911 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
2912 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
2913 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
2914 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
f3d1044c 2915 .klen = 48,
de224c30
SS
2916 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2917 "\x00\x00\x00\x00\x00\x00\x00\x01",
2918 .input = "\xbd\x06\xb8\xe1\xdb\x98\x89\x9e"
2919 "\xc4\x98\xe4\x91\xcf\x1c\x70\x2b",
f3d1044c 2920 .ilen = 16,
de224c30
SS
2921 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2922 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
2923 .rlen = 16,
2924 }, { /* LRW-32-AES 7 */
de224c30
SS
2925 .key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
2926 "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
2927 "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
2928 "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
2929 "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
2930 "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
f3d1044c 2931 .klen = 48,
de224c30
SS
2932 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2933 "\x00\x00\x00\x02\x00\x00\x00\x00",
2934 .input = "\x5b\x90\x8e\xc1\xab\xdd\x67\x5f"
2935 "\x3d\x69\x8a\x95\x53\xc8\x9c\xe5",
f3d1044c 2936 .ilen = 16,
de224c30
SS
2937 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2938 "\x38\x39\x41\x42\x43\x44\x45\x46",
f3d1044c
RS
2939 .rlen = 16,
2940 }, {
2941/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
de224c30
SS
2942 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
2943 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
2944 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
2945 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
2946 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
2947 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
f3d1044c 2948 .klen = 48,
de224c30
SS
2949 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2950 "\x00\x00\x00\x00\x00\x00\x00\x01",
2951 .input = "\x1a\x1d\xa9\x30\xad\xf9\x2f\x9b"
2952 "\xb6\x1d\xae\xef\xf0\x2f\xf8\x5a"
2953 "\x39\x3c\xbf\x2a\xb2\x45\xb2\x23"
2954 "\x1b\x63\x3c\xcf\xaa\xbe\xcf\x4e"
2955 "\xfa\xe8\x29\xc2\x20\x68\x2b\x3c"
2956 "\x2e\x8b\xf7\x6e\x25\xbd\xe3\x3d"
2957 "\x66\x27\xd6\xaf\xd6\x64\x3e\xe3"
2958 "\xe8\x58\x46\x97\x39\x51\x07\xde"
2959 "\xcb\x37\xbc\xa9\xc0\x5f\x75\xc3"
2960 "\x0e\x84\x23\x1d\x16\xd4\x1c\x59"
2961 "\x9c\x1a\x02\x55\xab\x3a\x97\x1d"
2962 "\xdf\xdd\xc7\x06\x51\xd7\x70\xae"
2963 "\x23\xc6\x8c\xf5\x1e\xa0\xe5\x82"
2964 "\xb8\xb2\xbf\x04\xa0\x32\x8e\x68"
2965 "\xeb\xaf\x6e\x2d\x94\x22\x2f\xce"
2966 "\x4c\xb5\x59\xe2\xa2\x2f\xa0\x98"
2967 "\x1a\x97\xc6\xd4\xb5\x00\x59\xf2"
2968 "\x84\x14\x72\xb1\x9a\x6e\xa3\x7f"
2969 "\xea\x20\xe7\xcb\x65\x77\x3a\xdf"
2970 "\xc8\x97\x67\x15\xc2\x2a\x27\xcc"
2971 "\x18\x55\xa1\x24\x0b\x24\x24\xaf"
2972 "\x5b\xec\x68\xb8\xc8\xf5\xba\x63"
2973 "\xff\xed\x89\xce\xd5\x3d\x88\xf3"
2974 "\x25\xef\x05\x7c\x3a\xef\xeb\xd8"
2975 "\x7a\x32\x0d\xd1\x1e\x58\x59\x99"
2976 "\x90\x25\xb5\x26\xb0\xe3\x2b\x6c"
2977 "\x4c\xa9\x8b\x84\x4f\x5e\x01\x50"
2978 "\x41\x30\x58\xc5\x62\x74\x52\x1d"
2979 "\x45\x24\x6a\x42\x64\x4f\x97\x1c"
2980 "\xa8\x66\xb5\x6d\x79\xd4\x0d\x48"
2981 "\xc5\x5f\xf3\x90\x32\xdd\xdd\xe1"
2982 "\xe4\xa9\x9f\xfc\xc3\x52\x5a\x46"
2983 "\xe4\x81\x84\x95\x36\x59\x7a\x6b"
2984 "\xaa\xb3\x60\xad\xce\x9f\x9f\x28"
2985 "\xe0\x01\x75\x22\xc4\x4e\xa9\x62"
2986 "\x5c\x62\x0d\x00\xcb\x13\xe8\x43"
2987 "\x72\xd4\x2d\x53\x46\xb5\xd1\x16"
2988 "\x22\x18\xdf\x34\x33\xf5\xd6\x1c"
2989 "\xb8\x79\x78\x97\x94\xff\x72\x13"
2990 "\x4c\x27\xfc\xcb\xbf\x01\x53\xa6"
2991 "\xb4\x50\x6e\xde\xdf\xb5\x43\xa4"
2992 "\x59\xdf\x52\xf9\x7c\xe0\x11\x6f"
2993 "\x2d\x14\x8e\x24\x61\x2c\xe1\x17"
2994 "\xcc\xce\x51\x0c\x19\x8a\x82\x30"
2995 "\x94\xd5\x3d\x6a\x53\x06\x5e\xbd"
2996 "\xb7\xeb\xfa\xfd\x27\x51\xde\x85"
2997 "\x1e\x86\x53\x11\x53\x94\x00\xee"
2998 "\x2b\x8c\x08\x2a\xbf\xdd\xae\x11"
2999 "\xcb\x1e\xa2\x07\x9a\x80\xcf\x62"
3000 "\x9b\x09\xdc\x95\x3c\x96\x8e\xb1"
3001 "\x09\xbd\xe4\xeb\xdb\xca\x70\x7a"
3002 "\x9e\xfa\x31\x18\x45\x3c\x21\x33"
3003 "\xb0\xb3\x2b\xea\xf3\x71\x2d\xe1"
3004 "\x03\xad\x1b\x48\xd4\x67\x27\xf0"
3005 "\x62\xe4\x3d\xfb\x9b\x08\x76\xe7"
3006 "\xdd\x2b\x01\x39\x04\x5a\x58\x7a"
3007 "\xf7\x11\x90\xec\xbd\x51\x5c\x32"
3008 "\x6b\xd7\x35\x39\x02\x6b\xf2\xa6"
3009 "\xd0\x0d\x07\xe1\x06\xc4\x5b\x7d"
3010 "\xe4\x6a\xd7\xee\x15\x1f\x83\xb4"
3011 "\xa3\xa7\x5e\xc3\x90\xb7\xef\xd3"
3012 "\xb7\x4f\xf8\x92\x4c\xb7\x3c\x29"
3013 "\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
3014 "\x74\x3f\x7d\x58\x88\x75\xde\x3e",
f3d1044c 3015 .ilen = 512,
de224c30
SS
3016 .result = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
3017 "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
3018 "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
3019 "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
3020 "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
3021 "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
3022 "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
3023 "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
3024 "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
3025 "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
3026 "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
3027 "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
3028 "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
3029 "\x4c\x96\x12\xed\x7c\x92\x03\x01"
3030 "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
3031 "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
3032 "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
3033 "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
3034 "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
3035 "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
3036 "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
3037 "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
3038 "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
3039 "\x76\x12\x73\x44\x1a\x56\xd7\x72"
3040 "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
3041 "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
3042 "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
3043 "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
3044 "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
3045 "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
3046 "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
3047 "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
3048 "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
3049 "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
3050 "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
3051 "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
3052 "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
3053 "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
3054 "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
3055 "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
3056 "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
3057 "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
3058 "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
3059 "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
3060 "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
3061 "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
3062 "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
3063 "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
3064 "\x62\x73\x65\xfd\x46\x63\x25\x3d"
3065 "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
3066 "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
3067 "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
3068 "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
3069 "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
3070 "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
3071 "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
3072 "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
3073 "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
3074 "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
3075 "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
3076 "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
3077 "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
3078 "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
3079 "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
f3d1044c
RS
3080 .rlen = 512,
3081 }
3082};
3083
f19f5111
RS
3084static struct cipher_testvec aes_xts_enc_tv_template[] = {
3085 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
3086 { /* XTS-AES 1 */
de224c30
SS
3087 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
3088 "\x00\x00\x00\x00\x00\x00\x00\x00"
3089 "\x00\x00\x00\x00\x00\x00\x00\x00"
3090 "\x00\x00\x00\x00\x00\x00\x00\x00",
f19f5111 3091 .klen = 32,
de224c30
SS
3092 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3093 "\x00\x00\x00\x00\x00\x00\x00\x00",
3094 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
3095 "\x00\x00\x00\x00\x00\x00\x00\x00"
3096 "\x00\x00\x00\x00\x00\x00\x00\x00"
3097 "\x00\x00\x00\x00\x00\x00\x00\x00",
f19f5111 3098 .ilen = 32,
de224c30
SS
3099 .result = "\x91\x7c\xf6\x9e\xbd\x68\xb2\xec"
3100 "\x9b\x9f\xe9\xa3\xea\xdd\xa6\x92"
3101 "\xcd\x43\xd2\xf5\x95\x98\xed\x85"
3102 "\x8c\x02\xc2\x65\x2f\xbf\x92\x2e",
f19f5111
RS
3103 .rlen = 32,
3104 }, { /* XTS-AES 2 */
de224c30
SS
3105 .key = "\x11\x11\x11\x11\x11\x11\x11\x11"
3106 "\x11\x11\x11\x11\x11\x11\x11\x11"
3107 "\x22\x22\x22\x22\x22\x22\x22\x22"
3108 "\x22\x22\x22\x22\x22\x22\x22\x22",
f19f5111 3109 .klen = 32,
de224c30
SS
3110 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3111 "\x00\x00\x00\x00\x00\x00\x00\x00",
3112 .input = "\x44\x44\x44\x44\x44\x44\x44\x44"
3113 "\x44\x44\x44\x44\x44\x44\x44\x44"
3114 "\x44\x44\x44\x44\x44\x44\x44\x44"
3115 "\x44\x44\x44\x44\x44\x44\x44\x44",
f19f5111 3116 .ilen = 32,
de224c30
SS
3117 .result = "\xc4\x54\x18\x5e\x6a\x16\x93\x6e"
3118 "\x39\x33\x40\x38\xac\xef\x83\x8b"
3119 "\xfb\x18\x6f\xff\x74\x80\xad\xc4"
3120 "\x28\x93\x82\xec\xd6\xd3\x94\xf0",
f19f5111
RS
3121 .rlen = 32,
3122 }, { /* XTS-AES 3 */
de224c30
SS
3123 .key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
3124 "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
3125 "\x22\x22\x22\x22\x22\x22\x22\x22"
3126 "\x22\x22\x22\x22\x22\x22\x22\x22",
f19f5111 3127 .klen = 32,
de224c30
SS
3128 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3129 "\x00\x00\x00\x00\x00\x00\x00\x00",
3130 .input = "\x44\x44\x44\x44\x44\x44\x44\x44"
3131 "\x44\x44\x44\x44\x44\x44\x44\x44"
3132 "\x44\x44\x44\x44\x44\x44\x44\x44"
3133 "\x44\x44\x44\x44\x44\x44\x44\x44",
f19f5111 3134 .ilen = 32,
de224c30
SS
3135 .result = "\xaf\x85\x33\x6b\x59\x7a\xfc\x1a"
3136 "\x90\x0b\x2e\xb2\x1e\xc9\x49\xd2"
3137 "\x92\xdf\x4c\x04\x7e\x0b\x21\x53"
3138 "\x21\x86\xa5\x97\x1a\x22\x7a\x89",
f19f5111
RS
3139 .rlen = 32,
3140 }, { /* XTS-AES 4 */
de224c30
SS
3141 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
3142 "\x23\x53\x60\x28\x74\x71\x35\x26"
3143 "\x31\x41\x59\x26\x53\x58\x97\x93"
3144 "\x23\x84\x62\x64\x33\x83\x27\x95",
f19f5111 3145 .klen = 32,
de224c30
SS
3146 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3147 "\x00\x00\x00\x00\x00\x00\x00\x00",
3148 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3149 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3150 "\x10\x11\x12\x13\x14\x15\x16\x17"
3151 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3152 "\x20\x21\x22\x23\x24\x25\x26\x27"
3153 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3154 "\x30\x31\x32\x33\x34\x35\x36\x37"
3155 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3156 "\x40\x41\x42\x43\x44\x45\x46\x47"
3157 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3158 "\x50\x51\x52\x53\x54\x55\x56\x57"
3159 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3160 "\x60\x61\x62\x63\x64\x65\x66\x67"
3161 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3162 "\x70\x71\x72\x73\x74\x75\x76\x77"
3163 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3164 "\x80\x81\x82\x83\x84\x85\x86\x87"
3165 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3166 "\x90\x91\x92\x93\x94\x95\x96\x97"
3167 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3168 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3169 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3170 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3171 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3172 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3173 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3174 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3175 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3176 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3177 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3178 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3179 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3180 "\x00\x01\x02\x03\x04\x05\x06\x07"
3181 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3182 "\x10\x11\x12\x13\x14\x15\x16\x17"
3183 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3184 "\x20\x21\x22\x23\x24\x25\x26\x27"
3185 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3186 "\x30\x31\x32\x33\x34\x35\x36\x37"
3187 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3188 "\x40\x41\x42\x43\x44\x45\x46\x47"
3189 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3190 "\x50\x51\x52\x53\x54\x55\x56\x57"
3191 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3192 "\x60\x61\x62\x63\x64\x65\x66\x67"
3193 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3194 "\x70\x71\x72\x73\x74\x75\x76\x77"
3195 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3196 "\x80\x81\x82\x83\x84\x85\x86\x87"
3197 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3198 "\x90\x91\x92\x93\x94\x95\x96\x97"
3199 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3200 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3201 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3202 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3203 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3204 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3205 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3206 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3207 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3208 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3209 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3210 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3211 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
f19f5111 3212 .ilen = 512,
de224c30
SS
3213 .result = "\x27\xa7\x47\x9b\xef\xa1\xd4\x76"
3214 "\x48\x9f\x30\x8c\xd4\xcf\xa6\xe2"
3215 "\xa9\x6e\x4b\xbe\x32\x08\xff\x25"
3216 "\x28\x7d\xd3\x81\x96\x16\xe8\x9c"
3217 "\xc7\x8c\xf7\xf5\xe5\x43\x44\x5f"
3218 "\x83\x33\xd8\xfa\x7f\x56\x00\x00"
3219 "\x05\x27\x9f\xa5\xd8\xb5\xe4\xad"
3220 "\x40\xe7\x36\xdd\xb4\xd3\x54\x12"
3221 "\x32\x80\x63\xfd\x2a\xab\x53\xe5"
3222 "\xea\x1e\x0a\x9f\x33\x25\x00\xa5"
3223 "\xdf\x94\x87\xd0\x7a\x5c\x92\xcc"
3224 "\x51\x2c\x88\x66\xc7\xe8\x60\xce"
3225 "\x93\xfd\xf1\x66\xa2\x49\x12\xb4"
3226 "\x22\x97\x61\x46\xae\x20\xce\x84"
3227 "\x6b\xb7\xdc\x9b\xa9\x4a\x76\x7a"
3228 "\xae\xf2\x0c\x0d\x61\xad\x02\x65"
3229 "\x5e\xa9\x2d\xc4\xc4\xe4\x1a\x89"
3230 "\x52\xc6\x51\xd3\x31\x74\xbe\x51"
3231 "\xa1\x0c\x42\x11\x10\xe6\xd8\x15"
3232 "\x88\xed\xe8\x21\x03\xa2\x52\xd8"
3233 "\xa7\x50\xe8\x76\x8d\xef\xff\xed"
3234 "\x91\x22\x81\x0a\xae\xb9\x9f\x91"
3235 "\x72\xaf\x82\xb6\x04\xdc\x4b\x8e"
3236 "\x51\xbc\xb0\x82\x35\xa6\xf4\x34"
3237 "\x13\x32\xe4\xca\x60\x48\x2a\x4b"
3238 "\xa1\xa0\x3b\x3e\x65\x00\x8f\xc5"
3239 "\xda\x76\xb7\x0b\xf1\x69\x0d\xb4"
3240 "\xea\xe2\x9c\x5f\x1b\xad\xd0\x3c"
3241 "\x5c\xcf\x2a\x55\xd7\x05\xdd\xcd"
3242 "\x86\xd4\x49\x51\x1c\xeb\x7e\xc3"
3243 "\x0b\xf1\x2b\x1f\xa3\x5b\x91\x3f"
3244 "\x9f\x74\x7a\x8a\xfd\x1b\x13\x0e"
3245 "\x94\xbf\xf9\x4e\xff\xd0\x1a\x91"
3246 "\x73\x5c\xa1\x72\x6a\xcd\x0b\x19"
3247 "\x7c\x4e\x5b\x03\x39\x36\x97\xe1"
3248 "\x26\x82\x6f\xb6\xbb\xde\x8e\xcc"
3249 "\x1e\x08\x29\x85\x16\xe2\xc9\xed"
3250 "\x03\xff\x3c\x1b\x78\x60\xf6\xde"
3251 "\x76\xd4\xce\xcd\x94\xc8\x11\x98"
3252 "\x55\xef\x52\x97\xca\x67\xe9\xf3"
3253 "\xe7\xff\x72\xb1\xe9\x97\x85\xca"
3254 "\x0a\x7e\x77\x20\xc5\xb3\x6d\xc6"
3255 "\xd7\x2c\xac\x95\x74\xc8\xcb\xbc"
3256 "\x2f\x80\x1e\x23\xe5\x6f\xd3\x44"
3257 "\xb0\x7f\x22\x15\x4b\xeb\xa0\xf0"
3258 "\x8c\xe8\x89\x1e\x64\x3e\xd9\x95"
3259 "\xc9\x4d\x9a\x69\xc9\xf1\xb5\xf4"
3260 "\x99\x02\x7a\x78\x57\x2a\xee\xbd"
3261 "\x74\xd2\x0c\xc3\x98\x81\xc2\x13"
3262 "\xee\x77\x0b\x10\x10\xe4\xbe\xa7"
3263 "\x18\x84\x69\x77\xae\x11\x9f\x7a"
3264 "\x02\x3a\xb5\x8c\xca\x0a\xd7\x52"
3265 "\xaf\xe6\x56\xbb\x3c\x17\x25\x6a"
3266 "\x9f\x6e\x9b\xf1\x9f\xdd\x5a\x38"
3267 "\xfc\x82\xbb\xe8\x72\xc5\x53\x9e"
3268 "\xdb\x60\x9e\xf4\xf7\x9c\x20\x3e"
3269 "\xbb\x14\x0f\x2e\x58\x3c\xb2\xad"
3270 "\x15\xb4\xaa\x5b\x65\x50\x16\xa8"
3271 "\x44\x92\x77\xdb\xd4\x77\xef\x2c"
3272 "\x8d\x6c\x01\x7d\xb7\x38\xb1\x8d"
3273 "\xeb\x4a\x42\x7d\x19\x23\xce\x3f"
3274 "\xf2\x62\x73\x57\x79\xa4\x18\xf2"
3275 "\x0a\x28\x2d\xf9\x20\x14\x7b\xea"
3276 "\xbe\x42\x1e\xe5\x31\x9d\x05\x68",
f19f5111
RS
3277 .rlen = 512,
3278 }
3279};
3280
3281static struct cipher_testvec aes_xts_dec_tv_template[] = {
3282 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
3283 { /* XTS-AES 1 */
de224c30
SS
3284 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
3285 "\x00\x00\x00\x00\x00\x00\x00\x00"
3286 "\x00\x00\x00\x00\x00\x00\x00\x00"
3287 "\x00\x00\x00\x00\x00\x00\x00\x00",
f19f5111 3288 .klen = 32,
de224c30
SS
3289 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3290 "\x00\x00\x00\x00\x00\x00\x00\x00",
3291 .input = "\x91\x7c\xf6\x9e\xbd\x68\xb2\xec"
3292 "\x9b\x9f\xe9\xa3\xea\xdd\xa6\x92"
3293 "\xcd\x43\xd2\xf5\x95\x98\xed\x85"
3294 "\x8c\x02\xc2\x65\x2f\xbf\x92\x2e",
f19f5111 3295 .ilen = 32,
de224c30
SS
3296 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
3297 "\x00\x00\x00\x00\x00\x00\x00\x00"
3298 "\x00\x00\x00\x00\x00\x00\x00\x00"
3299 "\x00\x00\x00\x00\x00\x00\x00\x00",
f19f5111
RS
3300 .rlen = 32,
3301 }, { /* XTS-AES 2 */
de224c30
SS
3302 .key = "\x11\x11\x11\x11\x11\x11\x11\x11"
3303 "\x11\x11\x11\x11\x11\x11\x11\x11"
3304 "\x22\x22\x22\x22\x22\x22\x22\x22"
3305 "\x22\x22\x22\x22\x22\x22\x22\x22",
f19f5111 3306 .klen = 32,
de224c30
SS
3307 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3308 "\x00\x00\x00\x00\x00\x00\x00\x00",
3309 .input = "\xc4\x54\x18\x5e\x6a\x16\x93\x6e"
3310 "\x39\x33\x40\x38\xac\xef\x83\x8b"
3311 "\xfb\x18\x6f\xff\x74\x80\xad\xc4"
3312 "\x28\x93\x82\xec\xd6\xd3\x94\xf0",
f19f5111 3313 .ilen = 32,
de224c30
SS
3314 .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
3315 "\x44\x44\x44\x44\x44\x44\x44\x44"
3316 "\x44\x44\x44\x44\x44\x44\x44\x44"
3317 "\x44\x44\x44\x44\x44\x44\x44\x44",
f19f5111
RS
3318 .rlen = 32,
3319 }, { /* XTS-AES 3 */
de224c30
SS
3320 .key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
3321 "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
3322 "\x22\x22\x22\x22\x22\x22\x22\x22"
3323 "\x22\x22\x22\x22\x22\x22\x22\x22",
f19f5111 3324 .klen = 32,
de224c30
SS
3325 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3326 "\x00\x00\x00\x00\x00\x00\x00\x00",
3327 .input = "\xaf\x85\x33\x6b\x59\x7a\xfc\x1a"
3328 "\x90\x0b\x2e\xb2\x1e\xc9\x49\xd2"
3329 "\x92\xdf\x4c\x04\x7e\x0b\x21\x53"
3330 "\x21\x86\xa5\x97\x1a\x22\x7a\x89",
f19f5111 3331 .ilen = 32,
de224c30
SS
3332 .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
3333 "\x44\x44\x44\x44\x44\x44\x44\x44"
3334 "\x44\x44\x44\x44\x44\x44\x44\x44"
3335 "\x44\x44\x44\x44\x44\x44\x44\x44",
f19f5111
RS
3336 .rlen = 32,
3337 }, { /* XTS-AES 4 */
de224c30
SS
3338 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
3339 "\x23\x53\x60\x28\x74\x71\x35\x26"
3340 "\x31\x41\x59\x26\x53\x58\x97\x93"
3341 "\x23\x84\x62\x64\x33\x83\x27\x95",
f19f5111 3342 .klen = 32,
de224c30
SS
3343 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3344 "\x00\x00\x00\x00\x00\x00\x00\x00",
3345 .input = "\x27\xa7\x47\x9b\xef\xa1\xd4\x76"
3346 "\x48\x9f\x30\x8c\xd4\xcf\xa6\xe2"
3347 "\xa9\x6e\x4b\xbe\x32\x08\xff\x25"
3348 "\x28\x7d\xd3\x81\x96\x16\xe8\x9c"
3349 "\xc7\x8c\xf7\xf5\xe5\x43\x44\x5f"
3350 "\x83\x33\xd8\xfa\x7f\x56\x00\x00"
3351 "\x05\x27\x9f\xa5\xd8\xb5\xe4\xad"
3352 "\x40\xe7\x36\xdd\xb4\xd3\x54\x12"
3353 "\x32\x80\x63\xfd\x2a\xab\x53\xe5"
3354 "\xea\x1e\x0a\x9f\x33\x25\x00\xa5"
3355 "\xdf\x94\x87\xd0\x7a\x5c\x92\xcc"
3356 "\x51\x2c\x88\x66\xc7\xe8\x60\xce"
3357 "\x93\xfd\xf1\x66\xa2\x49\x12\xb4"
3358 "\x22\x97\x61\x46\xae\x20\xce\x84"
3359 "\x6b\xb7\xdc\x9b\xa9\x4a\x76\x7a"
3360 "\xae\xf2\x0c\x0d\x61\xad\x02\x65"
3361 "\x5e\xa9\x2d\xc4\xc4\xe4\x1a\x89"
3362 "\x52\xc6\x51\xd3\x31\x74\xbe\x51"
3363 "\xa1\x0c\x42\x11\x10\xe6\xd8\x15"
3364 "\x88\xed\xe8\x21\x03\xa2\x52\xd8"
3365 "\xa7\x50\xe8\x76\x8d\xef\xff\xed"
3366 "\x91\x22\x81\x0a\xae\xb9\x9f\x91"
3367 "\x72\xaf\x82\xb6\x04\xdc\x4b\x8e"
3368 "\x51\xbc\xb0\x82\x35\xa6\xf4\x34"
3369 "\x13\x32\xe4\xca\x60\x48\x2a\x4b"
3370 "\xa1\xa0\x3b\x3e\x65\x00\x8f\xc5"
3371 "\xda\x76\xb7\x0b\xf1\x69\x0d\xb4"
3372 "\xea\xe2\x9c\x5f\x1b\xad\xd0\x3c"
3373 "\x5c\xcf\x2a\x55\xd7\x05\xdd\xcd"
3374 "\x86\xd4\x49\x51\x1c\xeb\x7e\xc3"
3375 "\x0b\xf1\x2b\x1f\xa3\x5b\x91\x3f"
3376 "\x9f\x74\x7a\x8a\xfd\x1b\x13\x0e"
3377 "\x94\xbf\xf9\x4e\xff\xd0\x1a\x91"
3378 "\x73\x5c\xa1\x72\x6a\xcd\x0b\x19"
3379 "\x7c\x4e\x5b\x03\x39\x36\x97\xe1"
3380 "\x26\x82\x6f\xb6\xbb\xde\x8e\xcc"
3381 "\x1e\x08\x29\x85\x16\xe2\xc9\xed"
3382 "\x03\xff\x3c\x1b\x78\x60\xf6\xde"
3383 "\x76\xd4\xce\xcd\x94\xc8\x11\x98"
3384 "\x55\xef\x52\x97\xca\x67\xe9\xf3"
3385 "\xe7\xff\x72\xb1\xe9\x97\x85\xca"
3386 "\x0a\x7e\x77\x20\xc5\xb3\x6d\xc6"
3387 "\xd7\x2c\xac\x95\x74\xc8\xcb\xbc"
3388 "\x2f\x80\x1e\x23\xe5\x6f\xd3\x44"
3389 "\xb0\x7f\x22\x15\x4b\xeb\xa0\xf0"
3390 "\x8c\xe8\x89\x1e\x64\x3e\xd9\x95"
3391 "\xc9\x4d\x9a\x69\xc9\xf1\xb5\xf4"
3392 "\x99\x02\x7a\x78\x57\x2a\xee\xbd"
3393 "\x74\xd2\x0c\xc3\x98\x81\xc2\x13"
3394 "\xee\x77\x0b\x10\x10\xe4\xbe\xa7"
3395 "\x18\x84\x69\x77\xae\x11\x9f\x7a"
3396 "\x02\x3a\xb5\x8c\xca\x0a\xd7\x52"
3397 "\xaf\xe6\x56\xbb\x3c\x17\x25\x6a"
3398 "\x9f\x6e\x9b\xf1\x9f\xdd\x5a\x38"
3399 "\xfc\x82\xbb\xe8\x72\xc5\x53\x9e"
3400 "\xdb\x60\x9e\xf4\xf7\x9c\x20\x3e"
3401 "\xbb\x14\x0f\x2e\x58\x3c\xb2\xad"
3402 "\x15\xb4\xaa\x5b\x65\x50\x16\xa8"
3403 "\x44\x92\x77\xdb\xd4\x77\xef\x2c"
3404 "\x8d\x6c\x01\x7d\xb7\x38\xb1\x8d"
3405 "\xeb\x4a\x42\x7d\x19\x23\xce\x3f"
3406 "\xf2\x62\x73\x57\x79\xa4\x18\xf2"
3407 "\x0a\x28\x2d\xf9\x20\x14\x7b\xea"
3408 "\xbe\x42\x1e\xe5\x31\x9d\x05\x68",
f19f5111 3409 .ilen = 512,
de224c30
SS
3410 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
3411 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3412 "\x10\x11\x12\x13\x14\x15\x16\x17"
3413 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3414 "\x20\x21\x22\x23\x24\x25\x26\x27"
3415 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3416 "\x30\x31\x32\x33\x34\x35\x36\x37"
3417 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3418 "\x40\x41\x42\x43\x44\x45\x46\x47"
3419 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3420 "\x50\x51\x52\x53\x54\x55\x56\x57"
3421 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3422 "\x60\x61\x62\x63\x64\x65\x66\x67"
3423 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3424 "\x70\x71\x72\x73\x74\x75\x76\x77"
3425 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3426 "\x80\x81\x82\x83\x84\x85\x86\x87"
3427 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3428 "\x90\x91\x92\x93\x94\x95\x96\x97"
3429 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3430 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3431 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3432 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3433 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3434 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3435 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3436 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3437 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3438 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3439 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3440 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3441 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3442 "\x00\x01\x02\x03\x04\x05\x06\x07"
3443 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3444 "\x10\x11\x12\x13\x14\x15\x16\x17"
3445 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3446 "\x20\x21\x22\x23\x24\x25\x26\x27"
3447 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3448 "\x30\x31\x32\x33\x34\x35\x36\x37"
3449 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3450 "\x40\x41\x42\x43\x44\x45\x46\x47"
3451 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3452 "\x50\x51\x52\x53\x54\x55\x56\x57"
3453 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3454 "\x60\x61\x62\x63\x64\x65\x66\x67"
3455 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3456 "\x70\x71\x72\x73\x74\x75\x76\x77"
3457 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3458 "\x80\x81\x82\x83\x84\x85\x86\x87"
3459 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3460 "\x90\x91\x92\x93\x94\x95\x96\x97"
3461 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3462 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3463 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3464 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3465 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3466 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3467 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3468 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3469 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3470 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3471 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3472 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3473 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
f19f5111
RS
3474 .rlen = 512,
3475 }
3476};
3477
23e353c8
JL
3478
3479static struct cipher_testvec aes_ctr_enc_tv_template[] = {
3480 { /* From RFC 3686 */
de224c30
SS
3481 .key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
3482 "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
3483 "\x00\x00\x00\x30",
23e353c8 3484 .klen = 20,
de224c30
SS
3485 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
3486 .input = "Single block msg",
23e353c8 3487 .ilen = 16,
de224c30
SS
3488 .result = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
3489 "\x2d\x61\x75\xa3\x26\x13\x11\xb8",
23e353c8
JL
3490 .rlen = 16,
3491 }, {
de224c30
SS
3492 .key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
3493 "\x43\xd6\xce\x1f\x32\x53\x91\x63"
3494 "\x00\x6c\xb6\xdb",
23e353c8 3495 .klen = 20,
de224c30
SS
3496 .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
3497 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3498 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3499 "\x10\x11\x12\x13\x14\x15\x16\x17"
3500 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
3501 .ilen = 32,
3502 .result = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
3503 "\x79\x0d\x41\xee\x8e\xda\xd3\x88"
3504 "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
3505 "\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
23e353c8
JL
3506 .rlen = 32,
3507 }, {
de224c30
SS
3508 .key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
3509 "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
3510 "\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
3511 "\x00\x00\x00\x48",
3512 .klen = 28,
3513 .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
3514 .input = "Single block msg",
3515 .ilen = 16,
3516 .result = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
3517 "\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
23e353c8
JL
3518 .rlen = 16,
3519 }, {
de224c30
SS
3520 .key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
3521 "\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
3522 "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
3523 "\x00\x96\xb0\x3b",
23e353c8 3524 .klen = 28,
de224c30
SS
3525 .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
3526 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3527 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3528 "\x10\x11\x12\x13\x14\x15\x16\x17"
3529 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
23e353c8 3530 .ilen = 32,
de224c30
SS
3531 .result = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
3532 "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
3533 "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
3534 "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
3535 .rlen = 32,
3536 }, {
3537 .key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
3538 "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
3539 "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
3540 "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
3541 "\x00\x00\x00\x60",
23e353c8 3542 .klen = 36,
de224c30
SS
3543 .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
3544 .input = "Single block msg",
23e353c8 3545 .ilen = 16,
de224c30
SS
3546 .result = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
3547 "\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
3548 .rlen = 16,
3549 }, {
3550 .key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
3551 "\x07\x96\x36\x58\x79\xef\xf8\x86"
3552 "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
3553 "\x4b\x50\x59\x0c\x87\xa2\x38\x84"
3554 "\x00\xfa\xac\x24",
3555 .klen = 36,
3556 .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
3557 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3558 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3559 "\x10\x11\x12\x13\x14\x15\x16\x17"
3560 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
23e353c8 3561 .ilen = 32,
de224c30
SS
3562 .result = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
3563 "\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
3564 "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
3565 "\x55\x30\x83\x1d\x93\x44\xaf\x1c",
23e353c8 3566 .rlen = 32,
a773edb3
TSH
3567 }, {
3568 // generated using Crypto++
de224c30
SS
3569 .key = "\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 "\x00\x00\x00\x00",
a773edb3 3574 .klen = 32 + 4,
de224c30
SS
3575 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
3576 .input =
3577 "\x00\x01\x02\x03\x04\x05\x06\x07"
3578 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3579 "\x10\x11\x12\x13\x14\x15\x16\x17"
3580 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3581 "\x20\x21\x22\x23\x24\x25\x26\x27"
3582 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3583 "\x30\x31\x32\x33\x34\x35\x36\x37"
3584 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3585 "\x40\x41\x42\x43\x44\x45\x46\x47"
3586 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3587 "\x50\x51\x52\x53\x54\x55\x56\x57"
3588 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3589 "\x60\x61\x62\x63\x64\x65\x66\x67"
3590 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3591 "\x70\x71\x72\x73\x74\x75\x76\x77"
3592 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3593 "\x80\x81\x82\x83\x84\x85\x86\x87"
3594 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3595 "\x90\x91\x92\x93\x94\x95\x96\x97"
3596 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3597 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3598 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3599 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3600 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3601 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3602 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3603 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3604 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3605 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3606 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3607 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3608 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3609 "\x00\x03\x06\x09\x0c\x0f\x12\x15"
3610 "\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
3611 "\x30\x33\x36\x39\x3c\x3f\x42\x45"
3612 "\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
3613 "\x60\x63\x66\x69\x6c\x6f\x72\x75"
3614 "\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
3615 "\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
3616 "\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
3617 "\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
3618 "\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
3619 "\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
3620 "\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
3621 "\x20\x23\x26\x29\x2c\x2f\x32\x35"
3622 "\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
3623 "\x50\x53\x56\x59\x5c\x5f\x62\x65"
3624 "\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
3625 "\x80\x83\x86\x89\x8c\x8f\x92\x95"
3626 "\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
3627 "\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
3628 "\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
3629 "\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
3630 "\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
3631 "\x10\x13\x16\x19\x1c\x1f\x22\x25"
3632 "\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
3633 "\x40\x43\x46\x49\x4c\x4f\x52\x55"
3634 "\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
3635 "\x70\x73\x76\x79\x7c\x7f\x82\x85"
3636 "\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
3637 "\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
3638 "\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
3639 "\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
3640 "\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
3641 "\x00\x05\x0a\x0f\x14\x19\x1e\x23"
3642 "\x28\x2d\x32\x37\x3c\x41\x46\x4b"
3643 "\x50\x55\x5a\x5f\x64\x69\x6e\x73"
3644 "\x78\x7d\x82\x87\x8c\x91\x96\x9b"
3645 "\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
3646 "\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
3647 "\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
3648 "\x18\x1d\x22\x27\x2c\x31\x36\x3b"
3649 "\x40\x45\x4a\x4f\x54\x59\x5e\x63"
3650 "\x68\x6d\x72\x77\x7c\x81\x86\x8b"
3651 "\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
3652 "\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
3653 "\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
3654 "\x08\x0d\x12\x17\x1c\x21\x26\x2b"
3655 "\x30\x35\x3a\x3f\x44\x49\x4e\x53"
3656 "\x58\x5d\x62\x67\x6c\x71\x76\x7b"
3657 "\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
3658 "\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
3659 "\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
3660 "\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
3661 "\x20\x25\x2a\x2f\x34\x39\x3e\x43"
3662 "\x48\x4d\x52\x57\x5c\x61\x66\x6b"
3663 "\x70\x75\x7a\x7f\x84\x89\x8e\x93"
3664 "\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
3665 "\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
3666 "\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
3667 "\x10\x15\x1a\x1f\x24\x29\x2e\x33"
3668 "\x38\x3d\x42\x47\x4c\x51\x56\x5b"
3669 "\x60\x65\x6a\x6f\x74\x79\x7e\x83"
3670 "\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
3671 "\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
3672 "\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
3673 "\x00\x07\x0e\x15\x1c\x23\x2a\x31"
3674 "\x38\x3f\x46\x4d\x54\x5b\x62\x69"
3675 "\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
3676 "\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
3677 "\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
3678 "\x18\x1f\x26\x2d\x34\x3b\x42\x49"
3679 "\x50\x57\x5e\x65\x6c\x73\x7a\x81"
3680 "\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
3681 "\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
3682 "\xf8\xff\x06\x0d\x14\x1b\x22\x29"
3683 "\x30\x37\x3e\x45\x4c\x53\x5a\x61"
3684 "\x68\x6f\x76\x7d\x84\x8b\x92\x99"
3685 "\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
3686 "\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
3687 "\x10\x17\x1e\x25\x2c\x33\x3a\x41"
3688 "\x48\x4f\x56\x5d\x64\x6b\x72\x79"
3689 "\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
3690 "\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
3691 "\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
3692 "\x28\x2f\x36\x3d\x44\x4b\x52\x59"
3693 "\x60\x67\x6e\x75\x7c\x83\x8a\x91"
3694 "\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
3695 "\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
3696 "\x08\x0f\x16\x1d\x24\x2b\x32\x39"
3697 "\x40\x47\x4e\x55\x5c\x63\x6a\x71"
3698 "\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
3699 "\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
3700 "\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
3701 "\x20\x27\x2e\x35\x3c\x43\x4a\x51"
3702 "\x58\x5f\x66\x6d\x74\x7b\x82\x89"
3703 "\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
3704 "\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
3705 "\x00\x09\x12\x1b\x24\x2d\x36\x3f"
3706 "\x48\x51\x5a\x63\x6c\x75\x7e\x87"
3707 "\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
3708 "\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
3709 "\x20\x29\x32\x3b\x44\x4d\x56\x5f"
3710 "\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
3711 "\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
3712 "\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
3713 "\x40\x49\x52\x5b\x64\x6d\x76\x7f"
3714 "\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
3715 "\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
3716 "\x18\x21\x2a\x33\x3c\x45\x4e\x57"
3717 "\x60\x69\x72\x7b\x84\x8d\x96\x9f"
3718 "\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
3719 "\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
3720 "\x38\x41\x4a\x53\x5c\x65\x6e\x77"
3721 "\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
3722 "\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
3723 "\x10\x19\x22\x2b\x34\x3d\x46\x4f"
3724 "\x58\x61\x6a\x73\x7c\x85\x8e\x97"
3725 "\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
3726 "\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
3727 "\x30\x39\x42\x4b\x54\x5d\x66\x6f"
3728 "\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
3729 "\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
3730 "\x08\x11\x1a\x23\x2c\x35\x3e\x47"
3731 "\x50\x59\x62\x6b\x74\x7d\x86\x8f"
3732 "\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
3733 "\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
3734 "\x28\x31\x3a\x43\x4c\x55\x5e\x67"
3735 "\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
3736 "\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
3737 "\x00\x0b\x16\x21\x2c\x37\x42\x4d"
3738 "\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
3739 "\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
3740 "\x08\x13\x1e\x29\x34\x3f\x4a\x55"
3741 "\x60\x6b\x76\x81\x8c\x97\xa2\xad"
3742 "\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
3743 "\x10\x1b\x26\x31\x3c\x47\x52\x5d"
3744 "\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
3745 "\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
3746 "\x18\x23\x2e\x39\x44\x4f\x5a\x65"
3747 "\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
3748 "\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
3749 "\x20\x2b\x36\x41\x4c\x57\x62\x6d"
3750 "\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
3751 "\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
3752 "\x28\x33\x3e\x49\x54\x5f\x6a\x75"
3753 "\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
3754 "\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
3755 "\x30\x3b\x46\x51\x5c\x67\x72\x7d"
3756 "\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
3757 "\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
3758 "\x38\x43\x4e\x59\x64\x6f\x7a\x85"
3759 "\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
3760 "\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
3761 "\x40\x4b\x56\x61\x6c\x77\x82\x8d"
3762 "\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
3763 "\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
3764 "\x48\x53\x5e\x69\x74\x7f\x8a\x95"
3765 "\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
3766 "\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
3767 "\x50\x5b\x66\x71\x7c\x87\x92\x9d"
3768 "\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
3769 "\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
3770 "\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
3771 "\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
3772 "\x38\x45\x52\x5f\x6c\x79\x86\x93"
3773 "\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
3774 "\x08\x15\x22\x2f\x3c\x49\x56\x63"
3775 "\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
3776 "\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
3777 "\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
3778 "\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
3779 "\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
3780 "\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
3781 "\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
3782 "\x48\x55\x62\x6f\x7c\x89\x96\xa3"
3783 "\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
3784 "\x18\x25\x32\x3f\x4c\x59\x66\x73"
3785 "\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
3786 "\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
3787 "\x50\x5d\x6a\x77\x84\x91\x9e\xab"
3788 "\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
3789 "\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
3790 "\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
3791 "\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
3792 "\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
3793 "\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
3794 "\x28\x35\x42\x4f\x5c\x69\x76\x83"
3795 "\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
3796 "\xf8\x05\x12\x1f\x2c\x39\x46\x53"
3797 "\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
3798 "\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
3799 "\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
3800 "\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
3801 "\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
3802 "\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
3803 "\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
3804 "\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
3805 "\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
3806 "\x58\x67\x76\x85\x94\xa3\xb2\xc1"
3807 "\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
3808 "\x48\x57\x66\x75\x84\x93\xa2\xb1"
3809 "\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
3810 "\x38\x47\x56\x65\x74\x83\x92\xa1"
3811 "\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
3812 "\x28\x37\x46\x55\x64\x73\x82\x91"
3813 "\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
3814 "\x18\x27\x36\x45\x54\x63\x72\x81"
3815 "\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
3816 "\x08\x17\x26\x35\x44\x53\x62\x71"
3817 "\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
3818 "\xf8\x07\x16\x25\x34\x43\x52\x61"
3819 "\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
3820 "\xe8\xf7\x06\x15\x24\x33\x42\x51"
3821 "\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
3822 "\xd8\xe7\xf6\x05\x14\x23\x32\x41"
3823 "\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
3824 "\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
3825 "\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
3826 "\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
3827 "\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
3828 "\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
3829 "\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
3830 "\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
3831 "\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
3832 "\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
3833 "\x00\x11\x22\x33\x44\x55\x66\x77"
3834 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
3835 "\x10\x21\x32\x43\x54\x65\x76\x87"
3836 "\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
3837 "\x20\x31\x42\x53\x64\x75\x86\x97"
3838 "\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
3839 "\x30\x41\x52\x63\x74\x85\x96\xa7"
3840 "\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
3841 "\x40\x51\x62\x73\x84\x95\xa6\xb7"
3842 "\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
3843 "\x50\x61\x72\x83\x94\xa5\xb6\xc7"
3844 "\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
3845 "\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
3846 "\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
3847 "\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
3848 "\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
3849 "\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
3850 "\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
3851 "\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
3852 "\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
3853 "\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
3854 "\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
3855 "\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
3856 "\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
3857 "\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
3858 "\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
3859 "\xd0\xe1\xf2\x03\x14\x25\x36\x47"
3860 "\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
3861 "\xe0\xf1\x02\x13\x24\x35\x46\x57"
3862 "\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
3863 "\xf0\x01\x12\x23\x34\x45\x56\x67"
3864 "\x78\x89\x9a\xab\xbc\xcd\xde\xef"
3865 "\x00\x13\x26\x39\x4c\x5f\x72\x85"
3866 "\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
3867 "\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
3868 "\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
3869 "\x60\x73\x86\x99\xac\xbf\xd2\xe5"
3870 "\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
3871 "\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
3872 "\x28\x3b\x4e\x61\x74\x87\x9a\xad"
3873 "\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
3874 "\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
3875 "\xf0\x03\x16\x29\x3c\x4f\x62\x75"
3876 "\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
3877 "\x20\x33\x46\x59\x6c\x7f\x92\xa5"
3878 "\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
3879 "\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
3880 "\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
3881 "\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
3882 "\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
3883 "\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
3884 "\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
3885 "\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
3886 "\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
3887 "\x10\x23\x36\x49\x5c\x6f\x82\x95"
3888 "\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
3889 "\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
3890 "\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
3891 "\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
3892 "\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
3893 "\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
3894 "\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
3895 "\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
3896 "\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
3897 "\x00\x15\x2a\x3f\x54\x69\x7e\x93"
3898 "\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
3899 "\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
3900 "\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
3901 "\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
3902 "\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
3903 "\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
3904 "\x98\xad\xc2\xd7\xec\x01\x16\x2b"
3905 "\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
3906 "\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
3907 "\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
3908 "\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
3909 "\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
3910 "\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
3911 "\x30\x45\x5a\x6f\x84\x99\xae\xc3"
3912 "\xd8\xed\x02\x17\x2c\x41\x56\x6b"
3913 "\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
3914 "\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
3915 "\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
3916 "\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
3917 "\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
3918 "\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
3919 "\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
3920 "\x18\x2d\x42\x57\x6c\x81\x96\xab"
3921 "\xc0\xd5\xea\xff\x14\x29\x3e\x53"
3922 "\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
3923 "\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
3924 "\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
3925 "\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
3926 "\x08\x1d\x32\x47\x5c\x71\x86\x9b"
3927 "\xb0\xc5\xda\xef\x04\x19\x2e\x43"
3928 "\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
3929 "\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
3930 "\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
3931 "\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
3932 "\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
3933 "\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
3934 "\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
3935 "\x50\x67\x7e\x95\xac\xc3\xda\xf1"
3936 "\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
3937 "\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
3938 "\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
3939 "\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
3940 "\xe8\xff\x16\x2d\x44\x5b\x72\x89"
3941 "\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
3942 "\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
3943 "\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
3944 "\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
3945 "\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
3946 "\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
3947 "\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
3948 "\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
3949 "\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
3950 "\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
3951 "\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
3952 "\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
3953 "\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
3954 "\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
3955 "\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
3956 "\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
3957 "\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
3958 "\xd8\xef\x06\x1d\x34\x4b\x62\x79"
3959 "\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
3960 "\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
3961 "\x00\x19\x32\x4b\x64\x7d\x96\xaf"
3962 "\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
3963 "\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
3964 "\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
3965 "\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
3966 "\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
3967 "\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
3968 "\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
3969 "\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
3970 "\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
3971 "\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
3972 "\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
3973 "\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
3974 "\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
3975 "\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
3976 "\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
3977 "\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
3978 "\x48\x61\x7a\x93\xac\xc5\xde\xf7"
3979 "\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
3980 "\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
3981 "\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
3982 "\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
3983 "\x30\x49\x62\x7b\x94\xad\xc6\xdf"
3984 "\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
3985 "\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
3986 "\x88\xa1\xba\xd3\xec\x05\x1e\x37"
3987 "\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
3988 "\x18\x31\x4a\x63\x7c\x95\xae\xc7"
3989 "\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
3990 "\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
3991 "\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
3992 "\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
3993 "\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
3994 "\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
3995 "\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
3996 "\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
3997 "\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
3998 "\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
3999 "\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
4000 "\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
4001 "\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
4002 "\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
4003 "\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
4004 "\x48\x63\x7e\x99\xb4\xcf\xea\x05"
4005 "\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
4006 "\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
4007 "\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
4008 "\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
4009 "\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
4010 "\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
4011 "\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
4012 "\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
4013 "\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
4014 "\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
4015 "\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
4016 "\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
4017 "\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
4018 "\x18\x33\x4e\x69\x84\x9f\xba\xd5"
4019 "\xf0\x0b\x26\x41\x5c\x77\x92\xad"
4020 "\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
4021 "\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
4022 "\x78\x93\xae\xc9\xe4\xff\x1a\x35"
4023 "\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
4024 "\x28\x43\x5e\x79\x94\xaf\xca\xe5"
4025 "\x00\x1d\x3a\x57\x74\x91\xae\xcb"
4026 "\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
4027 "\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
4028 "\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
4029 "\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
4030 "\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
4031 "\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
4032 "\x58\x75\x92\xaf\xcc\xe9\x06\x23"
4033 "\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
4034 "\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
4035 "\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
4036 "\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
4037 "\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
4038 "\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
4039 "\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
4040 "\x98\xb5\xd2\xef\x0c\x29\x46\x63"
4041 "\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
4042 "\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
4043 "\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
4044 "\x38\x55\x72\x8f\xac\xc9\xe6\x03"
4045 "\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
4046 "\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
4047 "\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
4048 "\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
4049 "\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
4050 "\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
4051 "\x90\xad\xca\xe7\x04\x21\x3e\x5b"
4052 "\x78\x95\xb2\xcf\xec\x09\x26\x43"
4053 "\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
4054 "\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
4055 "\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
4056 "\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
4057 "\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
4058 "\xf8\x17\x36\x55\x74\x93\xb2\xd1"
4059 "\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
4060 "\xe8\x07\x26\x45\x64\x83\xa2\xc1"
4061 "\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
4062 "\xd8\xf7\x16\x35\x54\x73\x92\xb1"
4063 "\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
4064 "\xc8\xe7\x06\x25\x44\x63\x82\xa1"
4065 "\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
4066 "\xb8\xd7\xf6\x15\x34\x53\x72\x91"
4067 "\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
4068 "\xa8\xc7\xe6\x05\x24\x43\x62\x81"
4069 "\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
4070 "\x98\xb7\xd6\xf5\x14\x33\x52\x71"
4071 "\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
4072 "\x88\xa7\xc6\xe5\x04\x23\x42\x61"
4073 "\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
4074 "\x78\x97\xb6\xd5\xf4\x13\x32\x51"
4075 "\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
4076 "\x68\x87\xa6\xc5\xe4\x03\x22\x41"
4077 "\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
4078 "\x58\x77\x96\xb5\xd4\xf3\x12\x31"
4079 "\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
4080 "\x48\x67\x86\xa5\xc4\xe3\x02\x21"
4081 "\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
4082 "\x38\x57\x76\x95\xb4\xd3\xf2\x11"
4083 "\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
4084 "\x28\x47\x66\x85\xa4\xc3\xe2\x01"
4085 "\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
4086 "\x18\x37\x56\x75\x94\xb3\xd2\xf1"
4087 "\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
4088 "\x08\x27\x46\x65\x84\xa3\xc2\xe1"
4089 "\x00\x21\x42\x63",
a773edb3 4090 .ilen = 4100,
de224c30
SS
4091 .result =
4092 "\xf0\x5c\x74\xad\x4e\xbc\x99\xe2"
4093 "\xae\xff\x91\x3a\x44\xcf\x38\x32"
4094 "\x1e\xad\xa7\xcd\xa1\x39\x95\xaa"
4095 "\x10\xb1\xb3\x2e\x04\x31\x8f\x86"
4096 "\xf2\x62\x74\x70\x0c\xa4\x46\x08"
4097 "\xa8\xb7\x99\xa8\xe9\xd2\x73\x79"
4098 "\x7e\x6e\xd4\x8f\x1e\xc7\x8e\x31"
4099 "\x0b\xfa\x4b\xce\xfd\xf3\x57\x71"
4100 "\xe9\x46\x03\xa5\x3d\x34\x00\xe2"
4101 "\x18\xff\x75\x6d\x06\x2d\x00\xab"
4102 "\xb9\x3e\x6c\x59\xc5\x84\x06\xb5"
4103 "\x8b\xd0\x89\x9c\x4a\x79\x16\xc6"
4104 "\x3d\x74\x54\xfa\x44\xcd\x23\x26"
4105 "\x5c\xcf\x7e\x28\x92\x32\xbf\xdf"
4106 "\xa7\x20\x3c\x74\x58\x2a\x9a\xde"
4107 "\x61\x00\x1c\x4f\xff\x59\xc4\x22"
4108 "\xac\x3c\xd0\xe8\x6c\xf9\x97\x1b"
4109 "\x58\x9b\xad\x71\xe8\xa9\xb5\x0d"
4110 "\xee\x2f\x04\x1f\x7f\xbc\x99\xee"
4111 "\x84\xff\x42\x60\xdc\x3a\x18\xa5"
4112 "\x81\xf9\xef\xdc\x7a\x0f\x65\x41"
4113 "\x2f\xa3\xd3\xf9\xc2\xcb\xc0\x4d"
4114 "\x8f\xd3\x76\x96\xad\x49\x6d\x38"
4115 "\x3d\x39\x0b\x6c\x80\xb7\x54\x69"
4116 "\xf0\x2c\x90\x02\x29\x0d\x1c\x12"
4117 "\xad\x55\xc3\x8b\x68\xd9\xcc\xb3"
4118 "\xb2\x64\x33\x90\x5e\xca\x4b\xe2"
4119 "\xfb\x75\xdc\x63\xf7\x9f\x82\x74"
4120 "\xf0\xc9\xaa\x7f\xe9\x2a\x9b\x33"
4121 "\xbc\x88\x00\x7f\xca\xb2\x1f\x14"
4122 "\xdb\xc5\x8e\x7b\x11\x3c\x3e\x08"
4123 "\xf3\x83\xe8\xe0\x94\x86\x2e\x92"
4124 "\x78\x6b\x01\xc9\xc7\x83\xba\x21"
4125 "\x6a\x25\x15\x33\x4e\x45\x08\xec"
4126 "\x35\xdb\xe0\x6e\x31\x51\x79\xa9"
4127 "\x42\x44\x65\xc1\xa0\xf1\xf9\x2a"
4128 "\x70\xd5\xb6\xc6\xc1\x8c\x39\xfc"
4129 "\x25\xa6\x55\xd9\xdd\x2d\x4c\xec"
4130 "\x49\xc6\xeb\x0e\xa8\x25\x2a\x16"
4131 "\x1b\x66\x84\xda\xe2\x92\xe5\xc0"
4132 "\xc8\x53\x07\xaf\x80\x84\xec\xfd"
4133 "\xcd\xd1\x6e\xcd\x6f\x6a\xf5\x36"
4134 "\xc5\x15\xe5\x25\x7d\x77\xd1\x1a"
4135 "\x93\x36\xa9\xcf\x7c\xa4\x54\x4a"
4136 "\x06\x51\x48\x4e\xf6\x59\x87\xd2"
4137 "\x04\x02\xef\xd3\x44\xde\x76\x31"
4138 "\xb3\x34\x17\x1b\x9d\x66\x11\x9f"
4139 "\x1e\xcc\x17\xe9\xc7\x3c\x1b\xe7"
4140 "\xcb\x50\x08\xfc\xdc\x2b\x24\xdb"
4141 "\x65\x83\xd0\x3b\xe3\x30\xea\x94"
4142 "\x6c\xe7\xe8\x35\x32\xc7\xdb\x64"
4143 "\xb4\x01\xab\x36\x2c\x77\x13\xaf"
4144 "\xf8\x2b\x88\x3f\x54\x39\xc4\x44"
4145 "\xfe\xef\x6f\x68\x34\xbe\x0f\x05"
4146 "\x16\x6d\xf6\x0a\x30\xe7\xe3\xed"
4147 "\xc4\xde\x3c\x1b\x13\xd8\xdb\xfe"
4148 "\x41\x62\xe5\x28\xd4\x8d\xa3\xc7"
4149 "\x93\x97\xc6\x48\x45\x1d\x9f\x83"
4150 "\xdf\x4b\x40\x3e\x42\x25\x87\x80"
4151 "\x4c\x7d\xa8\xd4\x98\x23\x95\x75"
4152 "\x41\x8c\xda\x41\x9b\xd4\xa7\x06"
4153 "\xb5\xf1\x71\x09\x53\xbe\xca\xbf"
4154 "\x32\x03\xed\xf0\x50\x1c\x56\x39"
4155 "\x5b\xa4\x75\x18\xf7\x9b\x58\xef"
4156 "\x53\xfc\x2a\x38\x23\x15\x75\xcd"
4157 "\x45\xe5\x5a\x82\x55\xba\x21\xfa"
4158 "\xd4\xbd\xc6\x94\x7c\xc5\x80\x12"
4159 "\xf7\x4b\x32\xc4\x9a\x82\xd8\x28"
4160 "\x8f\xd9\xc2\x0f\x60\x03\xbe\x5e"
4161 "\x21\xd6\x5f\x58\xbf\x5c\xb1\x32"
4162 "\x82\x8d\xa9\xe5\xf2\x66\x1a\xc0"
4163 "\xa0\xbc\x58\x2f\x71\xf5\x2f\xed"
4164 "\xd1\x26\xb9\xd8\x49\x5a\x07\x19"
4165 "\x01\x7c\x59\xb0\xf8\xa4\xb7\xd3"
4166 "\x7b\x1a\x8c\x38\xf4\x50\xa4\x59"
4167 "\xb0\xcc\x41\x0b\x88\x7f\xe5\x31"
4168 "\xb3\x42\xba\xa2\x7e\xd4\x32\x71"
4169 "\x45\x87\x48\xa9\xc2\xf2\x89\xb3"
4170 "\xe4\xa7\x7e\x52\x15\x61\xfa\xfe"
4171 "\xc9\xdd\x81\xeb\x13\xab\xab\xc3"
4172 "\x98\x59\xd8\x16\x3d\x14\x7a\x1c"
4173 "\x3c\x41\x9a\x16\x16\x9b\xd2\xd2"
4174 "\x69\x3a\x29\x23\xac\x86\x32\xa5"
4175 "\x48\x9c\x9e\xf3\x47\x77\x81\x70"
4176 "\x24\xe8\x85\xd2\xf5\xb5\xfa\xff"
4177 "\x59\x6a\xd3\x50\x59\x43\x59\xde"
4178 "\xd9\xf1\x55\xa5\x0c\xc3\x1a\x1a"
4179 "\x18\x34\x0d\x1a\x63\x33\xed\x10"
4180 "\xe0\x1d\x2a\x18\xd2\xc0\x54\xa8"
4181 "\xca\xb5\x9a\xd3\xdd\xca\x45\x84"
4182 "\x50\xe7\x0f\xfe\xa4\x99\x5a\xbe"
4183 "\x43\x2d\x9a\xcb\x92\x3f\x5a\x1d"
4184 "\x85\xd8\xc9\xdf\x68\xc9\x12\x80"
4185 "\x56\x0c\xdc\x00\xdc\x3a\x7d\x9d"
4186 "\xa3\xa2\xe8\x4d\xbf\xf9\x70\xa0"
4187 "\xa4\x13\x4f\x6b\xaf\x0a\x89\x7f"
4188 "\xda\xf0\xbf\x9b\xc8\x1d\xe5\xf8"
4189 "\x2e\x8b\x07\xb5\x73\x1b\xcc\xa2"
4190 "\xa6\xad\x30\xbc\x78\x3c\x5b\x10"
4191 "\xfa\x5e\x62\x2d\x9e\x64\xb3\x33"
4192 "\xce\xf9\x1f\x86\xe7\x8b\xa2\xb8"
4193 "\xe8\x99\x57\x8c\x11\xed\x66\xd9"
4194 "\x3c\x72\xb9\xc3\xe6\x4e\x17\x3a"
4195 "\x6a\xcb\x42\x24\x06\xed\x3e\x4e"
4196 "\xa3\xe8\x6a\x94\xda\x0d\x4e\xd5"
4197 "\x14\x19\xcf\xb6\x26\xd8\x2e\xcc"
4198 "\x64\x76\x38\x49\x4d\xfe\x30\x6d"
4199 "\xe4\xc8\x8c\x7b\xc4\xe0\x35\xba"
4200 "\x22\x6e\x76\xe1\x1a\xf2\x53\xc3"
4201 "\x28\xa2\x82\x1f\x61\x69\xad\xc1"
4202 "\x7b\x28\x4b\x1e\x6c\x85\x95\x9b"
4203 "\x51\xb5\x17\x7f\x12\x69\x8c\x24"
4204 "\xd5\xc7\x5a\x5a\x11\x54\xff\x5a"
4205 "\xf7\x16\xc3\x91\xa6\xf0\xdc\x0a"
4206 "\xb6\xa7\x4a\x0d\x7a\x58\xfe\xa5"
4207 "\xf5\xcb\x8f\x7b\x0e\xea\x57\xe7"
4208 "\xbd\x79\xd6\x1c\x88\x23\x6c\xf2"
4209 "\x4d\x29\x77\x53\x35\x6a\x00\x8d"
4210 "\xcd\xa3\x58\xbe\x77\x99\x18\xf8"
4211 "\xe6\xe1\x8f\xe9\x37\x8f\xe3\xe2"
4212 "\x5a\x8a\x93\x25\xaf\xf3\x78\x80"
4213 "\xbe\xa6\x1b\xc6\xac\x8b\x1c\x91"
4214 "\x58\xe1\x9f\x89\x35\x9d\x1d\x21"
4215 "\x29\x9f\xf4\x99\x02\x27\x0f\xa8"
4216 "\x4f\x79\x94\x2b\x33\x2c\xda\xa2"
4217 "\x26\x39\x83\x94\xef\x27\xd8\x53"
4218 "\x8f\x66\x0d\xe4\x41\x7d\x34\xcd"
4219 "\x43\x7c\x95\x0a\x53\xef\x66\xda"
4220 "\x7e\x9b\xf3\x93\xaf\xd0\x73\x71"
4221 "\xba\x40\x9b\x74\xf8\xd7\xd7\x41"
4222 "\x6d\xaf\x72\x9c\x8d\x21\x87\x3c"
4223 "\xfd\x0a\x90\xa9\x47\x96\x9e\xd3"
4224 "\x88\xee\x73\xcf\x66\x2f\x52\x56"
4225 "\x6d\xa9\x80\x4c\xe2\x6f\x62\x88"
4226 "\x3f\x0e\x54\x17\x48\x80\x5d\xd3"
4227 "\xc3\xda\x25\x3d\xa1\xc8\xcb\x9f"
4228 "\x9b\x70\xb3\xa1\xeb\x04\x52\xa1"
4229 "\xf2\x22\x0f\xfc\xc8\x18\xfa\xf9"
4230 "\x85\x9c\xf1\xac\xeb\x0c\x02\x46"
4231 "\x75\xd2\xf5\x2c\xe3\xd2\x59\x94"
4232 "\x12\xf3\x3c\xfc\xd7\x92\xfa\x36"
4233 "\xba\x61\x34\x38\x7c\xda\x48\x3e"
4234 "\x08\xc9\x39\x23\x5e\x02\x2c\x1a"
4235 "\x18\x7e\xb4\xd9\xfd\x9e\x40\x02"
4236 "\xb1\x33\x37\x32\xe7\xde\xd6\xd0"
4237 "\x7c\x58\x65\x4b\xf8\x34\x27\x9c"
4238 "\x44\xb4\xbd\xe9\xe9\x4c\x78\x7d"
4239 "\x4b\x9f\xce\xb1\xcd\x47\xa5\x37"
4240 "\xe5\x6d\xbd\xb9\x43\x94\x0a\xd4"
4241 "\xd6\xf9\x04\x5f\xb5\x66\x6c\x1a"
4242 "\x35\x12\xe3\x36\x28\x27\x36\x58"
4243 "\x01\x2b\x79\xe4\xba\x6d\x10\x7d"
4244 "\x65\xdf\x84\x95\xf4\xd5\xb6\x8f"
4245 "\x2b\x9f\x96\x00\x86\x60\xf0\x21"
4246 "\x76\xa8\x6a\x8c\x28\x1c\xb3\x6b"
4247 "\x97\xd7\xb6\x53\x2a\xcc\xab\x40"
4248 "\x9d\x62\x79\x58\x52\xe6\x65\xb7"
4249 "\xab\x55\x67\x9c\x89\x7c\x03\xb0"
4250 "\x73\x59\xc5\x81\xf5\x18\x17\x5c"
4251 "\x89\xf3\x78\x35\x44\x62\x78\x72"
4252 "\xd0\x96\xeb\x31\xe7\x87\x77\x14"
4253 "\x99\x51\xf2\x59\x26\x9e\xb5\xa6"
4254 "\x45\xfe\x6e\xbd\x07\x4c\x94\x5a"
4255 "\xa5\x7d\xfc\xf1\x2b\x77\xe2\xfe"
4256 "\x17\xd4\x84\xa0\xac\xb5\xc7\xda"
4257 "\xa9\x1a\xb6\xf3\x74\x11\xb4\x9d"
4258 "\xfb\x79\x2e\x04\x2d\x50\x28\x83"
4259 "\xbf\xc6\x52\xd3\x34\xd6\xe8\x7a"
4260 "\xb6\xea\xe7\xa8\x6c\x15\x1e\x2c"
4261 "\x57\xbc\x48\x4e\x5f\x5c\xb6\x92"
4262 "\xd2\x49\x77\x81\x6d\x90\x70\xae"
4263 "\x98\xa1\x03\x0d\x6b\xb9\x77\x14"
4264 "\xf1\x4e\x23\xd3\xf8\x68\xbd\xc2"
4265 "\xfe\x04\xb7\x5c\xc5\x17\x60\x8f"
4266 "\x65\x54\xa4\x7a\x42\xdc\x18\x0d"
4267 "\xb5\xcf\x0f\xd3\xc7\x91\x66\x1b"
4268 "\x45\x42\x27\x75\x50\xe5\xee\xb8"
4269 "\x7f\x33\x2c\xba\x4a\x92\x4d\x2c"
4270 "\x3c\xe3\x0d\x80\x01\xba\x0d\x29"
4271 "\xd8\x3c\xe9\x13\x16\x57\xe6\xea"
4272 "\x94\x52\xe7\x00\x4d\x30\xb0\x0f"
4273 "\x35\xb8\xb8\xa7\xb1\xb5\x3b\x44"
4274 "\xe1\x2f\xfd\x88\xed\x43\xe7\x52"
4275 "\x10\x93\xb3\x8a\x30\x6b\x0a\xf7"
4276 "\x23\xc6\x50\x9d\x4a\xb0\xde\xc3"
4277 "\xdc\x9b\x2f\x01\x56\x36\x09\xc5"
4278 "\x2f\x6b\xfe\xf1\xd8\x27\x45\x03"
4279 "\x30\x5e\x5c\x5b\xb4\x62\x0e\x1a"
4280 "\xa9\x21\x2b\x92\x94\x87\x62\x57"
4281 "\x4c\x10\x74\x1a\xf1\x0a\xc5\x84"
4282 "\x3b\x9e\x72\x02\xd7\xcc\x09\x56"
4283 "\xbd\x54\xc1\xf0\xc3\xe3\xb3\xf8"
4284 "\xd2\x0d\x61\xcb\xef\xce\x0d\x05"
4285 "\xb0\x98\xd9\x8e\x4f\xf9\xbc\x93"
4286 "\xa6\xea\xc8\xcf\x10\x53\x4b\xf1"
4287 "\xec\xfc\x89\xf9\x64\xb0\x22\xbf"
4288 "\x9e\x55\x46\x9f\x7c\x50\x8e\x84"
4289 "\x54\x20\x98\xd7\x6c\x40\x1e\xdb"
4290 "\x69\x34\x78\x61\x24\x21\x9c\x8a"
4291 "\xb3\x62\x31\x8b\x6e\xf5\x2a\x35"
4292 "\x86\x13\xb1\x6c\x64\x2e\x41\xa5"
4293 "\x05\xf2\x42\xba\xd2\x3a\x0d\x8e"
4294 "\x8a\x59\x94\x3c\xcf\x36\x27\x82"
4295 "\xc2\x45\xee\x58\xcd\x88\xb4\xec"
4296 "\xde\xb2\x96\x0a\xaf\x38\x6f\x88"
4297 "\xd7\xd8\xe1\xdf\xb9\x96\xa9\x0a"
4298 "\xb1\x95\x28\x86\x20\xe9\x17\x49"
4299 "\xa2\x29\x38\xaa\xa5\xe9\x6e\xf1"
4300 "\x19\x27\xc0\xd5\x2a\x22\xc3\x0b"
4301 "\xdb\x7c\x73\x10\xb9\xba\x89\x76"
4302 "\x54\xae\x7d\x71\xb3\x93\xf6\x32"
4303 "\xe6\x47\x43\x55\xac\xa0\x0d\xc2"
4304 "\x93\x27\x4a\x8e\x0e\x74\x15\xc7"
4305 "\x0b\x85\xd9\x0c\xa9\x30\x7a\x3e"
4306 "\xea\x8f\x85\x6d\x3a\x12\x4f\x72"
4307 "\x69\x58\x7a\x80\xbb\xb5\x97\xf3"
4308 "\xcf\x70\xd2\x5d\xdd\x4d\x21\x79"
4309 "\x54\x4d\xe4\x05\xe8\xbd\xc2\x62"
4310 "\xb1\x3b\x77\x1c\xd6\x5c\xf3\xa0"
4311 "\x79\x00\xa8\x6c\x29\xd9\x18\x24"
4312 "\x36\xa2\x46\xc0\x96\x65\x7f\xbd"
4313 "\x2a\xed\x36\x16\x0c\xaa\x9f\xf4"
4314 "\xc5\xb4\xe2\x12\xed\x69\xed\x4f"
4315 "\x26\x2c\x39\x52\x89\x98\xe7\x2c"
4316 "\x99\xa4\x9e\xa3\x9b\x99\x46\x7a"
4317 "\x3a\xdc\xa8\x59\xa3\xdb\xc3\x3b"
4318 "\x95\x0d\x3b\x09\x6e\xee\x83\x5d"
4319 "\x32\x4d\xed\xab\xfa\x98\x14\x4e"
4320 "\xc3\x15\x45\x53\x61\xc4\x93\xbd"
4321 "\x90\xf4\x99\x95\x4c\xe6\x76\x92"
4322 "\x29\x90\x46\x30\x92\x69\x7d\x13"
4323 "\xf2\xa5\xcd\x69\x49\x44\xb2\x0f"
4324 "\x63\x40\x36\x5f\x09\xe2\x78\xf8"
4325 "\x91\xe3\xe2\xfa\x10\xf7\xc8\x24"
4326 "\xa8\x89\x32\x5c\x37\x25\x1d\xb2"
4327 "\xea\x17\x8a\x0a\xa9\x64\xc3\x7c"
4328 "\x3c\x7c\xbd\xc6\x79\x34\xe7\xe2"
4329 "\x85\x8e\xbf\xf8\xde\x92\xa0\xae"
4330 "\x20\xc4\xf6\xbb\x1f\x38\x19\x0e"
4331 "\xe8\x79\x9c\xa1\x23\xe9\x54\x7e"
4332 "\x37\x2f\xe2\x94\x32\xaf\xa0\x23"
4333 "\x49\xe4\xc0\xb3\xac\x00\x8f\x36"
4334 "\x05\xc4\xa6\x96\xec\x05\x98\x4f"
4335 "\x96\x67\x57\x1f\x20\x86\x1b\x2d"
4336 "\x69\xe4\x29\x93\x66\x5f\xaf\x6b"
4337 "\x88\x26\x2c\x67\x02\x4b\x52\xd0"
4338 "\x83\x7a\x43\x1f\xc0\x71\x15\x25"
4339 "\x77\x65\x08\x60\x11\x76\x4c\x8d"
4340 "\xed\xa9\x27\xc6\xb1\x2a\x2c\x6a"
4341 "\x4a\x97\xf5\xc6\xb7\x70\x42\xd3"
4342 "\x03\xd1\x24\x95\xec\x6d\xab\x38"
4343 "\x72\xce\xe2\x8b\x33\xd7\x51\x09"
4344 "\xdc\x45\xe0\x09\x96\x32\xf3\xc4"
4345 "\x84\xdc\x73\x73\x2d\x1b\x11\x98"
4346 "\xc5\x0e\x69\x28\x94\xc7\xb5\x4d"
4347 "\xc8\x8a\xd0\xaa\x13\x2e\x18\x74"
4348 "\xdd\xd1\x1e\xf3\x90\xe8\xfc\x9a"
4349 "\x72\x4a\x0e\xd1\xe4\xfb\x0d\x96"
4350 "\xd1\x0c\x79\x85\x1b\x1c\xfe\xe1"
4351 "\x62\x8f\x7a\x73\x32\xab\xc8\x18"
4352 "\x69\xe3\x34\x30\xdf\x13\xa6\xe5"
4353 "\xe8\x0e\x67\x7f\x81\x11\xb4\x60"
4354 "\xc7\xbd\x79\x65\x50\xdc\xc4\x5b"
4355 "\xde\x39\xa4\x01\x72\x63\xf3\xd1"
4356 "\x64\x4e\xdf\xfc\x27\x92\x37\x0d"
4357 "\x57\xcd\x11\x4f\x11\x04\x8e\x1d"
4358 "\x16\xf7\xcd\x92\x9a\x99\x30\x14"
4359 "\xf1\x7c\x67\x1b\x1f\x41\x0b\xe8"
4360 "\x32\xe8\xb8\xc1\x4f\x54\x86\x4f"
4361 "\xe5\x79\x81\x73\xcd\x43\x59\x68"
4362 "\x73\x02\x3b\x78\x21\x72\x43\x00"
4363 "\x49\x17\xf7\x00\xaf\x68\x24\x53"
4364 "\x05\x0a\xc3\x33\xe0\x33\x3f\x69"
4365 "\xd2\x84\x2f\x0b\xed\xde\x04\xf4"
4366 "\x11\x94\x13\x69\x51\x09\x28\xde"
4367 "\x57\x5c\xef\xdc\x9a\x49\x1c\x17"
4368 "\x97\xf3\x96\xc1\x7f\x5d\x2e\x7d"
4369 "\x55\xb8\xb3\x02\x09\xb3\x1f\xe7"
4370 "\xc9\x8d\xa3\x36\x34\x8a\x77\x13"
4371 "\x30\x63\x4c\xa5\xcd\xc3\xe0\x7e"
4372 "\x05\xa1\x7b\x0c\xcb\x74\x47\x31"
4373 "\x62\x03\x43\xf1\x87\xb4\xb0\x85"
4374 "\x87\x8e\x4b\x25\xc7\xcf\xae\x4b"
4375 "\x36\x46\x3e\x62\xbc\x6f\xeb\x5f"
4376 "\x73\xac\xe6\x07\xee\xc1\xa1\xd6"
4377 "\xc4\xab\xc9\xd6\x89\x45\xe1\xf1"
4378 "\x04\x4e\x1a\x6f\xbb\x4f\x3a\xa3"
4379 "\xa0\xcb\xa3\x0a\xd8\x71\x35\x55"
4380 "\xe4\xbc\x2e\x04\x06\xe6\xff\x5b"
4381 "\x1c\xc0\x11\x7c\xc5\x17\xf3\x38"
4382 "\xcf\xe9\xba\x0f\x0e\xef\x02\xc2"
4383 "\x8d\xc6\xbc\x4b\x67\x20\x95\xd7"
4384 "\x2c\x45\x5b\x86\x44\x8c\x6f\x2e"
4385 "\x7e\x9f\x1c\x77\xba\x6b\x0e\xa3"
4386 "\x69\xdc\xab\x24\x57\x60\x47\xc1"
4387 "\xd1\xa5\x9d\x23\xe6\xb1\x37\xfe"
4388 "\x93\xd2\x4c\x46\xf9\x0c\xc6\xfb"
4389 "\xd6\x9d\x99\x69\xab\x7a\x07\x0c"
4390 "\x65\xe7\xc4\x08\x96\xe2\xa5\x01"
4391 "\x3f\x46\x07\x05\x7e\xe8\x9a\x90"
4392 "\x50\xdc\xe9\x7a\xea\xa1\x39\x6e"
4393 "\x66\xe4\x6f\xa5\x5f\xb2\xd9\x5b"
4394 "\xf5\xdb\x2a\x32\xf0\x11\x6f\x7c"
4395 "\x26\x10\x8f\x3d\x80\xe9\x58\xf7"
4396 "\xe0\xa8\x57\xf8\xdb\x0e\xce\x99"
4397 "\x63\x19\x3d\xd5\xec\x1b\x77\x69"
4398 "\x98\xf6\xe4\x5f\x67\x17\x4b\x09"
4399 "\x85\x62\x82\x70\x18\xe2\x9a\x78"
4400 "\xe2\x62\xbd\xb4\xf1\x42\xc6\xfb"
4401 "\x08\xd0\xbd\xeb\x4e\x09\xf2\xc8"
4402 "\x1e\xdc\x3d\x32\x21\x56\x9c\x4f"
4403 "\x35\xf3\x61\x06\x72\x84\xc4\x32"
4404 "\xf2\xf1\xfa\x0b\x2f\xc3\xdb\x02"
4405 "\x04\xc2\xde\x57\x64\x60\x8d\xcf"
4406 "\xcb\x86\x5d\x97\x3e\xb1\x9c\x01"
4407 "\xd6\x28\x8f\x99\xbc\x46\xeb\x05"
4408 "\xaf\x7e\xb8\x21\x2a\x56\x85\x1c"
4409 "\xb3\x71\xa0\xde\xca\x96\xf1\x78"
4410 "\x49\xa2\x99\x81\x80\x5c\x01\xf5"
4411 "\xa0\xa2\x56\x63\xe2\x70\x07\xa5"
4412 "\x95\xd6\x85\xeb\x36\x9e\xa9\x51"
4413 "\x66\x56\x5f\x1d\x02\x19\xe2\xf6"
4414 "\x4f\x73\x38\x09\x75\x64\x48\xe0"
4415 "\xf1\x7e\x0e\xe8\x9d\xf9\xed\x94"
4416 "\xfe\x16\x26\x62\x49\x74\xf4\xb0"
4417 "\xd4\xa9\x6c\xb0\xfd\x53\xe9\x81"
4418 "\xe0\x7a\xbf\xcf\xb5\xc4\x01\x81"
4419 "\x79\x99\x77\x01\x3b\xe9\xa2\xb6"
4420 "\xe6\x6a\x8a\x9e\x56\x1c\x8d\x1e"
4421 "\x8f\x06\x55\x2c\x6c\xdc\x92\x87"
4422 "\x64\x3b\x4b\x19\xa1\x13\x64\x1d"
4423 "\x4a\xe9\xc0\x00\xb8\x95\xef\x6b"
4424 "\x1a\x86\x6d\x37\x52\x02\xc2\xe0"
4425 "\xc8\xbb\x42\x0c\x02\x21\x4a\xc9"
4426 "\xef\xa0\x54\xe4\x5e\x16\x53\x81"
4427 "\x70\x62\x10\xaf\xde\xb8\xb5\xd3"
4428 "\xe8\x5e\x6c\xc3\x8a\x3e\x18\x07"
4429 "\xf2\x2f\x7d\xa7\xe1\x3d\x4e\xb4"
4430 "\x26\xa7\xa3\x93\x86\xb2\x04\x1e"
4431 "\x53\x5d\x86\xd6\xde\x65\xca\xe3"
4432 "\x4e\xc1\xcf\xef\xc8\x70\x1b\x83"
4433 "\x13\xdd\x18\x8b\x0d\x76\xd2\xf6"
4434 "\x37\x7a\x93\x7a\x50\x11\x9f\x96"
4435 "\x86\x25\xfd\xac\xdc\xbe\x18\x93"
4436 "\x19\x6b\xec\x58\x4f\xb9\x75\xa7"
4437 "\xdd\x3f\x2f\xec\xc8\x5a\x84\xab"
4438 "\xd5\xe4\x8a\x07\xf6\x4d\x23\xd6"
4439 "\x03\xfb\x03\x6a\xea\x66\xbf\xd4"
4440 "\xb1\x34\xfb\x78\xe9\x55\xdc\x7c"
4441 "\x3d\x9c\xe5\x9a\xac\xc3\x7a\x80"
4442 "\x24\x6d\xa0\xef\x25\x7c\xb7\xea"
4443 "\xce\x4d\x5f\x18\x60\xce\x87\x22"
4444 "\x66\x2f\xd5\xdd\xdd\x02\x21\x75"
4445 "\x82\xa0\x1f\x58\xc6\xd3\x62\xf7"
4446 "\x32\xd8\xaf\x1e\x07\x77\x51\x96"
4447 "\xd5\x6b\x1e\x7e\x80\x02\xe8\x67"
4448 "\xea\x17\x0b\x10\xd2\x3f\x28\x25"
4449 "\x4f\x05\x77\x02\x14\x69\xf0\x2c"
4450 "\xbe\x0c\xf1\x74\x30\xd1\xb9\x9b"
4451 "\xfc\x8c\xbb\x04\x16\xd9\xba\xc3"
4452 "\xbc\x91\x8a\xc4\x30\xa4\xb0\x12"
4453 "\x4c\x21\x87\xcb\xc9\x1d\x16\x96"
4454 "\x07\x6f\x23\x54\xb9\x6f\x79\xe5"
4455 "\x64\xc0\x64\xda\xb1\xae\xdd\x60"
4456 "\x6c\x1a\x9d\xd3\x04\x8e\x45\xb0"
4457 "\x92\x61\xd0\x48\x81\xed\x5e\x1d"
4458 "\xa0\xc9\xa4\x33\xc7\x13\x51\x5d"
4459 "\x7f\x83\x73\xb6\x70\x18\x65\x3e"
4460 "\x2f\x0e\x7a\x12\x39\x98\xab\xd8"
4461 "\x7e\x6f\xa3\xd1\xba\x56\xad\xbd"
4462 "\xf0\x03\x01\x1c\x85\x35\x9f\xeb"
4463 "\x19\x63\xa1\xaf\xfe\x2d\x35\x50"
4464 "\x39\xa0\x65\x7c\x95\x7e\x6b\xfe"
4465 "\xc1\xac\x07\x7c\x98\x4f\xbe\x57"
4466 "\xa7\x22\xec\xe2\x7e\x29\x09\x53"
4467 "\xe8\xbf\xb4\x7e\x3f\x8f\xfc\x14"
4468 "\xce\x54\xf9\x18\x58\xb5\xff\x44"
4469 "\x05\x9d\xce\x1b\xb6\x82\x23\xc8"
4470 "\x2e\xbc\x69\xbb\x4a\x29\x0f\x65"
4471 "\x94\xf0\x63\x06\x0e\xef\x8c\xbd"
4472 "\xff\xfd\xb0\x21\x6e\x57\x05\x75"
4473 "\xda\xd5\xc4\xeb\x8d\x32\xf7\x50"
4474 "\xd3\x6f\x22\xed\x5f\x8e\xa2\x5b"
4475 "\x80\x8c\xc8\x78\x40\x24\x4b\x89"
4476 "\x30\xce\x7a\x97\x0e\xc4\xaf\xef"
4477 "\x9b\xb4\xcd\x66\x74\x14\x04\x2b"
4478 "\xf7\xce\x0b\x1c\x6e\xc2\x78\x8c"
4479 "\xca\xc5\xd0\x1c\x95\x4a\x91\x2d"
4480 "\xa7\x20\xeb\x86\x52\xb7\x67\xd8"
4481 "\x0c\xd6\x04\x14\xde\x51\x74\x75"
4482 "\xe7\x11\xb4\x87\xa3\x3d\x2d\xad"
4483 "\x4f\xef\xa0\x0f\x70\x00\x6d\x13"
4484 "\x19\x1d\x41\x50\xe9\xd8\xf0\x32"
4485 "\x71\xbc\xd3\x11\xf2\xac\xbe\xaf"
4486 "\x75\x46\x65\x4e\x07\x34\x37\xa3"
4487 "\x89\xfe\x75\xd4\x70\x4c\xc6\x3f"
4488 "\x69\x24\x0e\x38\x67\x43\x8c\xde"
4489 "\x06\xb5\xb8\xe7\xc4\xf0\x41\x8f"
4490 "\xf0\xbd\x2f\x0b\xb9\x18\xf8\xde"
4491 "\x64\xb1\xdb\xee\x00\x50\x77\xe1"
4492 "\xc7\xff\xa6\xfa\xdd\x70\xf4\xe3"
4493 "\x93\xe9\x77\x35\x3d\x4b\x2f\x2b"
4494 "\x6d\x55\xf0\xfc\x88\x54\x4e\x89"
4495 "\xc1\x8a\x23\x31\x2d\x14\x2a\xb8"
4496 "\x1b\x15\xdd\x9e\x6e\x7b\xda\x05"
4497 "\x91\x7d\x62\x64\x96\x72\xde\xfc"
4498 "\xc1\xec\xf0\x23\x51\x6f\xdb\x5b"
4499 "\x1d\x08\x57\xce\x09\xb8\xf6\xcd"
4500 "\x8d\x95\xf2\x20\xbf\x0f\x20\x57"
4501 "\x98\x81\x84\x4f\x15\x5c\x76\xe7"
4502 "\x3e\x0a\x3a\x6c\xc4\x8a\xbe\x78"
4503 "\x74\x77\xc3\x09\x4b\x5d\x48\xe4"
4504 "\xc8\xcb\x0b\xea\x17\x28\xcf\xcf"
4505 "\x31\x32\x44\xa4\xe5\x0e\x1a\x98"
4506 "\x94\xc4\xf0\xff\xae\x3e\x44\xe8"
4507 "\xa5\xb3\xb5\x37\x2f\xe8\xaf\x6f"
4508 "\x28\xc1\x37\x5f\x31\xd2\xb9\x33"
4509 "\xb1\xb2\x52\x94\x75\x2c\x29\x59"
4510 "\x06\xc2\x25\xe8\x71\x65\x4e\xed"
4511 "\xc0\x9c\xb1\xbb\x25\xdc\x6c\xe7"
4512 "\x4b\xa5\x7a\x54\x7a\x60\xff\x7a"
4513 "\xe0\x50\x40\x96\x35\x63\xe4\x0b"
4514 "\x76\xbd\xa4\x65\x00\x1b\x57\x88"
4515 "\xae\xed\x39\x88\x42\x11\x3c\xed"
4516 "\x85\x67\x7d\xb9\x68\x82\xe9\x43"
4517 "\x3c\x47\x53\xfa\xe8\xf8\x9f\x1f"
4518 "\x9f\xef\x0f\xf7\x30\xd9\x30\x0e"
4519 "\xb9\x9f\x69\x18\x2f\x7e\xf8\xf8"
4520 "\xf8\x8c\x0f\xd4\x02\x4d\xea\xcd"
4521 "\x0a\x9c\x6f\x71\x6d\x5a\x4c\x60"
4522 "\xce\x20\x56\x32\xc6\xc5\x99\x1f"
4523 "\x09\xe6\x4e\x18\x1a\x15\x13\xa8"
4524 "\x7d\xb1\x6b\xc0\xb2\x6d\xf8\x26"
4525 "\x66\xf8\x3d\x18\x74\x70\x66\x7a"
4526 "\x34\x17\xde\xba\x47\xf1\x06\x18"
4527 "\xcb\xaf\xeb\x4a\x1e\x8f\xa7\x77"
4528 "\xe0\x3b\x78\x62\x66\xc9\x10\xea"
4529 "\x1f\xb7\x29\x0a\x45\xa1\x1d\x1e"
4530 "\x1d\xe2\x65\x61\x50\x9c\xd7\x05"
4531 "\xf2\x0b\x5b\x12\x61\x02\xc8\xe5"
4532 "\x63\x4f\x20\x0c\x07\x17\x33\x5e"
4533 "\x03\x9a\x53\x0f\x2e\x55\xfe\x50"
4534 "\x43\x7d\xd0\xb6\x7e\x5a\xda\xae"
4535 "\x58\xef\x15\xa9\x83\xd9\x46\xb1"
4536 "\x42\xaa\xf5\x02\x6c\xce\x92\x06"
4537 "\x1b\xdb\x66\x45\x91\x79\xc2\x2d"
4538 "\xe6\x53\xd3\x14\xfd\xbb\x44\x63"
4539 "\xc6\xd7\x3d\x7a\x0c\x75\x78\x9d"
4540 "\x5c\xa6\x39\xb3\xe5\x63\xca\x8b"
4541 "\xfe\xd3\xef\x60\x83\xf6\x8e\x70"
4542 "\xb6\x67\xc7\x77\xed\x23\xef\x4c"
4543 "\xf0\xed\x2d\x07\x59\x6f\xc1\x01"
4544 "\x34\x37\x08\xab\xd9\x1f\x09\xb1"
4545 "\xce\x5b\x17\xff\x74\xf8\x9c\xd5"
4546 "\x2c\x56\x39\x79\x0f\x69\x44\x75"
4547 "\x58\x27\x01\xc4\xbf\xa7\xa1\x1d"
4548 "\x90\x17\x77\x86\x5a\x3f\xd9\xd1"
4549 "\x0e\xa0\x10\xf8\xec\x1e\xa5\x7f"
4550 "\x5e\x36\xd1\xe3\x04\x2c\x70\xf7"
4551 "\x8e\xc0\x98\x2f\x6c\x94\x2b\x41"
4552 "\xb7\x60\x00\xb7\x2e\xb8\x02\x8d"
4553 "\xb8\xb0\xd3\x86\xba\x1d\xd7\x90"
4554 "\xd6\xb6\xe1\xfc\xd7\xd8\x28\x06"
4555 "\x63\x9b\xce\x61\x24\x79\xc0\x70"
4556 "\x52\xd0\xb6\xd4\x28\x95\x24\x87"
4557 "\x03\x1f\xb7\x9a\xda\xa3\xfb\x52"
4558 "\x5b\x68\xe7\x4c\x8c\x24\xe1\x42"
4559 "\xf7\xd5\xfd\xad\x06\x32\x9f\xba"
4560 "\xc1\xfc\xdd\xc6\xfc\xfc\xb3\x38"
4561 "\x74\x56\x58\x40\x02\x37\x52\x2c"
4562 "\x55\xcc\xb3\x9e\x7a\xe9\xd4\x38"
4563 "\x41\x5e\x0c\x35\xe2\x11\xd1\x13"
4564 "\xf8\xb7\x8d\x72\x6b\x22\x2a\xb0"
4565 "\xdb\x08\xba\x35\xb9\x3f\xc8\xd3"
4566 "\x24\x90\xec\x58\xd2\x09\xc7\x2d"
4567 "\xed\x38\x80\x36\x72\x43\x27\x49"
4568 "\x4a\x80\x8a\xa2\xe8\xd3\xda\x30"
4569 "\x7d\xb6\x82\x37\x86\x92\x86\x3e"
4570 "\x08\xb2\x28\x5a\x55\x44\x24\x7d"
4571 "\x40\x48\x8a\xb6\x89\x58\x08\xa0"
4572 "\xd6\x6d\x3a\x17\xbf\xf6\x54\xa2"
4573 "\xf5\xd3\x8c\x0f\x78\x12\x57\x8b"
4574 "\xd5\xc2\xfd\x58\x5b\x7f\x38\xe3"
4575 "\xcc\xb7\x7c\x48\xb3\x20\xe8\x81"
4576 "\x14\x32\x45\x05\xe0\xdb\x9f\x75"
4577 "\x85\xb4\x6a\xfc\x95\xe3\x54\x22"
4578 "\x12\xee\x30\xfe\xd8\x30\xef\x34"
4579 "\x50\xab\x46\x30\x98\x2f\xb7\xc0"
4580 "\x15\xa2\x83\xb6\xf2\x06\x21\xa2"
4581 "\xc3\x26\x37\x14\xd1\x4d\xb5\x10"
4582 "\x52\x76\x4d\x6a\xee\xb5\x2b\x15"
4583 "\xb7\xf9\x51\xe8\x2a\xaf\xc7\xfa"
4584 "\x77\xaf\xb0\x05\x4d\xd1\x68\x8e"
4585 "\x74\x05\x9f\x9d\x93\xa5\x3e\x7f"
4586 "\x4e\x5f\x9d\xcb\x09\xc7\x83\xe3"
4587 "\x02\x9d\x27\x1f\xef\x85\x05\x8d"
4588 "\xec\x55\x88\x0f\x0d\x7c\x4c\xe8"
4589 "\xa1\x75\xa0\xd8\x06\x47\x14\xef"
4590 "\xaa\x61\xcf\x26\x15\xad\xd8\xa3"
4591 "\xaa\x75\xf2\x78\x4a\x5a\x61\xdf"
4592 "\x8b\xc7\x04\xbc\xb2\x32\xd2\x7e"
4593 "\x42\xee\xb4\x2f\x51\xff\x7b\x2e"
4594 "\xd3\x02\xe8\xdc\x5d\x0d\x50\xdc"
4595 "\xae\xb7\x46\xf9\xa8\xe6\xd0\x16"
4596 "\xcc\xe6\x2c\x81\xc7\xad\xe9\xf0"
4597 "\x05\x72\x6d\x3d\x0a\x7a\xa9\x02"
4598 "\xac\x82\x93\x6e\xb6\x1c\x28\xfc"
4599 "\x44\x12\xfb\x73\x77\xd4\x13\x39"
4600 "\x29\x88\x8a\xf3\x5c\xa6\x36\xa0"
4601 "\x2a\xed\x7e\xb1\x1d\xd6\x4c\x6b"
4602 "\x41\x01\x18\x5d\x5d\x07\x97\xa6"
4603 "\x4b\xef\x31\x18\xea\xac\xb1\x84"
4604 "\x21\xed\xda\x86",
a773edb3 4605 .rlen = 4100,
23e353c8
JL
4606 },
4607};
4608
4609static struct cipher_testvec aes_ctr_dec_tv_template[] = {
4610 { /* From RFC 3686 */
de224c30
SS
4611 .key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
4612 "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
4613 "\x00\x00\x00\x30",
23e353c8 4614 .klen = 20,
de224c30
SS
4615 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
4616 .input = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
4617 "\x2d\x61\x75\xa3\x26\x13\x11\xb8",
23e353c8 4618 .ilen = 16,
de224c30 4619 .result = "Single block msg",
23e353c8
JL
4620 .rlen = 16,
4621 }, {
de224c30
SS
4622 .key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
4623 "\x43\xd6\xce\x1f\x32\x53\x91\x63"
4624 "\x00\x6c\xb6\xdb",
23e353c8 4625 .klen = 20,
de224c30
SS
4626 .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
4627 .input = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
4628 "\x79\x0d\x41\xee\x8e\xda\xd3\x88"
4629 "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
4630 "\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
4631 .ilen = 32,
4632 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
4633 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4634 "\x10\x11\x12\x13\x14\x15\x16\x17"
4635 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
23e353c8
JL
4636 .rlen = 32,
4637 }, {
de224c30
SS
4638 .key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
4639 "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
4640 "\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
4641 "\x00\x00\x00\x48",
4642 .klen = 28,
4643 .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
4644 .input = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
4645 "\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
4646 .ilen = 16,
4647 .result = "Single block msg",
23e353c8
JL
4648 .rlen = 16,
4649 }, {
de224c30
SS
4650 .key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
4651 "\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
4652 "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
4653 "\x00\x96\xb0\x3b",
23e353c8 4654 .klen = 28,
de224c30
SS
4655 .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
4656 .input = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
4657 "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
4658 "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
4659 "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
23e353c8 4660 .ilen = 32,
de224c30
SS
4661 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
4662 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4663 "\x10\x11\x12\x13\x14\x15\x16\x17"
4664 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
4665 .rlen = 32,
23e353c8 4666 }, {
de224c30
SS
4667 .key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
4668 "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
4669 "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
4670 "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
4671 "\x00\x00\x00\x60",
23e353c8 4672 .klen = 36,
de224c30
SS
4673 .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
4674 .input = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
4675 "\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
23e353c8 4676 .ilen = 16,
de224c30
SS
4677 .result = "Single block msg",
4678 .rlen = 16,
4679 }, {
4680 .key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
4681 "\x07\x96\x36\x58\x79\xef\xf8\x86"
4682 "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
4683 "\x4b\x50\x59\x0c\x87\xa2\x38\x84"
4684 "\x00\xfa\xac\x24",
4685 .klen = 36,
4686 .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
4687 .input = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
4688 "\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
4689 "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
4690 "\x55\x30\x83\x1d\x93\x44\xaf\x1c",
23e353c8 4691 .ilen = 32,
de224c30
SS
4692 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
4693 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4694 "\x10\x11\x12\x13\x14\x15\x16\x17"
4695 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
23e353c8
JL
4696 .rlen = 32,
4697 },
4698};
4699
28db8e3e
MH
4700static struct aead_testvec aes_gcm_enc_tv_template[] = {
4701 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
de224c30 4702 .key = zeroed_string,
28db8e3e 4703 .klen = 16,
de224c30
SS
4704 .result = "\x58\xe2\xfc\xce\xfa\x7e\x30\x61"
4705 "\x36\x7f\x1d\x57\xa4\xe7\x45\x5a",
6160b289 4706 .rlen = 16,
28db8e3e 4707 }, {
de224c30 4708 .key = zeroed_string,
28db8e3e 4709 .klen = 16,
de224c30 4710 .input = zeroed_string,
28db8e3e 4711 .ilen = 16,
de224c30
SS
4712 .result = "\x03\x88\xda\xce\x60\xb6\xa3\x92"
4713 "\xf3\x28\xc2\xb9\x71\xb2\xfe\x78"
4714 "\xab\x6e\x47\xd4\x2c\xec\x13\xbd"
4715 "\xf5\x3a\x67\xb2\x12\x57\xbd\xdf",
6160b289 4716 .rlen = 32,
28db8e3e 4717 }, {
de224c30
SS
4718 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4719 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 4720 .klen = 16,
de224c30
SS
4721 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4722 "\xde\xca\xf8\x88",
4723 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4724 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4725 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4726 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4727 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4728 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4729 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4730 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 4731 .ilen = 64,
de224c30
SS
4732 .result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
4733 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
4734 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
4735 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
4736 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
4737 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
4738 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
4739 "\x3d\x58\xe0\x91\x47\x3f\x59\x85"
4740 "\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
4741 "\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
6160b289 4742 .rlen = 80,
28db8e3e 4743 }, {
de224c30
SS
4744 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4745 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 4746 .klen = 16,
de224c30
SS
4747 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4748 "\xde\xca\xf8\x88",
4749 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4750 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4751 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4752 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4753 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4754 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4755 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4756 "\xba\x63\x7b\x39",
28db8e3e 4757 .ilen = 60,
de224c30
SS
4758 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4759 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4760 "\xab\xad\xda\xd2",
28db8e3e 4761 .alen = 20,
de224c30
SS
4762 .result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
4763 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
4764 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
4765 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
4766 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
4767 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
4768 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
4769 "\x3d\x58\xe0\x91"
4770 "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
4771 "\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
6160b289 4772 .rlen = 76,
28db8e3e 4773 }, {
de224c30 4774 .key = zeroed_string,
28db8e3e 4775 .klen = 24,
de224c30
SS
4776 .result = "\xcd\x33\xb2\x8a\xc7\x73\xf7\x4b"
4777 "\xa0\x0e\xd1\xf3\x12\x57\x24\x35",
6160b289 4778 .rlen = 16,
28db8e3e 4779 }, {
de224c30 4780 .key = zeroed_string,
28db8e3e 4781 .klen = 24,
de224c30 4782 .input = zeroed_string,
28db8e3e 4783 .ilen = 16,
de224c30
SS
4784 .result = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
4785 "\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
4786 "\x2f\xf5\x8d\x80\x03\x39\x27\xab"
4787 "\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
6160b289 4788 .rlen = 32,
28db8e3e 4789 }, {
de224c30
SS
4790 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4791 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
4792 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
28db8e3e 4793 .klen = 24,
de224c30
SS
4794 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4795 "\xde\xca\xf8\x88",
4796 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4797 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4798 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4799 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4800 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4801 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4802 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4803 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 4804 .ilen = 64,
de224c30
SS
4805 .result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
4806 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
4807 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
4808 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
4809 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
4810 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
4811 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
4812 "\xcc\xda\x27\x10\xac\xad\xe2\x56"
4813 "\x99\x24\xa7\xc8\x58\x73\x36\xbf"
4814 "\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
6160b289 4815 .rlen = 80,
28db8e3e 4816 }, {
de224c30
SS
4817 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4818 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
4819 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
28db8e3e 4820 .klen = 24,
de224c30
SS
4821 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4822 "\xde\xca\xf8\x88",
4823 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4824 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4825 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4826 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4827 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4828 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4829 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4830 "\xba\x63\x7b\x39",
28db8e3e 4831 .ilen = 60,
de224c30
SS
4832 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4833 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4834 "\xab\xad\xda\xd2",
28db8e3e 4835 .alen = 20,
de224c30
SS
4836 .result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
4837 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
4838 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
4839 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
4840 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
4841 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
4842 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
4843 "\xcc\xda\x27\x10"
4844 "\x25\x19\x49\x8e\x80\xf1\x47\x8f"
4845 "\x37\xba\x55\xbd\x6d\x27\x61\x8c",
6160b289 4846 .rlen = 76,
28db8e3e
MH
4847 .np = 2,
4848 .tap = { 32, 28 },
4849 .anp = 2,
4850 .atap = { 8, 12 }
4851 }, {
de224c30 4852 .key = zeroed_string,
28db8e3e 4853 .klen = 32,
de224c30
SS
4854 .result = "\x53\x0f\x8a\xfb\xc7\x45\x36\xb9"
4855 "\xa9\x63\xb4\xf1\xc4\xcb\x73\x8b",
6160b289 4856 .rlen = 16,
28db8e3e
MH
4857 }
4858};
4859
4860static struct aead_testvec aes_gcm_dec_tv_template[] = {
4861 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
de224c30 4862 .key = zeroed_string,
28db8e3e 4863 .klen = 32,
de224c30
SS
4864 .input = "\xce\xa7\x40\x3d\x4d\x60\x6b\x6e"
4865 "\x07\x4e\xc5\xd3\xba\xf3\x9d\x18"
4866 "\xd0\xd1\xc8\xa7\x99\x99\x6b\xf0"
4867 "\x26\x5b\x98\xb5\xd4\x8a\xb9\x19",
6160b289 4868 .ilen = 32,
de224c30 4869 .result = zeroed_string,
6160b289 4870 .rlen = 16,
28db8e3e 4871 }, {
de224c30
SS
4872 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4873 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
4874 "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4875 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 4876 .klen = 32,
de224c30
SS
4877 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4878 "\xde\xca\xf8\x88",
4879 .input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
4880 "\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
4881 "\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
4882 "\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
4883 "\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
4884 "\xa7\xb0\x8b\x10\x56\x82\x88\x38"
4885 "\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
4886 "\xbc\xc9\xf6\x62\x89\x80\x15\xad"
4887 "\xb0\x94\xda\xc5\xd9\x34\x71\xbd"
4888 "\xec\x1a\x50\x22\x70\xe3\xcc\x6c",
6160b289 4889 .ilen = 80,
de224c30
SS
4890 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4891 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4892 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4893 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4894 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4895 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4896 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4897 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 4898 .rlen = 64,
28db8e3e 4899 }, {
de224c30
SS
4900 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4901 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
4902 "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4903 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 4904 .klen = 32,
de224c30
SS
4905 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4906 "\xde\xca\xf8\x88",
4907 .input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
4908 "\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
4909 "\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
4910 "\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
4911 "\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
4912 "\xa7\xb0\x8b\x10\x56\x82\x88\x38"
4913 "\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
4914 "\xbc\xc9\xf6\x62"
4915 "\x76\xfc\x6e\xce\x0f\x4e\x17\x68"
4916 "\xcd\xdf\x88\x53\xbb\x2d\x55\x1b",
6160b289 4917 .ilen = 76,
de224c30
SS
4918 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4919 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4920 "\xab\xad\xda\xd2",
28db8e3e 4921 .alen = 20,
de224c30
SS
4922 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4923 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4924 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4925 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4926 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4927 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4928 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4929 "\xba\x63\x7b\x39",
28db8e3e 4930 .rlen = 60,
28db8e3e 4931 .np = 2,
6160b289 4932 .tap = { 48, 28 },
28db8e3e
MH
4933 .anp = 3,
4934 .atap = { 8, 8, 4 }
4935 }, {
de224c30
SS
4936 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4937 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 4938 .klen = 16,
de224c30
SS
4939 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4940 "\xde\xca\xf8\x88",
4941 .input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
4942 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
4943 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
4944 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
4945 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
4946 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
4947 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
4948 "\x3d\x58\xe0\x91\x47\x3f\x59\x85"
4949 "\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
4950 "\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
6160b289 4951 .ilen = 80,
de224c30
SS
4952 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4953 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4954 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4955 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4956 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4957 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4958 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4959 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 4960 .rlen = 64,
28db8e3e 4961 }, {
de224c30
SS
4962 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4963 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
28db8e3e 4964 .klen = 16,
de224c30
SS
4965 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4966 "\xde\xca\xf8\x88",
4967 .input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
4968 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
4969 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
4970 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
4971 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
4972 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
4973 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
4974 "\x3d\x58\xe0\x91"
4975 "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
4976 "\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
6160b289 4977 .ilen = 76,
de224c30
SS
4978 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4979 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4980 "\xab\xad\xda\xd2",
28db8e3e 4981 .alen = 20,
de224c30
SS
4982 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4983 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4984 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4985 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4986 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4987 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4988 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4989 "\xba\x63\x7b\x39",
28db8e3e 4990 .rlen = 60,
28db8e3e 4991 }, {
de224c30 4992 .key = zeroed_string,
28db8e3e 4993 .klen = 24,
de224c30
SS
4994 .input = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
4995 "\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
4996 "\x2f\xf5\x8d\x80\x03\x39\x27\xab"
4997 "\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
6160b289 4998 .ilen = 32,
de224c30 4999 .result = zeroed_string,
6160b289 5000 .rlen = 16,
28db8e3e 5001 }, {
de224c30
SS
5002 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5003 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5004 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
28db8e3e 5005 .klen = 24,
de224c30
SS
5006 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5007 "\xde\xca\xf8\x88",
5008 .input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5009 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5010 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5011 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5012 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5013 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5014 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5015 "\xcc\xda\x27\x10\xac\xad\xe2\x56"
5016 "\x99\x24\xa7\xc8\x58\x73\x36\xbf"
5017 "\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
6160b289 5018 .ilen = 80,
de224c30
SS
5019 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5020 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5021 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5022 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5023 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5024 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5025 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5026 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
28db8e3e 5027 .rlen = 64,
28db8e3e 5028 }, {
de224c30
SS
5029 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5030 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5031 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
28db8e3e 5032 .klen = 24,
de224c30
SS
5033 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5034 "\xde\xca\xf8\x88",
5035 .input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5036 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5037 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5038 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5039 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5040 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5041 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5042 "\xcc\xda\x27\x10"
5043 "\x25\x19\x49\x8e\x80\xf1\x47\x8f"
5044 "\x37\xba\x55\xbd\x6d\x27\x61\x8c",
6160b289 5045 .ilen = 76,
de224c30
SS
5046 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5047 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5048 "\xab\xad\xda\xd2",
28db8e3e 5049 .alen = 20,
de224c30
SS
5050 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5051 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5052 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5053 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5054 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5055 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5056 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5057 "\xba\x63\x7b\x39",
28db8e3e 5058 .rlen = 60,
28db8e3e
MH
5059 }
5060};
5061
93cc74e0
JL
5062static struct aead_testvec aes_ccm_enc_tv_template[] = {
5063 { /* From RFC 3610 */
de224c30
SS
5064 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5065 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5066 .klen = 16,
de224c30
SS
5067 .iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
5068 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5069 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
93cc74e0 5070 .alen = 8,
de224c30
SS
5071 .input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5072 "\x10\x11\x12\x13\x14\x15\x16\x17"
5073 "\x18\x19\x1a\x1b\x1c\x1d\x1e",
93cc74e0 5074 .ilen = 23,
de224c30
SS
5075 .result = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
5076 "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
5077 "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
5078 "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
93cc74e0
JL
5079 .rlen = 31,
5080 }, {
de224c30
SS
5081 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5082 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5083 .klen = 16,
de224c30
SS
5084 .iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
5085 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5086 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5087 "\x08\x09\x0a\x0b",
93cc74e0 5088 .alen = 12,
de224c30
SS
5089 .input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5090 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5091 "\x1c\x1d\x1e\x1f",
93cc74e0 5092 .ilen = 20,
de224c30
SS
5093 .result = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
5094 "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
5095 "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
5096 "\x7d\x9c\x2d\x93",
93cc74e0
JL
5097 .rlen = 28,
5098 }, {
de224c30
SS
5099 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5100 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5101 .klen = 16,
de224c30
SS
5102 .iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
5103 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5104 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
93cc74e0 5105 .alen = 8,
de224c30
SS
5106 .input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5107 "\x10\x11\x12\x13\x14\x15\x16\x17"
5108 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
5109 "\x20",
93cc74e0 5110 .ilen = 25,
de224c30
SS
5111 .result = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
5112 "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
5113 "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
5114 "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
5115 "\x7e\x5f\x4e",
93cc74e0
JL
5116 .rlen = 35,
5117 }, {
de224c30
SS
5118 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5119 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5120 .klen = 16,
de224c30
SS
5121 .iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
5122 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5123 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5124 "\x08\x09\x0a\x0b",
93cc74e0 5125 .alen = 12,
de224c30
SS
5126 .input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5127 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5128 "\x1c\x1d\x1e",
93cc74e0 5129 .ilen = 19,
de224c30
SS
5130 .result = "\x07\x34\x25\x94\x15\x77\x85\x15"
5131 "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
5132 "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
5133 "\x4d\x99\x99\x88\xdd",
93cc74e0
JL
5134 .rlen = 29,
5135 }, {
de224c30
SS
5136 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5137 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5138 .klen = 16,
de224c30
SS
5139 .iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
5140 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5141 .assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
93cc74e0 5142 .alen = 8,
de224c30
SS
5143 .input = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
5144 "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
5145 "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
93cc74e0 5146 .ilen = 24,
de224c30
SS
5147 .result = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
5148 "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
5149 "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
5150 "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
93cc74e0
JL
5151 .rlen = 32,
5152 }, {
de224c30
SS
5153 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5154 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5155 .klen = 16,
de224c30
SS
5156 .iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
5157 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5158 .assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
5159 "\x20\xea\x60\xc0",
93cc74e0 5160 .alen = 12,
de224c30
SS
5161 .input = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
5162 "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
5163 "\x3a\x80\x3b\xa8\x7f",
93cc74e0 5164 .ilen = 21,
de224c30
SS
5165 .result = "\x00\x97\x69\xec\xab\xdf\x48\x62"
5166 "\x55\x94\xc5\x92\x51\xe6\x03\x57"
5167 "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
5168 "\x5a\xe0\x70\x45\x51",
93cc74e0
JL
5169 .rlen = 29,
5170 }, {
de224c30
SS
5171 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5172 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5173 .klen = 16,
de224c30
SS
5174 .iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
5175 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5176 .assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
93cc74e0 5177 .alen = 8,
de224c30
SS
5178 .input = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
5179 "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
5180 "\x98\x09\xd6\x7d\xbe\xdd\x18",
93cc74e0 5181 .ilen = 23,
de224c30
SS
5182 .result = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
5183 "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
5184 "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
5185 "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
5186 "\xba",
93cc74e0
JL
5187 .rlen = 33,
5188 },
5189};
5190
5191static struct aead_testvec aes_ccm_dec_tv_template[] = {
5192 { /* From RFC 3610 */
de224c30
SS
5193 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5194 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5195 .klen = 16,
de224c30
SS
5196 .iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
5197 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5198 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
93cc74e0 5199 .alen = 8,
de224c30
SS
5200 .input = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
5201 "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
5202 "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
5203 "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
93cc74e0 5204 .ilen = 31,
de224c30
SS
5205 .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5206 "\x10\x11\x12\x13\x14\x15\x16\x17"
5207 "\x18\x19\x1a\x1b\x1c\x1d\x1e",
93cc74e0
JL
5208 .rlen = 23,
5209 }, {
de224c30
SS
5210 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5211 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5212 .klen = 16,
de224c30
SS
5213 .iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
5214 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5215 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5216 "\x08\x09\x0a\x0b",
93cc74e0 5217 .alen = 12,
de224c30
SS
5218 .input = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
5219 "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
5220 "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
5221 "\x7d\x9c\x2d\x93",
93cc74e0 5222 .ilen = 28,
de224c30
SS
5223 .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5224 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5225 "\x1c\x1d\x1e\x1f",
93cc74e0
JL
5226 .rlen = 20,
5227 }, {
de224c30
SS
5228 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5229 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5230 .klen = 16,
de224c30
SS
5231 .iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
5232 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5233 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
93cc74e0 5234 .alen = 8,
de224c30
SS
5235 .input = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
5236 "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
5237 "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
5238 "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
5239 "\x7e\x5f\x4e",
93cc74e0 5240 .ilen = 35,
de224c30
SS
5241 .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5242 "\x10\x11\x12\x13\x14\x15\x16\x17"
5243 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
5244 "\x20",
93cc74e0
JL
5245 .rlen = 25,
5246 }, {
de224c30
SS
5247 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5248 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
93cc74e0 5249 .klen = 16,
de224c30
SS
5250 .iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
5251 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5252 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5253 "\x08\x09\x0a\x0b",
93cc74e0 5254 .alen = 12,
de224c30
SS
5255 .input = "\x07\x34\x25\x94\x15\x77\x85\x15"
5256 "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
5257 "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
5258 "\x4d\x99\x99\x88\xdd",
93cc74e0 5259 .ilen = 29,
de224c30
SS
5260 .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5261 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5262 "\x1c\x1d\x1e",
93cc74e0
JL
5263 .rlen = 19,
5264 }, {
de224c30
SS
5265 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5266 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5267 .klen = 16,
de224c30
SS
5268 .iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
5269 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5270 .assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
93cc74e0 5271 .alen = 8,
de224c30
SS
5272 .input = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
5273 "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
5274 "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
5275 "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
93cc74e0 5276 .ilen = 32,
de224c30
SS
5277 .result = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
5278 "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
5279 "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
93cc74e0
JL
5280 .rlen = 24,
5281 }, {
de224c30
SS
5282 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5283 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5284 .klen = 16,
de224c30
SS
5285 .iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
5286 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5287 .assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
5288 "\x20\xea\x60\xc0",
93cc74e0 5289 .alen = 12,
de224c30
SS
5290 .input = "\x00\x97\x69\xec\xab\xdf\x48\x62"
5291 "\x55\x94\xc5\x92\x51\xe6\x03\x57"
5292 "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
5293 "\x5a\xe0\x70\x45\x51",
93cc74e0 5294 .ilen = 29,
de224c30
SS
5295 .result = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
5296 "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
5297 "\x3a\x80\x3b\xa8\x7f",
93cc74e0
JL
5298 .rlen = 21,
5299 }, {
de224c30
SS
5300 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5301 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
93cc74e0 5302 .klen = 16,
de224c30
SS
5303 .iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
5304 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5305 .assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
93cc74e0 5306 .alen = 8,
de224c30
SS
5307 .input = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
5308 "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
5309 "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
5310 "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
5311 "\xba",
93cc74e0 5312 .ilen = 33,
de224c30
SS
5313 .result = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
5314 "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
5315 "\x98\x09\xd6\x7d\xbe\xdd\x18",
93cc74e0
JL
5316 .rlen = 23,
5317 },
5318};
5319
1da177e4
LT
5320/* Cast5 test vectors from RFC 2144 */
5321#define CAST5_ENC_TEST_VECTORS 3
5322#define CAST5_DEC_TEST_VECTORS 3
5323
ef2736fc 5324static struct cipher_testvec cast5_enc_tv_template[] = {
1da177e4 5325 {
de224c30
SS
5326 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5327 "\x23\x45\x67\x89\x34\x56\x78\x9a",
1da177e4 5328 .klen = 16,
de224c30 5329 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5330 .ilen = 8,
de224c30 5331 .result = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
1da177e4
LT
5332 .rlen = 8,
5333 }, {
de224c30
SS
5334 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5335 "\x23\x45",
1da177e4 5336 .klen = 10,
de224c30 5337 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5338 .ilen = 8,
de224c30 5339 .result = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
1da177e4
LT
5340 .rlen = 8,
5341 }, {
de224c30 5342 .key = "\x01\x23\x45\x67\x12",
1da177e4 5343 .klen = 5,
de224c30 5344 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5345 .ilen = 8,
de224c30 5346 .result = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
1da177e4
LT
5347 .rlen = 8,
5348 },
5349};
5350
ef2736fc 5351static struct cipher_testvec cast5_dec_tv_template[] = {
1da177e4 5352 {
de224c30
SS
5353 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5354 "\x23\x45\x67\x89\x34\x56\x78\x9a",
1da177e4 5355 .klen = 16,
de224c30 5356 .input = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
1da177e4 5357 .ilen = 8,
de224c30 5358 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
5359 .rlen = 8,
5360 }, {
de224c30
SS
5361 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5362 "\x23\x45",
1da177e4 5363 .klen = 10,
de224c30 5364 .input = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
1da177e4 5365 .ilen = 8,
de224c30 5366 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
5367 .rlen = 8,
5368 }, {
de224c30 5369 .key = "\x01\x23\x45\x67\x12",
1da177e4 5370 .klen = 5,
de224c30 5371 .input = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
1da177e4 5372 .ilen = 8,
de224c30 5373 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
5374 .rlen = 8,
5375 },
5376};
5377
ef2736fc
HX
5378/*
5379 * ARC4 test vectors from OpenSSL
1da177e4
LT
5380 */
5381#define ARC4_ENC_TEST_VECTORS 7
5382#define ARC4_DEC_TEST_VECTORS 7
5383
ef2736fc 5384static struct cipher_testvec arc4_enc_tv_template[] = {
1da177e4 5385 {
de224c30 5386 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5387 .klen = 8,
de224c30 5388 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5389 .ilen = 8,
de224c30 5390 .result = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
1da177e4
LT
5391 .rlen = 8,
5392 }, {
de224c30 5393 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5394 .klen = 8,
de224c30 5395 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5396 .ilen = 8,
de224c30 5397 .result = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
1da177e4
LT
5398 .rlen = 8,
5399 }, {
de224c30 5400 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5401 .klen = 8,
de224c30 5402 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5403 .ilen = 8,
de224c30 5404 .result = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
1da177e4
LT
5405 .rlen = 8,
5406 }, {
de224c30 5407 .key = "\xef\x01\x23\x45",
1da177e4 5408 .klen = 4,
de224c30
SS
5409 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
5410 "\x00\x00\x00\x00\x00\x00\x00\x00"
5411 "\x00\x00\x00\x00",
1da177e4 5412 .ilen = 20,
de224c30
SS
5413 .result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5414 "\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
5415 "\x36\xb6\x78\x58",
1da177e4
LT
5416 .rlen = 20,
5417 }, {
de224c30 5418 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5419 .klen = 8,
de224c30
SS
5420 .input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5421 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5422 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5423 "\x12\x34\x56\x78",
1da177e4 5424 .ilen = 28,
de224c30
SS
5425 .result = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
5426 "\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
5427 "\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
5428 "\x40\x01\x1e\xcf",
1da177e4
LT
5429 .rlen = 28,
5430 }, {
de224c30 5431 .key = "\xef\x01\x23\x45",
1da177e4 5432 .klen = 4,
de224c30
SS
5433 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
5434 "\x00\x00",
1da177e4 5435 .ilen = 10,
de224c30
SS
5436 .result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5437 "\xbd\x61",
1da177e4
LT
5438 .rlen = 10,
5439 }, {
de224c30
SS
5440 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
5441 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5442 .klen = 16,
de224c30 5443 .input = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
1da177e4 5444 .ilen = 8,
de224c30 5445 .result = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
1da177e4
LT
5446 .rlen = 8,
5447 },
5448};
5449
ef2736fc 5450static struct cipher_testvec arc4_dec_tv_template[] = {
1da177e4 5451 {
de224c30 5452 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5453 .klen = 8,
de224c30 5454 .input = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
1da177e4 5455 .ilen = 8,
de224c30 5456 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4
LT
5457 .rlen = 8,
5458 }, {
de224c30 5459 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5460 .klen = 8,
de224c30 5461 .input = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
1da177e4 5462 .ilen = 8,
de224c30 5463 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
5464 .rlen = 8,
5465 }, {
de224c30 5466 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5467 .klen = 8,
de224c30 5468 .input = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
1da177e4 5469 .ilen = 8,
de224c30 5470 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
5471 .rlen = 8,
5472 }, {
de224c30 5473 .key = "\xef\x01\x23\x45",
1da177e4 5474 .klen = 4,
de224c30
SS
5475 .input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5476 "\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
5477 "\x36\xb6\x78\x58",
1da177e4 5478 .ilen = 20,
de224c30
SS
5479 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
5480 "\x00\x00\x00\x00\x00\x00\x00\x00"
5481 "\x00\x00\x00\x00",
1da177e4
LT
5482 .rlen = 20,
5483 }, {
de224c30 5484 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
1da177e4 5485 .klen = 8,
de224c30
SS
5486 .input = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
5487 "\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
5488 "\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
5489 "\x40\x01\x1e\xcf",
1da177e4 5490 .ilen = 28,
de224c30
SS
5491 .result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5492 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5493 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5494 "\x12\x34\x56\x78",
1da177e4
LT
5495 .rlen = 28,
5496 }, {
de224c30 5497 .key = "\xef\x01\x23\x45",
1da177e4 5498 .klen = 4,
de224c30
SS
5499 .input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5500 "\xbd\x61",
1da177e4 5501 .ilen = 10,
de224c30
SS
5502 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
5503 "\x00\x00",
1da177e4
LT
5504 .rlen = 10,
5505 }, {
de224c30
SS
5506 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
5507 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5508 .klen = 16,
de224c30 5509 .input = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
1da177e4 5510 .ilen = 8,
de224c30 5511 .result = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
1da177e4
LT
5512 .rlen = 8,
5513 },
5514};
5515
ef2736fc 5516/*
1da177e4
LT
5517 * TEA test vectors
5518 */
5519#define TEA_ENC_TEST_VECTORS 4
5520#define TEA_DEC_TEST_VECTORS 4
5521
ef2736fc 5522static struct cipher_testvec tea_enc_tv_template[] = {
1da177e4 5523 {
de224c30 5524 .key = zeroed_string,
1da177e4 5525 .klen = 16,
de224c30 5526 .input = zeroed_string,
1da177e4 5527 .ilen = 8,
de224c30 5528 .result = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
1da177e4
LT
5529 .rlen = 8,
5530 }, {
de224c30
SS
5531 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5532 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
1da177e4 5533 .klen = 16,
de224c30 5534 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
1da177e4 5535 .ilen = 8,
de224c30 5536 .result = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
1da177e4
LT
5537 .rlen = 8,
5538 }, {
de224c30
SS
5539 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5540 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
1da177e4 5541 .klen = 16,
de224c30
SS
5542 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
5543 "\x65\x73\x74\x5f\x76\x65\x63\x74",
1da177e4 5544 .ilen = 16,
de224c30
SS
5545 .result = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
5546 "\xdd\x89\xa1\x25\x04\x21\xdf\x95",
1da177e4
LT
5547 .rlen = 16,
5548 }, {
de224c30
SS
5549 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5550 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
1da177e4 5551 .klen = 16,
de224c30
SS
5552 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
5553 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5554 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5555 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
1da177e4 5556 .ilen = 32,
de224c30
SS
5557 .result = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
5558 "\x94\x18\x95\x91\xa9\xfc\x49\xf8"
5559 "\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
5560 "\x07\x89\x73\xc2\x45\x92\xc6\x90",
1da177e4
LT
5561 .rlen = 32,
5562 }
5563};
5564
ef2736fc 5565static struct cipher_testvec tea_dec_tv_template[] = {
1da177e4 5566 {
de224c30 5567 .key = zeroed_string,
1da177e4 5568 .klen = 16,
de224c30 5569 .input = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
1da177e4 5570 .ilen = 8,
de224c30 5571 .result = zeroed_string,
1da177e4
LT
5572 .rlen = 8,
5573 }, {
de224c30
SS
5574 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5575 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
1da177e4 5576 .klen = 16,
de224c30 5577 .input = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
1da177e4 5578 .ilen = 8,
de224c30 5579 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
1da177e4
LT
5580 .rlen = 8,
5581 }, {
de224c30
SS
5582 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5583 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
1da177e4 5584 .klen = 16,
de224c30
SS
5585 .input = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
5586 "\xdd\x89\xa1\x25\x04\x21\xdf\x95",
ef2736fc 5587 .ilen = 16,
de224c30
SS
5588 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
5589 "\x65\x73\x74\x5f\x76\x65\x63\x74",
1da177e4
LT
5590 .rlen = 16,
5591 }, {
de224c30
SS
5592 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5593 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
1da177e4 5594 .klen = 16,
de224c30
SS
5595 .input = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
5596 "\x94\x18\x95\x91\xa9\xfc\x49\xf8"
5597 "\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
5598 "\x07\x89\x73\xc2\x45\x92\xc6\x90",
1da177e4 5599 .ilen = 32,
de224c30
SS
5600 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
5601 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5602 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5603 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
1da177e4
LT
5604 .rlen = 32,
5605 }
5606};
5607
ef2736fc
HX
5608/*
5609 * XTEA test vectors
1da177e4
LT
5610 */
5611#define XTEA_ENC_TEST_VECTORS 4
5612#define XTEA_DEC_TEST_VECTORS 4
5613
ef2736fc 5614static struct cipher_testvec xtea_enc_tv_template[] = {
1da177e4 5615 {
de224c30 5616 .key = zeroed_string,
1da177e4 5617 .klen = 16,
de224c30 5618 .input = zeroed_string,
1da177e4 5619 .ilen = 8,
de224c30 5620 .result = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
1da177e4
LT
5621 .rlen = 8,
5622 }, {
de224c30
SS
5623 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5624 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
1da177e4 5625 .klen = 16,
de224c30 5626 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
1da177e4 5627 .ilen = 8,
de224c30 5628 .result = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
1da177e4
LT
5629 .rlen = 8,
5630 }, {
de224c30
SS
5631 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5632 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
1da177e4 5633 .klen = 16,
f0df30b1 5634 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
de224c30 5635 "\x65\x73\x74\x5f\x76\x65\x63\x74",
1da177e4 5636 .ilen = 16,
f0df30b1
SS
5637 .result = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
5638 "\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
1da177e4
LT
5639 .rlen = 16,
5640 }, {
de224c30
SS
5641 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5642 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
1da177e4 5643 .klen = 16,
de224c30
SS
5644 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
5645 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5646 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5647 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
1da177e4 5648 .ilen = 32,
de224c30
SS
5649 .result = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
5650 "\x86\xff\x6f\xd0\xe3\x87\x70\x07"
5651 "\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
5652 "\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
1da177e4
LT
5653 .rlen = 32,
5654 }
5655};
5656
ef2736fc 5657static struct cipher_testvec xtea_dec_tv_template[] = {
1da177e4 5658 {
de224c30 5659 .key = zeroed_string,
1da177e4 5660 .klen = 16,
de224c30 5661 .input = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
1da177e4 5662 .ilen = 8,
de224c30 5663 .result = zeroed_string,
1da177e4
LT
5664 .rlen = 8,
5665 }, {
de224c30
SS
5666 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5667 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
1da177e4 5668 .klen = 16,
de224c30 5669 .input = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
1da177e4 5670 .ilen = 8,
de224c30 5671 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
1da177e4
LT
5672 .rlen = 8,
5673 }, {
de224c30
SS
5674 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5675 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
1da177e4 5676 .klen = 16,
de224c30
SS
5677 .input = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
5678 "\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
1da177e4 5679 .ilen = 16,
de224c30
SS
5680 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
5681 "\x65\x73\x74\x5f\x76\x65\x63\x74",
1da177e4
LT
5682 .rlen = 16,
5683 }, {
de224c30
SS
5684 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5685 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
1da177e4 5686 .klen = 16,
de224c30
SS
5687 .input = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
5688 "\x86\xff\x6f\xd0\xe3\x87\x70\x07"
5689 "\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
5690 "\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
1da177e4 5691 .ilen = 32,
de224c30
SS
5692 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
5693 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5694 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5695 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
1da177e4
LT
5696 .rlen = 32,
5697 }
5698};
5699
5700/*
5701 * KHAZAD test vectors.
5702 */
5703#define KHAZAD_ENC_TEST_VECTORS 5
5704#define KHAZAD_DEC_TEST_VECTORS 5
5705
ef2736fc
HX
5706static struct cipher_testvec khazad_enc_tv_template[] = {
5707 {
de224c30
SS
5708 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
5709 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5710 .klen = 16,
de224c30 5711 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5712 .ilen = 8,
de224c30 5713 .result = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
1da177e4
LT
5714 .rlen = 8,
5715 }, {
de224c30
SS
5716 .key = "\x38\x38\x38\x38\x38\x38\x38\x38"
5717 "\x38\x38\x38\x38\x38\x38\x38\x38",
1da177e4 5718 .klen = 16,
de224c30 5719 .input = "\x38\x38\x38\x38\x38\x38\x38\x38",
1da177e4 5720 .ilen = 8,
de224c30 5721 .result = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
1da177e4
LT
5722 .rlen = 8,
5723 }, {
de224c30
SS
5724 .key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
5725 "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
1da177e4 5726 .klen = 16,
de224c30 5727 .input = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
1da177e4 5728 .ilen = 8,
de224c30 5729 .result = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
1da177e4
LT
5730 .rlen = 8,
5731 }, {
de224c30
SS
5732 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5733 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 5734 .klen = 16,
de224c30 5735 .input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 5736 .ilen = 8,
de224c30 5737 .result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
1da177e4
LT
5738 .rlen = 8,
5739 }, {
de224c30
SS
5740 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5741 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 5742 .klen = 16,
de224c30
SS
5743 .input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5744 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 5745 .ilen = 16,
de224c30
SS
5746 .result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
5747 "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
1da177e4
LT
5748 .rlen = 16,
5749 },
5750};
5751
ef2736fc 5752static struct cipher_testvec khazad_dec_tv_template[] = {
1da177e4 5753 {
de224c30
SS
5754 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
5755 "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 5756 .klen = 16,
de224c30 5757 .input = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
1da177e4 5758 .ilen = 8,
de224c30 5759 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4
LT
5760 .rlen = 8,
5761 }, {
de224c30
SS
5762 .key = "\x38\x38\x38\x38\x38\x38\x38\x38"
5763 "\x38\x38\x38\x38\x38\x38\x38\x38",
1da177e4 5764 .klen = 16,
de224c30 5765 .input = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
1da177e4 5766 .ilen = 8,
de224c30 5767 .result = "\x38\x38\x38\x38\x38\x38\x38\x38",
1da177e4
LT
5768 .rlen = 8,
5769 }, {
de224c30
SS
5770 .key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
5771 "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
1da177e4 5772 .klen = 16,
de224c30 5773 .input = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
1da177e4 5774 .ilen = 8,
de224c30 5775 .result = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
1da177e4
LT
5776 .rlen = 8,
5777 }, {
de224c30
SS
5778 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5779 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 5780 .klen = 16,
de224c30 5781 .input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
1da177e4 5782 .ilen = 8,
de224c30 5783 .result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4
LT
5784 .rlen = 8,
5785 }, {
de224c30
SS
5786 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5787 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4 5788 .klen = 16,
de224c30
SS
5789 .input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
5790 "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
1da177e4 5791 .ilen = 16,
de224c30
SS
5792 .result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5793 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
1da177e4
LT
5794 .rlen = 16,
5795 },
5796};
5797
5798/*
5799 * Anubis test vectors.
5800 */
5801
5802#define ANUBIS_ENC_TEST_VECTORS 5
5803#define ANUBIS_DEC_TEST_VECTORS 5
5804#define ANUBIS_CBC_ENC_TEST_VECTORS 2
5805#define ANUBIS_CBC_DEC_TEST_VECTORS 2
5806
5807static struct cipher_testvec anubis_enc_tv_template[] = {
5808 {
de224c30
SS
5809 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5810 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 5811 .klen = 16,
de224c30
SS
5812 .input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5813 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 5814 .ilen = 16,
de224c30
SS
5815 .result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
5816 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
1da177e4
LT
5817 .rlen = 16,
5818 }, {
5819
de224c30
SS
5820 .key = "\x03\x03\x03\x03\x03\x03\x03\x03"
5821 "\x03\x03\x03\x03\x03\x03\x03\x03"
5822 "\x03\x03\x03\x03",
1da177e4 5823 .klen = 20,
de224c30
SS
5824 .input = "\x03\x03\x03\x03\x03\x03\x03\x03"
5825 "\x03\x03\x03\x03\x03\x03\x03\x03",
1da177e4 5826 .ilen = 16,
de224c30
SS
5827 .result = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
5828 "\x87\x41\x6f\x82\x0a\x98\x64\xae",
1da177e4
LT
5829 .rlen = 16,
5830 }, {
de224c30
SS
5831 .key = "\x24\x24\x24\x24\x24\x24\x24\x24"
5832 "\x24\x24\x24\x24\x24\x24\x24\x24"
5833 "\x24\x24\x24\x24\x24\x24\x24\x24"
5834 "\x24\x24\x24\x24",
1da177e4 5835 .klen = 28,
de224c30
SS
5836 .input = "\x24\x24\x24\x24\x24\x24\x24\x24"
5837 "\x24\x24\x24\x24\x24\x24\x24\x24",
1da177e4 5838 .ilen = 16,
de224c30
SS
5839 .result = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
5840 "\x06\xd3\x61\x27\xfd\x13\x9e\xde",
1da177e4
LT
5841 .rlen = 16,
5842 }, {
de224c30
SS
5843 .key = "\x25\x25\x25\x25\x25\x25\x25\x25"
5844 "\x25\x25\x25\x25\x25\x25\x25\x25"
5845 "\x25\x25\x25\x25\x25\x25\x25\x25"
5846 "\x25\x25\x25\x25\x25\x25\x25\x25",
1da177e4 5847 .klen = 32,
de224c30
SS
5848 .input = "\x25\x25\x25\x25\x25\x25\x25\x25"
5849 "\x25\x25\x25\x25\x25\x25\x25\x25",
1da177e4 5850 .ilen = 16,
de224c30
SS
5851 .result = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
5852 "\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
1da177e4
LT
5853 .rlen = 16,
5854 }, {
de224c30
SS
5855 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
5856 "\x35\x35\x35\x35\x35\x35\x35\x35"
5857 "\x35\x35\x35\x35\x35\x35\x35\x35"
5858 "\x35\x35\x35\x35\x35\x35\x35\x35"
5859 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 5860 .klen = 40,
de224c30
SS
5861 .input = "\x35\x35\x35\x35\x35\x35\x35\x35"
5862 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 5863 .ilen = 16,
de224c30
SS
5864 .result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
5865 "\x9e\xc6\x84\x0f\x17\x21\x07\xee",
1da177e4
LT
5866 .rlen = 16,
5867 },
5868};
5869
5870static struct cipher_testvec anubis_dec_tv_template[] = {
5871 {
de224c30
SS
5872 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5873 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 5874 .klen = 16,
de224c30
SS
5875 .input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
5876 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
1da177e4 5877 .ilen = 16,
de224c30
SS
5878 .result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5879 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4
LT
5880 .rlen = 16,
5881 }, {
5882
de224c30
SS
5883 .key = "\x03\x03\x03\x03\x03\x03\x03\x03"
5884 "\x03\x03\x03\x03\x03\x03\x03\x03"
5885 "\x03\x03\x03\x03",
1da177e4 5886 .klen = 20,
de224c30
SS
5887 .input = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
5888 "\x87\x41\x6f\x82\x0a\x98\x64\xae",
1da177e4 5889 .ilen = 16,
de224c30
SS
5890 .result = "\x03\x03\x03\x03\x03\x03\x03\x03"
5891 "\x03\x03\x03\x03\x03\x03\x03\x03",
1da177e4
LT
5892 .rlen = 16,
5893 }, {
de224c30
SS
5894 .key = "\x24\x24\x24\x24\x24\x24\x24\x24"
5895 "\x24\x24\x24\x24\x24\x24\x24\x24"
5896 "\x24\x24\x24\x24\x24\x24\x24\x24"
5897 "\x24\x24\x24\x24",
1da177e4 5898 .klen = 28,
de224c30
SS
5899 .input = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
5900 "\x06\xd3\x61\x27\xfd\x13\x9e\xde",
1da177e4 5901 .ilen = 16,
de224c30
SS
5902 .result = "\x24\x24\x24\x24\x24\x24\x24\x24"
5903 "\x24\x24\x24\x24\x24\x24\x24\x24",
1da177e4
LT
5904 .rlen = 16,
5905 }, {
de224c30
SS
5906 .key = "\x25\x25\x25\x25\x25\x25\x25\x25"
5907 "\x25\x25\x25\x25\x25\x25\x25\x25"
5908 "\x25\x25\x25\x25\x25\x25\x25\x25"
5909 "\x25\x25\x25\x25\x25\x25\x25\x25",
1da177e4 5910 .klen = 32,
de224c30
SS
5911 .input = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
5912 "\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
1da177e4 5913 .ilen = 16,
de224c30
SS
5914 .result = "\x25\x25\x25\x25\x25\x25\x25\x25"
5915 "\x25\x25\x25\x25\x25\x25\x25\x25",
1da177e4
LT
5916 .rlen = 16,
5917 }, {
de224c30
SS
5918 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
5919 "\x35\x35\x35\x35\x35\x35\x35\x35"
5920 "\x35\x35\x35\x35\x35\x35\x35\x35"
5921 "\x35\x35\x35\x35\x35\x35\x35\x35"
5922 "\x35\x35\x35\x35\x35\x35\x35\x35",
5923 .input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
5924 "\x9e\xc6\x84\x0f\x17\x21\x07\xee",
1da177e4
LT
5925 .klen = 40,
5926 .ilen = 16,
de224c30
SS
5927 .result = "\x35\x35\x35\x35\x35\x35\x35\x35"
5928 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4
LT
5929 .rlen = 16,
5930 },
5931};
5932
5933static struct cipher_testvec anubis_cbc_enc_tv_template[] = {
5934 {
de224c30
SS
5935 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5936 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 5937 .klen = 16,
de224c30
SS
5938 .input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5939 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5940 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5941 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 5942 .ilen = 32,
de224c30
SS
5943 .result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
5944 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
5945 "\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
5946 "\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
1da177e4
LT
5947 .rlen = 32,
5948 }, {
de224c30
SS
5949 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
5950 "\x35\x35\x35\x35\x35\x35\x35\x35"
5951 "\x35\x35\x35\x35\x35\x35\x35\x35"
5952 "\x35\x35\x35\x35\x35\x35\x35\x35"
5953 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 5954 .klen = 40,
de224c30
SS
5955 .input = "\x35\x35\x35\x35\x35\x35\x35\x35"
5956 "\x35\x35\x35\x35\x35\x35\x35\x35"
5957 "\x35\x35\x35\x35\x35\x35\x35\x35"
5958 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 5959 .ilen = 32,
de224c30
SS
5960 .result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
5961 "\x9e\xc6\x84\x0f\x17\x21\x07\xee"
5962 "\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
5963 "\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
1da177e4
LT
5964 .rlen = 32,
5965 },
5966};
5967
5968static struct cipher_testvec anubis_cbc_dec_tv_template[] = {
5969 {
de224c30
SS
5970 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5971 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4 5972 .klen = 16,
de224c30
SS
5973 .input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
5974 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
5975 "\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
5976 "\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
1da177e4 5977 .ilen = 32,
de224c30
SS
5978 .result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5979 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5980 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5981 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
1da177e4
LT
5982 .rlen = 32,
5983 }, {
de224c30
SS
5984 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
5985 "\x35\x35\x35\x35\x35\x35\x35\x35"
5986 "\x35\x35\x35\x35\x35\x35\x35\x35"
5987 "\x35\x35\x35\x35\x35\x35\x35\x35"
5988 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4 5989 .klen = 40,
de224c30
SS
5990 .input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
5991 "\x9e\xc6\x84\x0f\x17\x21\x07\xee"
5992 "\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
5993 "\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
1da177e4 5994 .ilen = 32,
de224c30
SS
5995 .result = "\x35\x35\x35\x35\x35\x35\x35\x35"
5996 "\x35\x35\x35\x35\x35\x35\x35\x35"
5997 "\x35\x35\x35\x35\x35\x35\x35\x35"
5998 "\x35\x35\x35\x35\x35\x35\x35\x35",
1da177e4
LT
5999 .rlen = 32,
6000 },
6001};
6002
fb4f10ed
AG
6003/*
6004 * XETA test vectors
6005 */
6006#define XETA_ENC_TEST_VECTORS 4
6007#define XETA_DEC_TEST_VECTORS 4
6008
6009static struct cipher_testvec xeta_enc_tv_template[] = {
6010 {
de224c30 6011 .key = zeroed_string,
fb4f10ed 6012 .klen = 16,
de224c30 6013 .input = zeroed_string,
fb4f10ed 6014 .ilen = 8,
de224c30 6015 .result = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
fb4f10ed
AG
6016 .rlen = 8,
6017 }, {
de224c30
SS
6018 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6019 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
fb4f10ed 6020 .klen = 16,
de224c30 6021 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
fb4f10ed 6022 .ilen = 8,
de224c30 6023 .result = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
fb4f10ed
AG
6024 .rlen = 8,
6025 }, {
de224c30
SS
6026 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6027 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
fb4f10ed 6028 .klen = 16,
de224c30
SS
6029 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6030 "\x65\x73\x74\x5f\x76\x65\x63\x74",
fb4f10ed 6031 .ilen = 16,
de224c30
SS
6032 .result = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
6033 "\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
fb4f10ed
AG
6034 .rlen = 16,
6035 }, {
de224c30
SS
6036 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6037 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
fb4f10ed 6038 .klen = 16,
de224c30
SS
6039 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
6040 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6041 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6042 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
fb4f10ed 6043 .ilen = 32,
de224c30
SS
6044 .result = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
6045 "\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
6046 "\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
6047 "\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
fb4f10ed
AG
6048 .rlen = 32,
6049 }
6050};
6051
6052static struct cipher_testvec xeta_dec_tv_template[] = {
6053 {
de224c30 6054 .key = zeroed_string,
fb4f10ed 6055 .klen = 16,
de224c30 6056 .input = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
fb4f10ed 6057 .ilen = 8,
de224c30 6058 .result = zeroed_string,
fb4f10ed
AG
6059 .rlen = 8,
6060 }, {
de224c30
SS
6061 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6062 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
fb4f10ed 6063 .klen = 16,
de224c30 6064 .input = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
fb4f10ed 6065 .ilen = 8,
de224c30 6066 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
fb4f10ed
AG
6067 .rlen = 8,
6068 }, {
de224c30
SS
6069 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6070 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
fb4f10ed 6071 .klen = 16,
de224c30
SS
6072 .input = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
6073 "\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
fb4f10ed 6074 .ilen = 16,
de224c30
SS
6075 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6076 "\x65\x73\x74\x5f\x76\x65\x63\x74",
fb4f10ed
AG
6077 .rlen = 16,
6078 }, {
de224c30
SS
6079 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6080 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
fb4f10ed 6081 .klen = 16,
de224c30
SS
6082 .input = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
6083 "\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
6084 "\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
6085 "\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
fb4f10ed 6086 .ilen = 32,
de224c30
SS
6087 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
6088 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6089 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6090 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
fb4f10ed
AG
6091 .rlen = 32,
6092 }
6093};
6094
90831639
DH
6095/*
6096 * FCrypt test vectors
6097 */
6098#define FCRYPT_ENC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_enc_tv_template)
6099#define FCRYPT_DEC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_dec_tv_template)
6100
6101static struct cipher_testvec fcrypt_pcbc_enc_tv_template[] = {
6102 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
de224c30 6103 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
90831639 6104 .klen = 8,
de224c30
SS
6105 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6106 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
90831639 6107 .ilen = 8,
de224c30 6108 .result = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
90831639
DH
6109 .rlen = 8,
6110 }, {
de224c30 6111 .key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
90831639 6112 .klen = 8,
de224c30
SS
6113 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6114 .input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
90831639 6115 .ilen = 8,
de224c30 6116 .result = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
90831639
DH
6117 .rlen = 8,
6118 }, { /* From Arla */
de224c30 6119 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
90831639 6120 .klen = 8,
de224c30 6121 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639
DH
6122 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6123 .ilen = 48,
de224c30
SS
6124 .result = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
6125 "\xee\xac\x98\x62\x44\x51\xe4\x84"
6126 "\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
6127 "\xd2\xd9\x13\x79\x72\xa3\x45\x03"
6128 "\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
6129 "\xf8\x91\x3c\xac\x44\x22\x92\xef",
90831639
DH
6130 .rlen = 48,
6131 }, {
de224c30 6132 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639 6133 .klen = 8,
de224c30 6134 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
90831639
DH
6135 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6136 .ilen = 48,
de224c30
SS
6137 .result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6138 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6139 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6140 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6141 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6142 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
90831639
DH
6143 .rlen = 48,
6144 }, { /* split-page version */
de224c30 6145 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639 6146 .klen = 8,
de224c30 6147 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
90831639
DH
6148 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6149 .ilen = 48,
de224c30
SS
6150 .result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6151 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6152 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6153 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6154 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6155 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
90831639
DH
6156 .rlen = 48,
6157 .np = 2,
6158 .tap = { 20, 28 },
6159 }
6160};
6161
6162static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
6163 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
de224c30 6164 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
90831639 6165 .klen = 8,
de224c30
SS
6166 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6167 .input = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
90831639 6168 .ilen = 8,
de224c30 6169 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
90831639
DH
6170 .rlen = 8,
6171 }, {
de224c30 6172 .key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
90831639 6173 .klen = 8,
de224c30
SS
6174 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6175 .input = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
90831639 6176 .ilen = 8,
de224c30 6177 .result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
90831639
DH
6178 .rlen = 8,
6179 }, { /* From Arla */
de224c30 6180 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
90831639 6181 .klen = 8,
de224c30
SS
6182 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6183 .input = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
6184 "\xee\xac\x98\x62\x44\x51\xe4\x84"
6185 "\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
6186 "\xd2\xd9\x13\x79\x72\xa3\x45\x03"
6187 "\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
6188 "\xf8\x91\x3c\xac\x44\x22\x92\xef",
90831639
DH
6189 .ilen = 48,
6190 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6191 .rlen = 48,
6192 }, {
de224c30 6193 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639 6194 .klen = 8,
de224c30
SS
6195 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6196 .input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6197 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6198 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6199 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6200 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6201 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
90831639
DH
6202 .ilen = 48,
6203 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6204 .rlen = 48,
6205 }, { /* split-page version */
de224c30 6206 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
90831639 6207 .klen = 8,
de224c30
SS
6208 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6209 .input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6210 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6211 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6212 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6213 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6214 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
90831639
DH
6215 .ilen = 48,
6216 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6217 .rlen = 48,
6218 .np = 2,
6219 .tap = { 20, 28 },
6220 }
6221};
6222
02ab5a70
NT
6223/*
6224 * CAMELLIA test vectors.
6225 */
6226#define CAMELLIA_ENC_TEST_VECTORS 3
6227#define CAMELLIA_DEC_TEST_VECTORS 3
6228#define CAMELLIA_CBC_ENC_TEST_VECTORS 2
6229#define CAMELLIA_CBC_DEC_TEST_VECTORS 2
6230
6231static struct cipher_testvec camellia_enc_tv_template[] = {
6232 {
de224c30
SS
6233 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6234 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6235 .klen = 16,
de224c30
SS
6236 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6237 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6238 .ilen = 16,
de224c30
SS
6239 .result = "\x67\x67\x31\x38\x54\x96\x69\x73"
6240 "\x08\x57\x06\x56\x48\xea\xbe\x43",
02ab5a70
NT
6241 .rlen = 16,
6242 }, {
de224c30
SS
6243 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6244 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6245 "\x00\x11\x22\x33\x44\x55\x66\x77",
02ab5a70 6246 .klen = 24,
de224c30
SS
6247 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6248 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6249 .ilen = 16,
de224c30
SS
6250 .result = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
6251 "\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
02ab5a70
NT
6252 .rlen = 16,
6253 }, {
de224c30
SS
6254 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6255 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6256 "\x00\x11\x22\x33\x44\x55\x66\x77"
6257 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
02ab5a70 6258 .klen = 32,
de224c30
SS
6259 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6260 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6261 .ilen = 16,
de224c30
SS
6262 .result = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
6263 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
02ab5a70
NT
6264 .rlen = 16,
6265 },
6266};
6267
6268static struct cipher_testvec camellia_dec_tv_template[] = {
6269 {
de224c30
SS
6270 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6271 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70 6272 .klen = 16,
de224c30
SS
6273 .input = "\x67\x67\x31\x38\x54\x96\x69\x73"
6274 "\x08\x57\x06\x56\x48\xea\xbe\x43",
02ab5a70 6275 .ilen = 16,
de224c30
SS
6276 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6277 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70
NT
6278 .rlen = 16,
6279 }, {
de224c30
SS
6280 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6281 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6282 "\x00\x11\x22\x33\x44\x55\x66\x77",
02ab5a70 6283 .klen = 24,
de224c30
SS
6284 .input = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
6285 "\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
02ab5a70 6286 .ilen = 16,
de224c30
SS
6287 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6288 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70
NT
6289 .rlen = 16,
6290 }, {
de224c30
SS
6291 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6292 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6293 "\x00\x11\x22\x33\x44\x55\x66\x77"
6294 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
02ab5a70 6295 .klen = 32,
de224c30
SS
6296 .input = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
6297 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
02ab5a70 6298 .ilen = 16,
de224c30
SS
6299 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6300 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
02ab5a70
NT
6301 .rlen = 16,
6302 },
6303};
6304
6305static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
6306 {
de224c30
SS
6307 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
6308 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
02ab5a70 6309 .klen = 16,
de224c30
SS
6310 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
6311 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
6312 .input = "Single block msg",
02ab5a70 6313 .ilen = 16,
de224c30
SS
6314 .result = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
6315 "\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
02ab5a70
NT
6316 .rlen = 16,
6317 }, {
de224c30
SS
6318 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
6319 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
02ab5a70 6320 .klen = 16,
de224c30
SS
6321 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
6322 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
6323 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
6324 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6325 "\x10\x11\x12\x13\x14\x15\x16\x17"
6326 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
02ab5a70 6327 .ilen = 32,
de224c30
SS
6328 .result = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
6329 "\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
6330 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
6331 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
02ab5a70
NT
6332 .rlen = 32,
6333 },
6334};
6335
6336static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
6337 {
de224c30
SS
6338 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
6339 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
02ab5a70 6340 .klen = 16,
de224c30
SS
6341 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
6342 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
6343 .input = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
6344 "\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
02ab5a70 6345 .ilen = 16,
de224c30 6346 .result = "Single block msg",
02ab5a70
NT
6347 .rlen = 16,
6348 }, {
de224c30
SS
6349 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
6350 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
02ab5a70 6351 .klen = 16,
de224c30
SS
6352 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
6353 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
6354 .input = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
6355 "\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
6356 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
6357 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
02ab5a70 6358 .ilen = 32,
de224c30
SS
6359 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
6360 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6361 "\x10\x11\x12\x13\x14\x15\x16\x17"
6362 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
02ab5a70
NT
6363 .rlen = 32,
6364 },
6365};
6366
e2ee95b8
HSC
6367/*
6368 * SEED test vectors
6369 */
6370#define SEED_ENC_TEST_VECTORS 4
6371#define SEED_DEC_TEST_VECTORS 4
6372
6373static struct cipher_testvec seed_enc_tv_template[] = {
6374 {
de224c30 6375 .key = zeroed_string,
e2ee95b8 6376 .klen = 16,
de224c30
SS
6377 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
6378 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
e2ee95b8 6379 .ilen = 16,
de224c30
SS
6380 .result = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
6381 "\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
e2ee95b8
HSC
6382 .rlen = 16,
6383 }, {
de224c30
SS
6384 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6385 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
e2ee95b8 6386 .klen = 16,
de224c30 6387 .input = zeroed_string,
e2ee95b8 6388 .ilen = 16,
de224c30
SS
6389 .result = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
6390 "\x84\x48\x35\x97\xe4\x37\x0f\x43",
e2ee95b8
HSC
6391 .rlen = 16,
6392 }, {
de224c30
SS
6393 .key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
6394 "\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
e2ee95b8 6395 .klen = 16,
de224c30
SS
6396 .input = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
6397 "\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
e2ee95b8 6398 .ilen = 16,
de224c30
SS
6399 .result = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
6400 "\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
e2ee95b8
HSC
6401 .rlen = 16,
6402 }, {
de224c30
SS
6403 .key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
6404 "\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
e2ee95b8 6405 .klen = 16,
de224c30
SS
6406 .input = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
6407 "\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
e2ee95b8 6408 .ilen = 16,
de224c30
SS
6409 .result = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
6410 "\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
e2ee95b8
HSC
6411 .rlen = 16,
6412 }
6413};
6414
6415static struct cipher_testvec seed_dec_tv_template[] = {
6416 {
de224c30 6417 .key = zeroed_string,
e2ee95b8 6418 .klen = 16,
de224c30
SS
6419 .input = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
6420 "\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
e2ee95b8 6421 .ilen = 16,
de224c30
SS
6422 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
6423 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
e2ee95b8
HSC
6424 .rlen = 16,
6425 }, {
de224c30
SS
6426 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6427 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
e2ee95b8 6428 .klen = 16,
de224c30
SS
6429 .input = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
6430 "\x84\x48\x35\x97\xe4\x37\x0f\x43",
e2ee95b8 6431 .ilen = 16,
de224c30 6432 .result = zeroed_string,
e2ee95b8
HSC
6433 .rlen = 16,
6434 }, {
de224c30
SS
6435 .key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
6436 "\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
e2ee95b8 6437 .klen = 16,
de224c30
SS
6438 .input = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
6439 "\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
e2ee95b8 6440 .ilen = 16,
de224c30
SS
6441 .result = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
6442 "\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
e2ee95b8
HSC
6443 .rlen = 16,
6444 }, {
de224c30
SS
6445 .key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
6446 "\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
e2ee95b8 6447 .klen = 16,
de224c30
SS
6448 .input = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
6449 "\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
e2ee95b8 6450 .ilen = 16,
de224c30
SS
6451 .result = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
6452 "\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
e2ee95b8
HSC
6453 .rlen = 16,
6454 }
2407d608
TSH
6455};
6456
8bff664c 6457#define SALSA20_STREAM_ENC_TEST_VECTORS 5
2407d608
TSH
6458static struct cipher_testvec salsa20_stream_enc_tv_template[] = {
6459 /*
6460 * Testvectors from verified.test-vectors submitted to ECRYPT.
6461 * They are truncated to size 39, 64, 111, 129 to test a variety
6462 * of input length.
6463 */
6464 { /* Set 3, vector 0 */
de224c30
SS
6465 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6466 "\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F",
2407d608 6467 .klen = 16,
de224c30
SS
6468 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6469 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6470 "\x00\x00\x00\x00\x00\x00\x00\x00"
6471 "\x00\x00\x00\x00\x00\x00\x00\x00"
6472 "\x00\x00\x00\x00\x00\x00\x00\x00"
6473 "\x00\x00\x00\x00\x00\x00\x00",
2407d608 6474 .ilen = 39,
de224c30
SS
6475 .result = "\x2D\xD5\xC3\xF7\xBA\x2B\x20\xF7"
6476 "\x68\x02\x41\x0C\x68\x86\x88\x89"
6477 "\x5A\xD8\xC1\xBD\x4E\xA6\xC9\xB1"
6478 "\x40\xFB\x9B\x90\xE2\x10\x49\xBF"
6479 "\x58\x3F\x52\x79\x70\xEB\xC1",
2407d608
TSH
6480 .rlen = 39,
6481 }, { /* Set 5, vector 0 */
de224c30
SS
6482 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
6483 "\x00\x00\x00\x00\x00\x00\x00\x00",
2407d608 6484 .klen = 16,
de224c30
SS
6485 .iv = "\x80\x00\x00\x00\x00\x00\x00\x00",
6486 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6487 "\x00\x00\x00\x00\x00\x00\x00\x00"
6488 "\x00\x00\x00\x00\x00\x00\x00\x00"
6489 "\x00\x00\x00\x00\x00\x00\x00\x00"
6490 "\x00\x00\x00\x00\x00\x00\x00\x00"
6491 "\x00\x00\x00\x00\x00\x00\x00\x00"
6492 "\x00\x00\x00\x00\x00\x00\x00\x00"
6493 "\x00\x00\x00\x00\x00\x00\x00\x00",
2407d608 6494 .ilen = 64,
de224c30
SS
6495 .result = "\xB6\x6C\x1E\x44\x46\xDD\x95\x57"
6496 "\xE5\x78\xE2\x23\xB0\xB7\x68\x01"
6497 "\x7B\x23\xB2\x67\xBB\x02\x34\xAE"
6498 "\x46\x26\xBF\x44\x3F\x21\x97\x76"
6499 "\x43\x6F\xB1\x9F\xD0\xE8\x86\x6F"
6500 "\xCD\x0D\xE9\xA9\x53\x8F\x4A\x09"
6501 "\xCA\x9A\xC0\x73\x2E\x30\xBC\xF9"
6502 "\x8E\x4F\x13\xE4\xB9\xE2\x01\xD9",
2407d608
TSH
6503 .rlen = 64,
6504 }, { /* Set 3, vector 27 */
de224c30
SS
6505 .key = "\x1B\x1C\x1D\x1E\x1F\x20\x21\x22"
6506 "\x23\x24\x25\x26\x27\x28\x29\x2A"
6507 "\x2B\x2C\x2D\x2E\x2F\x30\x31\x32"
6508 "\x33\x34\x35\x36\x37\x38\x39\x3A",
2407d608 6509 .klen = 32,
de224c30
SS
6510 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6511 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6512 "\x00\x00\x00\x00\x00\x00\x00\x00"
6513 "\x00\x00\x00\x00\x00\x00\x00\x00"
6514 "\x00\x00\x00\x00\x00\x00\x00\x00"
6515 "\x00\x00\x00\x00\x00\x00\x00\x00"
6516 "\x00\x00\x00\x00\x00\x00\x00\x00"
6517 "\x00\x00\x00\x00\x00\x00\x00\x00"
6518 "\x00\x00\x00\x00\x00\x00\x00\x00"
6519 "\x00\x00\x00\x00\x00\x00\x00\x00"
6520 "\x00\x00\x00\x00\x00\x00\x00\x00"
6521 "\x00\x00\x00\x00\x00\x00\x00\x00"
6522 "\x00\x00\x00\x00\x00\x00\x00\x00"
6523 "\x00\x00\x00\x00\x00\x00\x00\x00"
6524 "\x00\x00\x00\x00\x00\x00\x00",
2407d608 6525 .ilen = 111,
de224c30
SS
6526 .result = "\xAE\x39\x50\x8E\xAC\x9A\xEC\xE7"
6527 "\xBF\x97\xBB\x20\xB9\xDE\xE4\x1F"
6528 "\x87\xD9\x47\xF8\x28\x91\x35\x98"
6529 "\xDB\x72\xCC\x23\x29\x48\x56\x5E"
6530 "\x83\x7E\x0B\xF3\x7D\x5D\x38\x7B"
6531 "\x2D\x71\x02\xB4\x3B\xB5\xD8\x23"
6532 "\xB0\x4A\xDF\x3C\xEC\xB6\xD9\x3B"
6533 "\x9B\xA7\x52\xBE\xC5\xD4\x50\x59"
6534 "\x15\x14\xB4\x0E\x40\xE6\x53\xD1"
6535 "\x83\x9C\x5B\xA0\x92\x29\x6B\x5E"
6536 "\x96\x5B\x1E\x2F\xD3\xAC\xC1\x92"
6537 "\xB1\x41\x3F\x19\x2F\xC4\x3B\xC6"
6538 "\x95\x46\x45\x54\xE9\x75\x03\x08"
6539 "\x44\xAF\xE5\x8A\x81\x12\x09",
2407d608 6540 .rlen = 111,
2407d608 6541 }, { /* Set 5, vector 27 */
de224c30
SS
6542 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
6543 "\x00\x00\x00\x00\x00\x00\x00\x00"
6544 "\x00\x00\x00\x00\x00\x00\x00\x00"
6545 "\x00\x00\x00\x00\x00\x00\x00\x00",
2407d608 6546 .klen = 32,
de224c30
SS
6547 .iv = "\x00\x00\x00\x10\x00\x00\x00\x00",
6548 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6549 "\x00\x00\x00\x00\x00\x00\x00\x00"
6550 "\x00\x00\x00\x00\x00\x00\x00\x00"
6551 "\x00\x00\x00\x00\x00\x00\x00\x00"
6552 "\x00\x00\x00\x00\x00\x00\x00\x00"
6553 "\x00\x00\x00\x00\x00\x00\x00\x00"
6554 "\x00\x00\x00\x00\x00\x00\x00\x00"
6555 "\x00\x00\x00\x00\x00\x00\x00\x00"
6556 "\x00\x00\x00\x00\x00\x00\x00\x00"
6557 "\x00\x00\x00\x00\x00\x00\x00\x00"
6558 "\x00\x00\x00\x00\x00\x00\x00\x00"
6559 "\x00\x00\x00\x00\x00\x00\x00\x00"
6560 "\x00\x00\x00\x00\x00\x00\x00\x00"
6561 "\x00\x00\x00\x00\x00\x00\x00\x00"
6562 "\x00\x00\x00\x00\x00\x00\x00\x00"
6563 "\x00\x00\x00\x00\x00\x00\x00\x00"
6564 "\x00",
2407d608 6565 .ilen = 129,
de224c30
SS
6566 .result = "\xD2\xDB\x1A\x5C\xF1\xC1\xAC\xDB"
6567 "\xE8\x1A\x7A\x43\x40\xEF\x53\x43"
6568 "\x5E\x7F\x4B\x1A\x50\x52\x3F\x8D"
6569 "\x28\x3D\xCF\x85\x1D\x69\x6E\x60"
6570 "\xF2\xDE\x74\x56\x18\x1B\x84\x10"
6571 "\xD4\x62\xBA\x60\x50\xF0\x61\xF2"
6572 "\x1C\x78\x7F\xC1\x24\x34\xAF\x58"
6573 "\xBF\x2C\x59\xCA\x90\x77\xF3\xB0"
6574 "\x5B\x4A\xDF\x89\xCE\x2C\x2F\xFC"
6575 "\x67\xF0\xE3\x45\xE8\xB3\xB3\x75"
6576 "\xA0\x95\x71\xA1\x29\x39\x94\xCA"
6577 "\x45\x2F\xBD\xCB\x10\xB6\xBE\x9F"
6578 "\x8E\xF9\xB2\x01\x0A\x5A\x0A\xB7"
6579 "\x6B\x9D\x70\x8E\x4B\xD6\x2F\xCD"
6580 "\x2E\x40\x48\x75\xE9\xE2\x21\x45"
6581 "\x0B\xC9\xB6\xB5\x66\xBC\x9A\x59"
6582 "\x5A",
2407d608 6583 .rlen = 129,
8bff664c 6584 }, { /* large test vector generated using Crypto++ */
de224c30
SS
6585 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6586 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6587 "\x10\x11\x12\x13\x14\x15\x16\x17"
6588 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
8bff664c 6589 .klen = 32,
de224c30
SS
6590 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
6591 "\x00\x00\x00\x00\x00\x00\x00\x00",
6592 .input =
6593 "\x00\x01\x02\x03\x04\x05\x06\x07"
6594 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6595 "\x10\x11\x12\x13\x14\x15\x16\x17"
6596 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
6597 "\x20\x21\x22\x23\x24\x25\x26\x27"
6598 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
6599 "\x30\x31\x32\x33\x34\x35\x36\x37"
6600 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
6601 "\x40\x41\x42\x43\x44\x45\x46\x47"
6602 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
6603 "\x50\x51\x52\x53\x54\x55\x56\x57"
6604 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
6605 "\x60\x61\x62\x63\x64\x65\x66\x67"
6606 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
6607 "\x70\x71\x72\x73\x74\x75\x76\x77"
6608 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
6609 "\x80\x81\x82\x83\x84\x85\x86\x87"
6610 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
6611 "\x90\x91\x92\x93\x94\x95\x96\x97"
6612 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
6613 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
6614 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
6615 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
6616 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
6617 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
6618 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
6619 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
6620 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
6621 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
6622 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
6623 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
6624 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
6625 "\x00\x03\x06\x09\x0c\x0f\x12\x15"
6626 "\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
6627 "\x30\x33\x36\x39\x3c\x3f\x42\x45"
6628 "\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
6629 "\x60\x63\x66\x69\x6c\x6f\x72\x75"
6630 "\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
6631 "\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
6632 "\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
6633 "\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
6634 "\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
6635 "\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
6636 "\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
6637 "\x20\x23\x26\x29\x2c\x2f\x32\x35"
6638 "\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
6639 "\x50\x53\x56\x59\x5c\x5f\x62\x65"
6640 "\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
6641 "\x80\x83\x86\x89\x8c\x8f\x92\x95"
6642 "\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
6643 "\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
6644 "\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
6645 "\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
6646 "\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
6647 "\x10\x13\x16\x19\x1c\x1f\x22\x25"
6648 "\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
6649 "\x40\x43\x46\x49\x4c\x4f\x52\x55"
6650 "\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
6651 "\x70\x73\x76\x79\x7c\x7f\x82\x85"
6652 "\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
6653 "\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
6654 "\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
6655 "\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
6656 "\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
6657 "\x00\x05\x0a\x0f\x14\x19\x1e\x23"
6658 "\x28\x2d\x32\x37\x3c\x41\x46\x4b"
6659 "\x50\x55\x5a\x5f\x64\x69\x6e\x73"
6660 "\x78\x7d\x82\x87\x8c\x91\x96\x9b"
6661 "\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
6662 "\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
6663 "\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
6664 "\x18\x1d\x22\x27\x2c\x31\x36\x3b"
6665 "\x40\x45\x4a\x4f\x54\x59\x5e\x63"
6666 "\x68\x6d\x72\x77\x7c\x81\x86\x8b"
6667 "\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
6668 "\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
6669 "\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
6670 "\x08\x0d\x12\x17\x1c\x21\x26\x2b"
6671 "\x30\x35\x3a\x3f\x44\x49\x4e\x53"
6672 "\x58\x5d\x62\x67\x6c\x71\x76\x7b"
6673 "\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
6674 "\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
6675 "\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
6676 "\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
6677 "\x20\x25\x2a\x2f\x34\x39\x3e\x43"
6678 "\x48\x4d\x52\x57\x5c\x61\x66\x6b"
6679 "\x70\x75\x7a\x7f\x84\x89\x8e\x93"
6680 "\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
6681 "\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
6682 "\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
6683 "\x10\x15\x1a\x1f\x24\x29\x2e\x33"
6684 "\x38\x3d\x42\x47\x4c\x51\x56\x5b"
6685 "\x60\x65\x6a\x6f\x74\x79\x7e\x83"
6686 "\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
6687 "\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
6688 "\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
6689 "\x00\x07\x0e\x15\x1c\x23\x2a\x31"
6690 "\x38\x3f\x46\x4d\x54\x5b\x62\x69"
6691 "\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
6692 "\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
6693 "\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
6694 "\x18\x1f\x26\x2d\x34\x3b\x42\x49"
6695 "\x50\x57\x5e\x65\x6c\x73\x7a\x81"
6696 "\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
6697 "\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
6698 "\xf8\xff\x06\x0d\x14\x1b\x22\x29"
6699 "\x30\x37\x3e\x45\x4c\x53\x5a\x61"
6700 "\x68\x6f\x76\x7d\x84\x8b\x92\x99"
6701 "\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
6702 "\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
6703 "\x10\x17\x1e\x25\x2c\x33\x3a\x41"
6704 "\x48\x4f\x56\x5d\x64\x6b\x72\x79"
6705 "\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
6706 "\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
6707 "\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
6708 "\x28\x2f\x36\x3d\x44\x4b\x52\x59"
6709 "\x60\x67\x6e\x75\x7c\x83\x8a\x91"
6710 "\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
6711 "\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
6712 "\x08\x0f\x16\x1d\x24\x2b\x32\x39"
6713 "\x40\x47\x4e\x55\x5c\x63\x6a\x71"
6714 "\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
6715 "\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
6716 "\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
6717 "\x20\x27\x2e\x35\x3c\x43\x4a\x51"
6718 "\x58\x5f\x66\x6d\x74\x7b\x82\x89"
6719 "\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
6720 "\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
6721 "\x00\x09\x12\x1b\x24\x2d\x36\x3f"
6722 "\x48\x51\x5a\x63\x6c\x75\x7e\x87"
6723 "\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
6724 "\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
6725 "\x20\x29\x32\x3b\x44\x4d\x56\x5f"
6726 "\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
6727 "\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
6728 "\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
6729 "\x40\x49\x52\x5b\x64\x6d\x76\x7f"
6730 "\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
6731 "\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
6732 "\x18\x21\x2a\x33\x3c\x45\x4e\x57"
6733 "\x60\x69\x72\x7b\x84\x8d\x96\x9f"
6734 "\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
6735 "\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
6736 "\x38\x41\x4a\x53\x5c\x65\x6e\x77"
6737 "\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
6738 "\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
6739 "\x10\x19\x22\x2b\x34\x3d\x46\x4f"
6740 "\x58\x61\x6a\x73\x7c\x85\x8e\x97"
6741 "\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
6742 "\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
6743 "\x30\x39\x42\x4b\x54\x5d\x66\x6f"
6744 "\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
6745 "\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
6746 "\x08\x11\x1a\x23\x2c\x35\x3e\x47"
6747 "\x50\x59\x62\x6b\x74\x7d\x86\x8f"
6748 "\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
6749 "\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
6750 "\x28\x31\x3a\x43\x4c\x55\x5e\x67"
6751 "\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
6752 "\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
6753 "\x00\x0b\x16\x21\x2c\x37\x42\x4d"
6754 "\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
6755 "\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
6756 "\x08\x13\x1e\x29\x34\x3f\x4a\x55"
6757 "\x60\x6b\x76\x81\x8c\x97\xa2\xad"
6758 "\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
6759 "\x10\x1b\x26\x31\x3c\x47\x52\x5d"
6760 "\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
6761 "\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
6762 "\x18\x23\x2e\x39\x44\x4f\x5a\x65"
6763 "\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
6764 "\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
6765 "\x20\x2b\x36\x41\x4c\x57\x62\x6d"
6766 "\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
6767 "\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
6768 "\x28\x33\x3e\x49\x54\x5f\x6a\x75"
6769 "\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
6770 "\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
6771 "\x30\x3b\x46\x51\x5c\x67\x72\x7d"
6772 "\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
6773 "\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
6774 "\x38\x43\x4e\x59\x64\x6f\x7a\x85"
6775 "\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
6776 "\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
6777 "\x40\x4b\x56\x61\x6c\x77\x82\x8d"
6778 "\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
6779 "\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
6780 "\x48\x53\x5e\x69\x74\x7f\x8a\x95"
6781 "\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
6782 "\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
6783 "\x50\x5b\x66\x71\x7c\x87\x92\x9d"
6784 "\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
6785 "\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
6786 "\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
6787 "\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
6788 "\x38\x45\x52\x5f\x6c\x79\x86\x93"
6789 "\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
6790 "\x08\x15\x22\x2f\x3c\x49\x56\x63"
6791 "\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
6792 "\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
6793 "\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
6794 "\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
6795 "\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
6796 "\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
6797 "\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
6798 "\x48\x55\x62\x6f\x7c\x89\x96\xa3"
6799 "\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
6800 "\x18\x25\x32\x3f\x4c\x59\x66\x73"
6801 "\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
6802 "\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
6803 "\x50\x5d\x6a\x77\x84\x91\x9e\xab"
6804 "\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
6805 "\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
6806 "\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
6807 "\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
6808 "\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
6809 "\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
6810 "\x28\x35\x42\x4f\x5c\x69\x76\x83"
6811 "\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
6812 "\xf8\x05\x12\x1f\x2c\x39\x46\x53"
6813 "\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
6814 "\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
6815 "\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
6816 "\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
6817 "\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
6818 "\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
6819 "\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
6820 "\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
6821 "\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
6822 "\x58\x67\x76\x85\x94\xa3\xb2\xc1"
6823 "\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
6824 "\x48\x57\x66\x75\x84\x93\xa2\xb1"
6825 "\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
6826 "\x38\x47\x56\x65\x74\x83\x92\xa1"
6827 "\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
6828 "\x28\x37\x46\x55\x64\x73\x82\x91"
6829 "\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
6830 "\x18\x27\x36\x45\x54\x63\x72\x81"
6831 "\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
6832 "\x08\x17\x26\x35\x44\x53\x62\x71"
6833 "\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
6834 "\xf8\x07\x16\x25\x34\x43\x52\x61"
6835 "\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
6836 "\xe8\xf7\x06\x15\x24\x33\x42\x51"
6837 "\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
6838 "\xd8\xe7\xf6\x05\x14\x23\x32\x41"
6839 "\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
6840 "\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
6841 "\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
6842 "\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
6843 "\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
6844 "\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
6845 "\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
6846 "\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
6847 "\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
6848 "\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
6849 "\x00\x11\x22\x33\x44\x55\x66\x77"
6850 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
6851 "\x10\x21\x32\x43\x54\x65\x76\x87"
6852 "\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
6853 "\x20\x31\x42\x53\x64\x75\x86\x97"
6854 "\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
6855 "\x30\x41\x52\x63\x74\x85\x96\xa7"
6856 "\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
6857 "\x40\x51\x62\x73\x84\x95\xa6\xb7"
6858 "\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
6859 "\x50\x61\x72\x83\x94\xa5\xb6\xc7"
6860 "\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
6861 "\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
6862 "\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
6863 "\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
6864 "\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
6865 "\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
6866 "\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
6867 "\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
6868 "\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
6869 "\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
6870 "\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
6871 "\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
6872 "\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
6873 "\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
6874 "\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
6875 "\xd0\xe1\xf2\x03\x14\x25\x36\x47"
6876 "\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
6877 "\xe0\xf1\x02\x13\x24\x35\x46\x57"
6878 "\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
6879 "\xf0\x01\x12\x23\x34\x45\x56\x67"
6880 "\x78\x89\x9a\xab\xbc\xcd\xde\xef"
6881 "\x00\x13\x26\x39\x4c\x5f\x72\x85"
6882 "\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
6883 "\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
6884 "\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
6885 "\x60\x73\x86\x99\xac\xbf\xd2\xe5"
6886 "\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
6887 "\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
6888 "\x28\x3b\x4e\x61\x74\x87\x9a\xad"
6889 "\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
6890 "\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
6891 "\xf0\x03\x16\x29\x3c\x4f\x62\x75"
6892 "\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
6893 "\x20\x33\x46\x59\x6c\x7f\x92\xa5"
6894 "\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
6895 "\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
6896 "\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
6897 "\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
6898 "\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
6899 "\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
6900 "\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
6901 "\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
6902 "\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
6903 "\x10\x23\x36\x49\x5c\x6f\x82\x95"
6904 "\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
6905 "\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
6906 "\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
6907 "\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
6908 "\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
6909 "\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
6910 "\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
6911 "\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
6912 "\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
6913 "\x00\x15\x2a\x3f\x54\x69\x7e\x93"
6914 "\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
6915 "\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
6916 "\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
6917 "\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
6918 "\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
6919 "\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
6920 "\x98\xad\xc2\xd7\xec\x01\x16\x2b"
6921 "\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
6922 "\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
6923 "\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
6924 "\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
6925 "\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
6926 "\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
6927 "\x30\x45\x5a\x6f\x84\x99\xae\xc3"
6928 "\xd8\xed\x02\x17\x2c\x41\x56\x6b"
6929 "\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
6930 "\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
6931 "\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
6932 "\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
6933 "\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
6934 "\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
6935 "\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
6936 "\x18\x2d\x42\x57\x6c\x81\x96\xab"
6937 "\xc0\xd5\xea\xff\x14\x29\x3e\x53"
6938 "\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
6939 "\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
6940 "\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
6941 "\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
6942 "\x08\x1d\x32\x47\x5c\x71\x86\x9b"
6943 "\xb0\xc5\xda\xef\x04\x19\x2e\x43"
6944 "\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
6945 "\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
6946 "\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
6947 "\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
6948 "\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
6949 "\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
6950 "\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
6951 "\x50\x67\x7e\x95\xac\xc3\xda\xf1"
6952 "\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
6953 "\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
6954 "\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
6955 "\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
6956 "\xe8\xff\x16\x2d\x44\x5b\x72\x89"
6957 "\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
6958 "\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
6959 "\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
6960 "\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
6961 "\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
6962 "\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
6963 "\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
6964 "\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
6965 "\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
6966 "\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
6967 "\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
6968 "\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
6969 "\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
6970 "\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
6971 "\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
6972 "\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
6973 "\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
6974 "\xd8\xef\x06\x1d\x34\x4b\x62\x79"
6975 "\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
6976 "\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
6977 "\x00\x19\x32\x4b\x64\x7d\x96\xaf"
6978 "\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
6979 "\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
6980 "\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
6981 "\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
6982 "\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
6983 "\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
6984 "\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
6985 "\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
6986 "\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
6987 "\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
6988 "\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
6989 "\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
6990 "\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
6991 "\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
6992 "\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
6993 "\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
6994 "\x48\x61\x7a\x93\xac\xc5\xde\xf7"
6995 "\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
6996 "\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
6997 "\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
6998 "\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
6999 "\x30\x49\x62\x7b\x94\xad\xc6\xdf"
7000 "\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
7001 "\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
7002 "\x88\xa1\xba\xd3\xec\x05\x1e\x37"
7003 "\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
7004 "\x18\x31\x4a\x63\x7c\x95\xae\xc7"
7005 "\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
7006 "\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
7007 "\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
7008 "\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
7009 "\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
7010 "\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
7011 "\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
7012 "\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
7013 "\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
7014 "\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
7015 "\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
7016 "\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
7017 "\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
7018 "\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
7019 "\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
7020 "\x48\x63\x7e\x99\xb4\xcf\xea\x05"
7021 "\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
7022 "\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
7023 "\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
7024 "\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
7025 "\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
7026 "\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
7027 "\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
7028 "\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
7029 "\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
7030 "\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
7031 "\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
7032 "\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
7033 "\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
7034 "\x18\x33\x4e\x69\x84\x9f\xba\xd5"
7035 "\xf0\x0b\x26\x41\x5c\x77\x92\xad"
7036 "\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
7037 "\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
7038 "\x78\x93\xae\xc9\xe4\xff\x1a\x35"
7039 "\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
7040 "\x28\x43\x5e\x79\x94\xaf\xca\xe5"
7041 "\x00\x1d\x3a\x57\x74\x91\xae\xcb"
7042 "\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
7043 "\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
7044 "\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
7045 "\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
7046 "\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
7047 "\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
7048 "\x58\x75\x92\xaf\xcc\xe9\x06\x23"
7049 "\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
7050 "\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
7051 "\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
7052 "\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
7053 "\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
7054 "\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
7055 "\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
7056 "\x98\xb5\xd2\xef\x0c\x29\x46\x63"
7057 "\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
7058 "\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
7059 "\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
7060 "\x38\x55\x72\x8f\xac\xc9\xe6\x03"
7061 "\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
7062 "\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
7063 "\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
7064 "\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
7065 "\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
7066 "\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
7067 "\x90\xad\xca\xe7\x04\x21\x3e\x5b"
7068 "\x78\x95\xb2\xcf\xec\x09\x26\x43"
7069 "\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
7070 "\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
7071 "\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
7072 "\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
7073 "\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
7074 "\xf8\x17\x36\x55\x74\x93\xb2\xd1"
7075 "\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
7076 "\xe8\x07\x26\x45\x64\x83\xa2\xc1"
7077 "\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
7078 "\xd8\xf7\x16\x35\x54\x73\x92\xb1"
7079 "\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
7080 "\xc8\xe7\x06\x25\x44\x63\x82\xa1"
7081 "\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
7082 "\xb8\xd7\xf6\x15\x34\x53\x72\x91"
7083 "\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
7084 "\xa8\xc7\xe6\x05\x24\x43\x62\x81"
7085 "\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
7086 "\x98\xb7\xd6\xf5\x14\x33\x52\x71"
7087 "\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
7088 "\x88\xa7\xc6\xe5\x04\x23\x42\x61"
7089 "\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
7090 "\x78\x97\xb6\xd5\xf4\x13\x32\x51"
7091 "\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
7092 "\x68\x87\xa6\xc5\xe4\x03\x22\x41"
7093 "\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
7094 "\x58\x77\x96\xb5\xd4\xf3\x12\x31"
7095 "\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
7096 "\x48\x67\x86\xa5\xc4\xe3\x02\x21"
7097 "\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
7098 "\x38\x57\x76\x95\xb4\xd3\xf2\x11"
7099 "\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
7100 "\x28\x47\x66\x85\xa4\xc3\xe2\x01"
7101 "\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
7102 "\x18\x37\x56\x75\x94\xb3\xd2\xf1"
7103 "\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
7104 "\x08\x27\x46\x65\x84\xa3\xc2\xe1"
7105 "\x00\x21\x42\x63",
8bff664c 7106 .ilen = 4100,
de224c30
SS
7107 .result =
7108 "\xb5\x81\xf5\x64\x18\x73\xe3\xf0"
7109 "\x4c\x13\xf2\x77\x18\x60\x65\x5e"
7110 "\x29\x01\xce\x98\x55\x53\xf9\x0c"
7111 "\x2a\x08\xd5\x09\xb3\x57\x55\x56"
7112 "\xc5\xe9\x56\x90\xcb\x6a\xa3\xc0"
7113 "\xff\xc4\x79\xb4\xd2\x97\x5d\xc4"
7114 "\x43\xd1\xfe\x94\x7b\x88\x06\x5a"
7115 "\xb2\x9e\x2c\xfc\x44\x03\xb7\x90"
7116 "\xa0\xc1\xba\x6a\x33\xb8\xc7\xb2"
7117 "\x9d\xe1\x12\x4f\xc0\x64\xd4\x01"
7118 "\xfe\x8c\x7a\x66\xf7\xe6\x5a\x91"
7119 "\xbb\xde\x56\x86\xab\x65\x21\x30"
7120 "\x00\x84\x65\x24\xa5\x7d\x85\xb4"
7121 "\xe3\x17\xed\x3a\xb7\x6f\xb4\x0b"
7122 "\x0b\xaf\x15\xae\x5a\x8f\xf2\x0c"
7123 "\x2f\x27\xf4\x09\xd8\xd2\x96\xb7"
7124 "\x71\xf2\xc5\x99\x4d\x7e\x7f\x75"
7125 "\x77\x89\x30\x8b\x59\xdb\xa2\xb2"
7126 "\xa0\xf3\x19\x39\x2b\xc5\x7e\x3f"
7127 "\x4f\xd9\xd3\x56\x28\x97\x44\xdc"
7128 "\xc0\x8b\x77\x24\xd9\x52\xe7\xc5"
7129 "\xaf\xf6\x7d\x59\xb2\x44\x05\x1d"
7130 "\xb1\xb0\x11\xa5\x0f\xec\x33\xe1"
7131 "\x6d\x1b\x4e\x1f\xff\x57\x91\xb4"
7132 "\x5b\x9a\x96\xc5\x53\xbc\xae\x20"
7133 "\x3c\xbb\x14\xe2\xe8\x22\x33\xc1"
7134 "\x5e\x76\x9e\x46\x99\xf6\x2a\x15"
7135 "\xc6\x97\x02\xa0\x66\x43\xd1\xa6"
7136 "\x31\xa6\x9f\xfb\xf4\xd3\x69\xe5"
7137 "\xcd\x76\x95\xb8\x7a\x82\x7f\x21"
7138 "\x45\xff\x3f\xce\x55\xf6\x95\x10"
7139 "\x08\x77\x10\x43\xc6\xf3\x09\xe5"
7140 "\x68\xe7\x3c\xad\x00\x52\x45\x0d"
7141 "\xfe\x2d\xc6\xc2\x94\x8c\x12\x1d"
7142 "\xe6\x25\xae\x98\x12\x8e\x19\x9c"
7143 "\x81\x68\xb1\x11\xf6\x69\xda\xe3"
7144 "\x62\x08\x18\x7a\x25\x49\x28\xac"
7145 "\xba\x71\x12\x0b\xe4\xa2\xe5\xc7"
7146 "\x5d\x8e\xec\x49\x40\x21\xbf\x5a"
7147 "\x98\xf3\x02\x68\x55\x03\x7f\x8a"
7148 "\xe5\x94\x0c\x32\x5c\x07\x82\x63"
7149 "\xaf\x6f\x91\x40\x84\x8e\x52\x25"
7150 "\xd0\xb0\x29\x53\x05\xe2\x50\x7a"
7151 "\x34\xeb\xc9\x46\x20\xa8\x3d\xde"
7152 "\x7f\x16\x5f\x36\xc5\x2e\xdc\xd1"
7153 "\x15\x47\xc7\x50\x40\x6d\x91\xc5"
7154 "\xe7\x93\x95\x1a\xd3\x57\xbc\x52"
7155 "\x33\xee\x14\x19\x22\x52\x89\xa7"
7156 "\x4a\x25\x56\x77\x4b\xca\xcf\x0a"
7157 "\xe1\xf5\x35\x85\x30\x7e\x59\x4a"
7158 "\xbd\x14\x5b\xdf\xe3\x46\xcb\xac"
7159 "\x1f\x6c\x96\x0e\xf4\x81\xd1\x99"
7160 "\xca\x88\x63\x3d\x02\x58\x6b\xa9"
7161 "\xe5\x9f\xb3\x00\xb2\x54\xc6\x74"
7162 "\x1c\xbf\x46\xab\x97\xcc\xf8\x54"
7163 "\x04\x07\x08\x52\xe6\xc0\xda\x93"
7164 "\x74\x7d\x93\x99\x5d\x78\x68\xa6"
7165 "\x2e\x6b\xd3\x6a\x69\xcc\x12\x6b"
7166 "\xd4\xc7\xa5\xc6\xe7\xf6\x03\x04"
7167 "\x5d\xcd\x61\x5e\x17\x40\xdc\xd1"
7168 "\x5c\xf5\x08\xdf\x5c\x90\x85\xa4"
7169 "\xaf\xf6\x78\xbb\x0d\xf1\xf4\xa4"
7170 "\x54\x26\x72\x9e\x61\xfa\x86\xcf"
7171 "\xe8\x9e\xa1\xe0\xc7\x48\x23\xae"
7172 "\x5a\x90\xae\x75\x0a\x74\x18\x89"
7173 "\x05\xb1\x92\xb2\x7f\xd0\x1b\xa6"
7174 "\x62\x07\x25\x01\xc7\xc2\x4f\xf9"
7175 "\xe8\xfe\x63\x95\x80\x07\xb4\x26"
7176 "\xcc\xd1\x26\xb6\xc4\x3f\x9e\xcb"
7177 "\x8e\x3b\x2e\x44\x16\xd3\x10\x9a"
7178 "\x95\x08\xeb\xc8\xcb\xeb\xbf\x6f"
7179 "\x0b\xcd\x1f\xc8\xca\x86\xaa\xec"
7180 "\x33\xe6\x69\xf4\x45\x25\x86\x3a"
7181 "\x22\x94\x4f\x00\x23\x6a\x44\xc2"
7182 "\x49\x97\x33\xab\x36\x14\x0a\x70"
7183 "\x24\xc3\xbe\x04\x3b\x79\xa0\xf9"
7184 "\xb8\xe7\x76\x29\x22\x83\xd7\xf2"
7185 "\x94\xf4\x41\x49\xba\x5f\x7b\x07"
7186 "\xb5\xfb\xdb\x03\x1a\x9f\xb6\x4c"
7187 "\xc2\x2e\x37\x40\x49\xc3\x38\x16"
7188 "\xe2\x4f\x77\x82\xb0\x68\x4c\x71"
7189 "\x1d\x57\x61\x9c\xd9\x4e\x54\x99"
7190 "\x47\x13\x28\x73\x3c\xbb\x00\x90"
7191 "\xf3\x4d\xc9\x0e\xfd\xe7\xb1\x71"
7192 "\xd3\x15\x79\xbf\xcc\x26\x2f\xbd"
7193 "\xad\x6c\x50\x69\x6c\x3e\x6d\x80"
7194 "\x9a\xea\x78\xaf\x19\xb2\x0d\x4d"
7195 "\xad\x04\x07\xae\x22\x90\x4a\x93"
7196 "\x32\x0e\x36\x9b\x1b\x46\xba\x3b"
7197 "\xb4\xac\xc6\xd1\xa2\x31\x53\x3b"
7198 "\x2a\x3d\x45\xfe\x03\x61\x10\x85"
7199 "\x17\x69\xa6\x78\xcc\x6c\x87\x49"
7200 "\x53\xf9\x80\x10\xde\x80\xa2\x41"
7201 "\x6a\xc3\x32\x02\xad\x6d\x3c\x56"
7202 "\x00\x71\x51\x06\xa7\xbd\xfb\xef"
7203 "\x3c\xb5\x9f\xfc\x48\x7d\x53\x7c"
7204 "\x66\xb0\x49\x23\xc4\x47\x10\x0e"
7205 "\xe5\x6c\x74\x13\xe6\xc5\x3f\xaa"
7206 "\xde\xff\x07\x44\xdd\x56\x1b\xad"
7207 "\x09\x77\xfb\x5b\x12\xb8\x0d\x38"
7208 "\x17\x37\x35\x7b\x9b\xbc\xfe\xd4"
7209 "\x7e\x8b\xda\x7e\x5b\x04\xa7\x22"
7210 "\xa7\x31\xa1\x20\x86\xc7\x1b\x99"
7211 "\xdb\xd1\x89\xf4\x94\xa3\x53\x69"
7212 "\x8d\xe7\xe8\x74\x11\x8d\x74\xd6"
7213 "\x07\x37\x91\x9f\xfd\x67\x50\x3a"
7214 "\xc9\xe1\xf4\x36\xd5\xa0\x47\xd1"
7215 "\xf9\xe5\x39\xa3\x31\xac\x07\x36"
7216 "\x23\xf8\x66\x18\x14\x28\x34\x0f"
7217 "\xb8\xd0\xe7\x29\xb3\x04\x4b\x55"
7218 "\x01\x41\xb2\x75\x8d\xcb\x96\x85"
7219 "\x3a\xfb\xab\x2b\x9e\xfa\x58\x20"
7220 "\x44\x1f\xc0\x14\x22\x75\x61\xe8"
7221 "\xaa\x19\xcf\xf1\x82\x56\xf4\xd7"
7222 "\x78\x7b\x3d\x5f\xb3\x9e\x0b\x8a"
7223 "\x57\x50\xdb\x17\x41\x65\x4d\xa3"
7224 "\x02\xc9\x9c\x9c\x53\xfb\x39\x39"
7225 "\x9b\x1d\x72\x24\xda\xb7\x39\xbe"
7226 "\x13\x3b\xfa\x29\xda\x9e\x54\x64"
7227 "\x6e\xba\xd8\xa1\xcb\xb3\x36\xfa"
7228 "\xcb\x47\x85\xe9\x61\x38\xbc\xbe"
7229 "\xc5\x00\x38\x2a\x54\xf7\xc4\xb9"
7230 "\xb3\xd3\x7b\xa0\xa0\xf8\x72\x7f"
7231 "\x8c\x8e\x82\x0e\xc6\x1c\x75\x9d"
7232 "\xca\x8e\x61\x87\xde\xad\x80\xd2"
7233 "\xf5\xf9\x80\xef\x15\x75\xaf\xf5"
7234 "\x80\xfb\xff\x6d\x1e\x25\xb7\x40"
7235 "\x61\x6a\x39\x5a\x6a\xb5\x31\xab"
7236 "\x97\x8a\x19\x89\x44\x40\xc0\xa6"
7237 "\xb4\x4e\x30\x32\x7b\x13\xe7\x67"
7238 "\xa9\x8b\x57\x04\xc2\x01\xa6\xf4"
7239 "\x28\x99\xad\x2c\x76\xa3\x78\xc2"
7240 "\x4a\xe6\xca\x5c\x50\x6a\xc1\xb0"
7241 "\x62\x4b\x10\x8e\x7c\x17\x43\xb3"
7242 "\x17\x66\x1c\x3e\x8d\x69\xf0\x5a"
7243 "\x71\xf5\x97\xdc\xd1\x45\xdd\x28"
7244 "\xf3\x5d\xdf\x53\x7b\x11\xe5\xbc"
7245 "\x4c\xdb\x1b\x51\x6b\xe9\xfb\x3d"
7246 "\xc1\xc3\x2c\xb9\x71\xf5\xb6\xb2"
7247 "\x13\x36\x79\x80\x53\xe8\xd3\xa6"
7248 "\x0a\xaf\xfd\x56\x97\xf7\x40\x8e"
7249 "\x45\xce\xf8\xb0\x9e\x5c\x33\x82"
7250 "\xb0\x44\x56\xfc\x05\x09\xe9\x2a"
7251 "\xac\x26\x80\x14\x1d\xc8\x3a\x35"
7252 "\x4c\x82\x97\xfd\x76\xb7\xa9\x0a"
7253 "\x35\x58\x79\x8e\x0f\x66\xea\xaf"
7254 "\x51\x6c\x09\xa9\x6e\x9b\xcb\x9a"
7255 "\x31\x47\xa0\x2f\x7c\x71\xb4\x4a"
7256 "\x11\xaa\x8c\x66\xc5\x64\xe6\x3a"
7257 "\x54\xda\x24\x6a\xc4\x41\x65\x46"
7258 "\x82\xa0\x0a\x0f\x5f\xfb\x25\xd0"
7259 "\x2c\x91\xa7\xee\xc4\x81\x07\x86"
7260 "\x75\x5e\x33\x69\x97\xe4\x2c\xa8"
7261 "\x9d\x9f\x0b\x6a\xbe\xad\x98\xda"
7262 "\x6d\x94\x41\xda\x2c\x1e\x89\xc4"
7263 "\xc2\xaf\x1e\x00\x05\x0b\x83\x60"
7264 "\xbd\x43\xea\x15\x23\x7f\xb9\xac"
7265 "\xee\x4f\x2c\xaf\x2a\xf3\xdf\xd0"
7266 "\xf3\x19\x31\xbb\x4a\x74\x84\x17"
7267 "\x52\x32\x2c\x7d\x61\xe4\xcb\xeb"
7268 "\x80\x38\x15\x52\xcb\x6f\xea\xe5"
7269 "\x73\x9c\xd9\x24\x69\xc6\x95\x32"
7270 "\x21\xc8\x11\xe4\xdc\x36\xd7\x93"
7271 "\x38\x66\xfb\xb2\x7f\x3a\xb9\xaf"
7272 "\x31\xdd\x93\x75\x78\x8a\x2c\x94"
7273 "\x87\x1a\x58\xec\x9e\x7d\x4d\xba"
7274 "\xe1\xe5\x4d\xfc\xbc\xa4\x2a\x14"
7275 "\xef\xcc\xa7\xec\xab\x43\x09\x18"
7276 "\xd3\xab\x68\xd1\x07\x99\x44\x47"
7277 "\xd6\x83\x85\x3b\x30\xea\xa9\x6b"
7278 "\x63\xea\xc4\x07\xfb\x43\x2f\xa4"
7279 "\xaa\xb0\xab\x03\x89\xce\x3f\x8c"
7280 "\x02\x7c\x86\x54\xbc\x88\xaf\x75"
7281 "\xd2\xdc\x63\x17\xd3\x26\xf6\x96"
7282 "\xa9\x3c\xf1\x61\x8c\x11\x18\xcc"
7283 "\xd6\xea\x5b\xe2\xcd\xf0\xf1\xb2"
7284 "\xe5\x35\x90\x1f\x85\x4c\x76\x5b"
7285 "\x66\xce\x44\xa4\x32\x9f\xe6\x7b"
7286 "\x71\x6e\x9f\x58\x15\x67\x72\x87"
7287 "\x64\x8e\x3a\x44\x45\xd4\x76\xfa"
7288 "\xc2\xf6\xef\x85\x05\x18\x7a\x9b"
7289 "\xba\x41\x54\xac\xf0\xfc\x59\x12"
7290 "\x3f\xdf\xa0\xe5\x8a\x65\xfd\x3a"
7291 "\x62\x8d\x83\x2c\x03\xbe\x05\x76"
7292 "\x2e\x53\x49\x97\x94\x33\xae\x40"
7293 "\x81\x15\xdb\x6e\xad\xaa\xf5\x4b"
7294 "\xe3\x98\x70\xdf\xe0\x7c\xcd\xdb"
7295 "\x02\xd4\x7d\x2f\xc1\xe6\xb4\xf3"
7296 "\xd7\x0d\x7a\xd9\x23\x9e\x87\x2d"
7297 "\xce\x87\xad\xcc\x72\x05\x00\x29"
7298 "\xdc\x73\x7f\x64\xc1\x15\x0e\xc2"
7299 "\xdf\xa7\x5f\xeb\x41\xa1\xcd\xef"
7300 "\x5c\x50\x79\x2a\x56\x56\x71\x8c"
7301 "\xac\xc0\x79\x50\x69\xca\x59\x32"
7302 "\x65\xf2\x54\xe4\x52\x38\x76\xd1"
7303 "\x5e\xde\x26\x9e\xfb\x75\x2e\x11"
7304 "\xb5\x10\xf4\x17\x73\xf5\x89\xc7"
7305 "\x4f\x43\x5c\x8e\x7c\xb9\x05\x52"
7306 "\x24\x40\x99\xfe\x9b\x85\x0b\x6c"
7307 "\x22\x3e\x8b\xae\x86\xa1\xd2\x79"
7308 "\x05\x68\x6b\xab\xe3\x41\x49\xed"
7309 "\x15\xa1\x8d\x40\x2d\x61\xdf\x1a"
7310 "\x59\xc9\x26\x8b\xef\x30\x4c\x88"
7311 "\x4b\x10\xf8\x8d\xa6\x92\x9f\x4b"
7312 "\xf3\xc4\x53\x0b\x89\x5d\x28\x92"
7313 "\xcf\x78\xb2\xc0\x5d\xed\x7e\xfc"
7314 "\xc0\x12\x23\x5f\x5a\x78\x86\x43"
7315 "\x6e\x27\xf7\x5a\xa7\x6a\xed\x19"
7316 "\x04\xf0\xb3\x12\xd1\xbd\x0e\x89"
7317 "\x6e\xbc\x96\xa8\xd8\x49\x39\x9f"
7318 "\x7e\x67\xf0\x2e\x3e\x01\xa9\xba"
7319 "\xec\x8b\x62\x8e\xcb\x4a\x70\x43"
7320 "\xc7\xc2\xc4\xca\x82\x03\x73\xe9"
7321 "\x11\xdf\xcf\x54\xea\xc9\xb0\x95"
7322 "\x51\xc0\x13\x3d\x92\x05\xfa\xf4"
7323 "\xa9\x34\xc8\xce\x6c\x3d\x54\xcc"
7324 "\xc4\xaf\xf1\xdc\x11\x44\x26\xa2"
7325 "\xaf\xf1\x85\x75\x7d\x03\x61\x68"
7326 "\x4e\x78\xc6\x92\x7d\x86\x7d\x77"
7327 "\xdc\x71\x72\xdb\xc6\xae\xa1\xcb"
7328 "\x70\x9a\x0b\x19\xbe\x4a\x6c\x2a"
7329 "\xe2\xba\x6c\x64\x9a\x13\x28\xdf"
7330 "\x85\x75\xe6\x43\xf6\x87\x08\x68"
7331 "\x6e\xba\x6e\x79\x9f\x04\xbc\x23"
7332 "\x50\xf6\x33\x5c\x1f\x24\x25\xbe"
7333 "\x33\x47\x80\x45\x56\xa3\xa7\xd7"
7334 "\x7a\xb1\x34\x0b\x90\x3c\x9c\xad"
7335 "\x44\x5f\x9e\x0e\x9d\xd4\xbd\x93"
7336 "\x5e\xfa\x3c\xe0\xb0\xd9\xed\xf3"
7337 "\xd6\x2e\xff\x24\xd8\x71\x6c\xed"
7338 "\xaf\x55\xeb\x22\xac\x93\x68\x32"
7339 "\x05\x5b\x47\xdd\xc6\x4a\xcb\xc7"
7340 "\x10\xe1\x3c\x92\x1a\xf3\x23\x78"
7341 "\x2b\xa1\xd2\x80\xf4\x12\xb1\x20"
7342 "\x8f\xff\x26\x35\xdd\xfb\xc7\x4e"
7343 "\x78\xf1\x2d\x50\x12\x77\xa8\x60"
7344 "\x7c\x0f\xf5\x16\x2f\x63\x70\x2a"
7345 "\xc0\x96\x80\x4e\x0a\xb4\x93\x35"
7346 "\x5d\x1d\x3f\x56\xf7\x2f\xbb\x90"
7347 "\x11\x16\x8f\xa2\xec\x47\xbe\xac"
7348 "\x56\x01\x26\x56\xb1\x8c\xb2\x10"
7349 "\xf9\x1a\xca\xf5\xd1\xb7\x39\x20"
7350 "\x63\xf1\x69\x20\x4f\x13\x12\x1f"
7351 "\x5b\x65\xfc\x98\xf7\xc4\x7a\xbe"
7352 "\xf7\x26\x4d\x2b\x84\x7b\x42\xad"
7353 "\xd8\x7a\x0a\xb4\xd8\x74\xbf\xc1"
7354 "\xf0\x6e\xb4\x29\xa3\xbb\xca\x46"
7355 "\x67\x70\x6a\x2d\xce\x0e\xa2\x8a"
7356 "\xa9\x87\xbf\x05\xc4\xc1\x04\xa3"
7357 "\xab\xd4\x45\x43\x8c\xb6\x02\xb0"
7358 "\x41\xc8\xfc\x44\x3d\x59\xaa\x2e"
7359 "\x44\x21\x2a\x8d\x88\x9d\x57\xf4"
7360 "\xa0\x02\x77\xb8\xa6\xa0\xe6\x75"
7361 "\x5c\x82\x65\x3e\x03\x5c\x29\x8f"
7362 "\x38\x55\xab\x33\x26\xef\x9f\x43"
7363 "\x52\xfd\x68\xaf\x36\xb4\xbb\x9a"
7364 "\x58\x09\x09\x1b\xc3\x65\x46\x46"
7365 "\x1d\xa7\x94\x18\x23\x50\x2c\xca"
7366 "\x2c\x55\x19\x97\x01\x9d\x93\x3b"
7367 "\x63\x86\xf2\x03\x67\x45\xd2\x72"
7368 "\x28\x52\x6c\xf4\xe3\x1c\xb5\x11"
7369 "\x13\xf1\xeb\x21\xc7\xd9\x56\x82"
7370 "\x2b\x82\x39\xbd\x69\x54\xed\x62"
7371 "\xc3\xe2\xde\x73\xd4\x6a\x12\xae"
7372 "\x13\x21\x7f\x4b\x5b\xfc\xbf\xe8"
7373 "\x2b\xbe\x56\xba\x68\x8b\x9a\xb1"
7374 "\x6e\xfa\xbf\x7e\x5a\x4b\xf1\xac"
7375 "\x98\x65\x85\xd1\x93\x53\xd3\x7b"
7376 "\x09\xdd\x4b\x10\x6d\x84\xb0\x13"
7377 "\x65\xbd\xcf\x52\x09\xc4\x85\xe2"
7378 "\x84\x74\x15\x65\xb7\xf7\x51\xaf"
7379 "\x55\xad\xa4\xd1\x22\x54\x70\x94"
7380 "\xa0\x1c\x90\x41\xfd\x99\xd7\x5a"
7381 "\x31\xef\xaa\x25\xd0\x7f\x4f\xea"
7382 "\x1d\x55\x42\xe5\x49\xb0\xd0\x46"
7383 "\x62\x36\x43\xb2\x82\x15\x75\x50"
7384 "\xa4\x72\xeb\x54\x27\x1f\x8a\xe4"
7385 "\x7d\xe9\x66\xc5\xf1\x53\xa4\xd1"
7386 "\x0c\xeb\xb8\xf8\xbc\xd4\xe2\xe7"
7387 "\xe1\xf8\x4b\xcb\xa9\xa1\xaf\x15"
7388 "\x83\xcb\x72\xd0\x33\x79\x00\x2d"
7389 "\x9f\xd7\xf1\x2e\x1e\x10\xe4\x45"
7390 "\xc0\x75\x3a\x39\xea\x68\xf7\x5d"
7391 "\x1b\x73\x8f\xe9\x8e\x0f\x72\x47"
7392 "\xae\x35\x0a\x31\x7a\x14\x4d\x4a"
7393 "\x6f\x47\xf7\x7e\x91\x6e\x74\x8b"
7394 "\x26\x47\xf9\xc3\xf9\xde\x70\xf5"
7395 "\x61\xab\xa9\x27\x9f\x82\xe4\x9c"
7396 "\x89\x91\x3f\x2e\x6a\xfd\xb5\x49"
7397 "\xe9\xfd\x59\x14\x36\x49\x40\x6d"
7398 "\x32\xd8\x85\x42\xf3\xa5\xdf\x0c"
7399 "\xa8\x27\xd7\x54\xe2\x63\x2f\xf2"
7400 "\x7e\x8b\x8b\xe7\xf1\x9a\x95\x35"
7401 "\x43\xdc\x3a\xe4\xb6\xf4\xd0\xdf"
7402 "\x9c\xcb\x94\xf3\x21\xa0\x77\x50"
7403 "\xe2\xc6\xc4\xc6\x5f\x09\x64\x5b"
7404 "\x92\x90\xd8\xe1\xd1\xed\x4b\x42"
7405 "\xd7\x37\xaf\x65\x3d\x11\x39\xb6"
7406 "\x24\x8a\x60\xae\xd6\x1e\xbf\x0e"
7407 "\x0d\xd7\xdc\x96\x0e\x65\x75\x4e"
7408 "\x29\x06\x9d\xa4\x51\x3a\x10\x63"
7409 "\x8f\x17\x07\xd5\x8e\x3c\xf4\x28"
7410 "\x00\x5a\x5b\x05\x19\xd8\xc0\x6c"
7411 "\xe5\x15\xe4\x9c\x9d\x71\x9d\x5e"
7412 "\x94\x29\x1a\xa7\x80\xfa\x0e\x33"
7413 "\x03\xdd\xb7\x3e\x9a\xa9\x26\x18"
7414 "\x37\xa9\x64\x08\x4d\x94\x5a\x88"
7415 "\xca\x35\xce\x81\x02\xe3\x1f\x1b"
7416 "\x89\x1a\x77\x85\xe3\x41\x6d\x32"
7417 "\x42\x19\x23\x7d\xc8\x73\xee\x25"
7418 "\x85\x0d\xf8\x31\x25\x79\x1b\x6f"
7419 "\x79\x25\xd2\xd8\xd4\x23\xfd\xf7"
7420 "\x82\x36\x6a\x0c\x46\x22\x15\xe9"
7421 "\xff\x72\x41\x91\x91\x7d\x3a\xb7"
7422 "\xdd\x65\x99\x70\xf6\x8d\x84\xf8"
7423 "\x67\x15\x20\x11\xd6\xb2\x55\x7b"
7424 "\xdb\x87\xee\xef\x55\x89\x2a\x59"
7425 "\x2b\x07\x8f\x43\x8a\x59\x3c\x01"
7426 "\x8b\x65\x54\xa1\x66\xd5\x38\xbd"
7427 "\xc6\x30\xa9\xcc\x49\xb6\xa8\x1b"
7428 "\xb8\xc0\x0e\xe3\x45\x28\xe2\xff"
7429 "\x41\x9f\x7e\x7c\xd1\xae\x9e\x25"
7430 "\x3f\x4c\x7c\x7c\xf4\xa8\x26\x4d"
7431 "\x5c\xfd\x4b\x27\x18\xf9\x61\x76"
7432 "\x48\xba\x0c\x6b\xa9\x4d\xfc\xf5"
7433 "\x3b\x35\x7e\x2f\x4a\xa9\xc2\x9a"
7434 "\xae\xab\x86\x09\x89\xc9\xc2\x40"
7435 "\x39\x2c\x81\xb3\xb8\x17\x67\xc2"
7436 "\x0d\x32\x4a\x3a\x67\x81\xd7\x1a"
7437 "\x34\x52\xc5\xdb\x0a\xf5\x63\x39"
7438 "\xea\x1f\xe1\x7c\xa1\x9e\xc1\x35"
7439 "\xe3\xb1\x18\x45\x67\xf9\x22\x38"
7440 "\x95\xd9\x34\x34\x86\xc6\x41\x94"
7441 "\x15\xf9\x5b\x41\xa6\x87\x8b\xf8"
7442 "\xd5\xe1\x1b\xe2\x5b\xf3\x86\x10"
7443 "\xff\xe6\xae\x69\x76\xbc\x0d\xb4"
7444 "\x09\x90\x0c\xa2\x65\x0c\xad\x74"
7445 "\xf5\xd7\xff\xda\xc1\xce\x85\xbe"
7446 "\x00\xa7\xff\x4d\x2f\x65\xd3\x8c"
7447 "\x86\x2d\x05\xe8\xed\x3e\x6b\x8b"
7448 "\x0f\x3d\x83\x8c\xf1\x1d\x5b\x96"
7449 "\x2e\xb1\x9c\xc2\x98\xe1\x70\xb9"
7450 "\xba\x5c\x8a\x43\xd6\x34\xa7\x2d"
7451 "\xc9\x92\xae\xf2\xa5\x7b\x05\x49"
7452 "\xa7\x33\x34\x86\xca\xe4\x96\x23"
7453 "\x76\x5b\xf2\xc6\xf1\x51\x28\x42"
7454 "\x7b\xcc\x76\x8f\xfa\xa2\xad\x31"
7455 "\xd4\xd6\x7a\x6d\x25\x25\x54\xe4"
7456 "\x3f\x50\x59\xe1\x5c\x05\xb7\x27"
7457 "\x48\xbf\x07\xec\x1b\x13\xbe\x2b"
7458 "\xa1\x57\x2b\xd5\xab\xd7\xd0\x4c"
7459 "\x1e\xcb\x71\x9b\xc5\x90\x85\xd3"
7460 "\xde\x59\xec\x71\xeb\x89\xbb\xd0"
7461 "\x09\x50\xe1\x16\x3f\xfd\x1c\x34"
7462 "\xc3\x1c\xa1\x10\x77\x53\x98\xef"
7463 "\xf2\xfd\xa5\x01\x59\xc2\x9b\x26"
7464 "\xc7\x42\xd9\x49\xda\x58\x2b\x6e"
7465 "\x9f\x53\x19\x76\x7e\xd9\xc9\x0e"
7466 "\x68\xc8\x7f\x51\x22\x42\xef\x49"
7467 "\xa4\x55\xb6\x36\xac\x09\xc7\x31"
7468 "\x88\x15\x4b\x2e\x8f\x3a\x08\xf7"
7469 "\xd8\xf7\xa8\xc5\xa9\x33\xa6\x45"
7470 "\xe4\xc4\x94\x76\xf3\x0d\x8f\x7e"
7471 "\xc8\xf6\xbc\x23\x0a\xb6\x4c\xd3"
7472 "\x6a\xcd\x36\xc2\x90\x5c\x5c\x3c"
7473 "\x65\x7b\xc2\xd6\xcc\xe6\x0d\x87"
7474 "\x73\x2e\x71\x79\x16\x06\x63\x28"
7475 "\x09\x15\xd8\x89\x38\x38\x3d\xb5"
7476 "\x42\x1c\x08\x24\xf7\x2a\xd2\x9d"
7477 "\xc8\xca\xef\xf9\x27\xd8\x07\x86"
7478 "\xf7\x43\x0b\x55\x15\x3f\x9f\x83"
7479 "\xef\xdc\x49\x9d\x2a\xc1\x54\x62"
7480 "\xbd\x9b\x66\x55\x9f\xb7\x12\xf3"
7481 "\x1b\x4d\x9d\x2a\x5c\xed\x87\x75"
7482 "\x87\x26\xec\x61\x2c\xb4\x0f\x89"
7483 "\xb0\xfb\x2e\x68\x5d\x15\xc7\x8d"
7484 "\x2e\xc0\xd9\xec\xaf\x4f\xd2\x25"
7485 "\x29\xe8\xd2\x26\x2b\x67\xe9\xfc"
7486 "\x2b\xa8\x67\x96\x12\x1f\x5b\x96"
7487 "\xc6\x14\x53\xaf\x44\xea\xd6\xe2"
7488 "\x94\x98\xe4\x12\x93\x4c\x92\xe0"
7489 "\x18\xa5\x8d\x2d\xe4\x71\x3c\x47"
7490 "\x4c\xf7\xe6\x47\x9e\xc0\x68\xdf"
7491 "\xd4\xf5\x5a\x74\xb1\x2b\x29\x03"
7492 "\x19\x07\xaf\x90\x62\x5c\x68\x98"
7493 "\x48\x16\x11\x02\x9d\xee\xb4\x9b"
7494 "\xe5\x42\x7f\x08\xfd\x16\x32\x0b"
7495 "\xd0\xb3\xfa\x2b\xb7\x99\xf9\x29"
7496 "\xcd\x20\x45\x9f\xb3\x1a\x5d\xa2"
7497 "\xaf\x4d\xe0\xbd\x42\x0d\xbc\x74"
7498 "\x99\x9c\x8e\x53\x1a\xb4\x3e\xbd"
7499 "\xa2\x9a\x2d\xf7\xf8\x39\x0f\x67"
7500 "\x63\xfc\x6b\xc0\xaf\xb3\x4b\x4f"
7501 "\x55\xc4\xcf\xa7\xc8\x04\x11\x3e"
7502 "\x14\x32\xbb\x1b\x38\x77\xd6\x7f"
7503 "\x54\x4c\xdf\x75\xf3\x07\x2d\x33"
7504 "\x9b\xa8\x20\xe1\x7b\x12\xb5\xf3"
7505 "\xef\x2f\xce\x72\xe5\x24\x60\xc1"
7506 "\x30\xe2\xab\xa1\x8e\x11\x09\xa8"
7507 "\x21\x33\x44\xfe\x7f\x35\x32\x93"
7508 "\x39\xa7\xad\x8b\x79\x06\xb2\xcb"
7509 "\x4e\xa9\x5f\xc7\xba\x74\x29\xec"
7510 "\x93\xa0\x4e\x54\x93\xc0\xbc\x55"
7511 "\x64\xf0\x48\xe5\x57\x99\xee\x75"
7512 "\xd6\x79\x0f\x66\xb7\xc6\x57\x76"
7513 "\xf7\xb7\xf3\x9c\xc5\x60\xe8\x7f"
7514 "\x83\x76\xd6\x0e\xaa\xe6\x90\x39"
7515 "\x1d\xa6\x32\x6a\x34\xe3\x55\xf8"
7516 "\x58\xa0\x58\x7d\x33\xe0\x22\x39"
7517 "\x44\x64\x87\x86\x5a\x2f\xa7\x7e"
7518 "\x0f\x38\xea\xb0\x30\xcc\x61\xa5"
7519 "\x6a\x32\xae\x1e\xf7\xe9\xd0\xa9"
7520 "\x0c\x32\x4b\xb5\x49\x28\xab\x85"
7521 "\x2f\x8e\x01\x36\x38\x52\xd0\xba"
7522 "\xd6\x02\x78\xf8\x0e\x3e\x9c\x8b"
7523 "\x6b\x45\x99\x3f\x5c\xfe\x58\xf1"
7524 "\x5c\x94\x04\xe1\xf5\x18\x6d\x51"
7525 "\xb2\x5d\x18\x20\xb6\xc2\x9a\x42"
7526 "\x1d\xb3\xab\x3c\xb6\x3a\x13\x03"
7527 "\xb2\x46\x82\x4f\xfc\x64\xbc\x4f"
7528 "\xca\xfa\x9c\xc0\xd5\xa7\xbd\x11"
7529 "\xb7\xe4\x5a\xf6\x6f\x4d\x4d\x54"
7530 "\xea\xa4\x98\x66\xd4\x22\x3b\xd3"
7531 "\x8f\x34\x47\xd9\x7c\xf4\x72\x3b"
7532 "\x4d\x02\x77\xf6\xd6\xdd\x08\x0a"
7533 "\x81\xe1\x86\x89\x3e\x56\x10\x3c"
7534 "\xba\xd7\x81\x8c\x08\xbc\x8b\xe2"
7535 "\x53\xec\xa7\x89\xee\xc8\x56\xb5"
7536 "\x36\x2c\xb2\x03\xba\x99\xdd\x7c"
7537 "\x48\xa0\xb0\xbc\x91\x33\xe9\xa8"
7538 "\xcb\xcd\xcf\x59\x5f\x1f\x15\xe2"
7539 "\x56\xf5\x4e\x01\x35\x27\x45\x77"
7540 "\x47\xc8\xbc\xcb\x7e\x39\xc1\x97"
7541 "\x28\xd3\x84\xfc\x2c\x3e\xc8\xad"
7542 "\x9c\xf8\x8a\x61\x9c\x28\xaa\xc5"
7543 "\x99\x20\x43\x85\x9d\xa5\xe2\x8b"
7544 "\xb8\xae\xeb\xd0\x32\x0d\x52\x78"
7545 "\x09\x56\x3f\xc7\xd8\x7e\x26\xfc"
7546 "\x37\xfb\x6f\x04\xfc\xfa\x92\x10"
7547 "\xac\xf8\x3e\x21\xdc\x8c\x21\x16"
7548 "\x7d\x67\x6e\xf6\xcd\xda\xb6\x98"
7549 "\x23\xab\x23\x3c\xb2\x10\xa0\x53"
7550 "\x5a\x56\x9f\xc5\xd0\xff\xbb\xe4"
7551 "\x98\x3c\x69\x1e\xdb\x38\x8f\x7e"
7552 "\x0f\xd2\x98\x88\x81\x8b\x45\x67"
7553 "\xea\x33\xf1\xeb\xe9\x97\x55\x2e"
7554 "\xd9\xaa\xeb\x5a\xec\xda\xe1\x68"
7555 "\xa8\x9d\x3c\x84\x7c\x05\x3d\x62"
7556 "\x87\x8f\x03\x21\x28\x95\x0c\x89"
7557 "\x25\x22\x4a\xb0\x93\xa9\x50\xa2"
7558 "\x2f\x57\x6e\x18\x42\x19\x54\x0c"
7559 "\x55\x67\xc6\x11\x49\xf4\x5c\xd2"
7560 "\xe9\x3d\xdd\x8b\x48\x71\x21\x00"
7561 "\xc3\x9a\x6c\x85\x74\x28\x83\x4a"
7562 "\x1b\x31\x05\xe1\x06\x92\xe7\xda"
7563 "\x85\x73\x78\x45\x20\x7f\xae\x13"
7564 "\x7c\x33\x06\x22\xf4\x83\xf9\x35"
7565 "\x3f\x6c\x71\xa8\x4e\x48\xbe\x9b"
7566 "\xce\x8a\xba\xda\xbe\x28\x08\xf7"
7567 "\xe2\x14\x8c\x71\xea\x72\xf9\x33"
7568 "\xf2\x88\x3f\xd7\xbb\x69\x6c\x29"
7569 "\x19\xdc\x84\xce\x1f\x12\x4f\xc8"
7570 "\xaf\xa5\x04\xba\x5a\xab\xb0\xd9"
7571 "\x14\x1f\x6c\x68\x98\x39\x89\x7a"
7572 "\xd9\xd8\x2f\xdf\xa8\x47\x4a\x25"
7573 "\xe2\xfb\x33\xf4\x59\x78\xe1\x68"
7574 "\x85\xcf\xfe\x59\x20\xd4\x05\x1d"
7575 "\x80\x99\xae\xbc\xca\xae\x0f\x2f"
7576 "\x65\x43\x34\x8e\x7e\xac\xd3\x93"
7577 "\x2f\xac\x6d\x14\x3d\x02\x07\x70"
7578 "\x9d\xa4\xf3\x1b\x5c\x36\xfc\x01"
7579 "\x73\x34\x85\x0c\x6c\xd6\xf1\xbd"
7580 "\x3f\xdf\xee\xf5\xd9\xba\x56\xef"
7581 "\xf4\x9b\x6b\xee\x9f\x5a\x78\x6d"
7582 "\x32\x19\xf4\xf7\xf8\x4c\x69\x0b"
7583 "\x4b\xbc\xbb\xb7\xf2\x85\xaf\x70"
7584 "\x75\x24\x6c\x54\xa7\x0e\x4d\x1d"
7585 "\x01\xbf\x08\xac\xcf\x7f\x2c\xe3"
7586 "\x14\x89\x5e\x70\x5a\x99\x92\xcd"
7587 "\x01\x84\xc8\xd2\xab\xe5\x4f\x58"
7588 "\xe7\x0f\x2f\x0e\xff\x68\xea\xfd"
7589 "\x15\xb3\x17\xe6\xb0\xe7\x85\xd8"
7590 "\x23\x2e\x05\xc7\xc9\xc4\x46\x1f"
7591 "\xe1\x9e\x49\x20\x23\x24\x4d\x7e"
7592 "\x29\x65\xff\xf4\xb6\xfd\x1a\x85"
7593 "\xc4\x16\xec\xfc\xea\x7b\xd6\x2c"
7594 "\x43\xf8\xb7\xbf\x79\xc0\x85\xcd"
7595 "\xef\xe1\x98\xd3\xa5\xf7\x90\x8c"
7596 "\xe9\x7f\x80\x6b\xd2\xac\x4c\x30"
7597 "\xa7\xc6\x61\x6c\xd2\xf9\x2c\xff"
7598 "\x30\xbc\x22\x81\x7d\x93\x12\xe4"
7599 "\x0a\xcd\xaf\xdd\xe8\xab\x0a\x1e"
7600 "\x13\xa4\x27\xc3\x5f\xf7\x4b\xbb"
7601 "\x37\x09\x4b\x91\x6f\x92\x4f\xaf"
7602 "\x52\xee\xdf\xef\x09\x6f\xf7\x5c"
7603 "\x6e\x12\x17\x72\x63\x57\xc7\xba"
7604 "\x3b\x6b\x38\x32\x73\x1b\x9c\x80"
7605 "\xc1\x7a\xc6\xcf\xcd\x35\xc0\x6b"
7606 "\x31\x1a\x6b\xe9\xd8\x2c\x29\x3f"
7607 "\x96\xfb\xb6\xcd\x13\x91\x3b\xc2"
7608 "\xd2\xa3\x31\x8d\xa4\xcd\x57\xcd"
7609 "\x13\x3d\x64\xfd\x06\xce\xe6\xdc"
7610 "\x0c\x24\x43\x31\x40\x57\xf1\x72"
7611 "\x17\xe3\x3a\x63\x6d\x35\xcf\x5d"
7612 "\x97\x40\x59\xdd\xf7\x3c\x02\xf7"
7613 "\x1c\x7e\x05\xbb\xa9\x0d\x01\xb1"
7614 "\x8e\xc0\x30\xa9\x53\x24\xc9\x89"
7615 "\x84\x6d\xaa\xd0\xcd\x91\xc2\x4d"
7616 "\x91\xb0\x89\xe2\xbf\x83\x44\xaa"
7617 "\x28\x72\x23\xa0\xc2\xad\xad\x1c"
7618 "\xfc\x3f\x09\x7a\x0b\xdc\xc5\x1b"
7619 "\x87\x13\xc6\x5b\x59\x8d\xf2\xc8"
7620 "\xaf\xdf\x11\x95",
8bff664c
TSH
7621 .rlen = 4100,
7622 },
e2ee95b8
HSC
7623};
7624
76cb9521
KC
7625/*
7626 * CTS (Cipher Text Stealing) mode tests
7627 */
7628#define CTS_MODE_ENC_TEST_VECTORS 6
7629#define CTS_MODE_DEC_TEST_VECTORS 6
7630static struct cipher_testvec cts_mode_enc_tv_template[] = {
7631 { /* from rfc3962 */
7632 .klen = 16,
7633 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7634 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7635 .ilen = 17,
7636 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7637 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7638 "\x20",
7639 .rlen = 17,
7640 .result = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
7641 "\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
7642 "\x97",
7643 }, {
7644 .klen = 16,
7645 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7646 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7647 .ilen = 31,
7648 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7649 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7650 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7651 "\x20\x47\x61\x75\x27\x73\x20",
7652 .rlen = 31,
7653 .result = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
7654 "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
7655 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7656 "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
7657 }, {
7658 .klen = 16,
7659 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7660 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7661 .ilen = 32,
7662 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7663 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7664 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7665 "\x20\x47\x61\x75\x27\x73\x20\x43",
7666 .rlen = 32,
7667 .result = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7668 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
7669 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7670 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
7671 }, {
7672 .klen = 16,
7673 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7674 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7675 .ilen = 47,
7676 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7677 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7678 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7679 "\x20\x47\x61\x75\x27\x73\x20\x43"
7680 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7681 "\x70\x6c\x65\x61\x73\x65\x2c",
7682 .rlen = 47,
7683 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7684 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7685 "\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
7686 "\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
7687 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7688 "\xbe\x7f\xcb\xcc\x98\xeb\xf5",
7689 }, {
7690 .klen = 16,
7691 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7692 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7693 .ilen = 48,
7694 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7695 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7696 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7697 "\x20\x47\x61\x75\x27\x73\x20\x43"
7698 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7699 "\x70\x6c\x65\x61\x73\x65\x2c\x20",
7700 .rlen = 48,
7701 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7702 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7703 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
7704 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
7705 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7706 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
7707 }, {
7708 .klen = 16,
7709 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7710 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7711 .ilen = 64,
7712 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7713 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7714 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7715 "\x20\x47\x61\x75\x27\x73\x20\x43"
7716 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7717 "\x70\x6c\x65\x61\x73\x65\x2c\x20"
7718 "\x61\x6e\x64\x20\x77\x6f\x6e\x74"
7719 "\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
7720 .rlen = 64,
7721 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7722 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7723 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7724 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
7725 "\x48\x07\xef\xe8\x36\xee\x89\xa5"
7726 "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
7727 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
7728 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
7729 }
7730};
7731
7732static struct cipher_testvec cts_mode_dec_tv_template[] = {
7733 { /* from rfc3962 */
7734 .klen = 16,
7735 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7736 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7737 .rlen = 17,
7738 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7739 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7740 "\x20",
7741 .ilen = 17,
7742 .input = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
7743 "\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
7744 "\x97",
7745 }, {
7746 .klen = 16,
7747 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7748 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7749 .rlen = 31,
7750 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7751 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7752 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7753 "\x20\x47\x61\x75\x27\x73\x20",
7754 .ilen = 31,
7755 .input = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
7756 "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
7757 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7758 "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
7759 }, {
7760 .klen = 16,
7761 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7762 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7763 .rlen = 32,
7764 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7765 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7766 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7767 "\x20\x47\x61\x75\x27\x73\x20\x43",
7768 .ilen = 32,
7769 .input = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7770 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
7771 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7772 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
7773 }, {
7774 .klen = 16,
7775 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7776 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7777 .rlen = 47,
7778 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7779 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7780 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7781 "\x20\x47\x61\x75\x27\x73\x20\x43"
7782 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7783 "\x70\x6c\x65\x61\x73\x65\x2c",
7784 .ilen = 47,
7785 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7786 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7787 "\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
7788 "\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
7789 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7790 "\xbe\x7f\xcb\xcc\x98\xeb\xf5",
7791 }, {
7792 .klen = 16,
7793 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7794 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7795 .rlen = 48,
7796 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7797 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7798 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7799 "\x20\x47\x61\x75\x27\x73\x20\x43"
7800 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7801 "\x70\x6c\x65\x61\x73\x65\x2c\x20",
7802 .ilen = 48,
7803 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7804 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7805 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
7806 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
7807 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7808 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
7809 }, {
7810 .klen = 16,
7811 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7812 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7813 .rlen = 64,
7814 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7815 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7816 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7817 "\x20\x47\x61\x75\x27\x73\x20\x43"
7818 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7819 "\x70\x6c\x65\x61\x73\x65\x2c\x20"
7820 "\x61\x6e\x64\x20\x77\x6f\x6e\x74"
7821 "\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
7822 .ilen = 64,
7823 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7824 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7825 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7826 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
7827 "\x48\x07\xef\xe8\x36\xee\x89\xa5"
7828 "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
7829 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
7830 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
7831 }
7832};
7833
1da177e4
LT
7834/*
7835 * Compression stuff.
7836 */
7837#define COMP_BUF_SIZE 512
7838
7839struct comp_testvec {
7840 int inlen, outlen;
7841 char input[COMP_BUF_SIZE];
7842 char output[COMP_BUF_SIZE];
7843};
7844
7845/*
7846 * Deflate test vectors (null-terminated strings).
7847 * Params: winbits=11, Z_DEFAULT_COMPRESSION, MAX_MEM_LEVEL.
7848 */
7849#define DEFLATE_COMP_TEST_VECTORS 2
7850#define DEFLATE_DECOMP_TEST_VECTORS 2
7851
7852static struct comp_testvec deflate_comp_tv_template[] = {
7853 {
7854 .inlen = 70,
7855 .outlen = 38,
de224c30
SS
7856 .input = "Join us now and share the software "
7857 "Join us now and share the software ",
7858 .output = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
7859 "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
7860 "\x28\xce\x48\x2c\x4a\x55\x28\xc9"
7861 "\x48\x55\x28\xce\x4f\x2b\x29\x07"
7862 "\x71\xbc\x08\x2b\x01\x00",
1da177e4
LT
7863 }, {
7864 .inlen = 191,
7865 .outlen = 122,
7866 .input = "This document describes a compression method based on the DEFLATE"
de224c30
SS
7867 "compression algorithm. This document defines the application of "
7868 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
7869 .output = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
7870 "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
7871 "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
7872 "\x24\xdb\x67\xd9\x47\xc1\xef\x49"
7873 "\x68\x12\x51\xae\x76\x67\xd6\x27"
7874 "\x19\x88\x1a\xde\x85\xab\x21\xf2"
7875 "\x08\x5d\x16\x1e\x20\x04\x2d\xad"
7876 "\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
7877 "\x42\x83\x23\xb6\x6c\x89\x71\x9b"
7878 "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
7879 "\xed\x62\xa9\x4c\x80\xff\x13\xaf"
7880 "\x52\x37\xed\x0e\x52\x6b\x59\x02"
7881 "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
7882 "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
7883 "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
7884 "\xfa\x02",
1da177e4
LT
7885 },
7886};
7887
7888static struct comp_testvec deflate_decomp_tv_template[] = {
7889 {
7890 .inlen = 122,
7891 .outlen = 191,
de224c30
SS
7892 .input = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
7893 "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
7894 "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
7895 "\x24\xdb\x67\xd9\x47\xc1\xef\x49"
7896 "\x68\x12\x51\xae\x76\x67\xd6\x27"
7897 "\x19\x88\x1a\xde\x85\xab\x21\xf2"
7898 "\x08\x5d\x16\x1e\x20\x04\x2d\xad"
7899 "\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
7900 "\x42\x83\x23\xb6\x6c\x89\x71\x9b"
7901 "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
7902 "\xed\x62\xa9\x4c\x80\xff\x13\xaf"
7903 "\x52\x37\xed\x0e\x52\x6b\x59\x02"
7904 "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
7905 "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
7906 "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
7907 "\xfa\x02",
1da177e4 7908 .output = "This document describes a compression method based on the DEFLATE"
de224c30
SS
7909 "compression algorithm. This document defines the application of "
7910 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
1da177e4
LT
7911 }, {
7912 .inlen = 38,
7913 .outlen = 70,
de224c30
SS
7914 .input = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
7915 "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
7916 "\x28\xce\x48\x2c\x4a\x55\x28\xc9"
7917 "\x48\x55\x28\xce\x4f\x2b\x29\x07"
7918 "\x71\xbc\x08\x2b\x01\x00",
1da177e4 7919 .output = "Join us now and share the software "
de224c30 7920 "Join us now and share the software ",
1da177e4
LT
7921 },
7922};
7923
0b77abb3
ZS
7924/*
7925 * LZO test vectors (null-terminated strings).
7926 */
7927#define LZO_COMP_TEST_VECTORS 2
7928#define LZO_DECOMP_TEST_VECTORS 2
7929
7930static struct comp_testvec lzo_comp_tv_template[] = {
7931 {
7932 .inlen = 70,
7933 .outlen = 46,
7934 .input = "Join us now and share the software "
de224c30
SS
7935 "Join us now and share the software ",
7936 .output = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
7937 "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
7938 "\x64\x20\x73\x68\x61\x72\x65\x20"
7939 "\x74\x68\x65\x20\x73\x6f\x66\x74"
7940 "\x77\x70\x01\x01\x4a\x6f\x69\x6e"
7941 "\x3d\x88\x00\x11\x00\x00",
0b77abb3
ZS
7942 }, {
7943 .inlen = 159,
7944 .outlen = 133,
7945 .input = "This document describes a compression method based on the LZO "
de224c30
SS
7946 "compression algorithm. This document defines the application of "
7947 "the LZO algorithm used in UBIFS.",
7948 .output = "\x00\x2b\x54\x68\x69\x73\x20\x64"
7949 "\x6f\x63\x75\x6d\x65\x6e\x74\x20"
7950 "\x64\x65\x73\x63\x72\x69\x62\x65"
7951 "\x73\x20\x61\x20\x63\x6f\x6d\x70"
7952 "\x72\x65\x73\x73\x69\x6f\x6e\x20"
7953 "\x6d\x65\x74\x68\x6f\x64\x20\x62"
7954 "\x61\x73\x65\x64\x20\x6f\x6e\x20"
7955 "\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
7956 "\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
7957 "\x69\x74\x68\x6d\x2e\x20\x20\x54"
7958 "\x68\x69\x73\x2a\x54\x01\x02\x66"
7959 "\x69\x6e\x65\x73\x94\x06\x05\x61"
7960 "\x70\x70\x6c\x69\x63\x61\x74\x76"
7961 "\x0a\x6f\x66\x88\x02\x60\x09\x27"
7962 "\xf0\x00\x0c\x20\x75\x73\x65\x64"
7963 "\x20\x69\x6e\x20\x55\x42\x49\x46"
7964 "\x53\x2e\x11\x00\x00",
0b77abb3
ZS
7965 },
7966};
7967
7968static struct comp_testvec lzo_decomp_tv_template[] = {
7969 {
7970 .inlen = 133,
7971 .outlen = 159,
de224c30
SS
7972 .input = "\x00\x2b\x54\x68\x69\x73\x20\x64"
7973 "\x6f\x63\x75\x6d\x65\x6e\x74\x20"
7974 "\x64\x65\x73\x63\x72\x69\x62\x65"
7975 "\x73\x20\x61\x20\x63\x6f\x6d\x70"
7976 "\x72\x65\x73\x73\x69\x6f\x6e\x20"
7977 "\x6d\x65\x74\x68\x6f\x64\x20\x62"
7978 "\x61\x73\x65\x64\x20\x6f\x6e\x20"
7979 "\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
7980 "\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
7981 "\x69\x74\x68\x6d\x2e\x20\x20\x54"
7982 "\x68\x69\x73\x2a\x54\x01\x02\x66"
7983 "\x69\x6e\x65\x73\x94\x06\x05\x61"
7984 "\x70\x70\x6c\x69\x63\x61\x74\x76"
7985 "\x0a\x6f\x66\x88\x02\x60\x09\x27"
7986 "\xf0\x00\x0c\x20\x75\x73\x65\x64"
7987 "\x20\x69\x6e\x20\x55\x42\x49\x46"
7988 "\x53\x2e\x11\x00\x00",
0b77abb3 7989 .output = "This document describes a compression method based on the LZO "
de224c30
SS
7990 "compression algorithm. This document defines the application of "
7991 "the LZO algorithm used in UBIFS.",
0b77abb3
ZS
7992 }, {
7993 .inlen = 46,
7994 .outlen = 70,
de224c30
SS
7995 .input = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
7996 "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
7997 "\x64\x20\x73\x68\x61\x72\x65\x20"
7998 "\x74\x68\x65\x20\x73\x6f\x66\x74"
7999 "\x77\x70\x01\x01\x4a\x6f\x69\x6e"
8000 "\x3d\x88\x00\x11\x00\x00",
0b77abb3 8001 .output = "Join us now and share the software "
de224c30 8002 "Join us now and share the software ",
0b77abb3
ZS
8003 },
8004};
8005
1da177e4
LT
8006/*
8007 * Michael MIC test vectors from IEEE 802.11i
8008 */
8009#define MICHAEL_MIC_TEST_VECTORS 6
8010
ef2736fc 8011static struct hash_testvec michael_mic_tv_template[] = {
1da177e4 8012 {
de224c30 8013 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
1da177e4 8014 .ksize = 8,
de224c30 8015 .plaintext = zeroed_string,
1da177e4 8016 .psize = 0,
de224c30 8017 .digest = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
1da177e4
LT
8018 },
8019 {
de224c30 8020 .key = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
1da177e4 8021 .ksize = 8,
de224c30 8022 .plaintext = "M",
1da177e4 8023 .psize = 1,
de224c30 8024 .digest = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
1da177e4
LT
8025 },
8026 {
de224c30 8027 .key = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
1da177e4 8028 .ksize = 8,
de224c30 8029 .plaintext = "Mi",
1da177e4 8030 .psize = 2,
de224c30 8031 .digest = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
1da177e4
LT
8032 },
8033 {
de224c30 8034 .key = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
1da177e4 8035 .ksize = 8,
de224c30 8036 .plaintext = "Mic",
1da177e4 8037 .psize = 3,
de224c30 8038 .digest = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
1da177e4
LT
8039 },
8040 {
de224c30 8041 .key = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
1da177e4 8042 .ksize = 8,
de224c30 8043 .plaintext = "Mich",
1da177e4 8044 .psize = 4,
de224c30 8045 .digest = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
1da177e4
LT
8046 },
8047 {
de224c30 8048 .key = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
1da177e4 8049 .ksize = 8,
de224c30 8050 .plaintext = "Michael",
1da177e4 8051 .psize = 7,
de224c30 8052 .digest = "\x0a\x94\x2b\x12\x4e\xca\xa5\x46",
1da177e4
LT
8053 }
8054};
8055
c907ee76
HX
8056/*
8057 * CRC32C test vectors
8058 */
8059#define CRC32C_TEST_VECTORS 14
8060
8061static struct hash_testvec crc32c_tv_template[] = {
8062 {
8063 .psize = 0,
de224c30 8064 .digest = "\x00\x00\x00\x00",
c907ee76
HX
8065 },
8066 {
de224c30 8067 .key = "\x87\xa9\xcb\xed",
c907ee76
HX
8068 .ksize = 4,
8069 .psize = 0,
de224c30 8070 .digest = "\x78\x56\x34\x12",
c907ee76
HX
8071 },
8072 {
de224c30 8073 .key = "\xff\xff\xff\xff",
c907ee76 8074 .ksize = 4,
de224c30
SS
8075 .plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08"
8076 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
8077 "\x11\x12\x13\x14\x15\x16\x17\x18"
8078 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
8079 "\x21\x22\x23\x24\x25\x26\x27\x28",
c907ee76 8080 .psize = 40,
de224c30 8081 .digest = "\x7f\x15\x2c\x0e",
c907ee76
HX
8082 },
8083 {
de224c30 8084 .key = "\xff\xff\xff\xff",
c907ee76 8085 .ksize = 4,
de224c30
SS
8086 .plaintext = "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8087 "\x31\x32\x33\x34\x35\x36\x37\x38"
8088 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8089 "\x41\x42\x43\x44\x45\x46\x47\x48"
8090 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50",
c907ee76 8091 .psize = 40,
de224c30 8092 .digest = "\xf6\xeb\x80\xe9",
c907ee76
HX
8093 },
8094 {
de224c30 8095 .key = "\xff\xff\xff\xff",
c907ee76 8096 .ksize = 4,
de224c30
SS
8097 .plaintext = "\x51\x52\x53\x54\x55\x56\x57\x58"
8098 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8099 "\x61\x62\x63\x64\x65\x66\x67\x68"
8100 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8101 "\x71\x72\x73\x74\x75\x76\x77\x78",
c907ee76 8102 .psize = 40,
de224c30 8103 .digest = "\xed\xbd\x74\xde",
c907ee76
HX
8104 },
8105 {
de224c30 8106 .key = "\xff\xff\xff\xff",
c907ee76 8107 .ksize = 4,
de224c30
SS
8108 .plaintext = "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8109 "\x81\x82\x83\x84\x85\x86\x87\x88"
8110 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8111 "\x91\x92\x93\x94\x95\x96\x97\x98"
8112 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0",
c907ee76 8113 .psize = 40,
de224c30 8114 .digest = "\x62\xc8\x79\xd5",
c907ee76
HX
8115 },
8116 {
de224c30 8117 .key = "\xff\xff\xff\xff",
c907ee76 8118 .ksize = 4,
de224c30
SS
8119 .plaintext = "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8120 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8121 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8122 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8123 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8",
c907ee76 8124 .psize = 40,
de224c30 8125 .digest = "\xd0\x9a\x97\xba",
c907ee76
HX
8126 },
8127 {
de224c30 8128 .key = "\xff\xff\xff\xff",
c907ee76 8129 .ksize = 4,
de224c30
SS
8130 .plaintext = "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8131 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8132 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8133 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8134 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
c907ee76 8135 .psize = 40,
de224c30 8136 .digest = "\x13\xd9\x29\x2b",
c907ee76
HX
8137 },
8138 {
de224c30 8139 .key = "\x80\xea\xd3\xf1",
c907ee76 8140 .ksize = 4,
de224c30
SS
8141 .plaintext = "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8142 "\x31\x32\x33\x34\x35\x36\x37\x38"
8143 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8144 "\x41\x42\x43\x44\x45\x46\x47\x48"
8145 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50",
c907ee76 8146 .psize = 40,
de224c30 8147 .digest = "\x0c\xb5\xe2\xa2",
c907ee76
HX
8148 },
8149 {
de224c30 8150 .key = "\xf3\x4a\x1d\x5d",
c907ee76 8151 .ksize = 4,
de224c30
SS
8152 .plaintext = "\x51\x52\x53\x54\x55\x56\x57\x58"
8153 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8154 "\x61\x62\x63\x64\x65\x66\x67\x68"
8155 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8156 "\x71\x72\x73\x74\x75\x76\x77\x78",
c907ee76 8157 .psize = 40,
de224c30 8158 .digest = "\xd1\x7f\xfb\xa6",
c907ee76
HX
8159 },
8160 {
de224c30 8161 .key = "\x2e\x80\x04\x59",
c907ee76 8162 .ksize = 4,
de224c30
SS
8163 .plaintext = "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8164 "\x81\x82\x83\x84\x85\x86\x87\x88"
8165 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8166 "\x91\x92\x93\x94\x95\x96\x97\x98"
8167 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0",
c907ee76 8168 .psize = 40,
de224c30 8169 .digest = "\x59\x33\xe6\x7a",
c907ee76
HX
8170 },
8171 {
de224c30 8172 .key = "\xa6\xcc\x19\x85",
c907ee76 8173 .ksize = 4,
de224c30
SS
8174 .plaintext = "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8175 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8176 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8177 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8178 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8",
c907ee76 8179 .psize = 40,
de224c30 8180 .digest = "\xbe\x03\x01\xd2",
c907ee76
HX
8181 },
8182 {
de224c30 8183 .key = "\x41\xfc\xfe\x2d",
c907ee76 8184 .ksize = 4,
de224c30
SS
8185 .plaintext = "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8186 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8187 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8188 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8189 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
c907ee76 8190 .psize = 40,
de224c30 8191 .digest = "\x75\xd3\xc5\x24",
c907ee76
HX
8192 },
8193 {
de224c30 8194 .key = "\xff\xff\xff\xff",
c907ee76 8195 .ksize = 4,
de224c30
SS
8196 .plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08"
8197 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
8198 "\x11\x12\x13\x14\x15\x16\x17\x18"
8199 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
8200 "\x21\x22\x23\x24\x25\x26\x27\x28"
8201 "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8202 "\x31\x32\x33\x34\x35\x36\x37\x38"
8203 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8204 "\x41\x42\x43\x44\x45\x46\x47\x48"
8205 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50"
8206 "\x51\x52\x53\x54\x55\x56\x57\x58"
8207 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8208 "\x61\x62\x63\x64\x65\x66\x67\x68"
8209 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8210 "\x71\x72\x73\x74\x75\x76\x77\x78"
8211 "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8212 "\x81\x82\x83\x84\x85\x86\x87\x88"
8213 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8214 "\x91\x92\x93\x94\x95\x96\x97\x98"
8215 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0"
8216 "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8217 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8218 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8219 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8220 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8"
8221 "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8222 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8223 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8224 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8225 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
c907ee76 8226 .psize = 240,
de224c30 8227 .digest = "\x75\xd3\xc5\x24",
c907ee76
HX
8228 .np = 2,
8229 .tap = { 31, 209 }
8230 },
8231};
8232
ebfd9bcf
HW
8233/*
8234 * Cipher speed tests
8235 */
d5dc3927
SS
8236static u8 speed_template_8[] = {8, 0};
8237static u8 speed_template_24[] = {24, 0};
8238static u8 speed_template_8_32[] = {8, 32, 0};
8239static u8 speed_template_16_32[] = {16, 32, 0};
8240static u8 speed_template_16_24_32[] = {16, 24, 32, 0};
8241static u8 speed_template_32_40_48[] = {32, 40, 48, 0};
8242static u8 speed_template_32_48_64[] = {32, 48, 64, 0};
f19f5111 8243
e8057928
ML
8244/*
8245 * Digest speed tests
8246 */
e9d41164 8247static struct hash_speed generic_hash_speed_template[] = {
de224c30 8248 { .blen = 16, .plen = 16, },
e8057928
ML
8249 { .blen = 64, .plen = 16, },
8250 { .blen = 64, .plen = 64, },
8251 { .blen = 256, .plen = 16, },
8252 { .blen = 256, .plen = 64, },
8253 { .blen = 256, .plen = 256, },
8254 { .blen = 1024, .plen = 16, },
8255 { .blen = 1024, .plen = 256, },
8256 { .blen = 1024, .plen = 1024, },
8257 { .blen = 2048, .plen = 16, },
8258 { .blen = 2048, .plen = 256, },
8259 { .blen = 2048, .plen = 1024, },
8260 { .blen = 2048, .plen = 2048, },
8261 { .blen = 4096, .plen = 16, },
8262 { .blen = 4096, .plen = 256, },
8263 { .blen = 4096, .plen = 1024, },
8264 { .blen = 4096, .plen = 4096, },
8265 { .blen = 8192, .plen = 16, },
8266 { .blen = 8192, .plen = 256, },
8267 { .blen = 8192, .plen = 1024, },
8268 { .blen = 8192, .plen = 4096, },
8269 { .blen = 8192, .plen = 8192, },
8270
8271 /* End marker */
8272 { .blen = 0, .plen = 0, }
8273};
8274
1da177e4 8275#endif /* _CRYPTO_TCRYPT_H */
This page took 0.881491 seconds and 5 git commands to generate.