blob: 801e0c288862cb3fa2072416b684d959acf0424a [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
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>
Mikko Herranene3a4ea42007-11-26 22:12:07 +08009 * Copyright (c) 2007 Nokia Siemens Networks
Linus Torvalds1da177e2005-04-16 15:20:36 -070010 *
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
Herbert Xuef2736f2005-06-22 13:26:03 -070013 * Software Foundation; either version 2 of the License, or (at your option)
Linus Torvalds1da177e2005-04-16 15:20:36 -070014 * any later version.
15 *
Linus Torvalds1da177e2005-04-16 15:20:36 -070016 */
17#ifndef _CRYPTO_TCRYPT_H
18#define _CRYPTO_TCRYPT_H
19
20#define MAX_DIGEST_SIZE 64
21#define MAX_TAP 8
22
23#define MAX_KEYLEN 56
24#define MAX_IVLEN 32
25
26struct hash_testvec {
Atsushi Nemoto06b42aa2006-03-13 21:39:23 +110027 /* only used with keyed hash algorithms */
Sebastian Siewiorde224c32008-03-13 20:21:51 +080028 char *key;
29 char *plaintext;
30 char *digest;
Herbert Xuef2736f2005-06-22 13:26:03 -070031 unsigned char tap[MAX_TAP];
Atsushi Nemoto06b42aa2006-03-13 21:39:23 +110032 unsigned char psize;
33 unsigned char np;
Linus Torvalds1da177e2005-04-16 15:20:36 -070034 unsigned char ksize;
35};
36
Linus Torvalds1da177e2005-04-16 15:20:36 -070037struct cipher_testvec {
Sebastian Siewiorde224c32008-03-13 20:21:51 +080038 char *key;
39 char *iv;
40 char *input;
41 char *result;
Herbert Xuef2736f2005-06-22 13:26:03 -070042 unsigned char tap[MAX_TAP];
Atsushi Nemoto06b42aa2006-03-13 21:39:23 +110043 int np;
44 unsigned char fail;
45 unsigned char wk; /* weak key flag */
46 unsigned char klen;
Rik Snelf3d10442006-11-29 19:01:41 +110047 unsigned short ilen;
48 unsigned short rlen;
Linus Torvalds1da177e2005-04-16 15:20:36 -070049};
50
Mikko Herranene3a4ea42007-11-26 22:12:07 +080051struct aead_testvec {
Sebastian Siewiorde224c32008-03-13 20:21:51 +080052 char *key;
53 char *iv;
54 char *input;
55 char *assoc;
56 char *result;
Mikko Herranene3a4ea42007-11-26 22:12:07 +080057 unsigned char tap[MAX_TAP];
58 unsigned char atap[MAX_TAP];
59 int np;
60 int anp;
61 unsigned char fail;
62 unsigned char wk; /* weak key flag */
63 unsigned char klen;
64 unsigned short ilen;
65 unsigned short alen;
66 unsigned short rlen;
Mikko Herranene3a4ea42007-11-26 22:12:07 +080067};
68
Herbert Xue9d41162006-08-19 21:38:49 +100069struct hash_speed {
Michal Ludvige8057922006-05-30 22:04:19 +100070 unsigned int blen; /* buffer length */
71 unsigned int plen; /* per-update length */
72};
73
Sebastian Siewiorde224c32008-03-13 20:21:51 +080074static char zeroed_string[48];
75
Linus Torvalds1da177e2005-04-16 15:20:36 -070076/*
77 * MD4 test vectors from RFC1320
78 */
79#define MD4_TEST_VECTORS 7
80
81static struct hash_testvec md4_tv_template [] = {
82 {
83 .plaintext = "",
Sebastian Siewiorde224c32008-03-13 20:21:51 +080084 .digest = "\x31\xd6\xcf\xe0\xd1\x6a\xe9\x31"
85 "\xb7\x3c\x59\xd7\xe0\xc0\x89\xc0",
Linus Torvalds1da177e2005-04-16 15:20:36 -070086 }, {
87 .plaintext = "a",
88 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +080089 .digest = "\xbd\xe5\x2c\xb3\x1d\xe3\x3e\x46"
90 "\x24\x5e\x05\xfb\xdb\xd6\xfb\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -070091 }, {
92 .plaintext = "abc",
93 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +080094 .digest = "\xa4\x48\x01\x7a\xaf\x21\xd8\x52"
95 "\x5f\xc1\x0a\xe8\x7a\xa6\x72\x9d",
Linus Torvalds1da177e2005-04-16 15:20:36 -070096 }, {
97 .plaintext = "message digest",
98 .psize = 14,
Sebastian Siewiorde224c32008-03-13 20:21:51 +080099 .digest = "\xd9\x13\x0a\x81\x64\x54\x9f\xe8"
100 "\x18\x87\x48\x06\xe1\xc7\x01\x4b",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700101 }, {
102 .plaintext = "abcdefghijklmnopqrstuvwxyz",
103 .psize = 26,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800104 .digest = "\xd7\x9e\x1c\x30\x8a\xa5\xbb\xcd"
105 "\xee\xa8\xed\x63\xdf\x41\x2d\xa9",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700106 .np = 2,
107 .tap = { 13, 13 },
108 }, {
109 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
110 .psize = 62,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800111 .digest = "\x04\x3f\x85\x82\xf2\x41\xdb\x35"
112 "\x1c\xe6\x27\xe1\x53\xe7\xf0\xe4",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700113 }, {
114 .plaintext = "123456789012345678901234567890123456789012345678901234567890123"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800115 "45678901234567890",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700116 .psize = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800117 .digest = "\xe3\x3b\x4d\xdc\x9c\x38\xf2\x19"
118 "\x9c\x3e\x7b\x16\x4f\xcc\x05\x36",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700119 },
120};
121
122/*
123 * MD5 test vectors from RFC1321
124 */
125#define MD5_TEST_VECTORS 7
126
127static struct hash_testvec md5_tv_template[] = {
128 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800129 .digest = "\xd4\x1d\x8c\xd9\x8f\x00\xb2\x04"
130 "\xe9\x80\x09\x98\xec\xf8\x42\x7e",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700131 }, {
132 .plaintext = "a",
133 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800134 .digest = "\x0c\xc1\x75\xb9\xc0\xf1\xb6\xa8"
135 "\x31\xc3\x99\xe2\x69\x77\x26\x61",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700136 }, {
137 .plaintext = "abc",
138 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800139 .digest = "\x90\x01\x50\x98\x3c\xd2\x4f\xb0"
140 "\xd6\x96\x3f\x7d\x28\xe1\x7f\x72",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700141 }, {
142 .plaintext = "message digest",
143 .psize = 14,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800144 .digest = "\xf9\x6b\x69\x7d\x7c\xb7\x93\x8d"
145 "\x52\x5a\x2f\x31\xaa\xf1\x61\xd0",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700146 }, {
147 .plaintext = "abcdefghijklmnopqrstuvwxyz",
148 .psize = 26,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800149 .digest = "\xc3\xfc\xd3\xd7\x61\x92\xe4\x00"
150 "\x7d\xfb\x49\x6c\xca\x67\xe1\x3b",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700151 .np = 2,
152 .tap = {13, 13}
153 }, {
154 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
155 .psize = 62,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800156 .digest = "\xd1\x74\xab\x98\xd2\x77\xd9\xf5"
157 "\xa5\x61\x1c\x2c\x9f\x41\x9d\x9f",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700158 }, {
159 .plaintext = "12345678901234567890123456789012345678901234567890123456789012"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800160 "345678901234567890",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700161 .psize = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800162 .digest = "\x57\xed\xf4\xa2\x2b\xe3\xc9\x55"
163 "\xac\x49\xda\x2e\x21\x07\xb6\x7a",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700164 }
Adrian-Ken Rueegseggerfd4adf12008-05-07 22:16:36 +0800165
166};
167
168/*
169 * RIPEMD-128 test vectors from ISO/IEC 10118-3:2004(E)
170 */
171#define RMD128_TEST_VECTORS 10
172
173static struct hash_testvec rmd128_tv_template[] = {
174 {
175 .digest = "\xcd\xf2\x62\x13\xa1\x50\xdc\x3e"
176 "\xcb\x61\x0f\x18\xf6\xb3\x8b\x46",
177 }, {
178 .plaintext = "a",
179 .psize = 1,
180 .digest = "\x86\xbe\x7a\xfa\x33\x9d\x0f\xc7"
181 "\xcf\xc7\x85\xe7\x2f\x57\x8d\x33",
182 }, {
183 .plaintext = "abc",
184 .psize = 3,
185 .digest = "\xc1\x4a\x12\x19\x9c\x66\xe4\xba"
186 "\x84\x63\x6b\x0f\x69\x14\x4c\x77",
187 }, {
188 .plaintext = "message digest",
189 .psize = 14,
190 .digest = "\x9e\x32\x7b\x3d\x6e\x52\x30\x62"
191 "\xaf\xc1\x13\x2d\x7d\xf9\xd1\xb8",
192 }, {
193 .plaintext = "abcdefghijklmnopqrstuvwxyz",
194 .psize = 26,
195 .digest = "\xfd\x2a\xa6\x07\xf7\x1d\xc8\xf5"
196 "\x10\x71\x49\x22\xb3\x71\x83\x4e",
197 }, {
198 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
199 "fghijklmnopqrstuvwxyz0123456789",
200 .psize = 62,
201 .digest = "\xd1\xe9\x59\xeb\x17\x9c\x91\x1f"
202 "\xae\xa4\x62\x4c\x60\xc5\xc7\x02",
203 }, {
204 .plaintext = "1234567890123456789012345678901234567890"
205 "1234567890123456789012345678901234567890",
206 .psize = 80,
207 .digest = "\x3f\x45\xef\x19\x47\x32\xc2\xdb"
208 "\xb2\xc4\xa2\xc7\x69\x79\x5f\xa3",
209 }, {
210 .plaintext = "abcdbcdecdefdefgefghfghighij"
211 "hijkijkljklmklmnlmnomnopnopq",
212 .psize = 56,
213 .digest = "\xa1\xaa\x06\x89\xd0\xfa\xfa\x2d"
214 "\xdc\x22\xe8\x8b\x49\x13\x3a\x06",
215 .np = 2,
216 .tap = { 28, 28 },
217 }, {
218 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghi"
219 "jklmghijklmnhijklmnoijklmnopjklmnopqklmnopqr"
220 "lmnopqrsmnopqrstnopqrstu",
221 .psize = 112,
222 .digest = "\xd4\xec\xc9\x13\xe1\xdf\x77\x6b"
223 "\xf4\x8d\xe9\xd5\x5b\x1f\x25\x46",
224 }, {
225 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
226 .psize = 32,
227 .digest = "\x13\xfc\x13\xe8\xef\xff\x34\x7d"
228 "\xe1\x93\xff\x46\xdb\xac\xcf\xd4",
229 }
230};
231
232/*
233 * RIPEMD-160 test vectors from ISO/IEC 10118-3:2004(E)
234 */
235#define RMD160_TEST_VECTORS 10
236
237static struct hash_testvec rmd160_tv_template[] = {
238 {
239 .digest = "\x9c\x11\x85\xa5\xc5\xe9\xfc\x54\x61\x28"
240 "\x08\x97\x7e\xe8\xf5\x48\xb2\x25\x8d\x31",
241 }, {
242 .plaintext = "a",
243 .psize = 1,
244 .digest = "\x0b\xdc\x9d\x2d\x25\x6b\x3e\xe9\xda\xae"
245 "\x34\x7b\xe6\xf4\xdc\x83\x5a\x46\x7f\xfe",
246 }, {
247 .plaintext = "abc",
248 .psize = 3,
249 .digest = "\x8e\xb2\x08\xf7\xe0\x5d\x98\x7a\x9b\x04"
250 "\x4a\x8e\x98\xc6\xb0\x87\xf1\x5a\x0b\xfc",
251 }, {
252 .plaintext = "message digest",
253 .psize = 14,
254 .digest = "\x5d\x06\x89\xef\x49\xd2\xfa\xe5\x72\xb8"
255 "\x81\xb1\x23\xa8\x5f\xfa\x21\x59\x5f\x36",
256 }, {
257 .plaintext = "abcdefghijklmnopqrstuvwxyz",
258 .psize = 26,
259 .digest = "\xf7\x1c\x27\x10\x9c\x69\x2c\x1b\x56\xbb"
260 "\xdc\xeb\x5b\x9d\x28\x65\xb3\x70\x8d\xbc",
261 }, {
262 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
263 "fghijklmnopqrstuvwxyz0123456789",
264 .psize = 62,
265 .digest = "\xb0\xe2\x0b\x6e\x31\x16\x64\x02\x86\xed"
266 "\x3a\x87\xa5\x71\x30\x79\xb2\x1f\x51\x89",
267 }, {
268 .plaintext = "1234567890123456789012345678901234567890"
269 "1234567890123456789012345678901234567890",
270 .psize = 80,
271 .digest = "\x9b\x75\x2e\x45\x57\x3d\x4b\x39\xf4\xdb"
272 "\xd3\x32\x3c\xab\x82\xbf\x63\x32\x6b\xfb",
273 }, {
274 .plaintext = "abcdbcdecdefdefgefghfghighij"
275 "hijkijkljklmklmnlmnomnopnopq",
276 .psize = 56,
277 .digest = "\x12\xa0\x53\x38\x4a\x9c\x0c\x88\xe4\x05"
278 "\xa0\x6c\x27\xdc\xf4\x9a\xda\x62\xeb\x2b",
279 .np = 2,
280 .tap = { 28, 28 },
281 }, {
282 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghi"
283 "jklmghijklmnhijklmnoijklmnopjklmnopqklmnopqr"
284 "lmnopqrsmnopqrstnopqrstu",
285 .psize = 112,
286 .digest = "\x6f\x3f\xa3\x9b\x6b\x50\x3c\x38\x4f\x91"
287 "\x9a\x49\xa7\xaa\x5c\x2c\x08\xbd\xfb\x45",
288 }, {
289 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
290 .psize = 32,
291 .digest = "\x94\xc2\x64\x11\x54\x04\xe6\x33\x79\x0d"
292 "\xfc\xc8\x7b\x58\x7d\x36\x77\x06\x7d\x9f",
293 }
Linus Torvalds1da177e2005-04-16 15:20:36 -0700294};
295
296/*
Adrian-Ken Rueegsegger2998db32008-05-09 21:29:35 +0800297 * RIPEMD-256 test vectors
298 */
299#define RMD256_TEST_VECTORS 8
300
301static struct hash_testvec rmd256_tv_template[] = {
302 {
303 .digest = "\x02\xba\x4c\x4e\x5f\x8e\xcd\x18"
304 "\x77\xfc\x52\xd6\x4d\x30\xe3\x7a"
305 "\x2d\x97\x74\xfb\x1e\x5d\x02\x63"
306 "\x80\xae\x01\x68\xe3\xc5\x52\x2d",
307 }, {
308 .plaintext = "a",
309 .psize = 1,
310 .digest = "\xf9\x33\x3e\x45\xd8\x57\xf5\xd9"
311 "\x0a\x91\xba\xb7\x0a\x1e\xba\x0c"
312 "\xfb\x1b\xe4\xb0\x78\x3c\x9a\xcf"
313 "\xcd\x88\x3a\x91\x34\x69\x29\x25",
314 }, {
315 .plaintext = "abc",
316 .psize = 3,
317 .digest = "\xaf\xbd\x6e\x22\x8b\x9d\x8c\xbb"
318 "\xce\xf5\xca\x2d\x03\xe6\xdb\xa1"
319 "\x0a\xc0\xbc\x7d\xcb\xe4\x68\x0e"
320 "\x1e\x42\xd2\xe9\x75\x45\x9b\x65",
321 }, {
322 .plaintext = "message digest",
323 .psize = 14,
324 .digest = "\x87\xe9\x71\x75\x9a\x1c\xe4\x7a"
325 "\x51\x4d\x5c\x91\x4c\x39\x2c\x90"
326 "\x18\xc7\xc4\x6b\xc1\x44\x65\x55"
327 "\x4a\xfc\xdf\x54\xa5\x07\x0c\x0e",
328 }, {
329 .plaintext = "abcdefghijklmnopqrstuvwxyz",
330 .psize = 26,
331 .digest = "\x64\x9d\x30\x34\x75\x1e\xa2\x16"
332 "\x77\x6b\xf9\xa1\x8a\xcc\x81\xbc"
333 "\x78\x96\x11\x8a\x51\x97\x96\x87"
334 "\x82\xdd\x1f\xd9\x7d\x8d\x51\x33",
335 }, {
336 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
337 "fghijklmnopqrstuvwxyz0123456789",
338 .psize = 62,
339 .digest = "\x57\x40\xa4\x08\xac\x16\xb7\x20"
340 "\xb8\x44\x24\xae\x93\x1c\xbb\x1f"
341 "\xe3\x63\xd1\xd0\xbf\x40\x17\xf1"
342 "\xa8\x9f\x7e\xa6\xde\x77\xa0\xb8",
343 }, {
344 .plaintext = "1234567890123456789012345678901234567890"
345 "1234567890123456789012345678901234567890",
346 .psize = 80,
347 .digest = "\x06\xfd\xcc\x7a\x40\x95\x48\xaa"
348 "\xf9\x13\x68\xc0\x6a\x62\x75\xb5"
349 "\x53\xe3\xf0\x99\xbf\x0e\xa4\xed"
350 "\xfd\x67\x78\xdf\x89\xa8\x90\xdd",
351 }, {
352 .plaintext = "abcdbcdecdefdefgefghfghighij"
353 "hijkijkljklmklmnlmnomnopnopq",
354 .psize = 56,
355 .digest = "\x38\x43\x04\x55\x83\xaa\xc6\xc8"
356 "\xc8\xd9\x12\x85\x73\xe7\xa9\x80"
357 "\x9a\xfb\x2a\x0f\x34\xcc\xc3\x6e"
358 "\xa9\xe7\x2f\x16\xf6\x36\x8e\x3f",
359 .np = 2,
360 .tap = { 28, 28 },
361 }
362};
363
364/*
365 * RIPEMD-320 test vectors
366 */
367#define RMD320_TEST_VECTORS 8
368
369static struct hash_testvec rmd320_tv_template[] = {
370 {
371 .digest = "\x22\xd6\x5d\x56\x61\x53\x6c\xdc\x75\xc1"
372 "\xfd\xf5\xc6\xde\x7b\x41\xb9\xf2\x73\x25"
373 "\xeb\xc6\x1e\x85\x57\x17\x7d\x70\x5a\x0e"
374 "\xc8\x80\x15\x1c\x3a\x32\xa0\x08\x99\xb8",
375 }, {
376 .plaintext = "a",
377 .psize = 1,
378 .digest = "\xce\x78\x85\x06\x38\xf9\x26\x58\xa5\xa5"
379 "\x85\x09\x75\x79\x92\x6d\xda\x66\x7a\x57"
380 "\x16\x56\x2c\xfc\xf6\xfb\xe7\x7f\x63\x54"
381 "\x2f\x99\xb0\x47\x05\xd6\x97\x0d\xff\x5d",
382 }, {
383 .plaintext = "abc",
384 .psize = 3,
385 .digest = "\xde\x4c\x01\xb3\x05\x4f\x89\x30\xa7\x9d"
386 "\x09\xae\x73\x8e\x92\x30\x1e\x5a\x17\x08"
387 "\x5b\xef\xfd\xc1\xb8\xd1\x16\x71\x3e\x74"
388 "\xf8\x2f\xa9\x42\xd6\x4c\xdb\xc4\x68\x2d",
389 }, {
390 .plaintext = "message digest",
391 .psize = 14,
392 .digest = "\x3a\x8e\x28\x50\x2e\xd4\x5d\x42\x2f\x68"
393 "\x84\x4f\x9d\xd3\x16\xe7\xb9\x85\x33\xfa"
394 "\x3f\x2a\x91\xd2\x9f\x84\xd4\x25\xc8\x8d"
395 "\x6b\x4e\xff\x72\x7d\xf6\x6a\x7c\x01\x97",
396 }, {
397 .plaintext = "abcdefghijklmnopqrstuvwxyz",
398 .psize = 26,
399 .digest = "\xca\xbd\xb1\x81\x0b\x92\x47\x0a\x20\x93"
400 "\xaa\x6b\xce\x05\x95\x2c\x28\x34\x8c\xf4"
401 "\x3f\xf6\x08\x41\x97\x51\x66\xbb\x40\xed"
402 "\x23\x40\x04\xb8\x82\x44\x63\xe6\xb0\x09",
403 }, {
404 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
405 "fghijklmnopqrstuvwxyz0123456789",
406 .psize = 62,
407 .digest = "\xed\x54\x49\x40\xc8\x6d\x67\xf2\x50\xd2"
408 "\x32\xc3\x0b\x7b\x3e\x57\x70\xe0\xc6\x0c"
409 "\x8c\xb9\xa4\xca\xfe\x3b\x11\x38\x8a\xf9"
410 "\x92\x0e\x1b\x99\x23\x0b\x84\x3c\x86\xa4",
411 }, {
412 .plaintext = "1234567890123456789012345678901234567890"
413 "1234567890123456789012345678901234567890",
414 .psize = 80,
415 .digest = "\x55\x78\x88\xaf\x5f\x6d\x8e\xd6\x2a\xb6"
416 "\x69\x45\xc6\xd2\xa0\xa4\x7e\xcd\x53\x41"
417 "\xe9\x15\xeb\x8f\xea\x1d\x05\x24\x95\x5f"
418 "\x82\x5d\xc7\x17\xe4\xa0\x08\xab\x2d\x42",
419 }, {
420 .plaintext = "abcdbcdecdefdefgefghfghighij"
421 "hijkijkljklmklmnlmnomnopnopq",
422 .psize = 56,
423 .digest = "\xd0\x34\xa7\x95\x0c\xf7\x22\x02\x1b\xa4"
424 "\xb8\x4d\xf7\x69\xa5\xde\x20\x60\xe2\x59"
425 "\xdf\x4c\x9b\xb4\xa4\x26\x8c\x0e\x93\x5b"
426 "\xbc\x74\x70\xa9\x69\xc9\xd0\x72\xa1\xac",
427 .np = 2,
428 .tap = { 28, 28 },
429 }
430};
431
432/*
Linus Torvalds1da177e2005-04-16 15:20:36 -0700433 * SHA1 test vectors from from FIPS PUB 180-1
434 */
435#define SHA1_TEST_VECTORS 2
436
437static struct hash_testvec sha1_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700438 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700439 .plaintext = "abc",
440 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800441 .digest = "\xa9\x99\x3e\x36\x47\x06\x81\x6a\xba\x3e"
442 "\x25\x71\x78\x50\xc2\x6c\x9c\xd0\xd8\x9d",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700443 }, {
444 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
445 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800446 .digest = "\x84\x98\x3e\x44\x1c\x3b\xd2\x6e\xba\xae"
447 "\x4a\xa1\xf9\x51\x29\xe5\xe5\x46\x70\xf1",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700448 .np = 2,
449 .tap = { 28, 28 }
450 }
451};
452
Jonathan Lynchcd12fb92007-11-10 20:08:25 +0800453
454/*
455 * SHA224 test vectors from from FIPS PUB 180-2
456 */
457#define SHA224_TEST_VECTORS 2
458
459static struct hash_testvec sha224_tv_template[] = {
460 {
461 .plaintext = "abc",
462 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800463 .digest = "\x23\x09\x7D\x22\x34\x05\xD8\x22"
464 "\x86\x42\xA4\x77\xBD\xA2\x55\xB3"
465 "\x2A\xAD\xBC\xE4\xBD\xA0\xB3\xF7"
466 "\xE3\x6C\x9D\xA7",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +0800467 }, {
468 .plaintext =
469 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
470 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800471 .digest = "\x75\x38\x8B\x16\x51\x27\x76\xCC"
472 "\x5D\xBA\x5D\xA1\xFD\x89\x01\x50"
473 "\xB0\xC6\x45\x5C\xB4\xF5\x8B\x19"
474 "\x52\x52\x25\x25",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +0800475 .np = 2,
476 .tap = { 28, 28 }
477 }
478};
479
Linus Torvalds1da177e2005-04-16 15:20:36 -0700480/*
481 * SHA256 test vectors from from NIST
482 */
483#define SHA256_TEST_VECTORS 2
484
Herbert Xuef2736f2005-06-22 13:26:03 -0700485static struct hash_testvec sha256_tv_template[] = {
486 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700487 .plaintext = "abc",
488 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800489 .digest = "\xba\x78\x16\xbf\x8f\x01\xcf\xea"
490 "\x41\x41\x40\xde\x5d\xae\x22\x23"
491 "\xb0\x03\x61\xa3\x96\x17\x7a\x9c"
492 "\xb4\x10\xff\x61\xf2\x00\x15\xad",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700493 }, {
494 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
495 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800496 .digest = "\x24\x8d\x6a\x61\xd2\x06\x38\xb8"
497 "\xe5\xc0\x26\x93\x0c\x3e\x60\x39"
498 "\xa3\x3c\xe4\x59\x64\xff\x21\x67"
499 "\xf6\xec\xed\xd4\x19\xdb\x06\xc1",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700500 .np = 2,
501 .tap = { 28, 28 }
502 },
503};
504
505/*
506 * SHA384 test vectors from from NIST and kerneli
507 */
508#define SHA384_TEST_VECTORS 4
509
510static struct hash_testvec sha384_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700511 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700512 .plaintext= "abc",
513 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800514 .digest = "\xcb\x00\x75\x3f\x45\xa3\x5e\x8b"
515 "\xb5\xa0\x3d\x69\x9a\xc6\x50\x07"
516 "\x27\x2c\x32\xab\x0e\xde\xd1\x63"
517 "\x1a\x8b\x60\x5a\x43\xff\x5b\xed"
518 "\x80\x86\x07\x2b\xa1\xe7\xcc\x23"
519 "\x58\xba\xec\xa1\x34\xc8\x25\xa7",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700520 }, {
521 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
522 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800523 .digest = "\x33\x91\xfd\xdd\xfc\x8d\xc7\x39"
524 "\x37\x07\xa6\x5b\x1b\x47\x09\x39"
525 "\x7c\xf8\xb1\xd1\x62\xaf\x05\xab"
526 "\xfe\x8f\x45\x0d\xe5\xf3\x6b\xc6"
527 "\xb0\x45\x5a\x85\x20\xbc\x4e\x6f"
528 "\x5f\xe9\x5b\x1f\xe3\xc8\x45\x2b",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700529 }, {
530 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800531 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700532 .psize = 112,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800533 .digest = "\x09\x33\x0c\x33\xf7\x11\x47\xe8"
534 "\x3d\x19\x2f\xc7\x82\xcd\x1b\x47"
535 "\x53\x11\x1b\x17\x3b\x3b\x05\xd2"
536 "\x2f\xa0\x80\x86\xe3\xb0\xf7\x12"
537 "\xfc\xc7\xc7\x1a\x55\x7e\x2d\xb9"
538 "\x66\xc3\xe9\xfa\x91\x74\x60\x39",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700539 }, {
540 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800541 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700542 .psize = 104,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800543 .digest = "\x3d\x20\x89\x73\xab\x35\x08\xdb"
544 "\xbd\x7e\x2c\x28\x62\xba\x29\x0a"
545 "\xd3\x01\x0e\x49\x78\xc1\x98\xdc"
546 "\x4d\x8f\xd0\x14\xe5\x82\x82\x3a"
547 "\x89\xe1\x6f\x9b\x2a\x7b\xbc\x1a"
548 "\xc9\x38\xe2\xd1\x99\xe8\xbe\xa4",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700549 .np = 4,
550 .tap = { 26, 26, 26, 26 }
551 },
552};
553
554/*
555 * SHA512 test vectors from from NIST and kerneli
556 */
557#define SHA512_TEST_VECTORS 4
558
559static struct hash_testvec sha512_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700560 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700561 .plaintext = "abc",
562 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800563 .digest = "\xdd\xaf\x35\xa1\x93\x61\x7a\xba"
564 "\xcc\x41\x73\x49\xae\x20\x41\x31"
565 "\x12\xe6\xfa\x4e\x89\xa9\x7e\xa2"
566 "\x0a\x9e\xee\xe6\x4b\x55\xd3\x9a"
567 "\x21\x92\x99\x2a\x27\x4f\xc1\xa8"
568 "\x36\xba\x3c\x23\xa3\xfe\xeb\xbd"
569 "\x45\x4d\x44\x23\x64\x3c\xe8\x0e"
570 "\x2a\x9a\xc9\x4f\xa5\x4c\xa4\x9f",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700571 }, {
572 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
573 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800574 .digest = "\x20\x4a\x8f\xc6\xdd\xa8\x2f\x0a"
575 "\x0c\xed\x7b\xeb\x8e\x08\xa4\x16"
576 "\x57\xc1\x6e\xf4\x68\xb2\x28\xa8"
577 "\x27\x9b\xe3\x31\xa7\x03\xc3\x35"
578 "\x96\xfd\x15\xc1\x3b\x1b\x07\xf9"
579 "\xaa\x1d\x3b\xea\x57\x78\x9c\xa0"
580 "\x31\xad\x85\xc7\xa7\x1d\xd7\x03"
581 "\x54\xec\x63\x12\x38\xca\x34\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700582 }, {
583 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800584 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700585 .psize = 112,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800586 .digest = "\x8e\x95\x9b\x75\xda\xe3\x13\xda"
587 "\x8c\xf4\xf7\x28\x14\xfc\x14\x3f"
588 "\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1"
589 "\x72\x99\xae\xad\xb6\x88\x90\x18"
590 "\x50\x1d\x28\x9e\x49\x00\xf7\xe4"
591 "\x33\x1b\x99\xde\xc4\xb5\x43\x3a"
592 "\xc7\xd3\x29\xee\xb6\xdd\x26\x54"
593 "\x5e\x96\xe5\x5b\x87\x4b\xe9\x09",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700594 }, {
595 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800596 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700597 .psize = 104,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800598 .digest = "\x93\x0d\x0c\xef\xcb\x30\xff\x11"
599 "\x33\xb6\x89\x81\x21\xf1\xcf\x3d"
600 "\x27\x57\x8a\xfc\xaf\xe8\x67\x7c"
601 "\x52\x57\xcf\x06\x99\x11\xf7\x5d"
602 "\x8f\x58\x31\xb5\x6e\xbf\xda\x67"
603 "\xb2\x78\xe6\x6d\xff\x8b\x84\xfe"
604 "\x2b\x28\x70\xf7\x42\xa5\x80\xd8"
605 "\xed\xb4\x19\x87\x23\x28\x50\xc9",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700606 .np = 4,
607 .tap = { 26, 26, 26, 26 }
608 },
609};
610
611
612/*
Herbert Xuef2736f2005-06-22 13:26:03 -0700613 * WHIRLPOOL test vectors from Whirlpool package
Linus Torvalds1da177e2005-04-16 15:20:36 -0700614 * by Vincent Rijmen and Paulo S. L. M. Barreto as part of the NESSIE
615 * submission
616 */
617#define WP512_TEST_VECTORS 8
618
619static struct hash_testvec wp512_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700620 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700621 .plaintext = "",
622 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800623 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
624 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
625 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
626 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7"
627 "\x3E\x83\xBE\x69\x8B\x28\x8F\xEB"
628 "\xCF\x88\xE3\xE0\x3C\x4F\x07\x57"
629 "\xEA\x89\x64\xE5\x9B\x63\xD9\x37"
630 "\x08\xB1\x38\xCC\x42\xA6\x6E\xB3",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700631
632
633 }, {
634 .plaintext = "a",
635 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800636 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
637 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
638 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
639 "\x73\xC4\x50\x01\xD0\x08\x7B\x42"
640 "\xD1\x1B\xC6\x45\x41\x3A\xEF\xF6"
641 "\x3A\x42\x39\x1A\x39\x14\x5A\x59"
642 "\x1A\x92\x20\x0D\x56\x01\x95\xE5"
643 "\x3B\x47\x85\x84\xFD\xAE\x23\x1A",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700644 }, {
645 .plaintext = "abc",
646 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800647 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
648 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
649 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
650 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C"
651 "\x71\x81\xEE\xBD\xB6\xC5\x7E\x27"
652 "\x7D\x0E\x34\x95\x71\x14\xCB\xD6"
653 "\xC7\x97\xFC\x9D\x95\xD8\xB5\x82"
654 "\xD2\x25\x29\x20\x76\xD4\xEE\xF5",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700655 }, {
656 .plaintext = "message digest",
657 .psize = 14,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800658 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
659 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
660 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
661 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B"
662 "\x84\x21\x55\x76\x59\xEF\x55\xC1"
663 "\x06\xB4\xB5\x2A\xC5\xA4\xAA\xA6"
664 "\x92\xED\x92\x00\x52\x83\x8F\x33"
665 "\x62\xE8\x6D\xBD\x37\xA8\x90\x3E",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700666 }, {
667 .plaintext = "abcdefghijklmnopqrstuvwxyz",
668 .psize = 26,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800669 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
670 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
671 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
672 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B"
673 "\x08\xBF\x2A\x92\x51\xC3\x0B\x6A"
674 "\x0B\x8A\xAE\x86\x17\x7A\xB4\xA6"
675 "\xF6\x8F\x67\x3E\x72\x07\x86\x5D"
676 "\x5D\x98\x19\xA3\xDB\xA4\xEB\x3B",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700677 }, {
678 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800679 "abcdefghijklmnopqrstuvwxyz0123456789",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700680 .psize = 62,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800681 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
682 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
683 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
684 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E"
685 "\x08\xEB\xA2\x66\x29\x12\x9D\x8F"
686 "\xB7\xCB\x57\x21\x1B\x92\x81\xA6"
687 "\x55\x17\xCC\x87\x9D\x7B\x96\x21"
688 "\x42\xC6\x5F\x5A\x7A\xF0\x14\x67",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700689 }, {
690 .plaintext = "1234567890123456789012345678901234567890"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800691 "1234567890123456789012345678901234567890",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700692 .psize = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800693 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
694 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
695 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
696 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29"
697 "\x4D\x5B\xD8\xDF\x2A\x6C\x44\xE5"
698 "\x38\xCD\x04\x7B\x26\x81\xA5\x1A"
699 "\x2C\x60\x48\x1E\x88\xC5\xA2\x0B"
700 "\x2C\x2A\x80\xCF\x3A\x9A\x08\x3B",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700701 }, {
702 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
703 .psize = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800704 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
705 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
706 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
707 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69"
708 "\x16\xBD\xC8\x03\x1B\xC5\xBE\x1B"
709 "\x7B\x94\x76\x39\xFE\x05\x0B\x56"
710 "\x93\x9B\xAA\xA0\xAD\xFF\x9A\xE6"
711 "\x74\x5B\x7B\x18\x1C\x3B\xE3\xFD",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700712 },
713};
714
715#define WP384_TEST_VECTORS 8
716
717static struct hash_testvec wp384_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700718 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700719 .plaintext = "",
720 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800721 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
722 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
723 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
724 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7"
725 "\x3E\x83\xBE\x69\x8B\x28\x8F\xEB"
726 "\xCF\x88\xE3\xE0\x3C\x4F\x07\x57",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700727
728
729 }, {
730 .plaintext = "a",
731 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800732 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
733 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
734 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
735 "\x73\xC4\x50\x01\xD0\x08\x7B\x42"
736 "\xD1\x1B\xC6\x45\x41\x3A\xEF\xF6"
737 "\x3A\x42\x39\x1A\x39\x14\x5A\x59",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700738 }, {
739 .plaintext = "abc",
740 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800741 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
742 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
743 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
744 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C"
745 "\x71\x81\xEE\xBD\xB6\xC5\x7E\x27"
746 "\x7D\x0E\x34\x95\x71\x14\xCB\xD6",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700747 }, {
748 .plaintext = "message digest",
749 .psize = 14,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800750 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
751 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
752 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
753 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B"
754 "\x84\x21\x55\x76\x59\xEF\x55\xC1"
755 "\x06\xB4\xB5\x2A\xC5\xA4\xAA\xA6",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700756 }, {
757 .plaintext = "abcdefghijklmnopqrstuvwxyz",
758 .psize = 26,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800759 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
760 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
761 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
762 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B"
763 "\x08\xBF\x2A\x92\x51\xC3\x0B\x6A"
764 "\x0B\x8A\xAE\x86\x17\x7A\xB4\xA6",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700765 }, {
766 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800767 "abcdefghijklmnopqrstuvwxyz0123456789",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700768 .psize = 62,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800769 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
770 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
771 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
772 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E"
773 "\x08\xEB\xA2\x66\x29\x12\x9D\x8F"
774 "\xB7\xCB\x57\x21\x1B\x92\x81\xA6",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700775 }, {
776 .plaintext = "1234567890123456789012345678901234567890"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800777 "1234567890123456789012345678901234567890",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700778 .psize = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800779 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
780 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
781 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
782 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29"
783 "\x4D\x5B\xD8\xDF\x2A\x6C\x44\xE5"
784 "\x38\xCD\x04\x7B\x26\x81\xA5\x1A",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700785 }, {
786 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
787 .psize = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800788 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
789 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
790 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
791 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69"
792 "\x16\xBD\xC8\x03\x1B\xC5\xBE\x1B"
793 "\x7B\x94\x76\x39\xFE\x05\x0B\x56",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700794 },
795};
796
797#define WP256_TEST_VECTORS 8
798
799static struct hash_testvec wp256_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700800 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700801 .plaintext = "",
802 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800803 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
804 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
805 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
806 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700807
808
809 }, {
810 .plaintext = "a",
811 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800812 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
813 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
814 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
815 "\x73\xC4\x50\x01\xD0\x08\x7B\x42",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700816 }, {
817 .plaintext = "abc",
818 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800819 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
820 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
821 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
822 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700823 }, {
824 .plaintext = "message digest",
825 .psize = 14,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800826 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
827 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
828 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
829 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700830 }, {
831 .plaintext = "abcdefghijklmnopqrstuvwxyz",
832 .psize = 26,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800833 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
834 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
835 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
836 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700837 }, {
838 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800839 "abcdefghijklmnopqrstuvwxyz0123456789",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700840 .psize = 62,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800841 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
842 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
843 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
844 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700845 }, {
846 .plaintext = "1234567890123456789012345678901234567890"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800847 "1234567890123456789012345678901234567890",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700848 .psize = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800849 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
850 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
851 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
852 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700853 }, {
854 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
855 .psize = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800856 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
857 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
858 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
859 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700860 },
861};
862
863/*
Herbert Xuef2736f2005-06-22 13:26:03 -0700864 * TIGER test vectors from Tiger website
Linus Torvalds1da177e2005-04-16 15:20:36 -0700865 */
866#define TGR192_TEST_VECTORS 6
867
868static struct hash_testvec tgr192_tv_template[] = {
869 {
870 .plaintext = "",
871 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800872 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
873 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f"
874 "\xf3\x73\xde\x2d\x49\x58\x4e\x7a",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700875 }, {
876 .plaintext = "abc",
877 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800878 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
879 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf"
880 "\x93\x5f\x7b\x95\x1c\x13\x29\x51",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700881 }, {
882 .plaintext = "Tiger",
883 .psize = 5,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800884 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
885 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec"
886 "\x37\x79\x0c\x11\x6f\x9d\x2b\xdf",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700887 }, {
888 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
889 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800890 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
891 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e"
892 "\xb5\x86\x44\x50\x34\xa5\xa3\x86",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700893 }, {
894 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
895 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800896 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
897 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9"
898 "\x57\x89\x65\x65\x97\x5f\x91\x97",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700899 }, {
900 .plaintext = "Tiger - A Fast New Hash Function, "
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800901 "by Ross Anderson and Eli Biham, "
902 "proceedings of Fast Software Encryption 3, "
903 "Cambridge, 1996.",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700904 .psize = 125,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800905 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
906 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24"
907 "\xdd\x68\x15\x1d\x50\x39\x74\xfc",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700908 },
909};
910
911#define TGR160_TEST_VECTORS 6
912
913static struct hash_testvec tgr160_tv_template[] = {
914 {
915 .plaintext = "",
916 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800917 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
918 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f"
919 "\xf3\x73\xde\x2d",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700920 }, {
921 .plaintext = "abc",
922 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800923 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
924 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf"
925 "\x93\x5f\x7b\x95",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700926 }, {
927 .plaintext = "Tiger",
928 .psize = 5,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800929 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
930 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec"
931 "\x37\x79\x0c\x11",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700932 }, {
933 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
934 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800935 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
936 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e"
937 "\xb5\x86\x44\x50",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700938 }, {
939 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
940 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800941 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
942 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9"
943 "\x57\x89\x65\x65",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700944 }, {
945 .plaintext = "Tiger - A Fast New Hash Function, "
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800946 "by Ross Anderson and Eli Biham, "
947 "proceedings of Fast Software Encryption 3, "
948 "Cambridge, 1996.",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700949 .psize = 125,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800950 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
951 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24"
952 "\xdd\x68\x15\x1d",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700953 },
954};
955
956#define TGR128_TEST_VECTORS 6
957
958static struct hash_testvec tgr128_tv_template[] = {
959 {
960 .plaintext = "",
961 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800962 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
963 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700964 }, {
965 .plaintext = "abc",
966 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800967 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
968 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700969 }, {
970 .plaintext = "Tiger",
971 .psize = 5,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800972 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
973 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700974 }, {
975 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
976 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800977 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
978 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700979 }, {
980 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
981 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800982 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
983 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700984 }, {
985 .plaintext = "Tiger - A Fast New Hash Function, "
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800986 "by Ross Anderson and Eli Biham, "
987 "proceedings of Fast Software Encryption 3, "
988 "Cambridge, 1996.",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700989 .psize = 125,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800990 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
991 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700992 },
993};
994
Linus Torvalds1da177e2005-04-16 15:20:36 -0700995/*
996 * HMAC-MD5 test vectors from RFC2202
997 * (These need to be fixed to not use strlen).
998 */
999#define HMAC_MD5_TEST_VECTORS 7
1000
Herbert Xue9d41162006-08-19 21:38:49 +10001001static struct hash_testvec hmac_md5_tv_template[] =
Herbert Xuef2736f2005-06-22 13:26:03 -07001002{
Linus Torvalds1da177e2005-04-16 15:20:36 -07001003 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001004 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001005 .ksize = 16,
1006 .plaintext = "Hi There",
1007 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001008 .digest = "\x92\x94\x72\x7a\x36\x38\xbb\x1c"
1009 "\x13\xf4\x8e\xf8\x15\x8b\xfc\x9d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001010 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001011 .key = "Jefe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001012 .ksize = 4,
1013 .plaintext = "what do ya want for nothing?",
1014 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001015 .digest = "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03"
1016 "\xea\xa8\x6e\x31\x0a\x5d\xb7\x38",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001017 .np = 2,
1018 .tap = {14, 14}
1019 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001020 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001021 .ksize = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001022 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1023 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1024 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1025 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001026 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001027 .digest = "\x56\xbe\x34\x52\x1d\x14\x4c\x88"
1028 "\xdb\xb8\xc7\x33\xf0\xe8\xb3\xf6",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001029 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001030 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1031 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1032 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001033 .ksize = 25,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001034 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1035 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1036 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1037 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001038 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001039 .digest = "\x69\x7e\xaf\x0a\xca\x3a\x3a\xea"
1040 "\x3a\x75\x16\x47\x46\xff\xaa\x79",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001041 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001042 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001043 .ksize = 16,
1044 .plaintext = "Test With Truncation",
1045 .psize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001046 .digest = "\x56\x46\x1e\xf2\x34\x2e\xdc\x00"
1047 "\xf9\xba\xb9\x95\x69\x0e\xfd\x4c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001048 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001049 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1050 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1051 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1052 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1053 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1054 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1055 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001056 .ksize = 80,
1057 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1058 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001059 .digest = "\x6b\x1a\xb7\xfe\x4b\xd7\xbf\x8f"
1060 "\x0b\x62\xe6\xce\x61\xb9\xd0\xcd",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001061 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001062 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1063 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1064 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1065 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1066 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1067 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1068 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001069 .ksize = 80,
1070 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001071 "Block-Size Data",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001072 .psize = 73,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001073 .digest = "\x6f\x63\x0f\xad\x67\xcd\xa0\xee"
1074 "\x1f\xb1\xf5\x62\xdb\x3a\xa5\x3e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001075 },
1076};
1077
1078/*
Adrian-Ken Rueegseggerfd4adf12008-05-07 22:16:36 +08001079 * HMAC-RIPEMD128 test vectors from RFC2286
1080 */
1081#define HMAC_RMD128_TEST_VECTORS 7
1082
1083static struct hash_testvec hmac_rmd128_tv_template[] = {
1084 {
1085 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
1086 .ksize = 16,
1087 .plaintext = "Hi There",
1088 .psize = 8,
1089 .digest = "\xfb\xf6\x1f\x94\x92\xaa\x4b\xbf"
1090 "\x81\xc1\x72\xe8\x4e\x07\x34\xdb",
1091 }, {
1092 .key = "Jefe",
1093 .ksize = 4,
1094 .plaintext = "what do ya want for nothing?",
1095 .psize = 28,
1096 .digest = "\x87\x5f\x82\x88\x62\xb6\xb3\x34"
1097 "\xb4\x27\xc5\x5f\x9f\x7f\xf0\x9b",
1098 .np = 2,
1099 .tap = { 14, 14 },
1100 }, {
1101 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1102 .ksize = 16,
1103 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1104 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1105 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1106 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1107 .psize = 50,
1108 .digest = "\x09\xf0\xb2\x84\x6d\x2f\x54\x3d"
1109 "\xa3\x63\xcb\xec\x8d\x62\xa3\x8d",
1110 }, {
1111 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1112 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1113 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
1114 .ksize = 25,
1115 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1116 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1117 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1118 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1119 .psize = 50,
1120 .digest = "\xbd\xbb\xd7\xcf\x03\xe4\x4b\x5a"
1121 "\xa6\x0a\xf8\x15\xbe\x4d\x22\x94",
1122 }, {
1123 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
1124 .ksize = 16,
1125 .plaintext = "Test With Truncation",
1126 .psize = 20,
1127 .digest = "\xe7\x98\x08\xf2\x4b\x25\xfd\x03"
1128 "\x1c\x15\x5f\x0d\x55\x1d\x9a\x3a",
1129 }, {
1130 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1131 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1132 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1133 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1134 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1135 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1136 "\xaa\xaa",
1137 .ksize = 80,
1138 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1139 .psize = 54,
1140 .digest = "\xdc\x73\x29\x28\xde\x98\x10\x4a"
1141 "\x1f\x59\xd3\x73\xc1\x50\xac\xbb",
1142 }, {
1143 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1144 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1145 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1146 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1147 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1148 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1149 "\xaa\xaa",
1150 .ksize = 80,
1151 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
1152 "Block-Size Data",
1153 .psize = 73,
1154 .digest = "\x5c\x6b\xec\x96\x79\x3e\x16\xd4"
1155 "\x06\x90\xc2\x37\x63\x5f\x30\xc5",
1156 },
1157};
1158
1159/*
1160 * HMAC-RIPEMD160 test vectors from RFC2286
1161 */
1162#define HMAC_RMD160_TEST_VECTORS 7
1163
1164static struct hash_testvec hmac_rmd160_tv_template[] = {
1165 {
1166 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
1167 .ksize = 20,
1168 .plaintext = "Hi There",
1169 .psize = 8,
1170 .digest = "\x24\xcb\x4b\xd6\x7d\x20\xfc\x1a\x5d\x2e"
1171 "\xd7\x73\x2d\xcc\x39\x37\x7f\x0a\x56\x68",
1172 }, {
1173 .key = "Jefe",
1174 .ksize = 4,
1175 .plaintext = "what do ya want for nothing?",
1176 .psize = 28,
1177 .digest = "\xdd\xa6\xc0\x21\x3a\x48\x5a\x9e\x24\xf4"
1178 "\x74\x20\x64\xa7\xf0\x33\xb4\x3c\x40\x69",
1179 .np = 2,
1180 .tap = { 14, 14 },
1181 }, {
1182 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1183 .ksize = 20,
1184 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1185 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1186 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1187 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1188 .psize = 50,
1189 .digest = "\xb0\xb1\x05\x36\x0d\xe7\x59\x96\x0a\xb4"
1190 "\xf3\x52\x98\xe1\x16\xe2\x95\xd8\xe7\xc1",
1191 }, {
1192 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1193 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1194 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
1195 .ksize = 25,
1196 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1197 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1198 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1199 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1200 .psize = 50,
1201 .digest = "\xd5\xca\x86\x2f\x4d\x21\xd5\xe6\x10\xe1"
1202 "\x8b\x4c\xf1\xbe\xb9\x7a\x43\x65\xec\xf4",
1203 }, {
1204 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
1205 .ksize = 20,
1206 .plaintext = "Test With Truncation",
1207 .psize = 20,
1208 .digest = "\x76\x19\x69\x39\x78\xf9\x1d\x90\x53\x9a"
1209 "\xe7\x86\x50\x0f\xf3\xd8\xe0\x51\x8e\x39",
1210 }, {
1211 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1212 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1213 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1214 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1215 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1216 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1217 "\xaa\xaa",
1218 .ksize = 80,
1219 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1220 .psize = 54,
1221 .digest = "\x64\x66\xca\x07\xac\x5e\xac\x29\xe1\xbd"
1222 "\x52\x3e\x5a\xda\x76\x05\xb7\x91\xfd\x8b",
1223 }, {
1224 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1225 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1226 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1227 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1228 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1229 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1230 "\xaa\xaa",
1231 .ksize = 80,
1232 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
1233 "Block-Size Data",
1234 .psize = 73,
1235 .digest = "\x69\xea\x60\x79\x8d\x71\x61\x6c\xce\x5f"
1236 "\xd0\x87\x1e\x23\x75\x4c\xd7\x5d\x5a\x0a",
1237 },
1238};
1239
1240/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07001241 * HMAC-SHA1 test vectors from RFC2202
1242 */
1243#define HMAC_SHA1_TEST_VECTORS 7
1244
Herbert Xue9d41162006-08-19 21:38:49 +10001245static struct hash_testvec hmac_sha1_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07001246 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001247 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001248 .ksize = 20,
1249 .plaintext = "Hi There",
1250 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001251 .digest = "\xb6\x17\x31\x86\x55\x05\x72\x64"
1252 "\xe2\x8b\xc0\xb6\xfb\x37\x8c\x8e\xf1"
1253 "\x46\xbe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001254 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001255 .key = "Jefe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001256 .ksize = 4,
1257 .plaintext = "what do ya want for nothing?",
1258 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001259 .digest = "\xef\xfc\xdf\x6a\xe5\xeb\x2f\xa2\xd2\x74"
1260 "\x16\xd5\xf1\x84\xdf\x9c\x25\x9a\x7c\x79",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001261 .np = 2,
1262 .tap = { 14, 14 }
1263 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001264 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001265 .ksize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001266 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1267 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1268 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1269 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001270 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001271 .digest = "\x12\x5d\x73\x42\xb9\xac\x11\xcd\x91\xa3"
1272 "\x9a\xf4\x8a\xa1\x7b\x4f\x63\xf1\x75\xd3",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001273 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001274 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1275 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1276 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001277 .ksize = 25,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001278 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1279 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1280 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1281 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001282 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001283 .digest = "\x4c\x90\x07\xf4\x02\x62\x50\xc6\xbc\x84"
1284 "\x14\xf9\xbf\x50\xc8\x6c\x2d\x72\x35\xda",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001285 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001286 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001287 .ksize = 20,
1288 .plaintext = "Test With Truncation",
1289 .psize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001290 .digest = "\x4c\x1a\x03\x42\x4b\x55\xe0\x7f\xe7\xf2"
1291 "\x7b\xe1\xd5\x8b\xb9\x32\x4a\x9a\x5a\x04",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001292 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001293 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1294 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1295 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1296 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1297 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1298 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1299 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001300 .ksize = 80,
1301 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1302 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001303 .digest = "\xaa\x4a\xe5\xe1\x52\x72\xd0\x0e\x95\x70"
1304 "\x56\x37\xce\x8a\x3b\x55\xed\x40\x21\x12",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001305 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001306 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1307 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1308 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1309 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1310 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1311 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1312 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001313 .ksize = 80,
1314 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001315 "Block-Size Data",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001316 .psize = 73,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001317 .digest = "\xe8\xe9\x9d\x0f\x45\x23\x7d\x78\x6d\x6b"
1318 "\xba\xa7\x96\x5c\x78\x08\xbb\xff\x1a\x91",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001319 },
1320};
1321
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001322
1323/*
1324 * SHA224 HMAC test vectors from RFC4231
1325 */
1326#define HMAC_SHA224_TEST_VECTORS 4
1327
1328static struct hash_testvec hmac_sha224_tv_template[] = {
1329 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001330 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1331 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1332 "\x0b\x0b\x0b\x0b",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001333 .ksize = 20,
1334 /* ("Hi There") */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001335 .plaintext = "\x48\x69\x20\x54\x68\x65\x72\x65",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001336 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001337 .digest = "\x89\x6f\xb1\x12\x8a\xbb\xdf\x19"
1338 "\x68\x32\x10\x7c\xd4\x9d\xf3\x3f"
1339 "\x47\xb4\xb1\x16\x99\x12\xba\x4f"
1340 "\x53\x68\x4b\x22",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001341 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001342 .key = "Jefe",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001343 .ksize = 4,
1344 /* ("what do ya want for nothing?") */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001345 .plaintext = "\x77\x68\x61\x74\x20\x64\x6f\x20"
1346 "\x79\x61\x20\x77\x61\x6e\x74\x20"
1347 "\x66\x6f\x72\x20\x6e\x6f\x74\x68"
1348 "\x69\x6e\x67\x3f",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001349 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001350 .digest = "\xa3\x0e\x01\x09\x8b\xc6\xdb\xbf"
1351 "\x45\x69\x0f\x3a\x7e\x9e\x6d\x0f"
1352 "\x8b\xbe\xa2\xa3\x9e\x61\x48\x00"
1353 "\x8f\xd0\x5e\x44",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001354 .np = 4,
1355 .tap = { 7, 7, 7, 7 }
1356 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001357 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1358 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1359 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1360 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1361 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1362 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1363 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1364 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1365 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1366 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1367 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1368 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1369 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1370 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1371 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1372 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1373 "\xaa\xaa\xaa",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001374 .ksize = 131,
1375 /* ("Test Using Larger Than Block-Size Key - Hash Key First") */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001376 .plaintext = "\x54\x65\x73\x74\x20\x55\x73\x69"
1377 "\x6e\x67\x20\x4c\x61\x72\x67\x65"
1378 "\x72\x20\x54\x68\x61\x6e\x20\x42"
1379 "\x6c\x6f\x63\x6b\x2d\x53\x69\x7a"
1380 "\x65\x20\x4b\x65\x79\x20\x2d\x20"
1381 "\x48\x61\x73\x68\x20\x4b\x65\x79"
1382 "\x20\x46\x69\x72\x73\x74",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001383 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001384 .digest = "\x95\xe9\xa0\xdb\x96\x20\x95\xad"
1385 "\xae\xbe\x9b\x2d\x6f\x0d\xbc\xe2"
1386 "\xd4\x99\xf1\x12\xf2\xd2\xb7\x27"
1387 "\x3f\xa6\x87\x0e",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001388 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001389 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1390 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1391 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1392 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1393 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1394 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1395 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1396 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1397 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1398 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1399 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1400 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1401 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1402 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1403 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1404 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1405 "\xaa\xaa\xaa",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001406 .ksize = 131,
1407 /* ("This is a test using a larger than block-size key and a")
1408 (" larger than block-size data. The key needs to be")
1409 (" hashed before being used by the HMAC algorithm.") */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001410 .plaintext = "\x54\x68\x69\x73\x20\x69\x73\x20"
1411 "\x61\x20\x74\x65\x73\x74\x20\x75"
1412 "\x73\x69\x6e\x67\x20\x61\x20\x6c"
1413 "\x61\x72\x67\x65\x72\x20\x74\x68"
1414 "\x61\x6e\x20\x62\x6c\x6f\x63\x6b"
1415 "\x2d\x73\x69\x7a\x65\x20\x6b\x65"
1416 "\x79\x20\x61\x6e\x64\x20\x61\x20"
1417 "\x6c\x61\x72\x67\x65\x72\x20\x74"
1418 "\x68\x61\x6e\x20\x62\x6c\x6f\x63"
1419 "\x6b\x2d\x73\x69\x7a\x65\x20\x64"
1420 "\x61\x74\x61\x2e\x20\x54\x68\x65"
1421 "\x20\x6b\x65\x79\x20\x6e\x65\x65"
1422 "\x64\x73\x20\x74\x6f\x20\x62\x65"
1423 "\x20\x68\x61\x73\x68\x65\x64\x20"
1424 "\x62\x65\x66\x6f\x72\x65\x20\x62"
1425 "\x65\x69\x6e\x67\x20\x75\x73\x65"
1426 "\x64\x20\x62\x79\x20\x74\x68\x65"
1427 "\x20\x48\x4d\x41\x43\x20\x61\x6c"
1428 "\x67\x6f\x72\x69\x74\x68\x6d\x2e",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001429 .psize = 152,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001430 .digest = "\x3a\x85\x41\x66\xac\x5d\x9f\x02"
1431 "\x3f\x54\xd5\x17\xd0\xb3\x9d\xbd"
1432 "\x94\x67\x70\xdb\x9c\x2b\x95\xc9"
1433 "\xf6\xf5\x65\xd1",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001434 },
1435};
1436
Linus Torvalds1da177e2005-04-16 15:20:36 -07001437/*
1438 * HMAC-SHA256 test vectors from
1439 * draft-ietf-ipsec-ciph-sha-256-01.txt
1440 */
1441#define HMAC_SHA256_TEST_VECTORS 10
1442
Herbert Xue9d41162006-08-19 21:38:49 +10001443static struct hash_testvec hmac_sha256_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07001444 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001445 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1446 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1447 "\x11\x12\x13\x14\x15\x16\x17\x18"
1448 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001449 .ksize = 32,
1450 .plaintext = "abc",
1451 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001452 .digest = "\xa2\x1b\x1f\x5d\x4c\xf4\xf7\x3a"
1453 "\x4d\xd9\x39\x75\x0f\x7a\x06\x6a"
1454 "\x7f\x98\xcc\x13\x1c\xb1\x6a\x66"
1455 "\x92\x75\x90\x21\xcf\xab\x81\x81",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001456 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001457 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1458 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1459 "\x11\x12\x13\x14\x15\x16\x17\x18"
1460 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001461 .ksize = 32,
1462 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
1463 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001464 .digest = "\x10\x4f\xdc\x12\x57\x32\x8f\x08"
1465 "\x18\x4b\xa7\x31\x31\xc5\x3c\xae"
1466 "\xe6\x98\xe3\x61\x19\x42\x11\x49"
1467 "\xea\x8c\x71\x24\x56\x69\x7d\x30",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001468 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001469 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1470 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1471 "\x11\x12\x13\x14\x15\x16\x17\x18"
1472 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001473 .ksize = 32,
1474 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001475 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001476 .psize = 112,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001477 .digest = "\x47\x03\x05\xfc\x7e\x40\xfe\x34"
1478 "\xd3\xee\xb3\xe7\x73\xd9\x5a\xab"
1479 "\x73\xac\xf0\xfd\x06\x04\x47\xa5"
1480 "\xeb\x45\x95\xbf\x33\xa9\xd1\xa3",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001481 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001482 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1483 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1484 "\x0b\x0b\x0b\x0b\x0b\x0b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001485 .ksize = 32,
1486 .plaintext = "Hi There",
1487 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001488 .digest = "\x19\x8a\x60\x7e\xb4\x4b\xfb\xc6"
1489 "\x99\x03\xa0\xf1\xcf\x2b\xbd\xc5"
1490 "\xba\x0a\xa3\xf3\xd9\xae\x3c\x1c"
1491 "\x7a\x3b\x16\x96\xa0\xb6\x8c\xf7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001492 }, {
1493 .key = "Jefe",
1494 .ksize = 4,
1495 .plaintext = "what do ya want for nothing?",
1496 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001497 .digest = "\x5b\xdc\xc1\x46\xbf\x60\x75\x4e"
1498 "\x6a\x04\x24\x26\x08\x95\x75\xc7"
1499 "\x5a\x00\x3f\x08\x9d\x27\x39\x83"
1500 "\x9d\xec\x58\xb9\x64\xec\x38\x43",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001501 .np = 2,
1502 .tap = { 14, 14 }
1503 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001504 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1505 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1506 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001507 .ksize = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001508 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1509 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1510 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1511 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001512 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001513 .digest = "\xcd\xcb\x12\x20\xd1\xec\xcc\xea"
1514 "\x91\xe5\x3a\xba\x30\x92\xf9\x62"
1515 "\xe5\x49\xfe\x6c\xe9\xed\x7f\xdc"
1516 "\x43\x19\x1f\xbd\xe4\x5c\x30\xb0",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001517 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001518 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1519 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1520 "\x11\x12\x13\x14\x15\x16\x17\x18"
1521 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
1522 "\x21\x22\x23\x24\x25",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001523 .ksize = 37,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001524 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1525 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1526 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1527 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001528 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001529 .digest = "\xd4\x63\x3c\x17\xf6\xfb\x8d\x74"
1530 "\x4c\x66\xde\xe0\xf8\xf0\x74\x55"
1531 "\x6e\xc4\xaf\x55\xef\x07\x99\x85"
1532 "\x41\x46\x8e\xb4\x9b\xd2\xe9\x17",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001533 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001534 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
1535 "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
1536 "\x0c\x0c\x0c\x0c\x0c\x0c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001537 .ksize = 32,
1538 .plaintext = "Test With Truncation",
1539 .psize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001540 .digest = "\x75\x46\xaf\x01\x84\x1f\xc0\x9b"
1541 "\x1a\xb9\xc3\x74\x9a\x5f\x1c\x17"
1542 "\xd4\xf5\x89\x66\x8a\x58\x7b\x27"
1543 "\x00\xa9\xc9\x7c\x11\x93\xcf\x42",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001544 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001545 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1546 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1547 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1548 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1549 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1550 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1551 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001552 .ksize = 80,
1553 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1554 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001555 .digest = "\x69\x53\x02\x5e\xd9\x6f\x0c\x09"
1556 "\xf8\x0a\x96\xf7\x8e\x65\x38\xdb"
1557 "\xe2\xe7\xb8\x20\xe3\xdd\x97\x0e"
1558 "\x7d\xdd\x39\x09\x1b\x32\x35\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001559 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001560 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1561 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1562 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1563 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1564 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1565 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1566 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001567 .ksize = 80,
1568 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001569 "One Block-Size Data",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001570 .psize = 73,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001571 .digest = "\x63\x55\xac\x22\xe8\x90\xd0\xa3"
1572 "\xc8\x48\x1a\x5c\xa4\x82\x5b\xc8"
1573 "\x84\xd3\xe7\xa1\xff\x98\xa2\xfc"
1574 "\x2a\xc7\xd8\xe0\x64\xc3\xb2\xe6",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001575 },
1576};
1577
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001578#define XCBC_AES_TEST_VECTORS 6
1579
1580static struct hash_testvec aes_xcbc128_tv_template[] = {
1581 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001582 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1583 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1584 .plaintext = zeroed_string,
1585 .digest = "\x75\xf0\x25\x1d\x52\x8a\xc0\x1c"
1586 "\x45\x73\xdf\xd5\x84\xd7\x9f\x29",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001587 .psize = 0,
1588 .ksize = 16,
1589 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001590 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1591 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1592 .plaintext = "\x00\x01\x02",
1593 .digest = "\x5b\x37\x65\x80\xae\x2f\x19\xaf"
1594 "\xe7\x21\x9c\xee\xf1\x72\x75\x6f",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001595 .psize = 3,
1596 .ksize = 16,
1597 } , {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001598 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1599 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1600 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1601 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1602 .digest = "\xd2\xa2\x46\xfa\x34\x9b\x68\xa7"
1603 "\x99\x98\xa4\x39\x4f\xf7\xa2\x63",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001604 .psize = 16,
1605 .ksize = 16,
1606 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001607 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1608 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1609 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1610 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1611 "\x10\x11\x12\x13",
1612 .digest = "\x47\xf5\x1b\x45\x64\x96\x62\x15"
1613 "\xb8\x98\x5c\x63\x05\x5e\xd3\x08",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001614 .tap = { 10, 10 },
1615 .psize = 20,
1616 .np = 2,
1617 .ksize = 16,
1618 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001619 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1620 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1621 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1622 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1623 "\x10\x11\x12\x13\x14\x15\x16\x17"
1624 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1625 .digest = "\xf5\x4f\x0e\xc8\xd2\xb9\xf3\xd3"
1626 "\x68\x07\x73\x4b\xd5\x28\x3f\xd4",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001627 .psize = 32,
1628 .ksize = 16,
1629 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001630 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1631 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1632 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1633 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1634 "\x10\x11\x12\x13\x14\x15\x16\x17"
1635 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
1636 "\x20\x21",
1637 .digest = "\xbe\xcb\xb3\xbc\xcd\xb5\x18\xa3"
1638 "\x06\x77\xd5\x48\x1f\xb6\xb4\xd8",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001639 .tap = { 17, 17 },
1640 .psize = 34,
1641 .np = 2,
1642 .ksize = 16,
1643 }
1644};
1645
Linus Torvalds1da177e2005-04-16 15:20:36 -07001646/*
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001647 * SHA384 HMAC test vectors from RFC4231
1648 */
1649
1650#define HMAC_SHA384_TEST_VECTORS 4
1651
1652static struct hash_testvec hmac_sha384_tv_template[] = {
1653 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001654 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1655 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1656 "\x0b\x0b\x0b\x0b",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001657 .ksize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001658 .plaintext = "Hi There",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001659 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001660 .digest = "\xaf\xd0\x39\x44\xd8\x48\x95\x62"
1661 "\x6b\x08\x25\xf4\xab\x46\x90\x7f"
1662 "\x15\xf9\xda\xdb\xe4\x10\x1e\xc6"
1663 "\x82\xaa\x03\x4c\x7c\xeb\xc5\x9c"
1664 "\xfa\xea\x9e\xa9\x07\x6e\xde\x7f"
1665 "\x4a\xf1\x52\xe8\xb2\xfa\x9c\xb6",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001666 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001667 .key = "Jefe",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001668 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001669 .plaintext = "what do ya want for nothing?",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001670 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001671 .digest = "\xaf\x45\xd2\xe3\x76\x48\x40\x31"
1672 "\x61\x7f\x78\xd2\xb5\x8a\x6b\x1b"
1673 "\x9c\x7e\xf4\x64\xf5\xa0\x1b\x47"
1674 "\xe4\x2e\xc3\x73\x63\x22\x44\x5e"
1675 "\x8e\x22\x40\xca\x5e\x69\xe2\xc7"
1676 "\x8b\x32\x39\xec\xfa\xb2\x16\x49",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001677 .np = 4,
1678 .tap = { 7, 7, 7, 7 }
1679 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001680 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1681 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1682 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1683 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1684 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1685 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1686 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1687 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1688 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1689 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1690 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1691 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1692 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1693 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1694 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1695 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1696 "\xaa\xaa\xaa",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001697 .ksize = 131,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001698 .plaintext = "Test Using Larger Than Block-Siz"
1699 "e Key - Hash Key First",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001700 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001701 .digest = "\x4e\xce\x08\x44\x85\x81\x3e\x90"
1702 "\x88\xd2\xc6\x3a\x04\x1b\xc5\xb4"
1703 "\x4f\x9e\xf1\x01\x2a\x2b\x58\x8f"
1704 "\x3c\xd1\x1f\x05\x03\x3a\xc4\xc6"
1705 "\x0c\x2e\xf6\xab\x40\x30\xfe\x82"
1706 "\x96\x24\x8d\xf1\x63\xf4\x49\x52",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001707 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001708 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1709 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1710 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1711 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1712 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1713 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1714 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1715 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1716 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1717 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1718 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1719 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1720 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1721 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1722 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1723 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1724 "\xaa\xaa\xaa",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001725 .ksize = 131,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001726 .plaintext = "This is a test u"
1727 "sing a larger th"
1728 "an block-size ke"
1729 "y and a larger t"
1730 "han block-size d"
1731 "ata. The key nee"
1732 "ds to be hashed "
1733 "before being use"
1734 "d by the HMAC al"
1735 "gorithm.",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001736 .psize = 152,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001737 .digest = "\x66\x17\x17\x8e\x94\x1f\x02\x0d"
1738 "\x35\x1e\x2f\x25\x4e\x8f\xd3\x2c"
1739 "\x60\x24\x20\xfe\xb0\xb8\xfb\x9a"
1740 "\xdc\xce\xbb\x82\x46\x1e\x99\xc5"
1741 "\xa6\x78\xcc\x31\xe7\x99\x17\x6d"
1742 "\x38\x60\xe6\x11\x0c\x46\x52\x3e",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001743 },
1744};
1745
1746/*
1747 * SHA512 HMAC test vectors from RFC4231
1748 */
1749
1750#define HMAC_SHA512_TEST_VECTORS 4
1751
1752static struct hash_testvec hmac_sha512_tv_template[] = {
1753 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001754 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1755 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1756 "\x0b\x0b\x0b\x0b",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001757 .ksize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001758 .plaintext = "Hi There",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001759 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001760 .digest = "\x87\xaa\x7c\xde\xa5\xef\x61\x9d"
1761 "\x4f\xf0\xb4\x24\x1a\x1d\x6c\xb0"
1762 "\x23\x79\xf4\xe2\xce\x4e\xc2\x78"
1763 "\x7a\xd0\xb3\x05\x45\xe1\x7c\xde"
1764 "\xda\xa8\x33\xb7\xd6\xb8\xa7\x02"
1765 "\x03\x8b\x27\x4e\xae\xa3\xf4\xe4"
1766 "\xbe\x9d\x91\x4e\xeb\x61\xf1\x70"
1767 "\x2e\x69\x6c\x20\x3a\x12\x68\x54",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001768 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001769 .key = "Jefe",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001770 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001771 .plaintext = "what do ya want for nothing?",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001772 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001773 .digest = "\x16\x4b\x7a\x7b\xfc\xf8\x19\xe2"
1774 "\xe3\x95\xfb\xe7\x3b\x56\xe0\xa3"
1775 "\x87\xbd\x64\x22\x2e\x83\x1f\xd6"
1776 "\x10\x27\x0c\xd7\xea\x25\x05\x54"
1777 "\x97\x58\xbf\x75\xc0\x5a\x99\x4a"
1778 "\x6d\x03\x4f\x65\xf8\xf0\xe6\xfd"
1779 "\xca\xea\xb1\xa3\x4d\x4a\x6b\x4b"
1780 "\x63\x6e\x07\x0a\x38\xbc\xe7\x37",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001781 .np = 4,
1782 .tap = { 7, 7, 7, 7 }
1783 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001784 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1785 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1786 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1787 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1788 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1789 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1790 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1791 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1792 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1793 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1794 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1795 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1796 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1797 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1798 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1799 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1800 "\xaa\xaa\xaa",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001801 .ksize = 131,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001802 .plaintext = "Test Using Large"
1803 "r Than Block-Siz"
1804 "e Key - Hash Key"
1805 " First",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001806 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001807 .digest = "\x80\xb2\x42\x63\xc7\xc1\xa3\xeb"
1808 "\xb7\x14\x93\xc1\xdd\x7b\xe8\xb4"
1809 "\x9b\x46\xd1\xf4\x1b\x4a\xee\xc1"
1810 "\x12\x1b\x01\x37\x83\xf8\xf3\x52"
1811 "\x6b\x56\xd0\x37\xe0\x5f\x25\x98"
1812 "\xbd\x0f\xd2\x21\x5d\x6a\x1e\x52"
1813 "\x95\xe6\x4f\x73\xf6\x3f\x0a\xec"
1814 "\x8b\x91\x5a\x98\x5d\x78\x65\x98",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001815 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001816 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1817 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1818 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1819 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1820 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1821 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1822 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1823 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1824 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1825 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1826 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1827 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1828 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1829 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1830 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1831 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1832 "\xaa\xaa\xaa",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001833 .ksize = 131,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001834 .plaintext =
1835 "This is a test u"
1836 "sing a larger th"
1837 "an block-size ke"
1838 "y and a larger t"
1839 "han block-size d"
1840 "ata. The key nee"
1841 "ds to be hashed "
1842 "before being use"
1843 "d by the HMAC al"
1844 "gorithm.",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001845 .psize = 152,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001846 .digest = "\xe3\x7b\x6a\x77\x5d\xc8\x7d\xba"
1847 "\xa4\xdf\xa9\xf9\x6e\x5e\x3f\xfd"
1848 "\xde\xbd\x71\xf8\x86\x72\x89\x86"
1849 "\x5d\xf5\xa3\x2d\x20\xcd\xc9\x44"
1850 "\xb6\x02\x2c\xac\x3c\x49\x82\xb1"
1851 "\x0d\x5e\xeb\x55\xc3\xe4\xde\x15"
1852 "\x13\x46\x76\xfb\x6d\xe0\x44\x60"
1853 "\x65\xc9\x74\x40\xfa\x8c\x6a\x58",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001854 },
1855};
1856
1857/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07001858 * DES test vectors.
1859 */
1860#define DES_ENC_TEST_VECTORS 10
1861#define DES_DEC_TEST_VECTORS 4
1862#define DES_CBC_ENC_TEST_VECTORS 5
1863#define DES_CBC_DEC_TEST_VECTORS 4
1864#define DES3_EDE_ENC_TEST_VECTORS 3
1865#define DES3_EDE_DEC_TEST_VECTORS 3
Neil Hormand729de22008-06-03 20:00:16 +10001866#define DES3_EDE_CBC_ENC_TEST_VECTORS 1
1867#define DES3_EDE_CBC_DEC_TEST_VECTORS 1
Linus Torvalds1da177e2005-04-16 15:20:36 -07001868
1869static struct cipher_testvec des_enc_tv_template[] = {
1870 { /* From Applied Cryptography */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001871 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001872 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001873 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001874 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001875 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001876 .rlen = 8,
1877 }, { /* Same key, different plaintext block */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001878 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001879 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001880 .input = "\x22\x33\x44\x55\x66\x77\x88\x99",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001881 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001882 .result = "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001883 .rlen = 8,
1884 }, { /* Sbox test from NBS */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001885 .key = "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001886 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001887 .input = "\x01\xa1\xd6\xd0\x39\x77\x67\x42",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001888 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001889 .result = "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001890 .rlen = 8,
1891 }, { /* Three blocks */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001892 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001893 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001894 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1895 "\x22\x33\x44\x55\x66\x77\x88\x99"
1896 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001897 .ilen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001898 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1899 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1900 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001901 .rlen = 24,
1902 }, { /* Weak key */
1903 .fail = 1,
1904 .wk = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001905 .key = "\x01\x01\x01\x01\x01\x01\x01\x01",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001906 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001907 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001908 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001909 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001910 .rlen = 8,
1911 }, { /* Two blocks -- for testing encryption across pages */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001912 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001913 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001914 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1915 "\x22\x33\x44\x55\x66\x77\x88\x99",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001916 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001917 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1918 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001919 .rlen = 16,
1920 .np = 2,
1921 .tap = { 8, 8 }
1922 }, { /* Four blocks -- for testing encryption with chunking */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001923 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001924 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001925 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1926 "\x22\x33\x44\x55\x66\x77\x88\x99"
1927 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef"
1928 "\x22\x33\x44\x55\x66\x77\x88\x99",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001929 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001930 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1931 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1932 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90"
1933 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001934 .rlen = 32,
1935 .np = 3,
Herbert Xuef2736f2005-06-22 13:26:03 -07001936 .tap = { 14, 10, 8 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001937 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001938 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001939 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001940 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1941 "\x22\x33\x44\x55\x66\x77\x88\x99"
1942 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001943 .ilen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001944 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1945 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1946 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001947 .rlen = 24,
1948 .np = 4,
Herbert Xuef2736f2005-06-22 13:26:03 -07001949 .tap = { 2, 1, 3, 18 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001950 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001951 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001952 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001953 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1954 "\x22\x33\x44\x55\x66\x77\x88\x99",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001955 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001956 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1957 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001958 .rlen = 16,
1959 .np = 5,
Herbert Xuef2736f2005-06-22 13:26:03 -07001960 .tap = { 2, 2, 2, 2, 8 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001961 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001962 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001963 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001964 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001965 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001966 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001967 .rlen = 8,
1968 .np = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001969 .tap = { 1, 1, 1, 1, 1, 1, 1, 1 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001970 },
1971};
1972
1973static struct cipher_testvec des_dec_tv_template[] = {
1974 { /* From Applied Cryptography */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001975 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001976 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001977 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001978 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001979 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001980 .rlen = 8,
1981 }, { /* Sbox test from NBS */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001982 .key = "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001983 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001984 .input = "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001985 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001986 .result = "\x01\xa1\xd6\xd0\x39\x77\x67\x42",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001987 .rlen = 8,
1988 }, { /* Two blocks, for chunking test */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001989 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001990 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001991 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1992 "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001993 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001994 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1995 "\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001996 .rlen = 16,
1997 .np = 2,
1998 .tap = { 8, 8 }
1999 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002000 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002001 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002002 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
2003 "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002004 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002005 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
2006 "\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002007 .rlen = 16,
2008 .np = 3,
2009 .tap = { 3, 12, 1 }
2010 },
2011};
2012
2013static struct cipher_testvec des_cbc_enc_tv_template[] = {
2014 { /* From OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002015 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002016 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002017 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
2018 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
2019 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
2020 "\x68\x65\x20\x74\x69\x6d\x65\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002021 .ilen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002022 .result = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
2023 "\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb"
2024 "\x46\x8e\x91\x15\x78\x88\xba\x68",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002025 .rlen = 24,
2026 }, { /* FIPS Pub 81 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002027 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002028 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002029 .iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
2030 .input = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002031 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002032 .result = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002033 .rlen = 8,
2034 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002035 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002036 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002037 .iv = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
2038 .input = "\x68\x65\x20\x74\x69\x6d\x65\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002039 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002040 .result = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002041 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07002042 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002043 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002044 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002045 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
2046 .input = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002047 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002048 .result = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002049 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07002050 }, { /* Copy of openssl vector for chunk testing */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002051 /* From OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002052 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002053 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002054 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
2055 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
2056 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
2057 "\x68\x65\x20\x74\x69\x6d\x65\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002058 .ilen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002059 .result = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
2060 "\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb"
2061 "\x46\x8e\x91\x15\x78\x88\xba\x68",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002062 .rlen = 24,
2063 .np = 2,
2064 .tap = { 13, 11 }
2065 },
2066};
2067
2068static struct cipher_testvec des_cbc_dec_tv_template[] = {
2069 { /* FIPS Pub 81 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002070 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002071 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002072 .iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
2073 .input = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002074 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002075 .result = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002076 .rlen = 8,
2077 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002078 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002079 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002080 .iv = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
2081 .input = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002082 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002083 .result = "\x68\x65\x20\x74\x69\x6d\x65\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002084 .rlen = 8,
2085 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002086 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002087 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002088 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
2089 .input = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002090 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002091 .result = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002092 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07002093 }, { /* Copy of above, for chunk testing */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002094 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002095 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002096 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
2097 .input = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002098 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002099 .result = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002100 .rlen = 8,
2101 .np = 2,
2102 .tap = { 4, 4 }
2103 },
2104};
2105
Linus Torvalds1da177e2005-04-16 15:20:36 -07002106static struct cipher_testvec des3_ede_enc_tv_template[] = {
2107 { /* These are from openssl */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002108 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2109 "\x55\x55\x55\x55\x55\x55\x55\x55"
2110 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002111 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002112 .input = "\x73\x6f\x6d\x65\x64\x61\x74\x61",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002113 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002114 .result = "\x18\xd7\x48\xe5\x63\x62\x05\x72",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002115 .rlen = 8,
2116 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002117 .key = "\x03\x52\x02\x07\x67\x20\x82\x17"
2118 "\x86\x02\x87\x66\x59\x08\x21\x98"
2119 "\x64\x05\x6a\xbd\xfe\xa9\x34\x57",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002120 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002121 .input = "\x73\x71\x75\x69\x67\x67\x6c\x65",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002122 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002123 .result = "\xc0\x7d\x2a\x0f\xa5\x66\xfa\x30",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002124 .rlen = 8,
2125 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002126 .key = "\x10\x46\x10\x34\x89\x98\x80\x20"
2127 "\x91\x07\xd0\x15\x89\x19\x01\x01"
2128 "\x19\x07\x92\x10\x98\x1a\x01\x01",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002129 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002130 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002131 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002132 .result = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002133 .rlen = 8,
2134 },
2135};
2136
2137static struct cipher_testvec des3_ede_dec_tv_template[] = {
2138 { /* These are from openssl */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002139 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2140 "\x55\x55\x55\x55\x55\x55\x55\x55"
2141 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002142 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002143 .input = "\x18\xd7\x48\xe5\x63\x62\x05\x72",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002144 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002145 .result = "\x73\x6f\x6d\x65\x64\x61\x74\x61",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002146 .rlen = 8,
2147 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002148 .key = "\x03\x52\x02\x07\x67\x20\x82\x17"
2149 "\x86\x02\x87\x66\x59\x08\x21\x98"
2150 "\x64\x05\x6a\xbd\xfe\xa9\x34\x57",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002151 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002152 .input = "\xc0\x7d\x2a\x0f\xa5\x66\xfa\x30",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002153 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002154 .result = "\x73\x71\x75\x69\x67\x67\x6c\x65",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002155 .rlen = 8,
2156 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002157 .key = "\x10\x46\x10\x34\x89\x98\x80\x20"
2158 "\x91\x07\xd0\x15\x89\x19\x01\x01"
2159 "\x19\x07\x92\x10\x98\x1a\x01\x01",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002160 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002161 .input = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002162 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002163 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002164 .rlen = 8,
2165 },
2166};
2167
Neil Hormand729de22008-06-03 20:00:16 +10002168static struct cipher_testvec des3_ede_cbc_enc_tv_template[] = {
2169 { /* Generated from openssl */
2170 .key = "\xE9\xC0\xFF\x2E\x76\x0B\x64\x24"
2171 "\x44\x4D\x99\x5A\x12\xD6\x40\xC0"
2172 "\xEA\xC2\x84\xE8\x14\x95\xDB\xE8",
2173 .klen = 24,
2174 .iv = "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
2175 .input = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e"
2176 "\x53\x20\x63\x65\x65\x72\x73\x74"
2177 "\x54\x20\x6f\x6f\x4d\x20\x6e\x61"
2178 "\x20\x79\x65\x53\x72\x63\x74\x65"
2179 "\x20\x73\x6f\x54\x20\x6f\x61\x4d"
2180 "\x79\x6e\x53\x20\x63\x65\x65\x72"
2181 "\x73\x74\x54\x20\x6f\x6f\x4d\x20"
2182 "\x6e\x61\x20\x79\x65\x53\x72\x63"
2183 "\x74\x65\x20\x73\x6f\x54\x20\x6f"
2184 "\x61\x4d\x79\x6e\x53\x20\x63\x65"
2185 "\x65\x72\x73\x74\x54\x20\x6f\x6f"
2186 "\x4d\x20\x6e\x61\x20\x79\x65\x53"
2187 "\x72\x63\x74\x65\x20\x73\x6f\x54"
2188 "\x20\x6f\x61\x4d\x79\x6e\x53\x20"
2189 "\x63\x65\x65\x72\x73\x74\x54\x20"
2190 "\x6f\x6f\x4d\x20\x6e\x61\x0a\x79",
2191 .ilen = 128,
2192 .result = "\x0e\x2d\xb6\x97\x3c\x56\x33\xf4"
2193 "\x67\x17\x21\xc7\x6e\x8a\xd5\x49"
2194 "\x74\xb3\x49\x05\xc5\x1c\xd0\xed"
2195 "\x12\x56\x5c\x53\x96\xb6\x00\x7d"
2196 "\x90\x48\xfc\xf5\x8d\x29\x39\xcc"
2197 "\x8a\xd5\x35\x18\x36\x23\x4e\xd7"
2198 "\x76\xd1\xda\x0c\x94\x67\xbb\x04"
2199 "\x8b\xf2\x03\x6c\xa8\xcf\xb6\xea"
2200 "\x22\x64\x47\xaa\x8f\x75\x13\xbf"
2201 "\x9f\xc2\xc3\xf0\xc9\x56\xc5\x7a"
2202 "\x71\x63\x2e\x89\x7b\x1e\x12\xca"
2203 "\xe2\x5f\xaf\xd8\xa4\xf8\xc9\x7a"
2204 "\xd6\xf9\x21\x31\x62\x44\x45\xa6"
2205 "\xd6\xbc\x5a\xd3\x2d\x54\x43\xcc"
2206 "\x9d\xde\xa5\x70\xe9\x42\x45\x8a"
2207 "\x6b\xfa\xb1\x91\x13\xb0\xd9\x19",
2208 .rlen = 128,
2209 },
2210};
2211
2212static struct cipher_testvec des3_ede_cbc_dec_tv_template[] = {
2213 { /* Generated from openssl */
2214 .key = "\xE9\xC0\xFF\x2E\x76\x0B\x64\x24"
2215 "\x44\x4D\x99\x5A\x12\xD6\x40\xC0"
2216 "\xEA\xC2\x84\xE8\x14\x95\xDB\xE8",
2217 .klen = 24,
2218 .iv = "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
2219 .input = "\x0e\x2d\xb6\x97\x3c\x56\x33\xf4"
2220 "\x67\x17\x21\xc7\x6e\x8a\xd5\x49"
2221 "\x74\xb3\x49\x05\xc5\x1c\xd0\xed"
2222 "\x12\x56\x5c\x53\x96\xb6\x00\x7d"
2223 "\x90\x48\xfc\xf5\x8d\x29\x39\xcc"
2224 "\x8a\xd5\x35\x18\x36\x23\x4e\xd7"
2225 "\x76\xd1\xda\x0c\x94\x67\xbb\x04"
2226 "\x8b\xf2\x03\x6c\xa8\xcf\xb6\xea"
2227 "\x22\x64\x47\xaa\x8f\x75\x13\xbf"
2228 "\x9f\xc2\xc3\xf0\xc9\x56\xc5\x7a"
2229 "\x71\x63\x2e\x89\x7b\x1e\x12\xca"
2230 "\xe2\x5f\xaf\xd8\xa4\xf8\xc9\x7a"
2231 "\xd6\xf9\x21\x31\x62\x44\x45\xa6"
2232 "\xd6\xbc\x5a\xd3\x2d\x54\x43\xcc"
2233 "\x9d\xde\xa5\x70\xe9\x42\x45\x8a"
2234 "\x6b\xfa\xb1\x91\x13\xb0\xd9\x19",
2235 .ilen = 128,
2236 .result = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e"
2237 "\x53\x20\x63\x65\x65\x72\x73\x74"
2238 "\x54\x20\x6f\x6f\x4d\x20\x6e\x61"
2239 "\x20\x79\x65\x53\x72\x63\x74\x65"
2240 "\x20\x73\x6f\x54\x20\x6f\x61\x4d"
2241 "\x79\x6e\x53\x20\x63\x65\x65\x72"
2242 "\x73\x74\x54\x20\x6f\x6f\x4d\x20"
2243 "\x6e\x61\x20\x79\x65\x53\x72\x63"
2244 "\x74\x65\x20\x73\x6f\x54\x20\x6f"
2245 "\x61\x4d\x79\x6e\x53\x20\x63\x65"
2246 "\x65\x72\x73\x74\x54\x20\x6f\x6f"
2247 "\x4d\x20\x6e\x61\x20\x79\x65\x53"
2248 "\x72\x63\x74\x65\x20\x73\x6f\x54"
2249 "\x20\x6f\x61\x4d\x79\x6e\x53\x20"
2250 "\x63\x65\x65\x72\x73\x74\x54\x20"
2251 "\x6f\x6f\x4d\x20\x6e\x61\x0a\x79",
2252 .rlen = 128,
2253 },
2254};
2255
Linus Torvalds1da177e2005-04-16 15:20:36 -07002256/*
2257 * Blowfish test vectors.
2258 */
2259#define BF_ENC_TEST_VECTORS 6
2260#define BF_DEC_TEST_VECTORS 6
2261#define BF_CBC_ENC_TEST_VECTORS 1
2262#define BF_CBC_DEC_TEST_VECTORS 1
2263
2264static struct cipher_testvec bf_enc_tv_template[] = {
2265 { /* DES test vectors from OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002266 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002267 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002268 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002269 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002270 .result = "\x4e\xf9\x97\x45\x61\x98\xdd\x78",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002271 .rlen = 8,
2272 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002273 .key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002274 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002275 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002276 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002277 .result = "\xa7\x90\x79\x51\x08\xea\x3c\xae",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002278 .rlen = 8,
2279 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002280 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002281 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002282 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002283 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002284 .result = "\xe8\x7a\x24\x4e\x2c\xc8\x5e\x82",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002285 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07002286 }, { /* Vary the keylength... */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002287 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2288 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002289 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002290 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002291 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002292 .result = "\x93\x14\x28\x87\xee\x3b\xe1\x5c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002293 .rlen = 8,
2294 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002295 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2296 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
2297 "\x00\x11\x22\x33\x44",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002298 .klen = 21,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002299 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002300 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002301 .result = "\xe6\xf5\x1e\xd7\x9b\x9d\xb2\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002302 .rlen = 8,
2303 }, { /* Generated with bf488 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002304 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2305 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
2306 "\x00\x11\x22\x33\x44\x55\x66\x77"
2307 "\x04\x68\x91\x04\xc2\xfd\x3b\x2f"
2308 "\x58\x40\x23\x64\x1a\xba\x61\x76"
2309 "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e"
2310 "\xff\xff\xff\xff\xff\xff\xff\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002311 .klen = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002312 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002313 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002314 .result = "\xc0\x45\x04\x01\x2e\x4e\x1f\x53",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002315 .rlen = 8,
2316 },
2317};
2318
2319static struct cipher_testvec bf_dec_tv_template[] = {
2320 { /* DES test vectors from OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002321 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002322 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002323 .input = "\x4e\xf9\x97\x45\x61\x98\xdd\x78",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002324 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002325 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002326 .rlen = 8,
2327 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002328 .key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002329 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002330 .input = "\xa7\x90\x79\x51\x08\xea\x3c\xae",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002331 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002332 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002333 .rlen = 8,
2334 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002335 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002336 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002337 .input = "\xe8\x7a\x24\x4e\x2c\xc8\x5e\x82",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002338 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002339 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002340 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07002341 }, { /* Vary the keylength... */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002342 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2343 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002344 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002345 .input = "\x93\x14\x28\x87\xee\x3b\xe1\x5c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002346 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002347 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002348 .rlen = 8,
2349 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002350 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2351 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
2352 "\x00\x11\x22\x33\x44",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002353 .klen = 21,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002354 .input = "\xe6\xf5\x1e\xd7\x9b\x9d\xb2\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002355 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002356 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002357 .rlen = 8,
2358 }, { /* Generated with bf488, using OpenSSL, Libgcrypt and Nettle */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002359 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2360 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
2361 "\x00\x11\x22\x33\x44\x55\x66\x77"
2362 "\x04\x68\x91\x04\xc2\xfd\x3b\x2f"
2363 "\x58\x40\x23\x64\x1a\xba\x61\x76"
2364 "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e"
2365 "\xff\xff\xff\xff\xff\xff\xff\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002366 .klen = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002367 .input = "\xc0\x45\x04\x01\x2e\x4e\x1f\x53",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002368 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002369 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002370 .rlen = 8,
2371 },
2372};
2373
2374static struct cipher_testvec bf_cbc_enc_tv_template[] = {
2375 { /* From OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002376 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2377 "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002378 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002379 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
2380 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
2381 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
2382 "\x68\x65\x20\x74\x69\x6d\x65\x20"
2383 "\x66\x6f\x72\x20\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002384 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002385 .result = "\x6b\x77\xb4\xd6\x30\x06\xde\xe6"
2386 "\x05\xb1\x56\xe2\x74\x03\x97\x93"
2387 "\x58\xde\xb9\xe7\x15\x46\x16\xd9"
2388 "\x59\xf1\x65\x2b\xd5\xff\x92\xcc",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002389 .rlen = 32,
2390 },
2391};
2392
2393static struct cipher_testvec bf_cbc_dec_tv_template[] = {
2394 { /* From OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002395 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2396 "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002397 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002398 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
2399 .input = "\x6b\x77\xb4\xd6\x30\x06\xde\xe6"
2400 "\x05\xb1\x56\xe2\x74\x03\x97\x93"
2401 "\x58\xde\xb9\xe7\x15\x46\x16\xd9"
2402 "\x59\xf1\x65\x2b\xd5\xff\x92\xcc",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002403 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002404 .result = "\x37\x36\x35\x34\x33\x32\x31\x20"
2405 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
2406 "\x68\x65\x20\x74\x69\x6d\x65\x20"
2407 "\x66\x6f\x72\x20\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002408 .rlen = 32,
2409 },
2410};
2411
2412/*
2413 * Twofish test vectors.
2414 */
2415#define TF_ENC_TEST_VECTORS 3
2416#define TF_DEC_TEST_VECTORS 3
2417#define TF_CBC_ENC_TEST_VECTORS 4
2418#define TF_CBC_DEC_TEST_VECTORS 4
2419
2420static struct cipher_testvec tf_enc_tv_template[] = {
2421 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002422 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002423 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002424 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002425 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002426 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2427 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002428 .rlen = 16,
2429 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002430 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2431 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
2432 "\x00\x11\x22\x33\x44\x55\x66\x77",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002433 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002434 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002435 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002436 .result = "\xcf\xd1\xd2\xe5\xa9\xbe\x9c\xdf"
2437 "\x50\x1f\x13\xb8\x92\xbd\x22\x48",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002438 .rlen = 16,
2439 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002440 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2441 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
2442 "\x00\x11\x22\x33\x44\x55\x66\x77"
2443 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002444 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002445 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002446 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002447 .result = "\x37\x52\x7b\xe0\x05\x23\x34\xb8"
2448 "\x9f\x0c\xfc\xca\xe8\x7c\xfa\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002449 .rlen = 16,
2450 },
2451};
2452
2453static struct cipher_testvec tf_dec_tv_template[] = {
2454 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002455 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002456 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002457 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2458 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002459 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002460 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002461 .rlen = 16,
2462 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002463 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2464 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
2465 "\x00\x11\x22\x33\x44\x55\x66\x77",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002466 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002467 .input = "\xcf\xd1\xd2\xe5\xa9\xbe\x9c\xdf"
2468 "\x50\x1f\x13\xb8\x92\xbd\x22\x48",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002469 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002470 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002471 .rlen = 16,
2472 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002473 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2474 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
2475 "\x00\x11\x22\x33\x44\x55\x66\x77"
2476 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002477 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002478 .input = "\x37\x52\x7b\xe0\x05\x23\x34\xb8"
2479 "\x9f\x0c\xfc\xca\xe8\x7c\xfa\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002480 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002481 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002482 .rlen = 16,
2483 },
2484};
2485
2486static struct cipher_testvec tf_cbc_enc_tv_template[] = {
2487 { /* Generated with Nettle */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002488 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002489 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002490 .iv = zeroed_string,
2491 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002492 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002493 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2494 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002495 .rlen = 16,
2496 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002497 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002498 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002499 .iv = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2500 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
2501 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002502 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002503 .result = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2504 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002505 .rlen = 16,
2506 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002507 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002508 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002509 .iv = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2510 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
2511 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002512 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002513 .result = "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2514 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002515 .rlen = 16,
2516 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002517 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002518 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002519 .iv = zeroed_string,
2520 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002521 .ilen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002522 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2523 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a"
2524 "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2525 "\x86\xcb\x08\x6b\x78\x9f\x54\x19"
2526 "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2527 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002528 .rlen = 48,
2529 },
2530};
2531
2532static struct cipher_testvec tf_cbc_dec_tv_template[] = {
2533 { /* Reverse of the first four above */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002534 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002535 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002536 .iv = zeroed_string,
2537 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2538 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002539 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002540 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002541 .rlen = 16,
2542 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002543 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002544 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002545 .iv = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2546 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
2547 .input = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2548 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002549 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002550 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002551 .rlen = 16,
2552 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002553 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002554 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002555 .iv = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2556 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
2557 .input = "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2558 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002559 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002560 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002561 .rlen = 16,
2562 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002563 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002564 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002565 .iv = zeroed_string,
2566 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2567 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a"
2568 "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2569 "\x86\xcb\x08\x6b\x78\x9f\x54\x19"
2570 "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2571 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002572 .ilen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002573 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002574 .rlen = 48,
2575 },
2576};
2577
2578/*
2579 * Serpent test vectors. These are backwards because Serpent writes
2580 * octet sequences in right-to-left mode.
2581 */
2582#define SERPENT_ENC_TEST_VECTORS 4
2583#define SERPENT_DEC_TEST_VECTORS 4
2584
2585#define TNEPRES_ENC_TEST_VECTORS 4
2586#define TNEPRES_DEC_TEST_VECTORS 4
2587
Herbert Xuef2736f2005-06-22 13:26:03 -07002588static struct cipher_testvec serpent_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002589 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002590 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2591 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002592 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002593 .result = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
2594 "\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002595 .rlen = 16,
2596 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002597 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2598 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002599 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002600 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2601 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002602 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002603 .result = "\x4c\x7d\x8a\x32\x80\x72\xa2\x2c"
2604 "\x82\x3e\x4a\x1f\x3a\xcd\xa1\x6d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002605 .rlen = 16,
2606 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002607 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2608 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2609 "\x10\x11\x12\x13\x14\x15\x16\x17"
2610 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002611 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002612 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2613 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002614 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002615 .result = "\xde\x26\x9f\xf8\x33\xe4\x32\xb8"
2616 "\x5b\x2e\x88\xd2\x70\x1c\xe7\x5c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002617 .rlen = 16,
2618 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002619 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002620 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002621 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002622 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002623 .result = "\xdd\xd2\x6b\x98\xa5\xff\xd8\x2c"
2624 "\x05\x34\x5a\x9d\xad\xbf\xaf\x49",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002625 .rlen = 16,
2626 },
2627};
2628
Herbert Xuef2736f2005-06-22 13:26:03 -07002629static struct cipher_testvec tnepres_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002630 { /* KeySize=128, PT=0, I=1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002631 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2632 "\x00\x00\x00\x00\x00\x00\x00\x00",
2633 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2634 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002635 .klen = 16,
2636 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002637 .result = "\x49\xaf\xbf\xad\x9d\x5a\x34\x05"
2638 "\x2c\xd8\xff\xa5\x98\x6b\xd2\xdd",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002639 .rlen = 16,
2640 }, { /* KeySize=192, PT=0, I=1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002641 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2642 "\x00\x00\x00\x00\x00\x00\x00\x00"
2643 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002644 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002645 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2646 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002647 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002648 .result = "\xe7\x8e\x54\x02\xc7\x19\x55\x68"
2649 "\xac\x36\x78\xf7\xa3\xf6\x0c\x66",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002650 .rlen = 16,
2651 }, { /* KeySize=256, PT=0, I=1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002652 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2653 "\x00\x00\x00\x00\x00\x00\x00\x00"
2654 "\x00\x00\x00\x00\x00\x00\x00\x00"
2655 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002656 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002657 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2658 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002659 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002660 .result = "\xab\xed\x96\xe7\x66\xbf\x28\xcb"
2661 "\xc0\xeb\xd2\x1a\x82\xef\x08\x19",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002662 .rlen = 16,
2663 }, { /* KeySize=256, I=257 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002664 .key = "\x1f\x1e\x1d\x1c\x1b\x1a\x19\x18"
2665 "\x17\x16\x15\x14\x13\x12\x11\x10"
2666 "\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08"
2667 "\x07\x06\x05\x04\x03\x02\x01\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002668 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002669 .input = "\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08"
2670 "\x07\x06\x05\x04\x03\x02\x01\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002671 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002672 .result = "\x5c\xe7\x1c\x70\xd2\x88\x2e\x5b"
2673 "\xb8\x32\xe4\x33\xf8\x9f\x26\xde",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002674 .rlen = 16,
2675 },
2676};
2677
2678
Herbert Xuef2736f2005-06-22 13:26:03 -07002679static struct cipher_testvec serpent_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002680 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002681 .input = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
2682 "\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002683 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002684 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2685 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002686 .rlen = 16,
2687 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002688 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2689 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002690 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002691 .input = "\x4c\x7d\x8a\x32\x80\x72\xa2\x2c"
2692 "\x82\x3e\x4a\x1f\x3a\xcd\xa1\x6d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002693 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002694 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2695 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002696 .rlen = 16,
2697 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002698 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2699 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2700 "\x10\x11\x12\x13\x14\x15\x16\x17"
2701 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002702 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002703 .input = "\xde\x26\x9f\xf8\x33\xe4\x32\xb8"
2704 "\x5b\x2e\x88\xd2\x70\x1c\xe7\x5c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002705 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002706 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2707 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002708 .rlen = 16,
2709 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002710 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002711 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002712 .input = "\xdd\xd2\x6b\x98\xa5\xff\xd8\x2c"
2713 "\x05\x34\x5a\x9d\xad\xbf\xaf\x49",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002714 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002715 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002716 .rlen = 16,
2717 },
2718};
2719
Herbert Xuef2736f2005-06-22 13:26:03 -07002720static struct cipher_testvec tnepres_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002721 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002722 .input = "\x41\xcc\x6b\x31\x59\x31\x45\x97"
2723 "\x6d\x6f\xbb\x38\x4b\x37\x21\x28",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002724 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002725 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2726 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002727 .rlen = 16,
2728 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002729 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2730 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002731 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002732 .input = "\xea\xf4\xd7\xfc\xd8\x01\x34\x47"
2733 "\x81\x45\x0b\xfa\x0c\xd6\xad\x6e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002734 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002735 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2736 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002737 .rlen = 16,
2738 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002739 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2740 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2741 "\x10\x11\x12\x13\x14\x15\x16\x17"
2742 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002743 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002744 .input = "\x64\xa9\x1a\x37\xed\x9f\xe7\x49"
2745 "\xa8\x4e\x76\xd6\xf5\x0d\x78\xee",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002746 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002747 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2748 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002749 .rlen = 16,
2750 }, { /* KeySize=128, I=121 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002751 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002752 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002753 .input = "\x3d\xda\xbf\xc0\x06\xda\xab\x06"
2754 "\x46\x2a\xf4\xef\x81\x54\x4e\x26",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002755 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002756 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002757 .rlen = 16,
2758 },
2759};
2760
2761
2762/* Cast6 test vectors from RFC 2612 */
2763#define CAST6_ENC_TEST_VECTORS 3
2764#define CAST6_DEC_TEST_VECTORS 3
2765
Herbert Xuef2736f2005-06-22 13:26:03 -07002766static struct cipher_testvec cast6_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002767 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002768 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2769 "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002770 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002771 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002772 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002773 .result = "\xc8\x42\xa0\x89\x72\xb4\x3d\x20"
2774 "\x83\x6c\x91\xd1\xb7\x53\x0f\x6b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002775 .rlen = 16,
2776 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002777 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2778 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2779 "\xba\xc7\x7a\x77\x17\x94\x28\x63",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002780 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002781 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002782 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002783 .result = "\x1b\x38\x6c\x02\x10\xdc\xad\xcb"
2784 "\xdd\x0e\x41\xaa\x08\xa7\xa7\xe8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002785 .rlen = 16,
2786 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002787 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2788 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2789 "\x8d\x7c\x47\xce\x26\x49\x08\x46"
2790 "\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002791 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002792 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002793 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002794 .result = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
2795 "\xc9\x87\x01\x36\x55\x33\x17\xfa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002796 .rlen = 16,
2797 },
2798};
2799
Herbert Xuef2736f2005-06-22 13:26:03 -07002800static struct cipher_testvec cast6_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002801 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002802 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2803 "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002804 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002805 .input = "\xc8\x42\xa0\x89\x72\xb4\x3d\x20"
2806 "\x83\x6c\x91\xd1\xb7\x53\x0f\x6b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002807 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002808 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002809 .rlen = 16,
2810 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002811 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2812 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2813 "\xba\xc7\x7a\x77\x17\x94\x28\x63",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002814 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002815 .input = "\x1b\x38\x6c\x02\x10\xdc\xad\xcb"
2816 "\xdd\x0e\x41\xaa\x08\xa7\xa7\xe8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002817 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002818 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002819 .rlen = 16,
2820 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002821 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2822 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2823 "\x8d\x7c\x47\xce\x26\x49\x08\x46"
2824 "\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002825 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002826 .input = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
2827 "\xc9\x87\x01\x36\x55\x33\x17\xfa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002828 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002829 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002830 .rlen = 16,
2831 },
2832};
2833
2834
2835/*
2836 * AES test vectors.
2837 */
2838#define AES_ENC_TEST_VECTORS 3
2839#define AES_DEC_TEST_VECTORS 3
Jan Glauber9617d6e2007-11-30 15:57:05 +11002840#define AES_CBC_ENC_TEST_VECTORS 4
2841#define AES_CBC_DEC_TEST_VECTORS 4
Rik Snelf3d10442006-11-29 19:01:41 +11002842#define AES_LRW_ENC_TEST_VECTORS 8
2843#define AES_LRW_DEC_TEST_VECTORS 8
Rik Snelf19f5112007-09-19 20:23:13 +08002844#define AES_XTS_ENC_TEST_VECTORS 4
2845#define AES_XTS_DEC_TEST_VECTORS 4
Tan Swee Henga773edb2007-11-30 00:36:07 +11002846#define AES_CTR_ENC_TEST_VECTORS 7
Joy Latten23e353c2007-10-23 08:50:32 +08002847#define AES_CTR_DEC_TEST_VECTORS 6
Mikko Herranen28db8e32007-11-26 22:24:11 +08002848#define AES_GCM_ENC_TEST_VECTORS 9
2849#define AES_GCM_DEC_TEST_VECTORS 8
Joy Latten93cc74e2007-12-12 20:24:22 +08002850#define AES_CCM_ENC_TEST_VECTORS 7
2851#define AES_CCM_DEC_TEST_VECTORS 7
Linus Torvalds1da177e2005-04-16 15:20:36 -07002852
Herbert Xuef2736f2005-06-22 13:26:03 -07002853static struct cipher_testvec aes_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002854 { /* From FIPS-197 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002855 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2856 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002857 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002858 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2859 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002860 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002861 .result = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
2862 "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002863 .rlen = 16,
2864 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002865 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2866 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2867 "\x10\x11\x12\x13\x14\x15\x16\x17",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002868 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002869 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2870 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002871 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002872 .result = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
2873 "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002874 .rlen = 16,
2875 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002876 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2877 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2878 "\x10\x11\x12\x13\x14\x15\x16\x17"
2879 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002880 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002881 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2882 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002883 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002884 .result = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
2885 "\xea\xfc\x49\x90\x4b\x49\x60\x89",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002886 .rlen = 16,
2887 },
2888};
2889
Herbert Xuef2736f2005-06-22 13:26:03 -07002890static struct cipher_testvec aes_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002891 { /* From FIPS-197 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002892 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2893 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002894 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002895 .input = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
2896 "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002897 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002898 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2899 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002900 .rlen = 16,
2901 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002902 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2903 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2904 "\x10\x11\x12\x13\x14\x15\x16\x17",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002905 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002906 .input = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
2907 "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002908 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002909 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2910 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002911 .rlen = 16,
2912 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002913 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2914 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2915 "\x10\x11\x12\x13\x14\x15\x16\x17"
2916 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002917 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002918 .input = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
2919 "\xea\xfc\x49\x90\x4b\x49\x60\x89",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002920 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002921 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2922 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002923 .rlen = 16,
2924 },
2925};
2926
Jan Glauber05f29fc2006-01-06 00:19:19 -08002927static struct cipher_testvec aes_cbc_enc_tv_template[] = {
2928 { /* From RFC 3602 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002929 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
2930 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002931 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002932 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
2933 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
2934 .input = "Single block msg",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002935 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002936 .result = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
2937 "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002938 .rlen = 16,
2939 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002940 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
2941 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002942 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002943 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
2944 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
2945 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2946 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2947 "\x10\x11\x12\x13\x14\x15\x16\x17"
2948 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002949 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002950 .result = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
2951 "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
2952 "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
2953 "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002954 .rlen = 32,
Jan Glauber9617d6e2007-11-30 15:57:05 +11002955 }, { /* From NIST SP800-38A */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002956 .key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
2957 "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
2958 "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002959 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002960 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2961 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2962 .input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2963 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2964 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2965 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2966 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2967 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2968 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2969 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002970 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002971 .result = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
2972 "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
2973 "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
2974 "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
2975 "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
2976 "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
2977 "\x08\xb0\xe2\x79\x88\x59\x88\x81"
2978 "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002979 .rlen = 64,
2980 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002981 .key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
2982 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
2983 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
2984 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002985 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002986 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2987 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2988 .input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2989 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2990 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2991 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2992 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2993 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2994 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2995 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002996 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002997 .result = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
2998 "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
2999 "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
3000 "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
3001 "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
3002 "\xa5\x30\xe2\x63\x04\x23\x14\x61"
3003 "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
3004 "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
Jan Glauber9617d6e2007-11-30 15:57:05 +11003005 .rlen = 64,
Jan Glauber05f29fc2006-01-06 00:19:19 -08003006 },
3007};
3008
3009static struct cipher_testvec aes_cbc_dec_tv_template[] = {
3010 { /* From RFC 3602 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003011 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
3012 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
Jan Glauber05f29fc2006-01-06 00:19:19 -08003013 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003014 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
3015 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
3016 .input = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
3017 "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
Jan Glauber05f29fc2006-01-06 00:19:19 -08003018 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003019 .result = "Single block msg",
Jan Glauber05f29fc2006-01-06 00:19:19 -08003020 .rlen = 16,
3021 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003022 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
3023 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
Jan Glauber05f29fc2006-01-06 00:19:19 -08003024 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003025 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
3026 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
3027 .input = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
3028 "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
3029 "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
3030 "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
Jan Glauber05f29fc2006-01-06 00:19:19 -08003031 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003032 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
3033 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3034 "\x10\x11\x12\x13\x14\x15\x16\x17"
3035 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Jan Glauber05f29fc2006-01-06 00:19:19 -08003036 .rlen = 32,
Jan Glauber9617d6e2007-11-30 15:57:05 +11003037 }, { /* From NIST SP800-38A */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003038 .key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
3039 "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
3040 "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
Jan Glauber9617d6e2007-11-30 15:57:05 +11003041 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003042 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
3043 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
3044 .input = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
3045 "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
3046 "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
3047 "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
3048 "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
3049 "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
3050 "\x08\xb0\xe2\x79\x88\x59\x88\x81"
3051 "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
Jan Glauber9617d6e2007-11-30 15:57:05 +11003052 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003053 .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
3054 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
3055 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
3056 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
3057 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
3058 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
3059 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
3060 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
Jan Glauber9617d6e2007-11-30 15:57:05 +11003061 .rlen = 64,
3062 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003063 .key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
3064 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
3065 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
3066 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
Jan Glauber9617d6e2007-11-30 15:57:05 +11003067 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003068 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
3069 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
3070 .input = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
3071 "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
3072 "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
3073 "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
3074 "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
3075 "\xa5\x30\xe2\x63\x04\x23\x14\x61"
3076 "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
3077 "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
Jan Glauber9617d6e2007-11-30 15:57:05 +11003078 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003079 .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
3080 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
3081 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
3082 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
3083 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
3084 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
3085 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
3086 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
Jan Glauber9617d6e2007-11-30 15:57:05 +11003087 .rlen = 64,
Jan Glauber05f29fc2006-01-06 00:19:19 -08003088 },
3089};
3090
Rik Snelf3d10442006-11-29 19:01:41 +11003091static struct cipher_testvec aes_lrw_enc_tv_template[] = {
3092 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
3093 { /* LRW-32-AES 1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003094 .key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
3095 "\x4c\x26\x84\x14\xb5\x68\x01\x85"
3096 "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
3097 "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
Rik Snelf3d10442006-11-29 19:01:41 +11003098 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003099 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3100 "\x00\x00\x00\x00\x00\x00\x00\x01",
3101 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3102 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003103 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003104 .result = "\xf1\xb2\x73\xcd\x65\xa3\xdf\x5f"
3105 "\xe9\x5d\x48\x92\x54\x63\x4e\xb8",
Rik Snelf3d10442006-11-29 19:01:41 +11003106 .rlen = 16,
3107 }, { /* LRW-32-AES 2 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003108 .key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
3109 "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
3110 "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
3111 "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
Rik Snelf3d10442006-11-29 19:01:41 +11003112 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003113 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3114 "\x00\x00\x00\x00\x00\x00\x00\x02",
3115 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3116 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003117 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003118 .result = "\x00\xc8\x2b\xae\x95\xbb\xcd\xe5"
3119 "\x27\x4f\x07\x69\xb2\x60\xe1\x36",
Rik Snelf3d10442006-11-29 19:01:41 +11003120 .rlen = 16,
3121 }, { /* LRW-32-AES 3 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003122 .key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
3123 "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
3124 "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
3125 "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
Rik Snelf3d10442006-11-29 19:01:41 +11003126 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003127 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3128 "\x00\x00\x00\x02\x00\x00\x00\x00",
3129 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3130 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003131 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003132 .result = "\x76\x32\x21\x83\xed\x8f\xf1\x82"
3133 "\xf9\x59\x62\x03\x69\x0e\x5e\x01",
Rik Snelf3d10442006-11-29 19:01:41 +11003134 .rlen = 16,
3135 }, { /* LRW-32-AES 4 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003136 .key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
3137 "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
3138 "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
3139 "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
3140 "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
Rik Snelf3d10442006-11-29 19:01:41 +11003141 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003142 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3143 "\x00\x00\x00\x00\x00\x00\x00\x01",
3144 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3145 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003146 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003147 .result = "\x9c\x0f\x15\x2f\x55\xa2\xd8\xf0"
3148 "\xd6\x7b\x8f\x9e\x28\x22\xbc\x41",
Rik Snelf3d10442006-11-29 19:01:41 +11003149 .rlen = 16,
3150 }, { /* LRW-32-AES 5 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003151 .key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
3152 "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
3153 "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
3154 "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
3155 "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
Rik Snelf3d10442006-11-29 19:01:41 +11003156 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003157 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3158 "\x00\x00\x00\x02\x00\x00\x00\x00",
3159 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3160 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003161 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003162 .result = "\xd4\x27\x6a\x7f\x14\x91\x3d\x65"
3163 "\xc8\x60\x48\x02\x87\xe3\x34\x06",
Rik Snelf3d10442006-11-29 19:01:41 +11003164 .rlen = 16,
3165 }, { /* LRW-32-AES 6 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003166 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
3167 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
3168 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
3169 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
3170 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
3171 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
Rik Snelf3d10442006-11-29 19:01:41 +11003172 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003173 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3174 "\x00\x00\x00\x00\x00\x00\x00\x01",
3175 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3176 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003177 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003178 .result = "\xbd\x06\xb8\xe1\xdb\x98\x89\x9e"
3179 "\xc4\x98\xe4\x91\xcf\x1c\x70\x2b",
Rik Snelf3d10442006-11-29 19:01:41 +11003180 .rlen = 16,
3181 }, { /* LRW-32-AES 7 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003182 .key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
3183 "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
3184 "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
3185 "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
3186 "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
3187 "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
Rik Snelf3d10442006-11-29 19:01:41 +11003188 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003189 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3190 "\x00\x00\x00\x02\x00\x00\x00\x00",
3191 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
3192 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003193 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003194 .result = "\x5b\x90\x8e\xc1\xab\xdd\x67\x5f"
3195 "\x3d\x69\x8a\x95\x53\xc8\x9c\xe5",
Rik Snelf3d10442006-11-29 19:01:41 +11003196 .rlen = 16,
3197 }, {
3198/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003199 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
3200 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
3201 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
3202 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
3203 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
3204 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
Rik Snelf3d10442006-11-29 19:01:41 +11003205 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003206 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3207 "\x00\x00\x00\x00\x00\x00\x00\x01",
3208 .input = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
3209 "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
3210 "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
3211 "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
3212 "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
3213 "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
3214 "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
3215 "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
3216 "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
3217 "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
3218 "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
3219 "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
3220 "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
3221 "\x4c\x96\x12\xed\x7c\x92\x03\x01"
3222 "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
3223 "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
3224 "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
3225 "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
3226 "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
3227 "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
3228 "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
3229 "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
3230 "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
3231 "\x76\x12\x73\x44\x1a\x56\xd7\x72"
3232 "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
3233 "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
3234 "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
3235 "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
3236 "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
3237 "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
3238 "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
3239 "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
3240 "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
3241 "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
3242 "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
3243 "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
3244 "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
3245 "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
3246 "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
3247 "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
3248 "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
3249 "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
3250 "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
3251 "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
3252 "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
3253 "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
3254 "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
3255 "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
3256 "\x62\x73\x65\xfd\x46\x63\x25\x3d"
3257 "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
3258 "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
3259 "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
3260 "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
3261 "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
3262 "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
3263 "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
3264 "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
3265 "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
3266 "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
3267 "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
3268 "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
3269 "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
3270 "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
3271 "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
Rik Snelf3d10442006-11-29 19:01:41 +11003272 .ilen = 512,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003273 .result = "\x1a\x1d\xa9\x30\xad\xf9\x2f\x9b"
3274 "\xb6\x1d\xae\xef\xf0\x2f\xf8\x5a"
3275 "\x39\x3c\xbf\x2a\xb2\x45\xb2\x23"
3276 "\x1b\x63\x3c\xcf\xaa\xbe\xcf\x4e"
3277 "\xfa\xe8\x29\xc2\x20\x68\x2b\x3c"
3278 "\x2e\x8b\xf7\x6e\x25\xbd\xe3\x3d"
3279 "\x66\x27\xd6\xaf\xd6\x64\x3e\xe3"
3280 "\xe8\x58\x46\x97\x39\x51\x07\xde"
3281 "\xcb\x37\xbc\xa9\xc0\x5f\x75\xc3"
3282 "\x0e\x84\x23\x1d\x16\xd4\x1c\x59"
3283 "\x9c\x1a\x02\x55\xab\x3a\x97\x1d"
3284 "\xdf\xdd\xc7\x06\x51\xd7\x70\xae"
3285 "\x23\xc6\x8c\xf5\x1e\xa0\xe5\x82"
3286 "\xb8\xb2\xbf\x04\xa0\x32\x8e\x68"
3287 "\xeb\xaf\x6e\x2d\x94\x22\x2f\xce"
3288 "\x4c\xb5\x59\xe2\xa2\x2f\xa0\x98"
3289 "\x1a\x97\xc6\xd4\xb5\x00\x59\xf2"
3290 "\x84\x14\x72\xb1\x9a\x6e\xa3\x7f"
3291 "\xea\x20\xe7\xcb\x65\x77\x3a\xdf"
3292 "\xc8\x97\x67\x15\xc2\x2a\x27\xcc"
3293 "\x18\x55\xa1\x24\x0b\x24\x24\xaf"
3294 "\x5b\xec\x68\xb8\xc8\xf5\xba\x63"
3295 "\xff\xed\x89\xce\xd5\x3d\x88\xf3"
3296 "\x25\xef\x05\x7c\x3a\xef\xeb\xd8"
3297 "\x7a\x32\x0d\xd1\x1e\x58\x59\x99"
3298 "\x90\x25\xb5\x26\xb0\xe3\x2b\x6c"
3299 "\x4c\xa9\x8b\x84\x4f\x5e\x01\x50"
3300 "\x41\x30\x58\xc5\x62\x74\x52\x1d"
3301 "\x45\x24\x6a\x42\x64\x4f\x97\x1c"
3302 "\xa8\x66\xb5\x6d\x79\xd4\x0d\x48"
3303 "\xc5\x5f\xf3\x90\x32\xdd\xdd\xe1"
3304 "\xe4\xa9\x9f\xfc\xc3\x52\x5a\x46"
3305 "\xe4\x81\x84\x95\x36\x59\x7a\x6b"
3306 "\xaa\xb3\x60\xad\xce\x9f\x9f\x28"
3307 "\xe0\x01\x75\x22\xc4\x4e\xa9\x62"
3308 "\x5c\x62\x0d\x00\xcb\x13\xe8\x43"
3309 "\x72\xd4\x2d\x53\x46\xb5\xd1\x16"
3310 "\x22\x18\xdf\x34\x33\xf5\xd6\x1c"
3311 "\xb8\x79\x78\x97\x94\xff\x72\x13"
3312 "\x4c\x27\xfc\xcb\xbf\x01\x53\xa6"
3313 "\xb4\x50\x6e\xde\xdf\xb5\x43\xa4"
3314 "\x59\xdf\x52\xf9\x7c\xe0\x11\x6f"
3315 "\x2d\x14\x8e\x24\x61\x2c\xe1\x17"
3316 "\xcc\xce\x51\x0c\x19\x8a\x82\x30"
3317 "\x94\xd5\x3d\x6a\x53\x06\x5e\xbd"
3318 "\xb7\xeb\xfa\xfd\x27\x51\xde\x85"
3319 "\x1e\x86\x53\x11\x53\x94\x00\xee"
3320 "\x2b\x8c\x08\x2a\xbf\xdd\xae\x11"
3321 "\xcb\x1e\xa2\x07\x9a\x80\xcf\x62"
3322 "\x9b\x09\xdc\x95\x3c\x96\x8e\xb1"
3323 "\x09\xbd\xe4\xeb\xdb\xca\x70\x7a"
3324 "\x9e\xfa\x31\x18\x45\x3c\x21\x33"
3325 "\xb0\xb3\x2b\xea\xf3\x71\x2d\xe1"
3326 "\x03\xad\x1b\x48\xd4\x67\x27\xf0"
3327 "\x62\xe4\x3d\xfb\x9b\x08\x76\xe7"
3328 "\xdd\x2b\x01\x39\x04\x5a\x58\x7a"
3329 "\xf7\x11\x90\xec\xbd\x51\x5c\x32"
3330 "\x6b\xd7\x35\x39\x02\x6b\xf2\xa6"
3331 "\xd0\x0d\x07\xe1\x06\xc4\x5b\x7d"
3332 "\xe4\x6a\xd7\xee\x15\x1f\x83\xb4"
3333 "\xa3\xa7\x5e\xc3\x90\xb7\xef\xd3"
3334 "\xb7\x4f\xf8\x92\x4c\xb7\x3c\x29"
3335 "\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
3336 "\x74\x3f\x7d\x58\x88\x75\xde\x3e",
Rik Snelf3d10442006-11-29 19:01:41 +11003337 .rlen = 512,
3338 }
3339};
3340
3341static struct cipher_testvec aes_lrw_dec_tv_template[] = {
3342 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
3343 /* same as enc vectors with input and result reversed */
3344 { /* LRW-32-AES 1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003345 .key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
3346 "\x4c\x26\x84\x14\xb5\x68\x01\x85"
3347 "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
3348 "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
Rik Snelf3d10442006-11-29 19:01:41 +11003349 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003350 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3351 "\x00\x00\x00\x00\x00\x00\x00\x01",
3352 .input = "\xf1\xb2\x73\xcd\x65\xa3\xdf\x5f"
3353 "\xe9\x5d\x48\x92\x54\x63\x4e\xb8",
Rik Snelf3d10442006-11-29 19:01:41 +11003354 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003355 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3356 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003357 .rlen = 16,
3358 }, { /* LRW-32-AES 2 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003359 .key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
3360 "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
3361 "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
3362 "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
Rik Snelf3d10442006-11-29 19:01:41 +11003363 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003364 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3365 "\x00\x00\x00\x00\x00\x00\x00\x02",
3366 .input = "\x00\xc8\x2b\xae\x95\xbb\xcd\xe5"
3367 "\x27\x4f\x07\x69\xb2\x60\xe1\x36",
Rik Snelf3d10442006-11-29 19:01:41 +11003368 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003369 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3370 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003371 .rlen = 16,
3372 }, { /* LRW-32-AES 3 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003373 .key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
3374 "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
3375 "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
3376 "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
Rik Snelf3d10442006-11-29 19:01:41 +11003377 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003378 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3379 "\x00\x00\x00\x02\x00\x00\x00\x00",
3380 .input = "\x76\x32\x21\x83\xed\x8f\xf1\x82"
3381 "\xf9\x59\x62\x03\x69\x0e\x5e\x01",
Rik Snelf3d10442006-11-29 19:01:41 +11003382 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003383 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3384 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003385 .rlen = 16,
3386 }, { /* LRW-32-AES 4 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003387 .key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
3388 "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
3389 "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
3390 "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
3391 "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
Rik Snelf3d10442006-11-29 19:01:41 +11003392 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003393 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3394 "\x00\x00\x00\x00\x00\x00\x00\x01",
3395 .input = "\x9c\x0f\x15\x2f\x55\xa2\xd8\xf0"
3396 "\xd6\x7b\x8f\x9e\x28\x22\xbc\x41",
Rik Snelf3d10442006-11-29 19:01:41 +11003397 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003398 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3399 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003400 .rlen = 16,
3401 }, { /* LRW-32-AES 5 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003402 .key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
3403 "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
3404 "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
3405 "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
3406 "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
Rik Snelf3d10442006-11-29 19:01:41 +11003407 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003408 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3409 "\x00\x00\x00\x02\x00\x00\x00\x00",
3410 .input = "\xd4\x27\x6a\x7f\x14\x91\x3d\x65"
3411 "\xc8\x60\x48\x02\x87\xe3\x34\x06",
Rik Snelf3d10442006-11-29 19:01:41 +11003412 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003413 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3414 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003415 .rlen = 16,
3416 }, { /* LRW-32-AES 6 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003417 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
3418 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
3419 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
3420 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
3421 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
3422 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
Rik Snelf3d10442006-11-29 19:01:41 +11003423 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003424 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3425 "\x00\x00\x00\x00\x00\x00\x00\x01",
3426 .input = "\xbd\x06\xb8\xe1\xdb\x98\x89\x9e"
3427 "\xc4\x98\xe4\x91\xcf\x1c\x70\x2b",
Rik Snelf3d10442006-11-29 19:01:41 +11003428 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003429 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3430 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003431 .rlen = 16,
3432 }, { /* LRW-32-AES 7 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003433 .key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
3434 "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
3435 "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
3436 "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
3437 "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
3438 "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
Rik Snelf3d10442006-11-29 19:01:41 +11003439 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003440 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3441 "\x00\x00\x00\x02\x00\x00\x00\x00",
3442 .input = "\x5b\x90\x8e\xc1\xab\xdd\x67\x5f"
3443 "\x3d\x69\x8a\x95\x53\xc8\x9c\xe5",
Rik Snelf3d10442006-11-29 19:01:41 +11003444 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003445 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3446 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003447 .rlen = 16,
3448 }, {
3449/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003450 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
3451 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
3452 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
3453 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
3454 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
3455 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
Rik Snelf3d10442006-11-29 19:01:41 +11003456 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003457 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3458 "\x00\x00\x00\x00\x00\x00\x00\x01",
3459 .input = "\x1a\x1d\xa9\x30\xad\xf9\x2f\x9b"
3460 "\xb6\x1d\xae\xef\xf0\x2f\xf8\x5a"
3461 "\x39\x3c\xbf\x2a\xb2\x45\xb2\x23"
3462 "\x1b\x63\x3c\xcf\xaa\xbe\xcf\x4e"
3463 "\xfa\xe8\x29\xc2\x20\x68\x2b\x3c"
3464 "\x2e\x8b\xf7\x6e\x25\xbd\xe3\x3d"
3465 "\x66\x27\xd6\xaf\xd6\x64\x3e\xe3"
3466 "\xe8\x58\x46\x97\x39\x51\x07\xde"
3467 "\xcb\x37\xbc\xa9\xc0\x5f\x75\xc3"
3468 "\x0e\x84\x23\x1d\x16\xd4\x1c\x59"
3469 "\x9c\x1a\x02\x55\xab\x3a\x97\x1d"
3470 "\xdf\xdd\xc7\x06\x51\xd7\x70\xae"
3471 "\x23\xc6\x8c\xf5\x1e\xa0\xe5\x82"
3472 "\xb8\xb2\xbf\x04\xa0\x32\x8e\x68"
3473 "\xeb\xaf\x6e\x2d\x94\x22\x2f\xce"
3474 "\x4c\xb5\x59\xe2\xa2\x2f\xa0\x98"
3475 "\x1a\x97\xc6\xd4\xb5\x00\x59\xf2"
3476 "\x84\x14\x72\xb1\x9a\x6e\xa3\x7f"
3477 "\xea\x20\xe7\xcb\x65\x77\x3a\xdf"
3478 "\xc8\x97\x67\x15\xc2\x2a\x27\xcc"
3479 "\x18\x55\xa1\x24\x0b\x24\x24\xaf"
3480 "\x5b\xec\x68\xb8\xc8\xf5\xba\x63"
3481 "\xff\xed\x89\xce\xd5\x3d\x88\xf3"
3482 "\x25\xef\x05\x7c\x3a\xef\xeb\xd8"
3483 "\x7a\x32\x0d\xd1\x1e\x58\x59\x99"
3484 "\x90\x25\xb5\x26\xb0\xe3\x2b\x6c"
3485 "\x4c\xa9\x8b\x84\x4f\x5e\x01\x50"
3486 "\x41\x30\x58\xc5\x62\x74\x52\x1d"
3487 "\x45\x24\x6a\x42\x64\x4f\x97\x1c"
3488 "\xa8\x66\xb5\x6d\x79\xd4\x0d\x48"
3489 "\xc5\x5f\xf3\x90\x32\xdd\xdd\xe1"
3490 "\xe4\xa9\x9f\xfc\xc3\x52\x5a\x46"
3491 "\xe4\x81\x84\x95\x36\x59\x7a\x6b"
3492 "\xaa\xb3\x60\xad\xce\x9f\x9f\x28"
3493 "\xe0\x01\x75\x22\xc4\x4e\xa9\x62"
3494 "\x5c\x62\x0d\x00\xcb\x13\xe8\x43"
3495 "\x72\xd4\x2d\x53\x46\xb5\xd1\x16"
3496 "\x22\x18\xdf\x34\x33\xf5\xd6\x1c"
3497 "\xb8\x79\x78\x97\x94\xff\x72\x13"
3498 "\x4c\x27\xfc\xcb\xbf\x01\x53\xa6"
3499 "\xb4\x50\x6e\xde\xdf\xb5\x43\xa4"
3500 "\x59\xdf\x52\xf9\x7c\xe0\x11\x6f"
3501 "\x2d\x14\x8e\x24\x61\x2c\xe1\x17"
3502 "\xcc\xce\x51\x0c\x19\x8a\x82\x30"
3503 "\x94\xd5\x3d\x6a\x53\x06\x5e\xbd"
3504 "\xb7\xeb\xfa\xfd\x27\x51\xde\x85"
3505 "\x1e\x86\x53\x11\x53\x94\x00\xee"
3506 "\x2b\x8c\x08\x2a\xbf\xdd\xae\x11"
3507 "\xcb\x1e\xa2\x07\x9a\x80\xcf\x62"
3508 "\x9b\x09\xdc\x95\x3c\x96\x8e\xb1"
3509 "\x09\xbd\xe4\xeb\xdb\xca\x70\x7a"
3510 "\x9e\xfa\x31\x18\x45\x3c\x21\x33"
3511 "\xb0\xb3\x2b\xea\xf3\x71\x2d\xe1"
3512 "\x03\xad\x1b\x48\xd4\x67\x27\xf0"
3513 "\x62\xe4\x3d\xfb\x9b\x08\x76\xe7"
3514 "\xdd\x2b\x01\x39\x04\x5a\x58\x7a"
3515 "\xf7\x11\x90\xec\xbd\x51\x5c\x32"
3516 "\x6b\xd7\x35\x39\x02\x6b\xf2\xa6"
3517 "\xd0\x0d\x07\xe1\x06\xc4\x5b\x7d"
3518 "\xe4\x6a\xd7\xee\x15\x1f\x83\xb4"
3519 "\xa3\xa7\x5e\xc3\x90\xb7\xef\xd3"
3520 "\xb7\x4f\xf8\x92\x4c\xb7\x3c\x29"
3521 "\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
3522 "\x74\x3f\x7d\x58\x88\x75\xde\x3e",
Rik Snelf3d10442006-11-29 19:01:41 +11003523 .ilen = 512,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003524 .result = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
3525 "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
3526 "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
3527 "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
3528 "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
3529 "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
3530 "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
3531 "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
3532 "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
3533 "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
3534 "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
3535 "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
3536 "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
3537 "\x4c\x96\x12\xed\x7c\x92\x03\x01"
3538 "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
3539 "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
3540 "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
3541 "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
3542 "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
3543 "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
3544 "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
3545 "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
3546 "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
3547 "\x76\x12\x73\x44\x1a\x56\xd7\x72"
3548 "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
3549 "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
3550 "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
3551 "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
3552 "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
3553 "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
3554 "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
3555 "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
3556 "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
3557 "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
3558 "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
3559 "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
3560 "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
3561 "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
3562 "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
3563 "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
3564 "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
3565 "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
3566 "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
3567 "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
3568 "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
3569 "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
3570 "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
3571 "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
3572 "\x62\x73\x65\xfd\x46\x63\x25\x3d"
3573 "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
3574 "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
3575 "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
3576 "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
3577 "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
3578 "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
3579 "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
3580 "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
3581 "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
3582 "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
3583 "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
3584 "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
3585 "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
3586 "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
3587 "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
Rik Snelf3d10442006-11-29 19:01:41 +11003588 .rlen = 512,
3589 }
3590};
3591
Rik Snelf19f5112007-09-19 20:23:13 +08003592static struct cipher_testvec aes_xts_enc_tv_template[] = {
3593 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
3594 { /* XTS-AES 1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003595 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
3596 "\x00\x00\x00\x00\x00\x00\x00\x00"
3597 "\x00\x00\x00\x00\x00\x00\x00\x00"
3598 "\x00\x00\x00\x00\x00\x00\x00\x00",
Rik Snelf19f5112007-09-19 20:23:13 +08003599 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003600 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3601 "\x00\x00\x00\x00\x00\x00\x00\x00",
3602 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
3603 "\x00\x00\x00\x00\x00\x00\x00\x00"
3604 "\x00\x00\x00\x00\x00\x00\x00\x00"
3605 "\x00\x00\x00\x00\x00\x00\x00\x00",
Rik Snelf19f5112007-09-19 20:23:13 +08003606 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003607 .result = "\x91\x7c\xf6\x9e\xbd\x68\xb2\xec"
3608 "\x9b\x9f\xe9\xa3\xea\xdd\xa6\x92"
3609 "\xcd\x43\xd2\xf5\x95\x98\xed\x85"
3610 "\x8c\x02\xc2\x65\x2f\xbf\x92\x2e",
Rik Snelf19f5112007-09-19 20:23:13 +08003611 .rlen = 32,
3612 }, { /* XTS-AES 2 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003613 .key = "\x11\x11\x11\x11\x11\x11\x11\x11"
3614 "\x11\x11\x11\x11\x11\x11\x11\x11"
3615 "\x22\x22\x22\x22\x22\x22\x22\x22"
3616 "\x22\x22\x22\x22\x22\x22\x22\x22",
Rik Snelf19f5112007-09-19 20:23:13 +08003617 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003618 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3619 "\x00\x00\x00\x00\x00\x00\x00\x00",
3620 .input = "\x44\x44\x44\x44\x44\x44\x44\x44"
3621 "\x44\x44\x44\x44\x44\x44\x44\x44"
3622 "\x44\x44\x44\x44\x44\x44\x44\x44"
3623 "\x44\x44\x44\x44\x44\x44\x44\x44",
Rik Snelf19f5112007-09-19 20:23:13 +08003624 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003625 .result = "\xc4\x54\x18\x5e\x6a\x16\x93\x6e"
3626 "\x39\x33\x40\x38\xac\xef\x83\x8b"
3627 "\xfb\x18\x6f\xff\x74\x80\xad\xc4"
3628 "\x28\x93\x82\xec\xd6\xd3\x94\xf0",
Rik Snelf19f5112007-09-19 20:23:13 +08003629 .rlen = 32,
3630 }, { /* XTS-AES 3 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003631 .key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
3632 "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
3633 "\x22\x22\x22\x22\x22\x22\x22\x22"
3634 "\x22\x22\x22\x22\x22\x22\x22\x22",
Rik Snelf19f5112007-09-19 20:23:13 +08003635 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003636 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3637 "\x00\x00\x00\x00\x00\x00\x00\x00",
3638 .input = "\x44\x44\x44\x44\x44\x44\x44\x44"
3639 "\x44\x44\x44\x44\x44\x44\x44\x44"
3640 "\x44\x44\x44\x44\x44\x44\x44\x44"
3641 "\x44\x44\x44\x44\x44\x44\x44\x44",
Rik Snelf19f5112007-09-19 20:23:13 +08003642 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003643 .result = "\xaf\x85\x33\x6b\x59\x7a\xfc\x1a"
3644 "\x90\x0b\x2e\xb2\x1e\xc9\x49\xd2"
3645 "\x92\xdf\x4c\x04\x7e\x0b\x21\x53"
3646 "\x21\x86\xa5\x97\x1a\x22\x7a\x89",
Rik Snelf19f5112007-09-19 20:23:13 +08003647 .rlen = 32,
3648 }, { /* XTS-AES 4 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003649 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
3650 "\x23\x53\x60\x28\x74\x71\x35\x26"
3651 "\x31\x41\x59\x26\x53\x58\x97\x93"
3652 "\x23\x84\x62\x64\x33\x83\x27\x95",
Rik Snelf19f5112007-09-19 20:23:13 +08003653 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003654 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3655 "\x00\x00\x00\x00\x00\x00\x00\x00",
3656 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3657 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3658 "\x10\x11\x12\x13\x14\x15\x16\x17"
3659 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3660 "\x20\x21\x22\x23\x24\x25\x26\x27"
3661 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3662 "\x30\x31\x32\x33\x34\x35\x36\x37"
3663 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3664 "\x40\x41\x42\x43\x44\x45\x46\x47"
3665 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3666 "\x50\x51\x52\x53\x54\x55\x56\x57"
3667 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3668 "\x60\x61\x62\x63\x64\x65\x66\x67"
3669 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3670 "\x70\x71\x72\x73\x74\x75\x76\x77"
3671 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3672 "\x80\x81\x82\x83\x84\x85\x86\x87"
3673 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3674 "\x90\x91\x92\x93\x94\x95\x96\x97"
3675 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3676 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3677 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3678 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3679 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3680 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3681 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3682 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3683 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3684 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3685 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3686 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3687 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3688 "\x00\x01\x02\x03\x04\x05\x06\x07"
3689 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3690 "\x10\x11\x12\x13\x14\x15\x16\x17"
3691 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3692 "\x20\x21\x22\x23\x24\x25\x26\x27"
3693 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3694 "\x30\x31\x32\x33\x34\x35\x36\x37"
3695 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3696 "\x40\x41\x42\x43\x44\x45\x46\x47"
3697 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3698 "\x50\x51\x52\x53\x54\x55\x56\x57"
3699 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3700 "\x60\x61\x62\x63\x64\x65\x66\x67"
3701 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3702 "\x70\x71\x72\x73\x74\x75\x76\x77"
3703 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3704 "\x80\x81\x82\x83\x84\x85\x86\x87"
3705 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3706 "\x90\x91\x92\x93\x94\x95\x96\x97"
3707 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3708 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3709 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3710 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3711 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3712 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3713 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3714 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3715 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3716 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3717 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3718 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3719 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
Rik Snelf19f5112007-09-19 20:23:13 +08003720 .ilen = 512,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003721 .result = "\x27\xa7\x47\x9b\xef\xa1\xd4\x76"
3722 "\x48\x9f\x30\x8c\xd4\xcf\xa6\xe2"
3723 "\xa9\x6e\x4b\xbe\x32\x08\xff\x25"
3724 "\x28\x7d\xd3\x81\x96\x16\xe8\x9c"
3725 "\xc7\x8c\xf7\xf5\xe5\x43\x44\x5f"
3726 "\x83\x33\xd8\xfa\x7f\x56\x00\x00"
3727 "\x05\x27\x9f\xa5\xd8\xb5\xe4\xad"
3728 "\x40\xe7\x36\xdd\xb4\xd3\x54\x12"
3729 "\x32\x80\x63\xfd\x2a\xab\x53\xe5"
3730 "\xea\x1e\x0a\x9f\x33\x25\x00\xa5"
3731 "\xdf\x94\x87\xd0\x7a\x5c\x92\xcc"
3732 "\x51\x2c\x88\x66\xc7\xe8\x60\xce"
3733 "\x93\xfd\xf1\x66\xa2\x49\x12\xb4"
3734 "\x22\x97\x61\x46\xae\x20\xce\x84"
3735 "\x6b\xb7\xdc\x9b\xa9\x4a\x76\x7a"
3736 "\xae\xf2\x0c\x0d\x61\xad\x02\x65"
3737 "\x5e\xa9\x2d\xc4\xc4\xe4\x1a\x89"
3738 "\x52\xc6\x51\xd3\x31\x74\xbe\x51"
3739 "\xa1\x0c\x42\x11\x10\xe6\xd8\x15"
3740 "\x88\xed\xe8\x21\x03\xa2\x52\xd8"
3741 "\xa7\x50\xe8\x76\x8d\xef\xff\xed"
3742 "\x91\x22\x81\x0a\xae\xb9\x9f\x91"
3743 "\x72\xaf\x82\xb6\x04\xdc\x4b\x8e"
3744 "\x51\xbc\xb0\x82\x35\xa6\xf4\x34"
3745 "\x13\x32\xe4\xca\x60\x48\x2a\x4b"
3746 "\xa1\xa0\x3b\x3e\x65\x00\x8f\xc5"
3747 "\xda\x76\xb7\x0b\xf1\x69\x0d\xb4"
3748 "\xea\xe2\x9c\x5f\x1b\xad\xd0\x3c"
3749 "\x5c\xcf\x2a\x55\xd7\x05\xdd\xcd"
3750 "\x86\xd4\x49\x51\x1c\xeb\x7e\xc3"
3751 "\x0b\xf1\x2b\x1f\xa3\x5b\x91\x3f"
3752 "\x9f\x74\x7a\x8a\xfd\x1b\x13\x0e"
3753 "\x94\xbf\xf9\x4e\xff\xd0\x1a\x91"
3754 "\x73\x5c\xa1\x72\x6a\xcd\x0b\x19"
3755 "\x7c\x4e\x5b\x03\x39\x36\x97\xe1"
3756 "\x26\x82\x6f\xb6\xbb\xde\x8e\xcc"
3757 "\x1e\x08\x29\x85\x16\xe2\xc9\xed"
3758 "\x03\xff\x3c\x1b\x78\x60\xf6\xde"
3759 "\x76\xd4\xce\xcd\x94\xc8\x11\x98"
3760 "\x55\xef\x52\x97\xca\x67\xe9\xf3"
3761 "\xe7\xff\x72\xb1\xe9\x97\x85\xca"
3762 "\x0a\x7e\x77\x20\xc5\xb3\x6d\xc6"
3763 "\xd7\x2c\xac\x95\x74\xc8\xcb\xbc"
3764 "\x2f\x80\x1e\x23\xe5\x6f\xd3\x44"
3765 "\xb0\x7f\x22\x15\x4b\xeb\xa0\xf0"
3766 "\x8c\xe8\x89\x1e\x64\x3e\xd9\x95"
3767 "\xc9\x4d\x9a\x69\xc9\xf1\xb5\xf4"
3768 "\x99\x02\x7a\x78\x57\x2a\xee\xbd"
3769 "\x74\xd2\x0c\xc3\x98\x81\xc2\x13"
3770 "\xee\x77\x0b\x10\x10\xe4\xbe\xa7"
3771 "\x18\x84\x69\x77\xae\x11\x9f\x7a"
3772 "\x02\x3a\xb5\x8c\xca\x0a\xd7\x52"
3773 "\xaf\xe6\x56\xbb\x3c\x17\x25\x6a"
3774 "\x9f\x6e\x9b\xf1\x9f\xdd\x5a\x38"
3775 "\xfc\x82\xbb\xe8\x72\xc5\x53\x9e"
3776 "\xdb\x60\x9e\xf4\xf7\x9c\x20\x3e"
3777 "\xbb\x14\x0f\x2e\x58\x3c\xb2\xad"
3778 "\x15\xb4\xaa\x5b\x65\x50\x16\xa8"
3779 "\x44\x92\x77\xdb\xd4\x77\xef\x2c"
3780 "\x8d\x6c\x01\x7d\xb7\x38\xb1\x8d"
3781 "\xeb\x4a\x42\x7d\x19\x23\xce\x3f"
3782 "\xf2\x62\x73\x57\x79\xa4\x18\xf2"
3783 "\x0a\x28\x2d\xf9\x20\x14\x7b\xea"
3784 "\xbe\x42\x1e\xe5\x31\x9d\x05\x68",
Rik Snelf19f5112007-09-19 20:23:13 +08003785 .rlen = 512,
3786 }
3787};
3788
3789static struct cipher_testvec aes_xts_dec_tv_template[] = {
3790 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
3791 { /* XTS-AES 1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003792 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
3793 "\x00\x00\x00\x00\x00\x00\x00\x00"
3794 "\x00\x00\x00\x00\x00\x00\x00\x00"
3795 "\x00\x00\x00\x00\x00\x00\x00\x00",
Rik Snelf19f5112007-09-19 20:23:13 +08003796 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003797 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3798 "\x00\x00\x00\x00\x00\x00\x00\x00",
3799 .input = "\x91\x7c\xf6\x9e\xbd\x68\xb2\xec"
3800 "\x9b\x9f\xe9\xa3\xea\xdd\xa6\x92"
3801 "\xcd\x43\xd2\xf5\x95\x98\xed\x85"
3802 "\x8c\x02\xc2\x65\x2f\xbf\x92\x2e",
Rik Snelf19f5112007-09-19 20:23:13 +08003803 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003804 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
3805 "\x00\x00\x00\x00\x00\x00\x00\x00"
3806 "\x00\x00\x00\x00\x00\x00\x00\x00"
3807 "\x00\x00\x00\x00\x00\x00\x00\x00",
Rik Snelf19f5112007-09-19 20:23:13 +08003808 .rlen = 32,
3809 }, { /* XTS-AES 2 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003810 .key = "\x11\x11\x11\x11\x11\x11\x11\x11"
3811 "\x11\x11\x11\x11\x11\x11\x11\x11"
3812 "\x22\x22\x22\x22\x22\x22\x22\x22"
3813 "\x22\x22\x22\x22\x22\x22\x22\x22",
Rik Snelf19f5112007-09-19 20:23:13 +08003814 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003815 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3816 "\x00\x00\x00\x00\x00\x00\x00\x00",
3817 .input = "\xc4\x54\x18\x5e\x6a\x16\x93\x6e"
3818 "\x39\x33\x40\x38\xac\xef\x83\x8b"
3819 "\xfb\x18\x6f\xff\x74\x80\xad\xc4"
3820 "\x28\x93\x82\xec\xd6\xd3\x94\xf0",
Rik Snelf19f5112007-09-19 20:23:13 +08003821 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003822 .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
3823 "\x44\x44\x44\x44\x44\x44\x44\x44"
3824 "\x44\x44\x44\x44\x44\x44\x44\x44"
3825 "\x44\x44\x44\x44\x44\x44\x44\x44",
Rik Snelf19f5112007-09-19 20:23:13 +08003826 .rlen = 32,
3827 }, { /* XTS-AES 3 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003828 .key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
3829 "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
3830 "\x22\x22\x22\x22\x22\x22\x22\x22"
3831 "\x22\x22\x22\x22\x22\x22\x22\x22",
Rik Snelf19f5112007-09-19 20:23:13 +08003832 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003833 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3834 "\x00\x00\x00\x00\x00\x00\x00\x00",
3835 .input = "\xaf\x85\x33\x6b\x59\x7a\xfc\x1a"
3836 "\x90\x0b\x2e\xb2\x1e\xc9\x49\xd2"
3837 "\x92\xdf\x4c\x04\x7e\x0b\x21\x53"
3838 "\x21\x86\xa5\x97\x1a\x22\x7a\x89",
Rik Snelf19f5112007-09-19 20:23:13 +08003839 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003840 .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
3841 "\x44\x44\x44\x44\x44\x44\x44\x44"
3842 "\x44\x44\x44\x44\x44\x44\x44\x44"
3843 "\x44\x44\x44\x44\x44\x44\x44\x44",
Rik Snelf19f5112007-09-19 20:23:13 +08003844 .rlen = 32,
3845 }, { /* XTS-AES 4 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003846 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
3847 "\x23\x53\x60\x28\x74\x71\x35\x26"
3848 "\x31\x41\x59\x26\x53\x58\x97\x93"
3849 "\x23\x84\x62\x64\x33\x83\x27\x95",
Rik Snelf19f5112007-09-19 20:23:13 +08003850 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003851 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3852 "\x00\x00\x00\x00\x00\x00\x00\x00",
3853 .input = "\x27\xa7\x47\x9b\xef\xa1\xd4\x76"
3854 "\x48\x9f\x30\x8c\xd4\xcf\xa6\xe2"
3855 "\xa9\x6e\x4b\xbe\x32\x08\xff\x25"
3856 "\x28\x7d\xd3\x81\x96\x16\xe8\x9c"
3857 "\xc7\x8c\xf7\xf5\xe5\x43\x44\x5f"
3858 "\x83\x33\xd8\xfa\x7f\x56\x00\x00"
3859 "\x05\x27\x9f\xa5\xd8\xb5\xe4\xad"
3860 "\x40\xe7\x36\xdd\xb4\xd3\x54\x12"
3861 "\x32\x80\x63\xfd\x2a\xab\x53\xe5"
3862 "\xea\x1e\x0a\x9f\x33\x25\x00\xa5"
3863 "\xdf\x94\x87\xd0\x7a\x5c\x92\xcc"
3864 "\x51\x2c\x88\x66\xc7\xe8\x60\xce"
3865 "\x93\xfd\xf1\x66\xa2\x49\x12\xb4"
3866 "\x22\x97\x61\x46\xae\x20\xce\x84"
3867 "\x6b\xb7\xdc\x9b\xa9\x4a\x76\x7a"
3868 "\xae\xf2\x0c\x0d\x61\xad\x02\x65"
3869 "\x5e\xa9\x2d\xc4\xc4\xe4\x1a\x89"
3870 "\x52\xc6\x51\xd3\x31\x74\xbe\x51"
3871 "\xa1\x0c\x42\x11\x10\xe6\xd8\x15"
3872 "\x88\xed\xe8\x21\x03\xa2\x52\xd8"
3873 "\xa7\x50\xe8\x76\x8d\xef\xff\xed"
3874 "\x91\x22\x81\x0a\xae\xb9\x9f\x91"
3875 "\x72\xaf\x82\xb6\x04\xdc\x4b\x8e"
3876 "\x51\xbc\xb0\x82\x35\xa6\xf4\x34"
3877 "\x13\x32\xe4\xca\x60\x48\x2a\x4b"
3878 "\xa1\xa0\x3b\x3e\x65\x00\x8f\xc5"
3879 "\xda\x76\xb7\x0b\xf1\x69\x0d\xb4"
3880 "\xea\xe2\x9c\x5f\x1b\xad\xd0\x3c"
3881 "\x5c\xcf\x2a\x55\xd7\x05\xdd\xcd"
3882 "\x86\xd4\x49\x51\x1c\xeb\x7e\xc3"
3883 "\x0b\xf1\x2b\x1f\xa3\x5b\x91\x3f"
3884 "\x9f\x74\x7a\x8a\xfd\x1b\x13\x0e"
3885 "\x94\xbf\xf9\x4e\xff\xd0\x1a\x91"
3886 "\x73\x5c\xa1\x72\x6a\xcd\x0b\x19"
3887 "\x7c\x4e\x5b\x03\x39\x36\x97\xe1"
3888 "\x26\x82\x6f\xb6\xbb\xde\x8e\xcc"
3889 "\x1e\x08\x29\x85\x16\xe2\xc9\xed"
3890 "\x03\xff\x3c\x1b\x78\x60\xf6\xde"
3891 "\x76\xd4\xce\xcd\x94\xc8\x11\x98"
3892 "\x55\xef\x52\x97\xca\x67\xe9\xf3"
3893 "\xe7\xff\x72\xb1\xe9\x97\x85\xca"
3894 "\x0a\x7e\x77\x20\xc5\xb3\x6d\xc6"
3895 "\xd7\x2c\xac\x95\x74\xc8\xcb\xbc"
3896 "\x2f\x80\x1e\x23\xe5\x6f\xd3\x44"
3897 "\xb0\x7f\x22\x15\x4b\xeb\xa0\xf0"
3898 "\x8c\xe8\x89\x1e\x64\x3e\xd9\x95"
3899 "\xc9\x4d\x9a\x69\xc9\xf1\xb5\xf4"
3900 "\x99\x02\x7a\x78\x57\x2a\xee\xbd"
3901 "\x74\xd2\x0c\xc3\x98\x81\xc2\x13"
3902 "\xee\x77\x0b\x10\x10\xe4\xbe\xa7"
3903 "\x18\x84\x69\x77\xae\x11\x9f\x7a"
3904 "\x02\x3a\xb5\x8c\xca\x0a\xd7\x52"
3905 "\xaf\xe6\x56\xbb\x3c\x17\x25\x6a"
3906 "\x9f\x6e\x9b\xf1\x9f\xdd\x5a\x38"
3907 "\xfc\x82\xbb\xe8\x72\xc5\x53\x9e"
3908 "\xdb\x60\x9e\xf4\xf7\x9c\x20\x3e"
3909 "\xbb\x14\x0f\x2e\x58\x3c\xb2\xad"
3910 "\x15\xb4\xaa\x5b\x65\x50\x16\xa8"
3911 "\x44\x92\x77\xdb\xd4\x77\xef\x2c"
3912 "\x8d\x6c\x01\x7d\xb7\x38\xb1\x8d"
3913 "\xeb\x4a\x42\x7d\x19\x23\xce\x3f"
3914 "\xf2\x62\x73\x57\x79\xa4\x18\xf2"
3915 "\x0a\x28\x2d\xf9\x20\x14\x7b\xea"
3916 "\xbe\x42\x1e\xe5\x31\x9d\x05\x68",
Rik Snelf19f5112007-09-19 20:23:13 +08003917 .ilen = 512,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003918 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
3919 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3920 "\x10\x11\x12\x13\x14\x15\x16\x17"
3921 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3922 "\x20\x21\x22\x23\x24\x25\x26\x27"
3923 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3924 "\x30\x31\x32\x33\x34\x35\x36\x37"
3925 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3926 "\x40\x41\x42\x43\x44\x45\x46\x47"
3927 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3928 "\x50\x51\x52\x53\x54\x55\x56\x57"
3929 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3930 "\x60\x61\x62\x63\x64\x65\x66\x67"
3931 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3932 "\x70\x71\x72\x73\x74\x75\x76\x77"
3933 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3934 "\x80\x81\x82\x83\x84\x85\x86\x87"
3935 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3936 "\x90\x91\x92\x93\x94\x95\x96\x97"
3937 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3938 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3939 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3940 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3941 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3942 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3943 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3944 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3945 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3946 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3947 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3948 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3949 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3950 "\x00\x01\x02\x03\x04\x05\x06\x07"
3951 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3952 "\x10\x11\x12\x13\x14\x15\x16\x17"
3953 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3954 "\x20\x21\x22\x23\x24\x25\x26\x27"
3955 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3956 "\x30\x31\x32\x33\x34\x35\x36\x37"
3957 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3958 "\x40\x41\x42\x43\x44\x45\x46\x47"
3959 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3960 "\x50\x51\x52\x53\x54\x55\x56\x57"
3961 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3962 "\x60\x61\x62\x63\x64\x65\x66\x67"
3963 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3964 "\x70\x71\x72\x73\x74\x75\x76\x77"
3965 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3966 "\x80\x81\x82\x83\x84\x85\x86\x87"
3967 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3968 "\x90\x91\x92\x93\x94\x95\x96\x97"
3969 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3970 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3971 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3972 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3973 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3974 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3975 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3976 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3977 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3978 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3979 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3980 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3981 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
Rik Snelf19f5112007-09-19 20:23:13 +08003982 .rlen = 512,
3983 }
3984};
3985
Joy Latten23e353c2007-10-23 08:50:32 +08003986
3987static struct cipher_testvec aes_ctr_enc_tv_template[] = {
3988 { /* From RFC 3686 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003989 .key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
3990 "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
3991 "\x00\x00\x00\x30",
Joy Latten23e353c2007-10-23 08:50:32 +08003992 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003993 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
3994 .input = "Single block msg",
Joy Latten23e353c2007-10-23 08:50:32 +08003995 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003996 .result = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
3997 "\x2d\x61\x75\xa3\x26\x13\x11\xb8",
Joy Latten23e353c2007-10-23 08:50:32 +08003998 .rlen = 16,
3999 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004000 .key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
4001 "\x43\xd6\xce\x1f\x32\x53\x91\x63"
4002 "\x00\x6c\xb6\xdb",
Joy Latten23e353c2007-10-23 08:50:32 +08004003 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004004 .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
4005 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
4006 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4007 "\x10\x11\x12\x13\x14\x15\x16\x17"
4008 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
4009 .ilen = 32,
4010 .result = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
4011 "\x79\x0d\x41\xee\x8e\xda\xd3\x88"
4012 "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
4013 "\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
Joy Latten23e353c2007-10-23 08:50:32 +08004014 .rlen = 32,
4015 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004016 .key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
4017 "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
4018 "\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
4019 "\x00\x00\x00\x48",
4020 .klen = 28,
4021 .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
4022 .input = "Single block msg",
4023 .ilen = 16,
4024 .result = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
4025 "\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
Joy Latten23e353c2007-10-23 08:50:32 +08004026 .rlen = 16,
4027 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004028 .key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
4029 "\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
4030 "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
4031 "\x00\x96\xb0\x3b",
Joy Latten23e353c2007-10-23 08:50:32 +08004032 .klen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004033 .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
4034 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
4035 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4036 "\x10\x11\x12\x13\x14\x15\x16\x17"
4037 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Joy Latten23e353c2007-10-23 08:50:32 +08004038 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004039 .result = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
4040 "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
4041 "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
4042 "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
4043 .rlen = 32,
Joy Latten23e353c2007-10-23 08:50:32 +08004044 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004045 .key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
4046 "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
4047 "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
4048 "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
4049 "\x00\x00\x00\x60",
Joy Latten23e353c2007-10-23 08:50:32 +08004050 .klen = 36,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004051 .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
4052 .input = "Single block msg",
Joy Latten23e353c2007-10-23 08:50:32 +08004053 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004054 .result = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
4055 "\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
4056 .rlen = 16,
Joy Latten23e353c2007-10-23 08:50:32 +08004057 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004058 .key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
4059 "\x07\x96\x36\x58\x79\xef\xf8\x86"
4060 "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
4061 "\x4b\x50\x59\x0c\x87\xa2\x38\x84"
4062 "\x00\xfa\xac\x24",
4063 .klen = 36,
4064 .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
4065 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
4066 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4067 "\x10\x11\x12\x13\x14\x15\x16\x17"
4068 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Joy Latten23e353c2007-10-23 08:50:32 +08004069 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004070 .result = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
4071 "\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
4072 "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
4073 "\x55\x30\x83\x1d\x93\x44\xaf\x1c",
Joy Latten23e353c2007-10-23 08:50:32 +08004074 .rlen = 32,
Tan Swee Henga773edb2007-11-30 00:36:07 +11004075 }, {
4076 // generated using Crypto++
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004077 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
4078 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4079 "\x10\x11\x12\x13\x14\x15\x16\x17"
4080 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
4081 "\x00\x00\x00\x00",
Tan Swee Henga773edb2007-11-30 00:36:07 +11004082 .klen = 32 + 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004083 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
4084 .input =
4085 "\x00\x01\x02\x03\x04\x05\x06\x07"
4086 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4087 "\x10\x11\x12\x13\x14\x15\x16\x17"
4088 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
4089 "\x20\x21\x22\x23\x24\x25\x26\x27"
4090 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
4091 "\x30\x31\x32\x33\x34\x35\x36\x37"
4092 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
4093 "\x40\x41\x42\x43\x44\x45\x46\x47"
4094 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
4095 "\x50\x51\x52\x53\x54\x55\x56\x57"
4096 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
4097 "\x60\x61\x62\x63\x64\x65\x66\x67"
4098 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
4099 "\x70\x71\x72\x73\x74\x75\x76\x77"
4100 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
4101 "\x80\x81\x82\x83\x84\x85\x86\x87"
4102 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
4103 "\x90\x91\x92\x93\x94\x95\x96\x97"
4104 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
4105 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
4106 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
4107 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
4108 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
4109 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
4110 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
4111 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
4112 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
4113 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
4114 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
4115 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
4116 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
4117 "\x00\x03\x06\x09\x0c\x0f\x12\x15"
4118 "\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
4119 "\x30\x33\x36\x39\x3c\x3f\x42\x45"
4120 "\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
4121 "\x60\x63\x66\x69\x6c\x6f\x72\x75"
4122 "\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
4123 "\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
4124 "\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
4125 "\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
4126 "\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
4127 "\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
4128 "\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
4129 "\x20\x23\x26\x29\x2c\x2f\x32\x35"
4130 "\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
4131 "\x50\x53\x56\x59\x5c\x5f\x62\x65"
4132 "\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
4133 "\x80\x83\x86\x89\x8c\x8f\x92\x95"
4134 "\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
4135 "\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
4136 "\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
4137 "\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
4138 "\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
4139 "\x10\x13\x16\x19\x1c\x1f\x22\x25"
4140 "\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
4141 "\x40\x43\x46\x49\x4c\x4f\x52\x55"
4142 "\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
4143 "\x70\x73\x76\x79\x7c\x7f\x82\x85"
4144 "\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
4145 "\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
4146 "\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
4147 "\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
4148 "\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
4149 "\x00\x05\x0a\x0f\x14\x19\x1e\x23"
4150 "\x28\x2d\x32\x37\x3c\x41\x46\x4b"
4151 "\x50\x55\x5a\x5f\x64\x69\x6e\x73"
4152 "\x78\x7d\x82\x87\x8c\x91\x96\x9b"
4153 "\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
4154 "\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
4155 "\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
4156 "\x18\x1d\x22\x27\x2c\x31\x36\x3b"
4157 "\x40\x45\x4a\x4f\x54\x59\x5e\x63"
4158 "\x68\x6d\x72\x77\x7c\x81\x86\x8b"
4159 "\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
4160 "\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
4161 "\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
4162 "\x08\x0d\x12\x17\x1c\x21\x26\x2b"
4163 "\x30\x35\x3a\x3f\x44\x49\x4e\x53"
4164 "\x58\x5d\x62\x67\x6c\x71\x76\x7b"
4165 "\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
4166 "\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
4167 "\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
4168 "\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
4169 "\x20\x25\x2a\x2f\x34\x39\x3e\x43"
4170 "\x48\x4d\x52\x57\x5c\x61\x66\x6b"
4171 "\x70\x75\x7a\x7f\x84\x89\x8e\x93"
4172 "\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
4173 "\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
4174 "\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
4175 "\x10\x15\x1a\x1f\x24\x29\x2e\x33"
4176 "\x38\x3d\x42\x47\x4c\x51\x56\x5b"
4177 "\x60\x65\x6a\x6f\x74\x79\x7e\x83"
4178 "\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
4179 "\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
4180 "\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
4181 "\x00\x07\x0e\x15\x1c\x23\x2a\x31"
4182 "\x38\x3f\x46\x4d\x54\x5b\x62\x69"
4183 "\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
4184 "\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
4185 "\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
4186 "\x18\x1f\x26\x2d\x34\x3b\x42\x49"
4187 "\x50\x57\x5e\x65\x6c\x73\x7a\x81"
4188 "\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
4189 "\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
4190 "\xf8\xff\x06\x0d\x14\x1b\x22\x29"
4191 "\x30\x37\x3e\x45\x4c\x53\x5a\x61"
4192 "\x68\x6f\x76\x7d\x84\x8b\x92\x99"
4193 "\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
4194 "\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
4195 "\x10\x17\x1e\x25\x2c\x33\x3a\x41"
4196 "\x48\x4f\x56\x5d\x64\x6b\x72\x79"
4197 "\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
4198 "\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
4199 "\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
4200 "\x28\x2f\x36\x3d\x44\x4b\x52\x59"
4201 "\x60\x67\x6e\x75\x7c\x83\x8a\x91"
4202 "\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
4203 "\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
4204 "\x08\x0f\x16\x1d\x24\x2b\x32\x39"
4205 "\x40\x47\x4e\x55\x5c\x63\x6a\x71"
4206 "\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
4207 "\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
4208 "\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
4209 "\x20\x27\x2e\x35\x3c\x43\x4a\x51"
4210 "\x58\x5f\x66\x6d\x74\x7b\x82\x89"
4211 "\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
4212 "\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
4213 "\x00\x09\x12\x1b\x24\x2d\x36\x3f"
4214 "\x48\x51\x5a\x63\x6c\x75\x7e\x87"
4215 "\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
4216 "\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
4217 "\x20\x29\x32\x3b\x44\x4d\x56\x5f"
4218 "\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
4219 "\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
4220 "\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
4221 "\x40\x49\x52\x5b\x64\x6d\x76\x7f"
4222 "\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
4223 "\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
4224 "\x18\x21\x2a\x33\x3c\x45\x4e\x57"
4225 "\x60\x69\x72\x7b\x84\x8d\x96\x9f"
4226 "\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
4227 "\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
4228 "\x38\x41\x4a\x53\x5c\x65\x6e\x77"
4229 "\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
4230 "\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
4231 "\x10\x19\x22\x2b\x34\x3d\x46\x4f"
4232 "\x58\x61\x6a\x73\x7c\x85\x8e\x97"
4233 "\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
4234 "\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
4235 "\x30\x39\x42\x4b\x54\x5d\x66\x6f"
4236 "\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
4237 "\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
4238 "\x08\x11\x1a\x23\x2c\x35\x3e\x47"
4239 "\x50\x59\x62\x6b\x74\x7d\x86\x8f"
4240 "\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
4241 "\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
4242 "\x28\x31\x3a\x43\x4c\x55\x5e\x67"
4243 "\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
4244 "\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
4245 "\x00\x0b\x16\x21\x2c\x37\x42\x4d"
4246 "\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
4247 "\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
4248 "\x08\x13\x1e\x29\x34\x3f\x4a\x55"
4249 "\x60\x6b\x76\x81\x8c\x97\xa2\xad"
4250 "\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
4251 "\x10\x1b\x26\x31\x3c\x47\x52\x5d"
4252 "\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
4253 "\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
4254 "\x18\x23\x2e\x39\x44\x4f\x5a\x65"
4255 "\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
4256 "\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
4257 "\x20\x2b\x36\x41\x4c\x57\x62\x6d"
4258 "\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
4259 "\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
4260 "\x28\x33\x3e\x49\x54\x5f\x6a\x75"
4261 "\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
4262 "\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
4263 "\x30\x3b\x46\x51\x5c\x67\x72\x7d"
4264 "\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
4265 "\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
4266 "\x38\x43\x4e\x59\x64\x6f\x7a\x85"
4267 "\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
4268 "\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
4269 "\x40\x4b\x56\x61\x6c\x77\x82\x8d"
4270 "\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
4271 "\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
4272 "\x48\x53\x5e\x69\x74\x7f\x8a\x95"
4273 "\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
4274 "\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
4275 "\x50\x5b\x66\x71\x7c\x87\x92\x9d"
4276 "\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
4277 "\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
4278 "\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
4279 "\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
4280 "\x38\x45\x52\x5f\x6c\x79\x86\x93"
4281 "\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
4282 "\x08\x15\x22\x2f\x3c\x49\x56\x63"
4283 "\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
4284 "\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
4285 "\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
4286 "\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
4287 "\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
4288 "\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
4289 "\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
4290 "\x48\x55\x62\x6f\x7c\x89\x96\xa3"
4291 "\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
4292 "\x18\x25\x32\x3f\x4c\x59\x66\x73"
4293 "\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
4294 "\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
4295 "\x50\x5d\x6a\x77\x84\x91\x9e\xab"
4296 "\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
4297 "\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
4298 "\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
4299 "\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
4300 "\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
4301 "\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
4302 "\x28\x35\x42\x4f\x5c\x69\x76\x83"
4303 "\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
4304 "\xf8\x05\x12\x1f\x2c\x39\x46\x53"
4305 "\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
4306 "\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
4307 "\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
4308 "\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
4309 "\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
4310 "\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
4311 "\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
4312 "\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
4313 "\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
4314 "\x58\x67\x76\x85\x94\xa3\xb2\xc1"
4315 "\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
4316 "\x48\x57\x66\x75\x84\x93\xa2\xb1"
4317 "\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
4318 "\x38\x47\x56\x65\x74\x83\x92\xa1"
4319 "\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
4320 "\x28\x37\x46\x55\x64\x73\x82\x91"
4321 "\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
4322 "\x18\x27\x36\x45\x54\x63\x72\x81"
4323 "\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
4324 "\x08\x17\x26\x35\x44\x53\x62\x71"
4325 "\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
4326 "\xf8\x07\x16\x25\x34\x43\x52\x61"
4327 "\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
4328 "\xe8\xf7\x06\x15\x24\x33\x42\x51"
4329 "\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
4330 "\xd8\xe7\xf6\x05\x14\x23\x32\x41"
4331 "\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
4332 "\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
4333 "\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
4334 "\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
4335 "\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
4336 "\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
4337 "\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
4338 "\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
4339 "\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
4340 "\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
4341 "\x00\x11\x22\x33\x44\x55\x66\x77"
4342 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
4343 "\x10\x21\x32\x43\x54\x65\x76\x87"
4344 "\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
4345 "\x20\x31\x42\x53\x64\x75\x86\x97"
4346 "\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
4347 "\x30\x41\x52\x63\x74\x85\x96\xa7"
4348 "\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
4349 "\x40\x51\x62\x73\x84\x95\xa6\xb7"
4350 "\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
4351 "\x50\x61\x72\x83\x94\xa5\xb6\xc7"
4352 "\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
4353 "\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
4354 "\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
4355 "\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
4356 "\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
4357 "\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
4358 "\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
4359 "\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
4360 "\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
4361 "\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
4362 "\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
4363 "\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
4364 "\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
4365 "\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
4366 "\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
4367 "\xd0\xe1\xf2\x03\x14\x25\x36\x47"
4368 "\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
4369 "\xe0\xf1\x02\x13\x24\x35\x46\x57"
4370 "\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
4371 "\xf0\x01\x12\x23\x34\x45\x56\x67"
4372 "\x78\x89\x9a\xab\xbc\xcd\xde\xef"
4373 "\x00\x13\x26\x39\x4c\x5f\x72\x85"
4374 "\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
4375 "\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
4376 "\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
4377 "\x60\x73\x86\x99\xac\xbf\xd2\xe5"
4378 "\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
4379 "\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
4380 "\x28\x3b\x4e\x61\x74\x87\x9a\xad"
4381 "\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
4382 "\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
4383 "\xf0\x03\x16\x29\x3c\x4f\x62\x75"
4384 "\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
4385 "\x20\x33\x46\x59\x6c\x7f\x92\xa5"
4386 "\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
4387 "\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
4388 "\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
4389 "\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
4390 "\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
4391 "\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
4392 "\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
4393 "\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
4394 "\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
4395 "\x10\x23\x36\x49\x5c\x6f\x82\x95"
4396 "\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
4397 "\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
4398 "\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
4399 "\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
4400 "\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
4401 "\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
4402 "\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
4403 "\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
4404 "\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
4405 "\x00\x15\x2a\x3f\x54\x69\x7e\x93"
4406 "\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
4407 "\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
4408 "\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
4409 "\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
4410 "\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
4411 "\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
4412 "\x98\xad\xc2\xd7\xec\x01\x16\x2b"
4413 "\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
4414 "\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
4415 "\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
4416 "\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
4417 "\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
4418 "\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
4419 "\x30\x45\x5a\x6f\x84\x99\xae\xc3"
4420 "\xd8\xed\x02\x17\x2c\x41\x56\x6b"
4421 "\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
4422 "\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
4423 "\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
4424 "\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
4425 "\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
4426 "\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
4427 "\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
4428 "\x18\x2d\x42\x57\x6c\x81\x96\xab"
4429 "\xc0\xd5\xea\xff\x14\x29\x3e\x53"
4430 "\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
4431 "\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
4432 "\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
4433 "\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
4434 "\x08\x1d\x32\x47\x5c\x71\x86\x9b"
4435 "\xb0\xc5\xda\xef\x04\x19\x2e\x43"
4436 "\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
4437 "\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
4438 "\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
4439 "\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
4440 "\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
4441 "\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
4442 "\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
4443 "\x50\x67\x7e\x95\xac\xc3\xda\xf1"
4444 "\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
4445 "\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
4446 "\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
4447 "\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
4448 "\xe8\xff\x16\x2d\x44\x5b\x72\x89"
4449 "\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
4450 "\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
4451 "\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
4452 "\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
4453 "\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
4454 "\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
4455 "\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
4456 "\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
4457 "\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
4458 "\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
4459 "\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
4460 "\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
4461 "\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
4462 "\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
4463 "\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
4464 "\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
4465 "\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
4466 "\xd8\xef\x06\x1d\x34\x4b\x62\x79"
4467 "\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
4468 "\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
4469 "\x00\x19\x32\x4b\x64\x7d\x96\xaf"
4470 "\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
4471 "\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
4472 "\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
4473 "\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
4474 "\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
4475 "\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
4476 "\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
4477 "\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
4478 "\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
4479 "\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
4480 "\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
4481 "\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
4482 "\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
4483 "\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
4484 "\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
4485 "\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
4486 "\x48\x61\x7a\x93\xac\xc5\xde\xf7"
4487 "\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
4488 "\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
4489 "\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
4490 "\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
4491 "\x30\x49\x62\x7b\x94\xad\xc6\xdf"
4492 "\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
4493 "\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
4494 "\x88\xa1\xba\xd3\xec\x05\x1e\x37"
4495 "\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
4496 "\x18\x31\x4a\x63\x7c\x95\xae\xc7"
4497 "\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
4498 "\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
4499 "\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
4500 "\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
4501 "\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
4502 "\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
4503 "\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
4504 "\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
4505 "\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
4506 "\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
4507 "\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
4508 "\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
4509 "\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
4510 "\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
4511 "\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
4512 "\x48\x63\x7e\x99\xb4\xcf\xea\x05"
4513 "\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
4514 "\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
4515 "\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
4516 "\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
4517 "\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
4518 "\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
4519 "\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
4520 "\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
4521 "\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
4522 "\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
4523 "\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
4524 "\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
4525 "\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
4526 "\x18\x33\x4e\x69\x84\x9f\xba\xd5"
4527 "\xf0\x0b\x26\x41\x5c\x77\x92\xad"
4528 "\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
4529 "\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
4530 "\x78\x93\xae\xc9\xe4\xff\x1a\x35"
4531 "\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
4532 "\x28\x43\x5e\x79\x94\xaf\xca\xe5"
4533 "\x00\x1d\x3a\x57\x74\x91\xae\xcb"
4534 "\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
4535 "\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
4536 "\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
4537 "\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
4538 "\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
4539 "\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
4540 "\x58\x75\x92\xaf\xcc\xe9\x06\x23"
4541 "\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
4542 "\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
4543 "\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
4544 "\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
4545 "\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
4546 "\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
4547 "\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
4548 "\x98\xb5\xd2\xef\x0c\x29\x46\x63"
4549 "\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
4550 "\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
4551 "\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
4552 "\x38\x55\x72\x8f\xac\xc9\xe6\x03"
4553 "\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
4554 "\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
4555 "\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
4556 "\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
4557 "\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
4558 "\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
4559 "\x90\xad\xca\xe7\x04\x21\x3e\x5b"
4560 "\x78\x95\xb2\xcf\xec\x09\x26\x43"
4561 "\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
4562 "\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
4563 "\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
4564 "\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
4565 "\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
4566 "\xf8\x17\x36\x55\x74\x93\xb2\xd1"
4567 "\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
4568 "\xe8\x07\x26\x45\x64\x83\xa2\xc1"
4569 "\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
4570 "\xd8\xf7\x16\x35\x54\x73\x92\xb1"
4571 "\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
4572 "\xc8\xe7\x06\x25\x44\x63\x82\xa1"
4573 "\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
4574 "\xb8\xd7\xf6\x15\x34\x53\x72\x91"
4575 "\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
4576 "\xa8\xc7\xe6\x05\x24\x43\x62\x81"
4577 "\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
4578 "\x98\xb7\xd6\xf5\x14\x33\x52\x71"
4579 "\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
4580 "\x88\xa7\xc6\xe5\x04\x23\x42\x61"
4581 "\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
4582 "\x78\x97\xb6\xd5\xf4\x13\x32\x51"
4583 "\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
4584 "\x68\x87\xa6\xc5\xe4\x03\x22\x41"
4585 "\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
4586 "\x58\x77\x96\xb5\xd4\xf3\x12\x31"
4587 "\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
4588 "\x48\x67\x86\xa5\xc4\xe3\x02\x21"
4589 "\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
4590 "\x38\x57\x76\x95\xb4\xd3\xf2\x11"
4591 "\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
4592 "\x28\x47\x66\x85\xa4\xc3\xe2\x01"
4593 "\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
4594 "\x18\x37\x56\x75\x94\xb3\xd2\xf1"
4595 "\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
4596 "\x08\x27\x46\x65\x84\xa3\xc2\xe1"
4597 "\x00\x21\x42\x63",
Tan Swee Henga773edb2007-11-30 00:36:07 +11004598 .ilen = 4100,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004599 .result =
4600 "\xf0\x5c\x74\xad\x4e\xbc\x99\xe2"
4601 "\xae\xff\x91\x3a\x44\xcf\x38\x32"
4602 "\x1e\xad\xa7\xcd\xa1\x39\x95\xaa"
4603 "\x10\xb1\xb3\x2e\x04\x31\x8f\x86"
4604 "\xf2\x62\x74\x70\x0c\xa4\x46\x08"
4605 "\xa8\xb7\x99\xa8\xe9\xd2\x73\x79"
4606 "\x7e\x6e\xd4\x8f\x1e\xc7\x8e\x31"
4607 "\x0b\xfa\x4b\xce\xfd\xf3\x57\x71"
4608 "\xe9\x46\x03\xa5\x3d\x34\x00\xe2"
4609 "\x18\xff\x75\x6d\x06\x2d\x00\xab"
4610 "\xb9\x3e\x6c\x59\xc5\x84\x06\xb5"
4611 "\x8b\xd0\x89\x9c\x4a\x79\x16\xc6"
4612 "\x3d\x74\x54\xfa\x44\xcd\x23\x26"
4613 "\x5c\xcf\x7e\x28\x92\x32\xbf\xdf"
4614 "\xa7\x20\x3c\x74\x58\x2a\x9a\xde"
4615 "\x61\x00\x1c\x4f\xff\x59\xc4\x22"
4616 "\xac\x3c\xd0\xe8\x6c\xf9\x97\x1b"
4617 "\x58\x9b\xad\x71\xe8\xa9\xb5\x0d"
4618 "\xee\x2f\x04\x1f\x7f\xbc\x99\xee"
4619 "\x84\xff\x42\x60\xdc\x3a\x18\xa5"
4620 "\x81\xf9\xef\xdc\x7a\x0f\x65\x41"
4621 "\x2f\xa3\xd3\xf9\xc2\xcb\xc0\x4d"
4622 "\x8f\xd3\x76\x96\xad\x49\x6d\x38"
4623 "\x3d\x39\x0b\x6c\x80\xb7\x54\x69"
4624 "\xf0\x2c\x90\x02\x29\x0d\x1c\x12"
4625 "\xad\x55\xc3\x8b\x68\xd9\xcc\xb3"
4626 "\xb2\x64\x33\x90\x5e\xca\x4b\xe2"
4627 "\xfb\x75\xdc\x63\xf7\x9f\x82\x74"
4628 "\xf0\xc9\xaa\x7f\xe9\x2a\x9b\x33"
4629 "\xbc\x88\x00\x7f\xca\xb2\x1f\x14"
4630 "\xdb\xc5\x8e\x7b\x11\x3c\x3e\x08"
4631 "\xf3\x83\xe8\xe0\x94\x86\x2e\x92"
4632 "\x78\x6b\x01\xc9\xc7\x83\xba\x21"
4633 "\x6a\x25\x15\x33\x4e\x45\x08\xec"
4634 "\x35\xdb\xe0\x6e\x31\x51\x79\xa9"
4635 "\x42\x44\x65\xc1\xa0\xf1\xf9\x2a"
4636 "\x70\xd5\xb6\xc6\xc1\x8c\x39\xfc"
4637 "\x25\xa6\x55\xd9\xdd\x2d\x4c\xec"
4638 "\x49\xc6\xeb\x0e\xa8\x25\x2a\x16"
4639 "\x1b\x66\x84\xda\xe2\x92\xe5\xc0"
4640 "\xc8\x53\x07\xaf\x80\x84\xec\xfd"
4641 "\xcd\xd1\x6e\xcd\x6f\x6a\xf5\x36"
4642 "\xc5\x15\xe5\x25\x7d\x77\xd1\x1a"
4643 "\x93\x36\xa9\xcf\x7c\xa4\x54\x4a"
4644 "\x06\x51\x48\x4e\xf6\x59\x87\xd2"
4645 "\x04\x02\xef\xd3\x44\xde\x76\x31"
4646 "\xb3\x34\x17\x1b\x9d\x66\x11\x9f"
4647 "\x1e\xcc\x17\xe9\xc7\x3c\x1b\xe7"
4648 "\xcb\x50\x08\xfc\xdc\x2b\x24\xdb"
4649 "\x65\x83\xd0\x3b\xe3\x30\xea\x94"
4650 "\x6c\xe7\xe8\x35\x32\xc7\xdb\x64"
4651 "\xb4\x01\xab\x36\x2c\x77\x13\xaf"
4652 "\xf8\x2b\x88\x3f\x54\x39\xc4\x44"
4653 "\xfe\xef\x6f\x68\x34\xbe\x0f\x05"
4654 "\x16\x6d\xf6\x0a\x30\xe7\xe3\xed"
4655 "\xc4\xde\x3c\x1b\x13\xd8\xdb\xfe"
4656 "\x41\x62\xe5\x28\xd4\x8d\xa3\xc7"
4657 "\x93\x97\xc6\x48\x45\x1d\x9f\x83"
4658 "\xdf\x4b\x40\x3e\x42\x25\x87\x80"
4659 "\x4c\x7d\xa8\xd4\x98\x23\x95\x75"
4660 "\x41\x8c\xda\x41\x9b\xd4\xa7\x06"
4661 "\xb5\xf1\x71\x09\x53\xbe\xca\xbf"
4662 "\x32\x03\xed\xf0\x50\x1c\x56\x39"
4663 "\x5b\xa4\x75\x18\xf7\x9b\x58\xef"
4664 "\x53\xfc\x2a\x38\x23\x15\x75\xcd"
4665 "\x45\xe5\x5a\x82\x55\xba\x21\xfa"
4666 "\xd4\xbd\xc6\x94\x7c\xc5\x80\x12"
4667 "\xf7\x4b\x32\xc4\x9a\x82\xd8\x28"
4668 "\x8f\xd9\xc2\x0f\x60\x03\xbe\x5e"
4669 "\x21\xd6\x5f\x58\xbf\x5c\xb1\x32"
4670 "\x82\x8d\xa9\xe5\xf2\x66\x1a\xc0"
4671 "\xa0\xbc\x58\x2f\x71\xf5\x2f\xed"
4672 "\xd1\x26\xb9\xd8\x49\x5a\x07\x19"
4673 "\x01\x7c\x59\xb0\xf8\xa4\xb7\xd3"
4674 "\x7b\x1a\x8c\x38\xf4\x50\xa4\x59"
4675 "\xb0\xcc\x41\x0b\x88\x7f\xe5\x31"
4676 "\xb3\x42\xba\xa2\x7e\xd4\x32\x71"
4677 "\x45\x87\x48\xa9\xc2\xf2\x89\xb3"
4678 "\xe4\xa7\x7e\x52\x15\x61\xfa\xfe"
4679 "\xc9\xdd\x81\xeb\x13\xab\xab\xc3"
4680 "\x98\x59\xd8\x16\x3d\x14\x7a\x1c"
4681 "\x3c\x41\x9a\x16\x16\x9b\xd2\xd2"
4682 "\x69\x3a\x29\x23\xac\x86\x32\xa5"
4683 "\x48\x9c\x9e\xf3\x47\x77\x81\x70"
4684 "\x24\xe8\x85\xd2\xf5\xb5\xfa\xff"
4685 "\x59\x6a\xd3\x50\x59\x43\x59\xde"
4686 "\xd9\xf1\x55\xa5\x0c\xc3\x1a\x1a"
4687 "\x18\x34\x0d\x1a\x63\x33\xed\x10"
4688 "\xe0\x1d\x2a\x18\xd2\xc0\x54\xa8"
4689 "\xca\xb5\x9a\xd3\xdd\xca\x45\x84"
4690 "\x50\xe7\x0f\xfe\xa4\x99\x5a\xbe"
4691 "\x43\x2d\x9a\xcb\x92\x3f\x5a\x1d"
4692 "\x85\xd8\xc9\xdf\x68\xc9\x12\x80"
4693 "\x56\x0c\xdc\x00\xdc\x3a\x7d\x9d"
4694 "\xa3\xa2\xe8\x4d\xbf\xf9\x70\xa0"
4695 "\xa4\x13\x4f\x6b\xaf\x0a\x89\x7f"
4696 "\xda\xf0\xbf\x9b\xc8\x1d\xe5\xf8"
4697 "\x2e\x8b\x07\xb5\x73\x1b\xcc\xa2"
4698 "\xa6\xad\x30\xbc\x78\x3c\x5b\x10"
4699 "\xfa\x5e\x62\x2d\x9e\x64\xb3\x33"
4700 "\xce\xf9\x1f\x86\xe7\x8b\xa2\xb8"
4701 "\xe8\x99\x57\x8c\x11\xed\x66\xd9"
4702 "\x3c\x72\xb9\xc3\xe6\x4e\x17\x3a"
4703 "\x6a\xcb\x42\x24\x06\xed\x3e\x4e"
4704 "\xa3\xe8\x6a\x94\xda\x0d\x4e\xd5"
4705 "\x14\x19\xcf\xb6\x26\xd8\x2e\xcc"
4706 "\x64\x76\x38\x49\x4d\xfe\x30\x6d"
4707 "\xe4\xc8\x8c\x7b\xc4\xe0\x35\xba"
4708 "\x22\x6e\x76\xe1\x1a\xf2\x53\xc3"
4709 "\x28\xa2\x82\x1f\x61\x69\xad\xc1"
4710 "\x7b\x28\x4b\x1e\x6c\x85\x95\x9b"
4711 "\x51\xb5\x17\x7f\x12\x69\x8c\x24"
4712 "\xd5\xc7\x5a\x5a\x11\x54\xff\x5a"
4713 "\xf7\x16\xc3\x91\xa6\xf0\xdc\x0a"
4714 "\xb6\xa7\x4a\x0d\x7a\x58\xfe\xa5"
4715 "\xf5\xcb\x8f\x7b\x0e\xea\x57\xe7"
4716 "\xbd\x79\xd6\x1c\x88\x23\x6c\xf2"
4717 "\x4d\x29\x77\x53\x35\x6a\x00\x8d"
4718 "\xcd\xa3\x58\xbe\x77\x99\x18\xf8"
4719 "\xe6\xe1\x8f\xe9\x37\x8f\xe3\xe2"
4720 "\x5a\x8a\x93\x25\xaf\xf3\x78\x80"
4721 "\xbe\xa6\x1b\xc6\xac\x8b\x1c\x91"
4722 "\x58\xe1\x9f\x89\x35\x9d\x1d\x21"
4723 "\x29\x9f\xf4\x99\x02\x27\x0f\xa8"
4724 "\x4f\x79\x94\x2b\x33\x2c\xda\xa2"
4725 "\x26\x39\x83\x94\xef\x27\xd8\x53"
4726 "\x8f\x66\x0d\xe4\x41\x7d\x34\xcd"
4727 "\x43\x7c\x95\x0a\x53\xef\x66\xda"
4728 "\x7e\x9b\xf3\x93\xaf\xd0\x73\x71"
4729 "\xba\x40\x9b\x74\xf8\xd7\xd7\x41"
4730 "\x6d\xaf\x72\x9c\x8d\x21\x87\x3c"
4731 "\xfd\x0a\x90\xa9\x47\x96\x9e\xd3"
4732 "\x88\xee\x73\xcf\x66\x2f\x52\x56"
4733 "\x6d\xa9\x80\x4c\xe2\x6f\x62\x88"
4734 "\x3f\x0e\x54\x17\x48\x80\x5d\xd3"
4735 "\xc3\xda\x25\x3d\xa1\xc8\xcb\x9f"
4736 "\x9b\x70\xb3\xa1\xeb\x04\x52\xa1"
4737 "\xf2\x22\x0f\xfc\xc8\x18\xfa\xf9"
4738 "\x85\x9c\xf1\xac\xeb\x0c\x02\x46"
4739 "\x75\xd2\xf5\x2c\xe3\xd2\x59\x94"
4740 "\x12\xf3\x3c\xfc\xd7\x92\xfa\x36"
4741 "\xba\x61\x34\x38\x7c\xda\x48\x3e"
4742 "\x08\xc9\x39\x23\x5e\x02\x2c\x1a"
4743 "\x18\x7e\xb4\xd9\xfd\x9e\x40\x02"
4744 "\xb1\x33\x37\x32\xe7\xde\xd6\xd0"
4745 "\x7c\x58\x65\x4b\xf8\x34\x27\x9c"
4746 "\x44\xb4\xbd\xe9\xe9\x4c\x78\x7d"
4747 "\x4b\x9f\xce\xb1\xcd\x47\xa5\x37"
4748 "\xe5\x6d\xbd\xb9\x43\x94\x0a\xd4"
4749 "\xd6\xf9\x04\x5f\xb5\x66\x6c\x1a"
4750 "\x35\x12\xe3\x36\x28\x27\x36\x58"
4751 "\x01\x2b\x79\xe4\xba\x6d\x10\x7d"
4752 "\x65\xdf\x84\x95\xf4\xd5\xb6\x8f"
4753 "\x2b\x9f\x96\x00\x86\x60\xf0\x21"
4754 "\x76\xa8\x6a\x8c\x28\x1c\xb3\x6b"
4755 "\x97\xd7\xb6\x53\x2a\xcc\xab\x40"
4756 "\x9d\x62\x79\x58\x52\xe6\x65\xb7"
4757 "\xab\x55\x67\x9c\x89\x7c\x03\xb0"
4758 "\x73\x59\xc5\x81\xf5\x18\x17\x5c"
4759 "\x89\xf3\x78\x35\x44\x62\x78\x72"
4760 "\xd0\x96\xeb\x31\xe7\x87\x77\x14"
4761 "\x99\x51\xf2\x59\x26\x9e\xb5\xa6"
4762 "\x45\xfe\x6e\xbd\x07\x4c\x94\x5a"
4763 "\xa5\x7d\xfc\xf1\x2b\x77\xe2\xfe"
4764 "\x17\xd4\x84\xa0\xac\xb5\xc7\xda"
4765 "\xa9\x1a\xb6\xf3\x74\x11\xb4\x9d"
4766 "\xfb\x79\x2e\x04\x2d\x50\x28\x83"
4767 "\xbf\xc6\x52\xd3\x34\xd6\xe8\x7a"
4768 "\xb6\xea\xe7\xa8\x6c\x15\x1e\x2c"
4769 "\x57\xbc\x48\x4e\x5f\x5c\xb6\x92"
4770 "\xd2\x49\x77\x81\x6d\x90\x70\xae"
4771 "\x98\xa1\x03\x0d\x6b\xb9\x77\x14"
4772 "\xf1\x4e\x23\xd3\xf8\x68\xbd\xc2"
4773 "\xfe\x04\xb7\x5c\xc5\x17\x60\x8f"
4774 "\x65\x54\xa4\x7a\x42\xdc\x18\x0d"
4775 "\xb5\xcf\x0f\xd3\xc7\x91\x66\x1b"
4776 "\x45\x42\x27\x75\x50\xe5\xee\xb8"
4777 "\x7f\x33\x2c\xba\x4a\x92\x4d\x2c"
4778 "\x3c\xe3\x0d\x80\x01\xba\x0d\x29"
4779 "\xd8\x3c\xe9\x13\x16\x57\xe6\xea"
4780 "\x94\x52\xe7\x00\x4d\x30\xb0\x0f"
4781 "\x35\xb8\xb8\xa7\xb1\xb5\x3b\x44"
4782 "\xe1\x2f\xfd\x88\xed\x43\xe7\x52"
4783 "\x10\x93\xb3\x8a\x30\x6b\x0a\xf7"
4784 "\x23\xc6\x50\x9d\x4a\xb0\xde\xc3"
4785 "\xdc\x9b\x2f\x01\x56\x36\x09\xc5"
4786 "\x2f\x6b\xfe\xf1\xd8\x27\x45\x03"
4787 "\x30\x5e\x5c\x5b\xb4\x62\x0e\x1a"
4788 "\xa9\x21\x2b\x92\x94\x87\x62\x57"
4789 "\x4c\x10\x74\x1a\xf1\x0a\xc5\x84"
4790 "\x3b\x9e\x72\x02\xd7\xcc\x09\x56"
4791 "\xbd\x54\xc1\xf0\xc3\xe3\xb3\xf8"
4792 "\xd2\x0d\x61\xcb\xef\xce\x0d\x05"
4793 "\xb0\x98\xd9\x8e\x4f\xf9\xbc\x93"
4794 "\xa6\xea\xc8\xcf\x10\x53\x4b\xf1"
4795 "\xec\xfc\x89\xf9\x64\xb0\x22\xbf"
4796 "\x9e\x55\x46\x9f\x7c\x50\x8e\x84"
4797 "\x54\x20\x98\xd7\x6c\x40\x1e\xdb"
4798 "\x69\x34\x78\x61\x24\x21\x9c\x8a"
4799 "\xb3\x62\x31\x8b\x6e\xf5\x2a\x35"
4800 "\x86\x13\xb1\x6c\x64\x2e\x41\xa5"
4801 "\x05\xf2\x42\xba\xd2\x3a\x0d\x8e"
4802 "\x8a\x59\x94\x3c\xcf\x36\x27\x82"
4803 "\xc2\x45\xee\x58\xcd\x88\xb4\xec"
4804 "\xde\xb2\x96\x0a\xaf\x38\x6f\x88"
4805 "\xd7\xd8\xe1\xdf\xb9\x96\xa9\x0a"
4806 "\xb1\x95\x28\x86\x20\xe9\x17\x49"
4807 "\xa2\x29\x38\xaa\xa5\xe9\x6e\xf1"
4808 "\x19\x27\xc0\xd5\x2a\x22\xc3\x0b"
4809 "\xdb\x7c\x73\x10\xb9\xba\x89\x76"
4810 "\x54\xae\x7d\x71\xb3\x93\xf6\x32"
4811 "\xe6\x47\x43\x55\xac\xa0\x0d\xc2"
4812 "\x93\x27\x4a\x8e\x0e\x74\x15\xc7"
4813 "\x0b\x85\xd9\x0c\xa9\x30\x7a\x3e"
4814 "\xea\x8f\x85\x6d\x3a\x12\x4f\x72"
4815 "\x69\x58\x7a\x80\xbb\xb5\x97\xf3"
4816 "\xcf\x70\xd2\x5d\xdd\x4d\x21\x79"
4817 "\x54\x4d\xe4\x05\xe8\xbd\xc2\x62"
4818 "\xb1\x3b\x77\x1c\xd6\x5c\xf3\xa0"
4819 "\x79\x00\xa8\x6c\x29\xd9\x18\x24"
4820 "\x36\xa2\x46\xc0\x96\x65\x7f\xbd"
4821 "\x2a\xed\x36\x16\x0c\xaa\x9f\xf4"
4822 "\xc5\xb4\xe2\x12\xed\x69\xed\x4f"
4823 "\x26\x2c\x39\x52\x89\x98\xe7\x2c"
4824 "\x99\xa4\x9e\xa3\x9b\x99\x46\x7a"
4825 "\x3a\xdc\xa8\x59\xa3\xdb\xc3\x3b"
4826 "\x95\x0d\x3b\x09\x6e\xee\x83\x5d"
4827 "\x32\x4d\xed\xab\xfa\x98\x14\x4e"
4828 "\xc3\x15\x45\x53\x61\xc4\x93\xbd"
4829 "\x90\xf4\x99\x95\x4c\xe6\x76\x92"
4830 "\x29\x90\x46\x30\x92\x69\x7d\x13"
4831 "\xf2\xa5\xcd\x69\x49\x44\xb2\x0f"
4832 "\x63\x40\x36\x5f\x09\xe2\x78\xf8"
4833 "\x91\xe3\xe2\xfa\x10\xf7\xc8\x24"
4834 "\xa8\x89\x32\x5c\x37\x25\x1d\xb2"
4835 "\xea\x17\x8a\x0a\xa9\x64\xc3\x7c"
4836 "\x3c\x7c\xbd\xc6\x79\x34\xe7\xe2"
4837 "\x85\x8e\xbf\xf8\xde\x92\xa0\xae"
4838 "\x20\xc4\xf6\xbb\x1f\x38\x19\x0e"
4839 "\xe8\x79\x9c\xa1\x23\xe9\x54\x7e"
4840 "\x37\x2f\xe2\x94\x32\xaf\xa0\x23"
4841 "\x49\xe4\xc0\xb3\xac\x00\x8f\x36"
4842 "\x05\xc4\xa6\x96\xec\x05\x98\x4f"
4843 "\x96\x67\x57\x1f\x20\x86\x1b\x2d"
4844 "\x69\xe4\x29\x93\x66\x5f\xaf\x6b"
4845 "\x88\x26\x2c\x67\x02\x4b\x52\xd0"
4846 "\x83\x7a\x43\x1f\xc0\x71\x15\x25"
4847 "\x77\x65\x08\x60\x11\x76\x4c\x8d"
4848 "\xed\xa9\x27\xc6\xb1\x2a\x2c\x6a"
4849 "\x4a\x97\xf5\xc6\xb7\x70\x42\xd3"
4850 "\x03\xd1\x24\x95\xec\x6d\xab\x38"
4851 "\x72\xce\xe2\x8b\x33\xd7\x51\x09"
4852 "\xdc\x45\xe0\x09\x96\x32\xf3\xc4"
4853 "\x84\xdc\x73\x73\x2d\x1b\x11\x98"
4854 "\xc5\x0e\x69\x28\x94\xc7\xb5\x4d"
4855 "\xc8\x8a\xd0\xaa\x13\x2e\x18\x74"
4856 "\xdd\xd1\x1e\xf3\x90\xe8\xfc\x9a"
4857 "\x72\x4a\x0e\xd1\xe4\xfb\x0d\x96"
4858 "\xd1\x0c\x79\x85\x1b\x1c\xfe\xe1"
4859 "\x62\x8f\x7a\x73\x32\xab\xc8\x18"
4860 "\x69\xe3\x34\x30\xdf\x13\xa6\xe5"
4861 "\xe8\x0e\x67\x7f\x81\x11\xb4\x60"
4862 "\xc7\xbd\x79\x65\x50\xdc\xc4\x5b"
4863 "\xde\x39\xa4\x01\x72\x63\xf3\xd1"
4864 "\x64\x4e\xdf\xfc\x27\x92\x37\x0d"
4865 "\x57\xcd\x11\x4f\x11\x04\x8e\x1d"
4866 "\x16\xf7\xcd\x92\x9a\x99\x30\x14"
4867 "\xf1\x7c\x67\x1b\x1f\x41\x0b\xe8"
4868 "\x32\xe8\xb8\xc1\x4f\x54\x86\x4f"
4869 "\xe5\x79\x81\x73\xcd\x43\x59\x68"
4870 "\x73\x02\x3b\x78\x21\x72\x43\x00"
4871 "\x49\x17\xf7\x00\xaf\x68\x24\x53"
4872 "\x05\x0a\xc3\x33\xe0\x33\x3f\x69"
4873 "\xd2\x84\x2f\x0b\xed\xde\x04\xf4"
4874 "\x11\x94\x13\x69\x51\x09\x28\xde"
4875 "\x57\x5c\xef\xdc\x9a\x49\x1c\x17"
4876 "\x97\xf3\x96\xc1\x7f\x5d\x2e\x7d"
4877 "\x55\xb8\xb3\x02\x09\xb3\x1f\xe7"
4878 "\xc9\x8d\xa3\x36\x34\x8a\x77\x13"
4879 "\x30\x63\x4c\xa5\xcd\xc3\xe0\x7e"
4880 "\x05\xa1\x7b\x0c\xcb\x74\x47\x31"
4881 "\x62\x03\x43\xf1\x87\xb4\xb0\x85"
4882 "\x87\x8e\x4b\x25\xc7\xcf\xae\x4b"
4883 "\x36\x46\x3e\x62\xbc\x6f\xeb\x5f"
4884 "\x73\xac\xe6\x07\xee\xc1\xa1\xd6"
4885 "\xc4\xab\xc9\xd6\x89\x45\xe1\xf1"
4886 "\x04\x4e\x1a\x6f\xbb\x4f\x3a\xa3"
4887 "\xa0\xcb\xa3\x0a\xd8\x71\x35\x55"
4888 "\xe4\xbc\x2e\x04\x06\xe6\xff\x5b"
4889 "\x1c\xc0\x11\x7c\xc5\x17\xf3\x38"
4890 "\xcf\xe9\xba\x0f\x0e\xef\x02\xc2"
4891 "\x8d\xc6\xbc\x4b\x67\x20\x95\xd7"
4892 "\x2c\x45\x5b\x86\x44\x8c\x6f\x2e"
4893 "\x7e\x9f\x1c\x77\xba\x6b\x0e\xa3"
4894 "\x69\xdc\xab\x24\x57\x60\x47\xc1"
4895 "\xd1\xa5\x9d\x23\xe6\xb1\x37\xfe"
4896 "\x93\xd2\x4c\x46\xf9\x0c\xc6\xfb"
4897 "\xd6\x9d\x99\x69\xab\x7a\x07\x0c"
4898 "\x65\xe7\xc4\x08\x96\xe2\xa5\x01"
4899 "\x3f\x46\x07\x05\x7e\xe8\x9a\x90"
4900 "\x50\xdc\xe9\x7a\xea\xa1\x39\x6e"
4901 "\x66\xe4\x6f\xa5\x5f\xb2\xd9\x5b"
4902 "\xf5\xdb\x2a\x32\xf0\x11\x6f\x7c"
4903 "\x26\x10\x8f\x3d\x80\xe9\x58\xf7"
4904 "\xe0\xa8\x57\xf8\xdb\x0e\xce\x99"
4905 "\x63\x19\x3d\xd5\xec\x1b\x77\x69"
4906 "\x98\xf6\xe4\x5f\x67\x17\x4b\x09"
4907 "\x85\x62\x82\x70\x18\xe2\x9a\x78"
4908 "\xe2\x62\xbd\xb4\xf1\x42\xc6\xfb"
4909 "\x08\xd0\xbd\xeb\x4e\x09\xf2\xc8"
4910 "\x1e\xdc\x3d\x32\x21\x56\x9c\x4f"
4911 "\x35\xf3\x61\x06\x72\x84\xc4\x32"
4912 "\xf2\xf1\xfa\x0b\x2f\xc3\xdb\x02"
4913 "\x04\xc2\xde\x57\x64\x60\x8d\xcf"
4914 "\xcb\x86\x5d\x97\x3e\xb1\x9c\x01"
4915 "\xd6\x28\x8f\x99\xbc\x46\xeb\x05"
4916 "\xaf\x7e\xb8\x21\x2a\x56\x85\x1c"
4917 "\xb3\x71\xa0\xde\xca\x96\xf1\x78"
4918 "\x49\xa2\x99\x81\x80\x5c\x01\xf5"
4919 "\xa0\xa2\x56\x63\xe2\x70\x07\xa5"
4920 "\x95\xd6\x85\xeb\x36\x9e\xa9\x51"
4921 "\x66\x56\x5f\x1d\x02\x19\xe2\xf6"
4922 "\x4f\x73\x38\x09\x75\x64\x48\xe0"
4923 "\xf1\x7e\x0e\xe8\x9d\xf9\xed\x94"
4924 "\xfe\x16\x26\x62\x49\x74\xf4\xb0"
4925 "\xd4\xa9\x6c\xb0\xfd\x53\xe9\x81"
4926 "\xe0\x7a\xbf\xcf\xb5\xc4\x01\x81"
4927 "\x79\x99\x77\x01\x3b\xe9\xa2\xb6"
4928 "\xe6\x6a\x8a\x9e\x56\x1c\x8d\x1e"
4929 "\x8f\x06\x55\x2c\x6c\xdc\x92\x87"
4930 "\x64\x3b\x4b\x19\xa1\x13\x64\x1d"
4931 "\x4a\xe9\xc0\x00\xb8\x95\xef\x6b"
4932 "\x1a\x86\x6d\x37\x52\x02\xc2\xe0"
4933 "\xc8\xbb\x42\x0c\x02\x21\x4a\xc9"
4934 "\xef\xa0\x54\xe4\x5e\x16\x53\x81"
4935 "\x70\x62\x10\xaf\xde\xb8\xb5\xd3"
4936 "\xe8\x5e\x6c\xc3\x8a\x3e\x18\x07"
4937 "\xf2\x2f\x7d\xa7\xe1\x3d\x4e\xb4"
4938 "\x26\xa7\xa3\x93\x86\xb2\x04\x1e"
4939 "\x53\x5d\x86\xd6\xde\x65\xca\xe3"
4940 "\x4e\xc1\xcf\xef\xc8\x70\x1b\x83"
4941 "\x13\xdd\x18\x8b\x0d\x76\xd2\xf6"
4942 "\x37\x7a\x93\x7a\x50\x11\x9f\x96"
4943 "\x86\x25\xfd\xac\xdc\xbe\x18\x93"
4944 "\x19\x6b\xec\x58\x4f\xb9\x75\xa7"
4945 "\xdd\x3f\x2f\xec\xc8\x5a\x84\xab"
4946 "\xd5\xe4\x8a\x07\xf6\x4d\x23\xd6"
4947 "\x03\xfb\x03\x6a\xea\x66\xbf\xd4"
4948 "\xb1\x34\xfb\x78\xe9\x55\xdc\x7c"
4949 "\x3d\x9c\xe5\x9a\xac\xc3\x7a\x80"
4950 "\x24\x6d\xa0\xef\x25\x7c\xb7\xea"
4951 "\xce\x4d\x5f\x18\x60\xce\x87\x22"
4952 "\x66\x2f\xd5\xdd\xdd\x02\x21\x75"
4953 "\x82\xa0\x1f\x58\xc6\xd3\x62\xf7"
4954 "\x32\xd8\xaf\x1e\x07\x77\x51\x96"
4955 "\xd5\x6b\x1e\x7e\x80\x02\xe8\x67"
4956 "\xea\x17\x0b\x10\xd2\x3f\x28\x25"
4957 "\x4f\x05\x77\x02\x14\x69\xf0\x2c"
4958 "\xbe\x0c\xf1\x74\x30\xd1\xb9\x9b"
4959 "\xfc\x8c\xbb\x04\x16\xd9\xba\xc3"
4960 "\xbc\x91\x8a\xc4\x30\xa4\xb0\x12"
4961 "\x4c\x21\x87\xcb\xc9\x1d\x16\x96"
4962 "\x07\x6f\x23\x54\xb9\x6f\x79\xe5"
4963 "\x64\xc0\x64\xda\xb1\xae\xdd\x60"
4964 "\x6c\x1a\x9d\xd3\x04\x8e\x45\xb0"
4965 "\x92\x61\xd0\x48\x81\xed\x5e\x1d"
4966 "\xa0\xc9\xa4\x33\xc7\x13\x51\x5d"
4967 "\x7f\x83\x73\xb6\x70\x18\x65\x3e"
4968 "\x2f\x0e\x7a\x12\x39\x98\xab\xd8"
4969 "\x7e\x6f\xa3\xd1\xba\x56\xad\xbd"
4970 "\xf0\x03\x01\x1c\x85\x35\x9f\xeb"
4971 "\x19\x63\xa1\xaf\xfe\x2d\x35\x50"
4972 "\x39\xa0\x65\x7c\x95\x7e\x6b\xfe"
4973 "\xc1\xac\x07\x7c\x98\x4f\xbe\x57"
4974 "\xa7\x22\xec\xe2\x7e\x29\x09\x53"
4975 "\xe8\xbf\xb4\x7e\x3f\x8f\xfc\x14"
4976 "\xce\x54\xf9\x18\x58\xb5\xff\x44"
4977 "\x05\x9d\xce\x1b\xb6\x82\x23\xc8"
4978 "\x2e\xbc\x69\xbb\x4a\x29\x0f\x65"
4979 "\x94\xf0\x63\x06\x0e\xef\x8c\xbd"
4980 "\xff\xfd\xb0\x21\x6e\x57\x05\x75"
4981 "\xda\xd5\xc4\xeb\x8d\x32\xf7\x50"
4982 "\xd3\x6f\x22\xed\x5f\x8e\xa2\x5b"
4983 "\x80\x8c\xc8\x78\x40\x24\x4b\x89"
4984 "\x30\xce\x7a\x97\x0e\xc4\xaf\xef"
4985 "\x9b\xb4\xcd\x66\x74\x14\x04\x2b"
4986 "\xf7\xce\x0b\x1c\x6e\xc2\x78\x8c"
4987 "\xca\xc5\xd0\x1c\x95\x4a\x91\x2d"
4988 "\xa7\x20\xeb\x86\x52\xb7\x67\xd8"
4989 "\x0c\xd6\x04\x14\xde\x51\x74\x75"
4990 "\xe7\x11\xb4\x87\xa3\x3d\x2d\xad"
4991 "\x4f\xef\xa0\x0f\x70\x00\x6d\x13"
4992 "\x19\x1d\x41\x50\xe9\xd8\xf0\x32"
4993 "\x71\xbc\xd3\x11\xf2\xac\xbe\xaf"
4994 "\x75\x46\x65\x4e\x07\x34\x37\xa3"
4995 "\x89\xfe\x75\xd4\x70\x4c\xc6\x3f"
4996 "\x69\x24\x0e\x38\x67\x43\x8c\xde"
4997 "\x06\xb5\xb8\xe7\xc4\xf0\x41\x8f"
4998 "\xf0\xbd\x2f\x0b\xb9\x18\xf8\xde"
4999 "\x64\xb1\xdb\xee\x00\x50\x77\xe1"
5000 "\xc7\xff\xa6\xfa\xdd\x70\xf4\xe3"
5001 "\x93\xe9\x77\x35\x3d\x4b\x2f\x2b"
5002 "\x6d\x55\xf0\xfc\x88\x54\x4e\x89"
5003 "\xc1\x8a\x23\x31\x2d\x14\x2a\xb8"
5004 "\x1b\x15\xdd\x9e\x6e\x7b\xda\x05"
5005 "\x91\x7d\x62\x64\x96\x72\xde\xfc"
5006 "\xc1\xec\xf0\x23\x51\x6f\xdb\x5b"
5007 "\x1d\x08\x57\xce\x09\xb8\xf6\xcd"
5008 "\x8d\x95\xf2\x20\xbf\x0f\x20\x57"
5009 "\x98\x81\x84\x4f\x15\x5c\x76\xe7"
5010 "\x3e\x0a\x3a\x6c\xc4\x8a\xbe\x78"
5011 "\x74\x77\xc3\x09\x4b\x5d\x48\xe4"
5012 "\xc8\xcb\x0b\xea\x17\x28\xcf\xcf"
5013 "\x31\x32\x44\xa4\xe5\x0e\x1a\x98"
5014 "\x94\xc4\xf0\xff\xae\x3e\x44\xe8"
5015 "\xa5\xb3\xb5\x37\x2f\xe8\xaf\x6f"
5016 "\x28\xc1\x37\x5f\x31\xd2\xb9\x33"
5017 "\xb1\xb2\x52\x94\x75\x2c\x29\x59"
5018 "\x06\xc2\x25\xe8\x71\x65\x4e\xed"
5019 "\xc0\x9c\xb1\xbb\x25\xdc\x6c\xe7"
5020 "\x4b\xa5\x7a\x54\x7a\x60\xff\x7a"
5021 "\xe0\x50\x40\x96\x35\x63\xe4\x0b"
5022 "\x76\xbd\xa4\x65\x00\x1b\x57\x88"
5023 "\xae\xed\x39\x88\x42\x11\x3c\xed"
5024 "\x85\x67\x7d\xb9\x68\x82\xe9\x43"
5025 "\x3c\x47\x53\xfa\xe8\xf8\x9f\x1f"
5026 "\x9f\xef\x0f\xf7\x30\xd9\x30\x0e"
5027 "\xb9\x9f\x69\x18\x2f\x7e\xf8\xf8"
5028 "\xf8\x8c\x0f\xd4\x02\x4d\xea\xcd"
5029 "\x0a\x9c\x6f\x71\x6d\x5a\x4c\x60"
5030 "\xce\x20\x56\x32\xc6\xc5\x99\x1f"
5031 "\x09\xe6\x4e\x18\x1a\x15\x13\xa8"
5032 "\x7d\xb1\x6b\xc0\xb2\x6d\xf8\x26"
5033 "\x66\xf8\x3d\x18\x74\x70\x66\x7a"
5034 "\x34\x17\xde\xba\x47\xf1\x06\x18"
5035 "\xcb\xaf\xeb\x4a\x1e\x8f\xa7\x77"
5036 "\xe0\x3b\x78\x62\x66\xc9\x10\xea"
5037 "\x1f\xb7\x29\x0a\x45\xa1\x1d\x1e"
5038 "\x1d\xe2\x65\x61\x50\x9c\xd7\x05"
5039 "\xf2\x0b\x5b\x12\x61\x02\xc8\xe5"
5040 "\x63\x4f\x20\x0c\x07\x17\x33\x5e"
5041 "\x03\x9a\x53\x0f\x2e\x55\xfe\x50"
5042 "\x43\x7d\xd0\xb6\x7e\x5a\xda\xae"
5043 "\x58\xef\x15\xa9\x83\xd9\x46\xb1"
5044 "\x42\xaa\xf5\x02\x6c\xce\x92\x06"
5045 "\x1b\xdb\x66\x45\x91\x79\xc2\x2d"
5046 "\xe6\x53\xd3\x14\xfd\xbb\x44\x63"
5047 "\xc6\xd7\x3d\x7a\x0c\x75\x78\x9d"
5048 "\x5c\xa6\x39\xb3\xe5\x63\xca\x8b"
5049 "\xfe\xd3\xef\x60\x83\xf6\x8e\x70"
5050 "\xb6\x67\xc7\x77\xed\x23\xef\x4c"
5051 "\xf0\xed\x2d\x07\x59\x6f\xc1\x01"
5052 "\x34\x37\x08\xab\xd9\x1f\x09\xb1"
5053 "\xce\x5b\x17\xff\x74\xf8\x9c\xd5"
5054 "\x2c\x56\x39\x79\x0f\x69\x44\x75"
5055 "\x58\x27\x01\xc4\xbf\xa7\xa1\x1d"
5056 "\x90\x17\x77\x86\x5a\x3f\xd9\xd1"
5057 "\x0e\xa0\x10\xf8\xec\x1e\xa5\x7f"
5058 "\x5e\x36\xd1\xe3\x04\x2c\x70\xf7"
5059 "\x8e\xc0\x98\x2f\x6c\x94\x2b\x41"
5060 "\xb7\x60\x00\xb7\x2e\xb8\x02\x8d"
5061 "\xb8\xb0\xd3\x86\xba\x1d\xd7\x90"
5062 "\xd6\xb6\xe1\xfc\xd7\xd8\x28\x06"
5063 "\x63\x9b\xce\x61\x24\x79\xc0\x70"
5064 "\x52\xd0\xb6\xd4\x28\x95\x24\x87"
5065 "\x03\x1f\xb7\x9a\xda\xa3\xfb\x52"
5066 "\x5b\x68\xe7\x4c\x8c\x24\xe1\x42"
5067 "\xf7\xd5\xfd\xad\x06\x32\x9f\xba"
5068 "\xc1\xfc\xdd\xc6\xfc\xfc\xb3\x38"
5069 "\x74\x56\x58\x40\x02\x37\x52\x2c"
5070 "\x55\xcc\xb3\x9e\x7a\xe9\xd4\x38"
5071 "\x41\x5e\x0c\x35\xe2\x11\xd1\x13"
5072 "\xf8\xb7\x8d\x72\x6b\x22\x2a\xb0"
5073 "\xdb\x08\xba\x35\xb9\x3f\xc8\xd3"
5074 "\x24\x90\xec\x58\xd2\x09\xc7\x2d"
5075 "\xed\x38\x80\x36\x72\x43\x27\x49"
5076 "\x4a\x80\x8a\xa2\xe8\xd3\xda\x30"
5077 "\x7d\xb6\x82\x37\x86\x92\x86\x3e"
5078 "\x08\xb2\x28\x5a\x55\x44\x24\x7d"
5079 "\x40\x48\x8a\xb6\x89\x58\x08\xa0"
5080 "\xd6\x6d\x3a\x17\xbf\xf6\x54\xa2"
5081 "\xf5\xd3\x8c\x0f\x78\x12\x57\x8b"
5082 "\xd5\xc2\xfd\x58\x5b\x7f\x38\xe3"
5083 "\xcc\xb7\x7c\x48\xb3\x20\xe8\x81"
5084 "\x14\x32\x45\x05\xe0\xdb\x9f\x75"
5085 "\x85\xb4\x6a\xfc\x95\xe3\x54\x22"
5086 "\x12\xee\x30\xfe\xd8\x30\xef\x34"
5087 "\x50\xab\x46\x30\x98\x2f\xb7\xc0"
5088 "\x15\xa2\x83\xb6\xf2\x06\x21\xa2"
5089 "\xc3\x26\x37\x14\xd1\x4d\xb5\x10"
5090 "\x52\x76\x4d\x6a\xee\xb5\x2b\x15"
5091 "\xb7\xf9\x51\xe8\x2a\xaf\xc7\xfa"
5092 "\x77\xaf\xb0\x05\x4d\xd1\x68\x8e"
5093 "\x74\x05\x9f\x9d\x93\xa5\x3e\x7f"
5094 "\x4e\x5f\x9d\xcb\x09\xc7\x83\xe3"
5095 "\x02\x9d\x27\x1f\xef\x85\x05\x8d"
5096 "\xec\x55\x88\x0f\x0d\x7c\x4c\xe8"
5097 "\xa1\x75\xa0\xd8\x06\x47\x14\xef"
5098 "\xaa\x61\xcf\x26\x15\xad\xd8\xa3"
5099 "\xaa\x75\xf2\x78\x4a\x5a\x61\xdf"
5100 "\x8b\xc7\x04\xbc\xb2\x32\xd2\x7e"
5101 "\x42\xee\xb4\x2f\x51\xff\x7b\x2e"
5102 "\xd3\x02\xe8\xdc\x5d\x0d\x50\xdc"
5103 "\xae\xb7\x46\xf9\xa8\xe6\xd0\x16"
5104 "\xcc\xe6\x2c\x81\xc7\xad\xe9\xf0"
5105 "\x05\x72\x6d\x3d\x0a\x7a\xa9\x02"
5106 "\xac\x82\x93\x6e\xb6\x1c\x28\xfc"
5107 "\x44\x12\xfb\x73\x77\xd4\x13\x39"
5108 "\x29\x88\x8a\xf3\x5c\xa6\x36\xa0"
5109 "\x2a\xed\x7e\xb1\x1d\xd6\x4c\x6b"
5110 "\x41\x01\x18\x5d\x5d\x07\x97\xa6"
5111 "\x4b\xef\x31\x18\xea\xac\xb1\x84"
5112 "\x21\xed\xda\x86",
Tan Swee Henga773edb2007-11-30 00:36:07 +11005113 .rlen = 4100,
Joy Latten23e353c2007-10-23 08:50:32 +08005114 },
5115};
5116
5117static struct cipher_testvec aes_ctr_dec_tv_template[] = {
5118 { /* From RFC 3686 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005119 .key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
5120 "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
5121 "\x00\x00\x00\x30",
Joy Latten23e353c2007-10-23 08:50:32 +08005122 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005123 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
5124 .input = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
5125 "\x2d\x61\x75\xa3\x26\x13\x11\xb8",
Joy Latten23e353c2007-10-23 08:50:32 +08005126 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005127 .result = "Single block msg",
Joy Latten23e353c2007-10-23 08:50:32 +08005128 .rlen = 16,
5129 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005130 .key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
5131 "\x43\xd6\xce\x1f\x32\x53\x91\x63"
5132 "\x00\x6c\xb6\xdb",
Joy Latten23e353c2007-10-23 08:50:32 +08005133 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005134 .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
5135 .input = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
5136 "\x79\x0d\x41\xee\x8e\xda\xd3\x88"
5137 "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
5138 "\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
5139 .ilen = 32,
5140 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
5141 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5142 "\x10\x11\x12\x13\x14\x15\x16\x17"
5143 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Joy Latten23e353c2007-10-23 08:50:32 +08005144 .rlen = 32,
5145 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005146 .key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
5147 "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
5148 "\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
5149 "\x00\x00\x00\x48",
5150 .klen = 28,
5151 .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
5152 .input = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
5153 "\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
5154 .ilen = 16,
5155 .result = "Single block msg",
Joy Latten23e353c2007-10-23 08:50:32 +08005156 .rlen = 16,
5157 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005158 .key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
5159 "\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
5160 "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
5161 "\x00\x96\xb0\x3b",
Joy Latten23e353c2007-10-23 08:50:32 +08005162 .klen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005163 .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
5164 .input = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
5165 "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
5166 "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
5167 "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
Joy Latten23e353c2007-10-23 08:50:32 +08005168 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005169 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
5170 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5171 "\x10\x11\x12\x13\x14\x15\x16\x17"
5172 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
5173 .rlen = 32,
Joy Latten23e353c2007-10-23 08:50:32 +08005174 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005175 .key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
5176 "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
5177 "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
5178 "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
5179 "\x00\x00\x00\x60",
Joy Latten23e353c2007-10-23 08:50:32 +08005180 .klen = 36,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005181 .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
5182 .input = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
5183 "\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
Joy Latten23e353c2007-10-23 08:50:32 +08005184 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005185 .result = "Single block msg",
5186 .rlen = 16,
Joy Latten23e353c2007-10-23 08:50:32 +08005187 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005188 .key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
5189 "\x07\x96\x36\x58\x79\xef\xf8\x86"
5190 "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
5191 "\x4b\x50\x59\x0c\x87\xa2\x38\x84"
5192 "\x00\xfa\xac\x24",
5193 .klen = 36,
5194 .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
5195 .input = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
5196 "\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
5197 "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
5198 "\x55\x30\x83\x1d\x93\x44\xaf\x1c",
Joy Latten23e353c2007-10-23 08:50:32 +08005199 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005200 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
5201 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5202 "\x10\x11\x12\x13\x14\x15\x16\x17"
5203 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Joy Latten23e353c2007-10-23 08:50:32 +08005204 .rlen = 32,
5205 },
5206};
5207
Mikko Herranen28db8e32007-11-26 22:24:11 +08005208static struct aead_testvec aes_gcm_enc_tv_template[] = {
5209 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005210 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005211 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005212 .result = "\x58\xe2\xfc\xce\xfa\x7e\x30\x61"
5213 "\x36\x7f\x1d\x57\xa4\xe7\x45\x5a",
Herbert Xu6160b282007-12-04 19:17:50 +11005214 .rlen = 16,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005215 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005216 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005217 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005218 .input = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005219 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005220 .result = "\x03\x88\xda\xce\x60\xb6\xa3\x92"
5221 "\xf3\x28\xc2\xb9\x71\xb2\xfe\x78"
5222 "\xab\x6e\x47\xd4\x2c\xec\x13\xbd"
5223 "\xf5\x3a\x67\xb2\x12\x57\xbd\xdf",
Herbert Xu6160b282007-12-04 19:17:50 +11005224 .rlen = 32,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005225 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005226 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5227 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005228 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005229 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5230 "\xde\xca\xf8\x88",
5231 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5232 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5233 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5234 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5235 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5236 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5237 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5238 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005239 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005240 .result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5241 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5242 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5243 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5244 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5245 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5246 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5247 "\x3d\x58\xe0\x91\x47\x3f\x59\x85"
5248 "\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
5249 "\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
Herbert Xu6160b282007-12-04 19:17:50 +11005250 .rlen = 80,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005251 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005252 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5253 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005254 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005255 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5256 "\xde\xca\xf8\x88",
5257 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5258 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5259 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5260 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5261 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5262 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5263 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5264 "\xba\x63\x7b\x39",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005265 .ilen = 60,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005266 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5267 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5268 "\xab\xad\xda\xd2",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005269 .alen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005270 .result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5271 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5272 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5273 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5274 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5275 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5276 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5277 "\x3d\x58\xe0\x91"
5278 "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
5279 "\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
Herbert Xu6160b282007-12-04 19:17:50 +11005280 .rlen = 76,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005281 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005282 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005283 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005284 .result = "\xcd\x33\xb2\x8a\xc7\x73\xf7\x4b"
5285 "\xa0\x0e\xd1\xf3\x12\x57\x24\x35",
Herbert Xu6160b282007-12-04 19:17:50 +11005286 .rlen = 16,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005287 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005288 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005289 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005290 .input = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005291 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005292 .result = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
5293 "\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
5294 "\x2f\xf5\x8d\x80\x03\x39\x27\xab"
5295 "\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
Herbert Xu6160b282007-12-04 19:17:50 +11005296 .rlen = 32,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005297 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005298 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5299 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5300 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005301 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005302 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5303 "\xde\xca\xf8\x88",
5304 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5305 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5306 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5307 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5308 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5309 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5310 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5311 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005312 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005313 .result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5314 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5315 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5316 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5317 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5318 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5319 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5320 "\xcc\xda\x27\x10\xac\xad\xe2\x56"
5321 "\x99\x24\xa7\xc8\x58\x73\x36\xbf"
5322 "\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
Herbert Xu6160b282007-12-04 19:17:50 +11005323 .rlen = 80,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005324 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005325 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5326 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5327 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005328 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005329 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5330 "\xde\xca\xf8\x88",
5331 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5332 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5333 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5334 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5335 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5336 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5337 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5338 "\xba\x63\x7b\x39",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005339 .ilen = 60,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005340 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5341 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5342 "\xab\xad\xda\xd2",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005343 .alen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005344 .result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5345 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5346 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5347 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5348 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5349 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5350 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5351 "\xcc\xda\x27\x10"
5352 "\x25\x19\x49\x8e\x80\xf1\x47\x8f"
5353 "\x37\xba\x55\xbd\x6d\x27\x61\x8c",
Herbert Xu6160b282007-12-04 19:17:50 +11005354 .rlen = 76,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005355 .np = 2,
5356 .tap = { 32, 28 },
5357 .anp = 2,
5358 .atap = { 8, 12 }
5359 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005360 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005361 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005362 .result = "\x53\x0f\x8a\xfb\xc7\x45\x36\xb9"
5363 "\xa9\x63\xb4\xf1\xc4\xcb\x73\x8b",
Herbert Xu6160b282007-12-04 19:17:50 +11005364 .rlen = 16,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005365 }
5366};
5367
5368static struct aead_testvec aes_gcm_dec_tv_template[] = {
5369 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005370 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005371 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005372 .input = "\xce\xa7\x40\x3d\x4d\x60\x6b\x6e"
5373 "\x07\x4e\xc5\xd3\xba\xf3\x9d\x18"
5374 "\xd0\xd1\xc8\xa7\x99\x99\x6b\xf0"
5375 "\x26\x5b\x98\xb5\xd4\x8a\xb9\x19",
Herbert Xu6160b282007-12-04 19:17:50 +11005376 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005377 .result = zeroed_string,
Herbert Xu6160b282007-12-04 19:17:50 +11005378 .rlen = 16,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005379 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005380 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5381 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5382 "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5383 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005384 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005385 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5386 "\xde\xca\xf8\x88",
5387 .input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
5388 "\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
5389 "\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
5390 "\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
5391 "\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
5392 "\xa7\xb0\x8b\x10\x56\x82\x88\x38"
5393 "\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
5394 "\xbc\xc9\xf6\x62\x89\x80\x15\xad"
5395 "\xb0\x94\xda\xc5\xd9\x34\x71\xbd"
5396 "\xec\x1a\x50\x22\x70\xe3\xcc\x6c",
Herbert Xu6160b282007-12-04 19:17:50 +11005397 .ilen = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005398 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5399 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5400 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5401 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5402 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5403 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5404 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5405 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005406 .rlen = 64,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005407 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005408 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5409 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5410 "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5411 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005412 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005413 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5414 "\xde\xca\xf8\x88",
5415 .input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
5416 "\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
5417 "\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
5418 "\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
5419 "\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
5420 "\xa7\xb0\x8b\x10\x56\x82\x88\x38"
5421 "\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
5422 "\xbc\xc9\xf6\x62"
5423 "\x76\xfc\x6e\xce\x0f\x4e\x17\x68"
5424 "\xcd\xdf\x88\x53\xbb\x2d\x55\x1b",
Herbert Xu6160b282007-12-04 19:17:50 +11005425 .ilen = 76,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005426 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5427 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5428 "\xab\xad\xda\xd2",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005429 .alen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005430 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5431 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5432 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5433 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5434 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5435 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5436 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5437 "\xba\x63\x7b\x39",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005438 .rlen = 60,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005439 .np = 2,
Herbert Xu6160b282007-12-04 19:17:50 +11005440 .tap = { 48, 28 },
Mikko Herranen28db8e32007-11-26 22:24:11 +08005441 .anp = 3,
5442 .atap = { 8, 8, 4 }
5443 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005444 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5445 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005446 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005447 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5448 "\xde\xca\xf8\x88",
5449 .input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5450 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5451 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5452 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5453 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5454 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5455 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5456 "\x3d\x58\xe0\x91\x47\x3f\x59\x85"
5457 "\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
5458 "\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
Herbert Xu6160b282007-12-04 19:17:50 +11005459 .ilen = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005460 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5461 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5462 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5463 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5464 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5465 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5466 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5467 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005468 .rlen = 64,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005469 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005470 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5471 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005472 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005473 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5474 "\xde\xca\xf8\x88",
5475 .input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5476 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5477 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5478 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5479 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5480 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5481 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5482 "\x3d\x58\xe0\x91"
5483 "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
5484 "\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
Herbert Xu6160b282007-12-04 19:17:50 +11005485 .ilen = 76,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005486 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5487 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5488 "\xab\xad\xda\xd2",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005489 .alen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005490 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5491 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5492 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5493 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5494 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5495 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5496 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5497 "\xba\x63\x7b\x39",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005498 .rlen = 60,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005499 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005500 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005501 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005502 .input = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
5503 "\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
5504 "\x2f\xf5\x8d\x80\x03\x39\x27\xab"
5505 "\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
Herbert Xu6160b282007-12-04 19:17:50 +11005506 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005507 .result = zeroed_string,
Herbert Xu6160b282007-12-04 19:17:50 +11005508 .rlen = 16,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005509 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005510 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5511 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5512 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005513 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005514 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5515 "\xde\xca\xf8\x88",
5516 .input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5517 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5518 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5519 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5520 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5521 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5522 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5523 "\xcc\xda\x27\x10\xac\xad\xe2\x56"
5524 "\x99\x24\xa7\xc8\x58\x73\x36\xbf"
5525 "\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
Herbert Xu6160b282007-12-04 19:17:50 +11005526 .ilen = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005527 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5528 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5529 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5530 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5531 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5532 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5533 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5534 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005535 .rlen = 64,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005536 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005537 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5538 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5539 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005540 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005541 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5542 "\xde\xca\xf8\x88",
5543 .input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5544 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5545 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5546 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5547 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5548 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5549 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5550 "\xcc\xda\x27\x10"
5551 "\x25\x19\x49\x8e\x80\xf1\x47\x8f"
5552 "\x37\xba\x55\xbd\x6d\x27\x61\x8c",
Herbert Xu6160b282007-12-04 19:17:50 +11005553 .ilen = 76,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005554 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5555 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5556 "\xab\xad\xda\xd2",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005557 .alen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005558 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5559 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5560 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5561 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5562 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5563 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5564 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5565 "\xba\x63\x7b\x39",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005566 .rlen = 60,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005567 }
5568};
5569
Joy Latten93cc74e2007-12-12 20:24:22 +08005570static struct aead_testvec aes_ccm_enc_tv_template[] = {
5571 { /* From RFC 3610 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005572 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5573 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005574 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005575 .iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
5576 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5577 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
Joy Latten93cc74e2007-12-12 20:24:22 +08005578 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005579 .input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5580 "\x10\x11\x12\x13\x14\x15\x16\x17"
5581 "\x18\x19\x1a\x1b\x1c\x1d\x1e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005582 .ilen = 23,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005583 .result = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
5584 "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
5585 "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
5586 "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
Joy Latten93cc74e2007-12-12 20:24:22 +08005587 .rlen = 31,
5588 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005589 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5590 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005591 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005592 .iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
5593 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5594 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5595 "\x08\x09\x0a\x0b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005596 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005597 .input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5598 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5599 "\x1c\x1d\x1e\x1f",
Joy Latten93cc74e2007-12-12 20:24:22 +08005600 .ilen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005601 .result = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
5602 "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
5603 "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
5604 "\x7d\x9c\x2d\x93",
Joy Latten93cc74e2007-12-12 20:24:22 +08005605 .rlen = 28,
5606 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005607 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5608 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005609 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005610 .iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
5611 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5612 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
Joy Latten93cc74e2007-12-12 20:24:22 +08005613 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005614 .input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5615 "\x10\x11\x12\x13\x14\x15\x16\x17"
5616 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
5617 "\x20",
Joy Latten93cc74e2007-12-12 20:24:22 +08005618 .ilen = 25,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005619 .result = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
5620 "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
5621 "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
5622 "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
5623 "\x7e\x5f\x4e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005624 .rlen = 35,
5625 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005626 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5627 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005628 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005629 .iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
5630 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5631 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5632 "\x08\x09\x0a\x0b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005633 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005634 .input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5635 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5636 "\x1c\x1d\x1e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005637 .ilen = 19,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005638 .result = "\x07\x34\x25\x94\x15\x77\x85\x15"
5639 "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
5640 "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
5641 "\x4d\x99\x99\x88\xdd",
Joy Latten93cc74e2007-12-12 20:24:22 +08005642 .rlen = 29,
5643 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005644 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5645 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005646 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005647 .iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
5648 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5649 .assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
Joy Latten93cc74e2007-12-12 20:24:22 +08005650 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005651 .input = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
5652 "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
5653 "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
Joy Latten93cc74e2007-12-12 20:24:22 +08005654 .ilen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005655 .result = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
5656 "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
5657 "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
5658 "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
Joy Latten93cc74e2007-12-12 20:24:22 +08005659 .rlen = 32,
5660 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005661 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5662 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005663 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005664 .iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
5665 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5666 .assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
5667 "\x20\xea\x60\xc0",
Joy Latten93cc74e2007-12-12 20:24:22 +08005668 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005669 .input = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
5670 "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
5671 "\x3a\x80\x3b\xa8\x7f",
Joy Latten93cc74e2007-12-12 20:24:22 +08005672 .ilen = 21,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005673 .result = "\x00\x97\x69\xec\xab\xdf\x48\x62"
5674 "\x55\x94\xc5\x92\x51\xe6\x03\x57"
5675 "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
5676 "\x5a\xe0\x70\x45\x51",
Joy Latten93cc74e2007-12-12 20:24:22 +08005677 .rlen = 29,
5678 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005679 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5680 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005681 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005682 .iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
5683 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5684 .assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
Joy Latten93cc74e2007-12-12 20:24:22 +08005685 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005686 .input = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
5687 "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
5688 "\x98\x09\xd6\x7d\xbe\xdd\x18",
Joy Latten93cc74e2007-12-12 20:24:22 +08005689 .ilen = 23,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005690 .result = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
5691 "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
5692 "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
5693 "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
5694 "\xba",
Joy Latten93cc74e2007-12-12 20:24:22 +08005695 .rlen = 33,
5696 },
5697};
5698
5699static struct aead_testvec aes_ccm_dec_tv_template[] = {
5700 { /* From RFC 3610 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005701 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5702 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005703 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005704 .iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
5705 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5706 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
Joy Latten93cc74e2007-12-12 20:24:22 +08005707 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005708 .input = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
5709 "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
5710 "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
5711 "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
Joy Latten93cc74e2007-12-12 20:24:22 +08005712 .ilen = 31,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005713 .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5714 "\x10\x11\x12\x13\x14\x15\x16\x17"
5715 "\x18\x19\x1a\x1b\x1c\x1d\x1e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005716 .rlen = 23,
5717 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005718 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5719 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005720 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005721 .iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
5722 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5723 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5724 "\x08\x09\x0a\x0b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005725 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005726 .input = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
5727 "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
5728 "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
5729 "\x7d\x9c\x2d\x93",
Joy Latten93cc74e2007-12-12 20:24:22 +08005730 .ilen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005731 .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5732 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5733 "\x1c\x1d\x1e\x1f",
Joy Latten93cc74e2007-12-12 20:24:22 +08005734 .rlen = 20,
5735 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005736 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5737 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005738 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005739 .iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
5740 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5741 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
Joy Latten93cc74e2007-12-12 20:24:22 +08005742 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005743 .input = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
5744 "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
5745 "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
5746 "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
5747 "\x7e\x5f\x4e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005748 .ilen = 35,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005749 .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5750 "\x10\x11\x12\x13\x14\x15\x16\x17"
5751 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
5752 "\x20",
Joy Latten93cc74e2007-12-12 20:24:22 +08005753 .rlen = 25,
5754 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005755 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5756 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005757 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005758 .iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
5759 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5760 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5761 "\x08\x09\x0a\x0b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005762 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005763 .input = "\x07\x34\x25\x94\x15\x77\x85\x15"
5764 "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
5765 "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
5766 "\x4d\x99\x99\x88\xdd",
Joy Latten93cc74e2007-12-12 20:24:22 +08005767 .ilen = 29,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005768 .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5769 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5770 "\x1c\x1d\x1e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005771 .rlen = 19,
5772 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005773 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5774 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005775 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005776 .iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
5777 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5778 .assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
Joy Latten93cc74e2007-12-12 20:24:22 +08005779 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005780 .input = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
5781 "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
5782 "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
5783 "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
Joy Latten93cc74e2007-12-12 20:24:22 +08005784 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005785 .result = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
5786 "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
5787 "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
Joy Latten93cc74e2007-12-12 20:24:22 +08005788 .rlen = 24,
5789 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005790 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5791 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005792 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005793 .iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
5794 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5795 .assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
5796 "\x20\xea\x60\xc0",
Joy Latten93cc74e2007-12-12 20:24:22 +08005797 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005798 .input = "\x00\x97\x69\xec\xab\xdf\x48\x62"
5799 "\x55\x94\xc5\x92\x51\xe6\x03\x57"
5800 "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
5801 "\x5a\xe0\x70\x45\x51",
Joy Latten93cc74e2007-12-12 20:24:22 +08005802 .ilen = 29,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005803 .result = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
5804 "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
5805 "\x3a\x80\x3b\xa8\x7f",
Joy Latten93cc74e2007-12-12 20:24:22 +08005806 .rlen = 21,
5807 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005808 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5809 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005810 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005811 .iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
5812 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5813 .assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
Joy Latten93cc74e2007-12-12 20:24:22 +08005814 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005815 .input = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
5816 "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
5817 "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
5818 "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
5819 "\xba",
Joy Latten93cc74e2007-12-12 20:24:22 +08005820 .ilen = 33,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005821 .result = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
5822 "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
5823 "\x98\x09\xd6\x7d\xbe\xdd\x18",
Joy Latten93cc74e2007-12-12 20:24:22 +08005824 .rlen = 23,
5825 },
5826};
5827
Linus Torvalds1da177e2005-04-16 15:20:36 -07005828/* Cast5 test vectors from RFC 2144 */
5829#define CAST5_ENC_TEST_VECTORS 3
5830#define CAST5_DEC_TEST_VECTORS 3
5831
Herbert Xuef2736f2005-06-22 13:26:03 -07005832static struct cipher_testvec cast5_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005833 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005834 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5835 "\x23\x45\x67\x89\x34\x56\x78\x9a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005836 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005837 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005838 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005839 .result = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005840 .rlen = 8,
5841 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005842 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5843 "\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005844 .klen = 10,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005845 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005846 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005847 .result = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005848 .rlen = 8,
5849 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005850 .key = "\x01\x23\x45\x67\x12",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005851 .klen = 5,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005852 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005853 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005854 .result = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005855 .rlen = 8,
5856 },
5857};
5858
Herbert Xuef2736f2005-06-22 13:26:03 -07005859static struct cipher_testvec cast5_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005860 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005861 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5862 "\x23\x45\x67\x89\x34\x56\x78\x9a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005863 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005864 .input = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005865 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005866 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005867 .rlen = 8,
5868 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005869 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5870 "\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005871 .klen = 10,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005872 .input = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005873 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005874 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005875 .rlen = 8,
5876 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005877 .key = "\x01\x23\x45\x67\x12",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005878 .klen = 5,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005879 .input = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005880 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005881 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005882 .rlen = 8,
5883 },
5884};
5885
Herbert Xuef2736f2005-06-22 13:26:03 -07005886/*
5887 * ARC4 test vectors from OpenSSL
Linus Torvalds1da177e2005-04-16 15:20:36 -07005888 */
5889#define ARC4_ENC_TEST_VECTORS 7
5890#define ARC4_DEC_TEST_VECTORS 7
5891
Herbert Xuef2736f2005-06-22 13:26:03 -07005892static struct cipher_testvec arc4_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005893 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005894 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005895 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005896 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005897 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005898 .result = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005899 .rlen = 8,
5900 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005901 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005902 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005903 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005904 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005905 .result = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005906 .rlen = 8,
5907 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005908 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005909 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005910 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005911 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005912 .result = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005913 .rlen = 8,
5914 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005915 .key = "\xef\x01\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005916 .klen = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005917 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
5918 "\x00\x00\x00\x00\x00\x00\x00\x00"
5919 "\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005920 .ilen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005921 .result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5922 "\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
5923 "\x36\xb6\x78\x58",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005924 .rlen = 20,
5925 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005926 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005927 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005928 .input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5929 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5930 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5931 "\x12\x34\x56\x78",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005932 .ilen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005933 .result = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
5934 "\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
5935 "\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
5936 "\x40\x01\x1e\xcf",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005937 .rlen = 28,
5938 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005939 .key = "\xef\x01\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005940 .klen = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005941 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
5942 "\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005943 .ilen = 10,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005944 .result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5945 "\xbd\x61",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005946 .rlen = 10,
5947 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005948 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
5949 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005950 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005951 .input = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005952 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005953 .result = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005954 .rlen = 8,
5955 },
5956};
5957
Herbert Xuef2736f2005-06-22 13:26:03 -07005958static struct cipher_testvec arc4_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005959 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005960 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005961 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005962 .input = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005963 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005964 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005965 .rlen = 8,
5966 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005967 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005968 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005969 .input = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005970 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005971 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005972 .rlen = 8,
5973 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005974 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005975 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005976 .input = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005977 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005978 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005979 .rlen = 8,
5980 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005981 .key = "\xef\x01\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005982 .klen = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005983 .input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5984 "\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
5985 "\x36\xb6\x78\x58",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005986 .ilen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005987 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
5988 "\x00\x00\x00\x00\x00\x00\x00\x00"
5989 "\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005990 .rlen = 20,
5991 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005992 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005993 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005994 .input = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
5995 "\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
5996 "\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
5997 "\x40\x01\x1e\xcf",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005998 .ilen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005999 .result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
6000 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
6001 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
6002 "\x12\x34\x56\x78",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006003 .rlen = 28,
6004 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006005 .key = "\xef\x01\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006006 .klen = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006007 .input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
6008 "\xbd\x61",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006009 .ilen = 10,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006010 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
6011 "\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006012 .rlen = 10,
6013 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006014 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
6015 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006016 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006017 .input = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006018 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006019 .result = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006020 .rlen = 8,
6021 },
6022};
6023
Herbert Xuef2736f2005-06-22 13:26:03 -07006024/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07006025 * TEA test vectors
6026 */
6027#define TEA_ENC_TEST_VECTORS 4
6028#define TEA_DEC_TEST_VECTORS 4
6029
Herbert Xuef2736f2005-06-22 13:26:03 -07006030static struct cipher_testvec tea_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07006031 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006032 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07006033 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006034 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07006035 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006036 .result = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006037 .rlen = 8,
6038 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006039 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6040 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006041 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006042 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006043 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006044 .result = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006045 .rlen = 8,
6046 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006047 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6048 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006049 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006050 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6051 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006052 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006053 .result = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
6054 "\xdd\x89\xa1\x25\x04\x21\xdf\x95",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006055 .rlen = 16,
6056 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006057 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6058 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006059 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006060 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
6061 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6062 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6063 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006064 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006065 .result = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
6066 "\x94\x18\x95\x91\xa9\xfc\x49\xf8"
6067 "\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
6068 "\x07\x89\x73\xc2\x45\x92\xc6\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006069 .rlen = 32,
6070 }
6071};
6072
Herbert Xuef2736f2005-06-22 13:26:03 -07006073static struct cipher_testvec tea_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07006074 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006075 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07006076 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006077 .input = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006078 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006079 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07006080 .rlen = 8,
6081 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006082 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6083 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006084 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006085 .input = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006086 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006087 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006088 .rlen = 8,
6089 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006090 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6091 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006092 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006093 .input = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
6094 "\xdd\x89\xa1\x25\x04\x21\xdf\x95",
Herbert Xuef2736f2005-06-22 13:26:03 -07006095 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006096 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6097 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006098 .rlen = 16,
6099 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006100 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6101 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006102 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006103 .input = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
6104 "\x94\x18\x95\x91\xa9\xfc\x49\xf8"
6105 "\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
6106 "\x07\x89\x73\xc2\x45\x92\xc6\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006107 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006108 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
6109 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6110 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6111 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006112 .rlen = 32,
6113 }
6114};
6115
Herbert Xuef2736f2005-06-22 13:26:03 -07006116/*
6117 * XTEA test vectors
Linus Torvalds1da177e2005-04-16 15:20:36 -07006118 */
6119#define XTEA_ENC_TEST_VECTORS 4
6120#define XTEA_DEC_TEST_VECTORS 4
6121
Herbert Xuef2736f2005-06-22 13:26:03 -07006122static struct cipher_testvec xtea_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07006123 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006124 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07006125 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006126 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07006127 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006128 .result = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006129 .rlen = 8,
6130 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006131 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6132 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006133 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006134 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006135 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006136 .result = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006137 .rlen = 8,
6138 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006139 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6140 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006141 .klen = 16,
Sebastian Siewiorf0df30b2008-03-13 20:29:07 +08006142 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006143 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006144 .ilen = 16,
Sebastian Siewiorf0df30b2008-03-13 20:29:07 +08006145 .result = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
6146 "\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006147 .rlen = 16,
6148 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006149 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6150 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006151 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006152 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
6153 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6154 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6155 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006156 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006157 .result = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
6158 "\x86\xff\x6f\xd0\xe3\x87\x70\x07"
6159 "\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
6160 "\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006161 .rlen = 32,
6162 }
6163};
6164
Herbert Xuef2736f2005-06-22 13:26:03 -07006165static struct cipher_testvec xtea_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07006166 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006167 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07006168 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006169 .input = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006170 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006171 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07006172 .rlen = 8,
6173 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006174 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6175 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006176 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006177 .input = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006178 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006179 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006180 .rlen = 8,
6181 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006182 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6183 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006184 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006185 .input = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
6186 "\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006187 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006188 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6189 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006190 .rlen = 16,
6191 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006192 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6193 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006194 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006195 .input = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
6196 "\x86\xff\x6f\xd0\xe3\x87\x70\x07"
6197 "\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
6198 "\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006199 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006200 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
6201 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6202 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6203 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006204 .rlen = 32,
6205 }
6206};
6207
6208/*
6209 * KHAZAD test vectors.
6210 */
6211#define KHAZAD_ENC_TEST_VECTORS 5
6212#define KHAZAD_DEC_TEST_VECTORS 5
6213
Herbert Xuef2736f2005-06-22 13:26:03 -07006214static struct cipher_testvec khazad_enc_tv_template[] = {
6215 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006216 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
6217 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006218 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006219 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006220 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006221 .result = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006222 .rlen = 8,
6223 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006224 .key = "\x38\x38\x38\x38\x38\x38\x38\x38"
6225 "\x38\x38\x38\x38\x38\x38\x38\x38",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006226 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006227 .input = "\x38\x38\x38\x38\x38\x38\x38\x38",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006228 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006229 .result = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006230 .rlen = 8,
6231 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006232 .key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
6233 "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006234 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006235 .input = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006236 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006237 .result = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006238 .rlen = 8,
6239 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006240 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6241 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006242 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006243 .input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006244 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006245 .result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006246 .rlen = 8,
6247 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006248 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6249 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006250 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006251 .input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6252 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006253 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006254 .result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
6255 "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006256 .rlen = 16,
6257 },
6258};
6259
Herbert Xuef2736f2005-06-22 13:26:03 -07006260static struct cipher_testvec khazad_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07006261 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006262 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
6263 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006264 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006265 .input = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006266 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006267 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006268 .rlen = 8,
6269 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006270 .key = "\x38\x38\x38\x38\x38\x38\x38\x38"
6271 "\x38\x38\x38\x38\x38\x38\x38\x38",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006272 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006273 .input = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006274 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006275 .result = "\x38\x38\x38\x38\x38\x38\x38\x38",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006276 .rlen = 8,
6277 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006278 .key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
6279 "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006280 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006281 .input = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006282 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006283 .result = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006284 .rlen = 8,
6285 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006286 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6287 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006288 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006289 .input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006290 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006291 .result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006292 .rlen = 8,
6293 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006294 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6295 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006296 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006297 .input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
6298 "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006299 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006300 .result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6301 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006302 .rlen = 16,
6303 },
6304};
6305
6306/*
6307 * Anubis test vectors.
6308 */
6309
6310#define ANUBIS_ENC_TEST_VECTORS 5
6311#define ANUBIS_DEC_TEST_VECTORS 5
6312#define ANUBIS_CBC_ENC_TEST_VECTORS 2
6313#define ANUBIS_CBC_DEC_TEST_VECTORS 2
6314
6315static struct cipher_testvec anubis_enc_tv_template[] = {
6316 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006317 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6318 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006319 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006320 .input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6321 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006322 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006323 .result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6324 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006325 .rlen = 16,
6326 }, {
6327
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006328 .key = "\x03\x03\x03\x03\x03\x03\x03\x03"
6329 "\x03\x03\x03\x03\x03\x03\x03\x03"
6330 "\x03\x03\x03\x03",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006331 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006332 .input = "\x03\x03\x03\x03\x03\x03\x03\x03"
6333 "\x03\x03\x03\x03\x03\x03\x03\x03",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006334 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006335 .result = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
6336 "\x87\x41\x6f\x82\x0a\x98\x64\xae",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006337 .rlen = 16,
6338 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006339 .key = "\x24\x24\x24\x24\x24\x24\x24\x24"
6340 "\x24\x24\x24\x24\x24\x24\x24\x24"
6341 "\x24\x24\x24\x24\x24\x24\x24\x24"
6342 "\x24\x24\x24\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006343 .klen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006344 .input = "\x24\x24\x24\x24\x24\x24\x24\x24"
6345 "\x24\x24\x24\x24\x24\x24\x24\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006346 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006347 .result = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
6348 "\x06\xd3\x61\x27\xfd\x13\x9e\xde",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006349 .rlen = 16,
6350 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006351 .key = "\x25\x25\x25\x25\x25\x25\x25\x25"
6352 "\x25\x25\x25\x25\x25\x25\x25\x25"
6353 "\x25\x25\x25\x25\x25\x25\x25\x25"
6354 "\x25\x25\x25\x25\x25\x25\x25\x25",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006355 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006356 .input = "\x25\x25\x25\x25\x25\x25\x25\x25"
6357 "\x25\x25\x25\x25\x25\x25\x25\x25",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006358 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006359 .result = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
6360 "\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006361 .rlen = 16,
6362 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006363 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6364 "\x35\x35\x35\x35\x35\x35\x35\x35"
6365 "\x35\x35\x35\x35\x35\x35\x35\x35"
6366 "\x35\x35\x35\x35\x35\x35\x35\x35"
6367 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006368 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006369 .input = "\x35\x35\x35\x35\x35\x35\x35\x35"
6370 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006371 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006372 .result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6373 "\x9e\xc6\x84\x0f\x17\x21\x07\xee",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006374 .rlen = 16,
6375 },
6376};
6377
6378static struct cipher_testvec anubis_dec_tv_template[] = {
6379 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006380 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6381 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006382 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006383 .input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6384 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006385 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006386 .result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6387 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006388 .rlen = 16,
6389 }, {
6390
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006391 .key = "\x03\x03\x03\x03\x03\x03\x03\x03"
6392 "\x03\x03\x03\x03\x03\x03\x03\x03"
6393 "\x03\x03\x03\x03",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006394 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006395 .input = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
6396 "\x87\x41\x6f\x82\x0a\x98\x64\xae",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006397 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006398 .result = "\x03\x03\x03\x03\x03\x03\x03\x03"
6399 "\x03\x03\x03\x03\x03\x03\x03\x03",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006400 .rlen = 16,
6401 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006402 .key = "\x24\x24\x24\x24\x24\x24\x24\x24"
6403 "\x24\x24\x24\x24\x24\x24\x24\x24"
6404 "\x24\x24\x24\x24\x24\x24\x24\x24"
6405 "\x24\x24\x24\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006406 .klen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006407 .input = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
6408 "\x06\xd3\x61\x27\xfd\x13\x9e\xde",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006409 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006410 .result = "\x24\x24\x24\x24\x24\x24\x24\x24"
6411 "\x24\x24\x24\x24\x24\x24\x24\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006412 .rlen = 16,
6413 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006414 .key = "\x25\x25\x25\x25\x25\x25\x25\x25"
6415 "\x25\x25\x25\x25\x25\x25\x25\x25"
6416 "\x25\x25\x25\x25\x25\x25\x25\x25"
6417 "\x25\x25\x25\x25\x25\x25\x25\x25",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006418 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006419 .input = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
6420 "\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006421 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006422 .result = "\x25\x25\x25\x25\x25\x25\x25\x25"
6423 "\x25\x25\x25\x25\x25\x25\x25\x25",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006424 .rlen = 16,
6425 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006426 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6427 "\x35\x35\x35\x35\x35\x35\x35\x35"
6428 "\x35\x35\x35\x35\x35\x35\x35\x35"
6429 "\x35\x35\x35\x35\x35\x35\x35\x35"
6430 "\x35\x35\x35\x35\x35\x35\x35\x35",
6431 .input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6432 "\x9e\xc6\x84\x0f\x17\x21\x07\xee",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006433 .klen = 40,
6434 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006435 .result = "\x35\x35\x35\x35\x35\x35\x35\x35"
6436 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006437 .rlen = 16,
6438 },
6439};
6440
6441static struct cipher_testvec anubis_cbc_enc_tv_template[] = {
6442 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006443 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6444 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006445 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006446 .input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6447 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6448 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6449 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006450 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006451 .result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6452 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
6453 "\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
6454 "\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006455 .rlen = 32,
6456 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006457 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6458 "\x35\x35\x35\x35\x35\x35\x35\x35"
6459 "\x35\x35\x35\x35\x35\x35\x35\x35"
6460 "\x35\x35\x35\x35\x35\x35\x35\x35"
6461 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006462 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006463 .input = "\x35\x35\x35\x35\x35\x35\x35\x35"
6464 "\x35\x35\x35\x35\x35\x35\x35\x35"
6465 "\x35\x35\x35\x35\x35\x35\x35\x35"
6466 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006467 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006468 .result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6469 "\x9e\xc6\x84\x0f\x17\x21\x07\xee"
6470 "\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
6471 "\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006472 .rlen = 32,
6473 },
6474};
6475
6476static struct cipher_testvec anubis_cbc_dec_tv_template[] = {
6477 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006478 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6479 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006480 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006481 .input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6482 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
6483 "\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
6484 "\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006485 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006486 .result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6487 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6488 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6489 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006490 .rlen = 32,
6491 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006492 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6493 "\x35\x35\x35\x35\x35\x35\x35\x35"
6494 "\x35\x35\x35\x35\x35\x35\x35\x35"
6495 "\x35\x35\x35\x35\x35\x35\x35\x35"
6496 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006497 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006498 .input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6499 "\x9e\xc6\x84\x0f\x17\x21\x07\xee"
6500 "\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
6501 "\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006502 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006503 .result = "\x35\x35\x35\x35\x35\x35\x35\x35"
6504 "\x35\x35\x35\x35\x35\x35\x35\x35"
6505 "\x35\x35\x35\x35\x35\x35\x35\x35"
6506 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006507 .rlen = 32,
6508 },
6509};
6510
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006511/*
6512 * XETA test vectors
6513 */
6514#define XETA_ENC_TEST_VECTORS 4
6515#define XETA_DEC_TEST_VECTORS 4
6516
6517static struct cipher_testvec xeta_enc_tv_template[] = {
6518 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006519 .key = zeroed_string,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006520 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006521 .input = zeroed_string,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006522 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006523 .result = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006524 .rlen = 8,
6525 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006526 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6527 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006528 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006529 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006530 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006531 .result = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006532 .rlen = 8,
6533 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006534 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6535 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006536 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006537 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6538 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006539 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006540 .result = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
6541 "\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006542 .rlen = 16,
6543 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006544 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6545 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006546 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006547 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
6548 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6549 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6550 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006551 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006552 .result = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
6553 "\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
6554 "\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
6555 "\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006556 .rlen = 32,
6557 }
6558};
6559
6560static struct cipher_testvec xeta_dec_tv_template[] = {
6561 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006562 .key = zeroed_string,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006563 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006564 .input = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006565 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006566 .result = zeroed_string,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006567 .rlen = 8,
6568 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006569 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6570 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006571 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006572 .input = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006573 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006574 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006575 .rlen = 8,
6576 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006577 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6578 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006579 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006580 .input = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
6581 "\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006582 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006583 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6584 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006585 .rlen = 16,
6586 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006587 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6588 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006589 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006590 .input = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
6591 "\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
6592 "\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
6593 "\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006594 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006595 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
6596 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6597 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6598 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006599 .rlen = 32,
6600 }
6601};
6602
David Howells90831632006-12-16 12:13:14 +11006603/*
6604 * FCrypt test vectors
6605 */
6606#define FCRYPT_ENC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_enc_tv_template)
6607#define FCRYPT_DEC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_dec_tv_template)
6608
6609static struct cipher_testvec fcrypt_pcbc_enc_tv_template[] = {
6610 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006611 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
David Howells90831632006-12-16 12:13:14 +11006612 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006613 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6614 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
David Howells90831632006-12-16 12:13:14 +11006615 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006616 .result = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
David Howells90831632006-12-16 12:13:14 +11006617 .rlen = 8,
6618 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006619 .key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
David Howells90831632006-12-16 12:13:14 +11006620 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006621 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6622 .input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
David Howells90831632006-12-16 12:13:14 +11006623 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006624 .result = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
David Howells90831632006-12-16 12:13:14 +11006625 .rlen = 8,
6626 }, { /* From Arla */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006627 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
David Howells90831632006-12-16 12:13:14 +11006628 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006629 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
David Howells90831632006-12-16 12:13:14 +11006630 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6631 .ilen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006632 .result = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
6633 "\xee\xac\x98\x62\x44\x51\xe4\x84"
6634 "\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
6635 "\xd2\xd9\x13\x79\x72\xa3\x45\x03"
6636 "\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
6637 "\xf8\x91\x3c\xac\x44\x22\x92\xef",
David Howells90831632006-12-16 12:13:14 +11006638 .rlen = 48,
6639 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006640 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
David Howells90831632006-12-16 12:13:14 +11006641 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006642 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
David Howells90831632006-12-16 12:13:14 +11006643 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6644 .ilen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006645 .result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6646 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6647 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6648 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6649 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6650 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
David Howells90831632006-12-16 12:13:14 +11006651 .rlen = 48,
6652 }, { /* split-page version */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006653 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
David Howells90831632006-12-16 12:13:14 +11006654 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006655 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
David Howells90831632006-12-16 12:13:14 +11006656 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6657 .ilen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006658 .result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6659 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6660 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6661 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6662 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6663 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
David Howells90831632006-12-16 12:13:14 +11006664 .rlen = 48,
6665 .np = 2,
6666 .tap = { 20, 28 },
6667 }
6668};
6669
6670static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
6671 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006672 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
David Howells90831632006-12-16 12:13:14 +11006673 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006674 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6675 .input = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
David Howells90831632006-12-16 12:13:14 +11006676 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006677 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
David Howells90831632006-12-16 12:13:14 +11006678 .rlen = 8,
6679 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006680 .key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
David Howells90831632006-12-16 12:13:14 +11006681 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006682 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6683 .input = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
David Howells90831632006-12-16 12:13:14 +11006684 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006685 .result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
David Howells90831632006-12-16 12:13:14 +11006686 .rlen = 8,
6687 }, { /* From Arla */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006688 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
David Howells90831632006-12-16 12:13:14 +11006689 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006690 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6691 .input = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
6692 "\xee\xac\x98\x62\x44\x51\xe4\x84"
6693 "\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
6694 "\xd2\xd9\x13\x79\x72\xa3\x45\x03"
6695 "\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
6696 "\xf8\x91\x3c\xac\x44\x22\x92\xef",
David Howells90831632006-12-16 12:13:14 +11006697 .ilen = 48,
6698 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6699 .rlen = 48,
6700 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006701 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
David Howells90831632006-12-16 12:13:14 +11006702 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006703 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6704 .input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6705 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6706 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6707 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6708 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6709 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
David Howells90831632006-12-16 12:13:14 +11006710 .ilen = 48,
6711 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6712 .rlen = 48,
6713 }, { /* split-page version */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006714 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
David Howells90831632006-12-16 12:13:14 +11006715 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006716 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6717 .input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6718 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6719 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6720 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6721 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6722 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
David Howells90831632006-12-16 12:13:14 +11006723 .ilen = 48,
6724 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6725 .rlen = 48,
6726 .np = 2,
6727 .tap = { 20, 28 },
6728 }
6729};
6730
Linus Torvalds1da177e2005-04-16 15:20:36 -07006731/*
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006732 * CAMELLIA test vectors.
6733 */
6734#define CAMELLIA_ENC_TEST_VECTORS 3
6735#define CAMELLIA_DEC_TEST_VECTORS 3
6736#define CAMELLIA_CBC_ENC_TEST_VECTORS 2
6737#define CAMELLIA_CBC_DEC_TEST_VECTORS 2
6738
6739static struct cipher_testvec camellia_enc_tv_template[] = {
6740 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006741 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6742 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006743 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006744 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6745 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006746 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006747 .result = "\x67\x67\x31\x38\x54\x96\x69\x73"
6748 "\x08\x57\x06\x56\x48\xea\xbe\x43",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006749 .rlen = 16,
6750 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006751 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6752 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6753 "\x00\x11\x22\x33\x44\x55\x66\x77",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006754 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006755 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6756 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006757 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006758 .result = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
6759 "\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006760 .rlen = 16,
6761 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006762 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6763 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6764 "\x00\x11\x22\x33\x44\x55\x66\x77"
6765 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006766 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006767 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6768 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006769 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006770 .result = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
6771 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006772 .rlen = 16,
6773 },
6774};
6775
6776static struct cipher_testvec camellia_dec_tv_template[] = {
6777 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006778 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6779 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006780 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006781 .input = "\x67\x67\x31\x38\x54\x96\x69\x73"
6782 "\x08\x57\x06\x56\x48\xea\xbe\x43",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006783 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006784 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6785 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006786 .rlen = 16,
6787 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006788 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6789 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6790 "\x00\x11\x22\x33\x44\x55\x66\x77",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006791 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006792 .input = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
6793 "\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006794 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006795 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6796 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006797 .rlen = 16,
6798 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006799 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6800 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6801 "\x00\x11\x22\x33\x44\x55\x66\x77"
6802 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006803 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006804 .input = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
6805 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006806 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006807 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6808 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006809 .rlen = 16,
6810 },
6811};
6812
6813static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
6814 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006815 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
6816 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006817 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006818 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
6819 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
6820 .input = "Single block msg",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006821 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006822 .result = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
6823 "\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006824 .rlen = 16,
6825 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006826 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
6827 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006828 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006829 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
6830 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
6831 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
6832 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6833 "\x10\x11\x12\x13\x14\x15\x16\x17"
6834 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006835 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006836 .result = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
6837 "\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
6838 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
6839 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006840 .rlen = 32,
6841 },
6842};
6843
6844static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
6845 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006846 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
6847 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006848 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006849 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
6850 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
6851 .input = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
6852 "\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006853 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006854 .result = "Single block msg",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006855 .rlen = 16,
6856 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006857 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
6858 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006859 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006860 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
6861 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
6862 .input = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
6863 "\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
6864 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
6865 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006866 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006867 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
6868 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6869 "\x10\x11\x12\x13\x14\x15\x16\x17"
6870 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006871 .rlen = 32,
6872 },
6873};
6874
6875/*
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006876 * SEED test vectors
6877 */
6878#define SEED_ENC_TEST_VECTORS 4
6879#define SEED_DEC_TEST_VECTORS 4
6880
6881static struct cipher_testvec seed_enc_tv_template[] = {
6882 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006883 .key = zeroed_string,
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006884 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006885 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
6886 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006887 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006888 .result = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
6889 "\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006890 .rlen = 16,
6891 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006892 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6893 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006894 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006895 .input = zeroed_string,
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006896 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006897 .result = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
6898 "\x84\x48\x35\x97\xe4\x37\x0f\x43",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006899 .rlen = 16,
6900 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006901 .key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
6902 "\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006903 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006904 .input = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
6905 "\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006906 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006907 .result = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
6908 "\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006909 .rlen = 16,
6910 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006911 .key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
6912 "\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006913 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006914 .input = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
6915 "\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006916 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006917 .result = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
6918 "\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006919 .rlen = 16,
6920 }
6921};
6922
6923static struct cipher_testvec seed_dec_tv_template[] = {
6924 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006925 .key = zeroed_string,
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006926 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006927 .input = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
6928 "\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006929 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006930 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
6931 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006932 .rlen = 16,
6933 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006934 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6935 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006936 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006937 .input = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
6938 "\x84\x48\x35\x97\xe4\x37\x0f\x43",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006939 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006940 .result = zeroed_string,
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006941 .rlen = 16,
6942 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006943 .key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
6944 "\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006945 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006946 .input = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
6947 "\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006948 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006949 .result = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
6950 "\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006951 .rlen = 16,
6952 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006953 .key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
6954 "\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006955 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006956 .input = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
6957 "\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006958 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006959 .result = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
6960 "\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006961 .rlen = 16,
6962 }
6963};
6964
Tan Swee Heng8bff6642007-12-07 16:41:29 +08006965#define SALSA20_STREAM_ENC_TEST_VECTORS 5
Tan Swee Heng2407d602007-11-23 19:45:00 +08006966static struct cipher_testvec salsa20_stream_enc_tv_template[] = {
6967 /*
6968 * Testvectors from verified.test-vectors submitted to ECRYPT.
6969 * They are truncated to size 39, 64, 111, 129 to test a variety
6970 * of input length.
6971 */
6972 { /* Set 3, vector 0 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006973 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6974 "\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006975 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006976 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6977 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6978 "\x00\x00\x00\x00\x00\x00\x00\x00"
6979 "\x00\x00\x00\x00\x00\x00\x00\x00"
6980 "\x00\x00\x00\x00\x00\x00\x00\x00"
6981 "\x00\x00\x00\x00\x00\x00\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006982 .ilen = 39,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006983 .result = "\x2D\xD5\xC3\xF7\xBA\x2B\x20\xF7"
6984 "\x68\x02\x41\x0C\x68\x86\x88\x89"
6985 "\x5A\xD8\xC1\xBD\x4E\xA6\xC9\xB1"
6986 "\x40\xFB\x9B\x90\xE2\x10\x49\xBF"
6987 "\x58\x3F\x52\x79\x70\xEB\xC1",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006988 .rlen = 39,
6989 }, { /* Set 5, vector 0 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006990 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
6991 "\x00\x00\x00\x00\x00\x00\x00\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006992 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006993 .iv = "\x80\x00\x00\x00\x00\x00\x00\x00",
6994 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6995 "\x00\x00\x00\x00\x00\x00\x00\x00"
6996 "\x00\x00\x00\x00\x00\x00\x00\x00"
6997 "\x00\x00\x00\x00\x00\x00\x00\x00"
6998 "\x00\x00\x00\x00\x00\x00\x00\x00"
6999 "\x00\x00\x00\x00\x00\x00\x00\x00"
7000 "\x00\x00\x00\x00\x00\x00\x00\x00"
7001 "\x00\x00\x00\x00\x00\x00\x00\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08007002 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007003 .result = "\xB6\x6C\x1E\x44\x46\xDD\x95\x57"
7004 "\xE5\x78\xE2\x23\xB0\xB7\x68\x01"
7005 "\x7B\x23\xB2\x67\xBB\x02\x34\xAE"
7006 "\x46\x26\xBF\x44\x3F\x21\x97\x76"
7007 "\x43\x6F\xB1\x9F\xD0\xE8\x86\x6F"
7008 "\xCD\x0D\xE9\xA9\x53\x8F\x4A\x09"
7009 "\xCA\x9A\xC0\x73\x2E\x30\xBC\xF9"
7010 "\x8E\x4F\x13\xE4\xB9\xE2\x01\xD9",
Tan Swee Heng2407d602007-11-23 19:45:00 +08007011 .rlen = 64,
7012 }, { /* Set 3, vector 27 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007013 .key = "\x1B\x1C\x1D\x1E\x1F\x20\x21\x22"
7014 "\x23\x24\x25\x26\x27\x28\x29\x2A"
7015 "\x2B\x2C\x2D\x2E\x2F\x30\x31\x32"
7016 "\x33\x34\x35\x36\x37\x38\x39\x3A",
Tan Swee Heng2407d602007-11-23 19:45:00 +08007017 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007018 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
7019 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
7020 "\x00\x00\x00\x00\x00\x00\x00\x00"
7021 "\x00\x00\x00\x00\x00\x00\x00\x00"
7022 "\x00\x00\x00\x00\x00\x00\x00\x00"
7023 "\x00\x00\x00\x00\x00\x00\x00\x00"
7024 "\x00\x00\x00\x00\x00\x00\x00\x00"
7025 "\x00\x00\x00\x00\x00\x00\x00\x00"
7026 "\x00\x00\x00\x00\x00\x00\x00\x00"
7027 "\x00\x00\x00\x00\x00\x00\x00\x00"
7028 "\x00\x00\x00\x00\x00\x00\x00\x00"
7029 "\x00\x00\x00\x00\x00\x00\x00\x00"
7030 "\x00\x00\x00\x00\x00\x00\x00\x00"
7031 "\x00\x00\x00\x00\x00\x00\x00\x00"
7032 "\x00\x00\x00\x00\x00\x00\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08007033 .ilen = 111,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007034 .result = "\xAE\x39\x50\x8E\xAC\x9A\xEC\xE7"
7035 "\xBF\x97\xBB\x20\xB9\xDE\xE4\x1F"
7036 "\x87\xD9\x47\xF8\x28\x91\x35\x98"
7037 "\xDB\x72\xCC\x23\x29\x48\x56\x5E"
7038 "\x83\x7E\x0B\xF3\x7D\x5D\x38\x7B"
7039 "\x2D\x71\x02\xB4\x3B\xB5\xD8\x23"
7040 "\xB0\x4A\xDF\x3C\xEC\xB6\xD9\x3B"
7041 "\x9B\xA7\x52\xBE\xC5\xD4\x50\x59"
7042 "\x15\x14\xB4\x0E\x40\xE6\x53\xD1"
7043 "\x83\x9C\x5B\xA0\x92\x29\x6B\x5E"
7044 "\x96\x5B\x1E\x2F\xD3\xAC\xC1\x92"
7045 "\xB1\x41\x3F\x19\x2F\xC4\x3B\xC6"
7046 "\x95\x46\x45\x54\xE9\x75\x03\x08"
7047 "\x44\xAF\xE5\x8A\x81\x12\x09",
Tan Swee Heng2407d602007-11-23 19:45:00 +08007048 .rlen = 111,
Tan Swee Heng2407d602007-11-23 19:45:00 +08007049 }, { /* Set 5, vector 27 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007050 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
7051 "\x00\x00\x00\x00\x00\x00\x00\x00"
7052 "\x00\x00\x00\x00\x00\x00\x00\x00"
7053 "\x00\x00\x00\x00\x00\x00\x00\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08007054 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007055 .iv = "\x00\x00\x00\x10\x00\x00\x00\x00",
7056 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
7057 "\x00\x00\x00\x00\x00\x00\x00\x00"
7058 "\x00\x00\x00\x00\x00\x00\x00\x00"
7059 "\x00\x00\x00\x00\x00\x00\x00\x00"
7060 "\x00\x00\x00\x00\x00\x00\x00\x00"
7061 "\x00\x00\x00\x00\x00\x00\x00\x00"
7062 "\x00\x00\x00\x00\x00\x00\x00\x00"
7063 "\x00\x00\x00\x00\x00\x00\x00\x00"
7064 "\x00\x00\x00\x00\x00\x00\x00\x00"
7065 "\x00\x00\x00\x00\x00\x00\x00\x00"
7066 "\x00\x00\x00\x00\x00\x00\x00\x00"
7067 "\x00\x00\x00\x00\x00\x00\x00\x00"
7068 "\x00\x00\x00\x00\x00\x00\x00\x00"
7069 "\x00\x00\x00\x00\x00\x00\x00\x00"
7070 "\x00\x00\x00\x00\x00\x00\x00\x00"
7071 "\x00\x00\x00\x00\x00\x00\x00\x00"
7072 "\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08007073 .ilen = 129,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007074 .result = "\xD2\xDB\x1A\x5C\xF1\xC1\xAC\xDB"
7075 "\xE8\x1A\x7A\x43\x40\xEF\x53\x43"
7076 "\x5E\x7F\x4B\x1A\x50\x52\x3F\x8D"
7077 "\x28\x3D\xCF\x85\x1D\x69\x6E\x60"
7078 "\xF2\xDE\x74\x56\x18\x1B\x84\x10"
7079 "\xD4\x62\xBA\x60\x50\xF0\x61\xF2"
7080 "\x1C\x78\x7F\xC1\x24\x34\xAF\x58"
7081 "\xBF\x2C\x59\xCA\x90\x77\xF3\xB0"
7082 "\x5B\x4A\xDF\x89\xCE\x2C\x2F\xFC"
7083 "\x67\xF0\xE3\x45\xE8\xB3\xB3\x75"
7084 "\xA0\x95\x71\xA1\x29\x39\x94\xCA"
7085 "\x45\x2F\xBD\xCB\x10\xB6\xBE\x9F"
7086 "\x8E\xF9\xB2\x01\x0A\x5A\x0A\xB7"
7087 "\x6B\x9D\x70\x8E\x4B\xD6\x2F\xCD"
7088 "\x2E\x40\x48\x75\xE9\xE2\x21\x45"
7089 "\x0B\xC9\xB6\xB5\x66\xBC\x9A\x59"
7090 "\x5A",
Tan Swee Heng2407d602007-11-23 19:45:00 +08007091 .rlen = 129,
Tan Swee Heng8bff6642007-12-07 16:41:29 +08007092 }, { /* large test vector generated using Crypto++ */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007093 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
7094 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
7095 "\x10\x11\x12\x13\x14\x15\x16\x17"
7096 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Tan Swee Heng8bff6642007-12-07 16:41:29 +08007097 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007098 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
7099 "\x00\x00\x00\x00\x00\x00\x00\x00",
7100 .input =
7101 "\x00\x01\x02\x03\x04\x05\x06\x07"
7102 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
7103 "\x10\x11\x12\x13\x14\x15\x16\x17"
7104 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
7105 "\x20\x21\x22\x23\x24\x25\x26\x27"
7106 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
7107 "\x30\x31\x32\x33\x34\x35\x36\x37"
7108 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
7109 "\x40\x41\x42\x43\x44\x45\x46\x47"
7110 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
7111 "\x50\x51\x52\x53\x54\x55\x56\x57"
7112 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
7113 "\x60\x61\x62\x63\x64\x65\x66\x67"
7114 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
7115 "\x70\x71\x72\x73\x74\x75\x76\x77"
7116 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
7117 "\x80\x81\x82\x83\x84\x85\x86\x87"
7118 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
7119 "\x90\x91\x92\x93\x94\x95\x96\x97"
7120 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
7121 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
7122 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
7123 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
7124 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
7125 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
7126 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
7127 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
7128 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
7129 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
7130 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
7131 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
7132 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
7133 "\x00\x03\x06\x09\x0c\x0f\x12\x15"
7134 "\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
7135 "\x30\x33\x36\x39\x3c\x3f\x42\x45"
7136 "\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
7137 "\x60\x63\x66\x69\x6c\x6f\x72\x75"
7138 "\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
7139 "\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
7140 "\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
7141 "\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
7142 "\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
7143 "\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
7144 "\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
7145 "\x20\x23\x26\x29\x2c\x2f\x32\x35"
7146 "\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
7147 "\x50\x53\x56\x59\x5c\x5f\x62\x65"
7148 "\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
7149 "\x80\x83\x86\x89\x8c\x8f\x92\x95"
7150 "\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
7151 "\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
7152 "\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
7153 "\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
7154 "\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
7155 "\x10\x13\x16\x19\x1c\x1f\x22\x25"
7156 "\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
7157 "\x40\x43\x46\x49\x4c\x4f\x52\x55"
7158 "\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
7159 "\x70\x73\x76\x79\x7c\x7f\x82\x85"
7160 "\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
7161 "\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
7162 "\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
7163 "\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
7164 "\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
7165 "\x00\x05\x0a\x0f\x14\x19\x1e\x23"
7166 "\x28\x2d\x32\x37\x3c\x41\x46\x4b"
7167 "\x50\x55\x5a\x5f\x64\x69\x6e\x73"
7168 "\x78\x7d\x82\x87\x8c\x91\x96\x9b"
7169 "\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
7170 "\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
7171 "\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
7172 "\x18\x1d\x22\x27\x2c\x31\x36\x3b"
7173 "\x40\x45\x4a\x4f\x54\x59\x5e\x63"
7174 "\x68\x6d\x72\x77\x7c\x81\x86\x8b"
7175 "\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
7176 "\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
7177 "\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
7178 "\x08\x0d\x12\x17\x1c\x21\x26\x2b"
7179 "\x30\x35\x3a\x3f\x44\x49\x4e\x53"
7180 "\x58\x5d\x62\x67\x6c\x71\x76\x7b"
7181 "\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
7182 "\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
7183 "\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
7184 "\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
7185 "\x20\x25\x2a\x2f\x34\x39\x3e\x43"
7186 "\x48\x4d\x52\x57\x5c\x61\x66\x6b"
7187 "\x70\x75\x7a\x7f\x84\x89\x8e\x93"
7188 "\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
7189 "\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
7190 "\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
7191 "\x10\x15\x1a\x1f\x24\x29\x2e\x33"
7192 "\x38\x3d\x42\x47\x4c\x51\x56\x5b"
7193 "\x60\x65\x6a\x6f\x74\x79\x7e\x83"
7194 "\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
7195 "\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
7196 "\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
7197 "\x00\x07\x0e\x15\x1c\x23\x2a\x31"
7198 "\x38\x3f\x46\x4d\x54\x5b\x62\x69"
7199 "\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
7200 "\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
7201 "\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
7202 "\x18\x1f\x26\x2d\x34\x3b\x42\x49"
7203 "\x50\x57\x5e\x65\x6c\x73\x7a\x81"
7204 "\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
7205 "\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
7206 "\xf8\xff\x06\x0d\x14\x1b\x22\x29"
7207 "\x30\x37\x3e\x45\x4c\x53\x5a\x61"
7208 "\x68\x6f\x76\x7d\x84\x8b\x92\x99"
7209 "\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
7210 "\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
7211 "\x10\x17\x1e\x25\x2c\x33\x3a\x41"
7212 "\x48\x4f\x56\x5d\x64\x6b\x72\x79"
7213 "\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
7214 "\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
7215 "\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
7216 "\x28\x2f\x36\x3d\x44\x4b\x52\x59"
7217 "\x60\x67\x6e\x75\x7c\x83\x8a\x91"
7218 "\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
7219 "\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
7220 "\x08\x0f\x16\x1d\x24\x2b\x32\x39"
7221 "\x40\x47\x4e\x55\x5c\x63\x6a\x71"
7222 "\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
7223 "\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
7224 "\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
7225 "\x20\x27\x2e\x35\x3c\x43\x4a\x51"
7226 "\x58\x5f\x66\x6d\x74\x7b\x82\x89"
7227 "\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
7228 "\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
7229 "\x00\x09\x12\x1b\x24\x2d\x36\x3f"
7230 "\x48\x51\x5a\x63\x6c\x75\x7e\x87"
7231 "\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
7232 "\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
7233 "\x20\x29\x32\x3b\x44\x4d\x56\x5f"
7234 "\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
7235 "\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
7236 "\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
7237 "\x40\x49\x52\x5b\x64\x6d\x76\x7f"
7238 "\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
7239 "\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
7240 "\x18\x21\x2a\x33\x3c\x45\x4e\x57"
7241 "\x60\x69\x72\x7b\x84\x8d\x96\x9f"
7242 "\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
7243 "\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
7244 "\x38\x41\x4a\x53\x5c\x65\x6e\x77"
7245 "\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
7246 "\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
7247 "\x10\x19\x22\x2b\x34\x3d\x46\x4f"
7248 "\x58\x61\x6a\x73\x7c\x85\x8e\x97"
7249 "\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
7250 "\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
7251 "\x30\x39\x42\x4b\x54\x5d\x66\x6f"
7252 "\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
7253 "\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
7254 "\x08\x11\x1a\x23\x2c\x35\x3e\x47"
7255 "\x50\x59\x62\x6b\x74\x7d\x86\x8f"
7256 "\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
7257 "\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
7258 "\x28\x31\x3a\x43\x4c\x55\x5e\x67"
7259 "\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
7260 "\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
7261 "\x00\x0b\x16\x21\x2c\x37\x42\x4d"
7262 "\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
7263 "\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
7264 "\x08\x13\x1e\x29\x34\x3f\x4a\x55"
7265 "\x60\x6b\x76\x81\x8c\x97\xa2\xad"
7266 "\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
7267 "\x10\x1b\x26\x31\x3c\x47\x52\x5d"
7268 "\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
7269 "\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
7270 "\x18\x23\x2e\x39\x44\x4f\x5a\x65"
7271 "\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
7272 "\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
7273 "\x20\x2b\x36\x41\x4c\x57\x62\x6d"
7274 "\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
7275 "\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
7276 "\x28\x33\x3e\x49\x54\x5f\x6a\x75"
7277 "\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
7278 "\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
7279 "\x30\x3b\x46\x51\x5c\x67\x72\x7d"
7280 "\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
7281 "\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
7282 "\x38\x43\x4e\x59\x64\x6f\x7a\x85"
7283 "\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
7284 "\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
7285 "\x40\x4b\x56\x61\x6c\x77\x82\x8d"
7286 "\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
7287 "\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
7288 "\x48\x53\x5e\x69\x74\x7f\x8a\x95"
7289 "\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
7290 "\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
7291 "\x50\x5b\x66\x71\x7c\x87\x92\x9d"
7292 "\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
7293 "\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
7294 "\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
7295 "\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
7296 "\x38\x45\x52\x5f\x6c\x79\x86\x93"
7297 "\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
7298 "\x08\x15\x22\x2f\x3c\x49\x56\x63"
7299 "\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
7300 "\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
7301 "\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
7302 "\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
7303 "\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
7304 "\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
7305 "\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
7306 "\x48\x55\x62\x6f\x7c\x89\x96\xa3"
7307 "\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
7308 "\x18\x25\x32\x3f\x4c\x59\x66\x73"
7309 "\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
7310 "\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
7311 "\x50\x5d\x6a\x77\x84\x91\x9e\xab"
7312 "\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
7313 "\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
7314 "\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
7315 "\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
7316 "\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
7317 "\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
7318 "\x28\x35\x42\x4f\x5c\x69\x76\x83"
7319 "\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
7320 "\xf8\x05\x12\x1f\x2c\x39\x46\x53"
7321 "\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
7322 "\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
7323 "\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
7324 "\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
7325 "\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
7326 "\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
7327 "\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
7328 "\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
7329 "\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
7330 "\x58\x67\x76\x85\x94\xa3\xb2\xc1"
7331 "\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
7332 "\x48\x57\x66\x75\x84\x93\xa2\xb1"
7333 "\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
7334 "\x38\x47\x56\x65\x74\x83\x92\xa1"
7335 "\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
7336 "\x28\x37\x46\x55\x64\x73\x82\x91"
7337 "\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
7338 "\x18\x27\x36\x45\x54\x63\x72\x81"
7339 "\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
7340 "\x08\x17\x26\x35\x44\x53\x62\x71"
7341 "\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
7342 "\xf8\x07\x16\x25\x34\x43\x52\x61"
7343 "\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
7344 "\xe8\xf7\x06\x15\x24\x33\x42\x51"
7345 "\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
7346 "\xd8\xe7\xf6\x05\x14\x23\x32\x41"
7347 "\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
7348 "\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
7349 "\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
7350 "\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
7351 "\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
7352 "\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
7353 "\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
7354 "\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
7355 "\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
7356 "\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
7357 "\x00\x11\x22\x33\x44\x55\x66\x77"
7358 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
7359 "\x10\x21\x32\x43\x54\x65\x76\x87"
7360 "\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
7361 "\x20\x31\x42\x53\x64\x75\x86\x97"
7362 "\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
7363 "\x30\x41\x52\x63\x74\x85\x96\xa7"
7364 "\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
7365 "\x40\x51\x62\x73\x84\x95\xa6\xb7"
7366 "\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
7367 "\x50\x61\x72\x83\x94\xa5\xb6\xc7"
7368 "\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
7369 "\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
7370 "\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
7371 "\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
7372 "\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
7373 "\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
7374 "\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
7375 "\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
7376 "\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
7377 "\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
7378 "\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
7379 "\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
7380 "\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
7381 "\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
7382 "\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
7383 "\xd0\xe1\xf2\x03\x14\x25\x36\x47"
7384 "\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
7385 "\xe0\xf1\x02\x13\x24\x35\x46\x57"
7386 "\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
7387 "\xf0\x01\x12\x23\x34\x45\x56\x67"
7388 "\x78\x89\x9a\xab\xbc\xcd\xde\xef"
7389 "\x00\x13\x26\x39\x4c\x5f\x72\x85"
7390 "\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
7391 "\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
7392 "\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
7393 "\x60\x73\x86\x99\xac\xbf\xd2\xe5"
7394 "\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
7395 "\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
7396 "\x28\x3b\x4e\x61\x74\x87\x9a\xad"
7397 "\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
7398 "\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
7399 "\xf0\x03\x16\x29\x3c\x4f\x62\x75"
7400 "\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
7401 "\x20\x33\x46\x59\x6c\x7f\x92\xa5"
7402 "\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
7403 "\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
7404 "\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
7405 "\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
7406 "\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
7407 "\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
7408 "\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
7409 "\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
7410 "\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
7411 "\x10\x23\x36\x49\x5c\x6f\x82\x95"
7412 "\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
7413 "\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
7414 "\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
7415 "\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
7416 "\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
7417 "\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
7418 "\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
7419 "\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
7420 "\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
7421 "\x00\x15\x2a\x3f\x54\x69\x7e\x93"
7422 "\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
7423 "\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
7424 "\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
7425 "\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
7426 "\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
7427 "\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
7428 "\x98\xad\xc2\xd7\xec\x01\x16\x2b"
7429 "\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
7430 "\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
7431 "\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
7432 "\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
7433 "\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
7434 "\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
7435 "\x30\x45\x5a\x6f\x84\x99\xae\xc3"
7436 "\xd8\xed\x02\x17\x2c\x41\x56\x6b"
7437 "\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
7438 "\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
7439 "\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
7440 "\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
7441 "\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
7442 "\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
7443 "\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
7444 "\x18\x2d\x42\x57\x6c\x81\x96\xab"
7445 "\xc0\xd5\xea\xff\x14\x29\x3e\x53"
7446 "\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
7447 "\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
7448 "\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
7449 "\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
7450 "\x08\x1d\x32\x47\x5c\x71\x86\x9b"
7451 "\xb0\xc5\xda\xef\x04\x19\x2e\x43"
7452 "\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
7453 "\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
7454 "\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
7455 "\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
7456 "\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
7457 "\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
7458 "\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
7459 "\x50\x67\x7e\x95\xac\xc3\xda\xf1"
7460 "\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
7461 "\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
7462 "\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
7463 "\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
7464 "\xe8\xff\x16\x2d\x44\x5b\x72\x89"
7465 "\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
7466 "\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
7467 "\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
7468 "\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
7469 "\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
7470 "\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
7471 "\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
7472 "\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
7473 "\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
7474 "\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
7475 "\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
7476 "\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
7477 "\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
7478 "\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
7479 "\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
7480 "\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
7481 "\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
7482 "\xd8\xef\x06\x1d\x34\x4b\x62\x79"
7483 "\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
7484 "\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
7485 "\x00\x19\x32\x4b\x64\x7d\x96\xaf"
7486 "\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
7487 "\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
7488 "\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
7489 "\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
7490 "\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
7491 "\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
7492 "\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
7493 "\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
7494 "\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
7495 "\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
7496 "\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
7497 "\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
7498 "\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
7499 "\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
7500 "\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
7501 "\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
7502 "\x48\x61\x7a\x93\xac\xc5\xde\xf7"
7503 "\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
7504 "\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
7505 "\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
7506 "\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
7507 "\x30\x49\x62\x7b\x94\xad\xc6\xdf"
7508 "\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
7509 "\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
7510 "\x88\xa1\xba\xd3\xec\x05\x1e\x37"
7511 "\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
7512 "\x18\x31\x4a\x63\x7c\x95\xae\xc7"
7513 "\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
7514 "\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
7515 "\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
7516 "\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
7517 "\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
7518 "\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
7519 "\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
7520 "\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
7521 "\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
7522 "\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
7523 "\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
7524 "\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
7525 "\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
7526 "\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
7527 "\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
7528 "\x48\x63\x7e\x99\xb4\xcf\xea\x05"
7529 "\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
7530 "\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
7531 "\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
7532 "\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
7533 "\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
7534 "\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
7535 "\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
7536 "\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
7537 "\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
7538 "\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
7539 "\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
7540 "\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
7541 "\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
7542 "\x18\x33\x4e\x69\x84\x9f\xba\xd5"
7543 "\xf0\x0b\x26\x41\x5c\x77\x92\xad"
7544 "\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
7545 "\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
7546 "\x78\x93\xae\xc9\xe4\xff\x1a\x35"
7547 "\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
7548 "\x28\x43\x5e\x79\x94\xaf\xca\xe5"
7549 "\x00\x1d\x3a\x57\x74\x91\xae\xcb"
7550 "\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
7551 "\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
7552 "\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
7553 "\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
7554 "\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
7555 "\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
7556 "\x58\x75\x92\xaf\xcc\xe9\x06\x23"
7557 "\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
7558 "\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
7559 "\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
7560 "\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
7561 "\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
7562 "\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
7563 "\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
7564 "\x98\xb5\xd2\xef\x0c\x29\x46\x63"
7565 "\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
7566 "\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
7567 "\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
7568 "\x38\x55\x72\x8f\xac\xc9\xe6\x03"
7569 "\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
7570 "\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
7571 "\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
7572 "\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
7573 "\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
7574 "\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
7575 "\x90\xad\xca\xe7\x04\x21\x3e\x5b"
7576 "\x78\x95\xb2\xcf\xec\x09\x26\x43"
7577 "\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
7578 "\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
7579 "\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
7580 "\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
7581 "\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
7582 "\xf8\x17\x36\x55\x74\x93\xb2\xd1"
7583 "\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
7584 "\xe8\x07\x26\x45\x64\x83\xa2\xc1"
7585 "\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
7586 "\xd8\xf7\x16\x35\x54\x73\x92\xb1"
7587 "\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
7588 "\xc8\xe7\x06\x25\x44\x63\x82\xa1"
7589 "\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
7590 "\xb8\xd7\xf6\x15\x34\x53\x72\x91"
7591 "\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
7592 "\xa8\xc7\xe6\x05\x24\x43\x62\x81"
7593 "\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
7594 "\x98\xb7\xd6\xf5\x14\x33\x52\x71"
7595 "\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
7596 "\x88\xa7\xc6\xe5\x04\x23\x42\x61"
7597 "\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
7598 "\x78\x97\xb6\xd5\xf4\x13\x32\x51"
7599 "\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
7600 "\x68\x87\xa6\xc5\xe4\x03\x22\x41"
7601 "\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
7602 "\x58\x77\x96\xb5\xd4\xf3\x12\x31"
7603 "\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
7604 "\x48\x67\x86\xa5\xc4\xe3\x02\x21"
7605 "\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
7606 "\x38\x57\x76\x95\xb4\xd3\xf2\x11"
7607 "\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
7608 "\x28\x47\x66\x85\xa4\xc3\xe2\x01"
7609 "\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
7610 "\x18\x37\x56\x75\x94\xb3\xd2\xf1"
7611 "\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
7612 "\x08\x27\x46\x65\x84\xa3\xc2\xe1"
7613 "\x00\x21\x42\x63",
Tan Swee Heng8bff6642007-12-07 16:41:29 +08007614 .ilen = 4100,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007615 .result =
7616 "\xb5\x81\xf5\x64\x18\x73\xe3\xf0"
7617 "\x4c\x13\xf2\x77\x18\x60\x65\x5e"
7618 "\x29\x01\xce\x98\x55\x53\xf9\x0c"
7619 "\x2a\x08\xd5\x09\xb3\x57\x55\x56"
7620 "\xc5\xe9\x56\x90\xcb\x6a\xa3\xc0"
7621 "\xff\xc4\x79\xb4\xd2\x97\x5d\xc4"
7622 "\x43\xd1\xfe\x94\x7b\x88\x06\x5a"
7623 "\xb2\x9e\x2c\xfc\x44\x03\xb7\x90"
7624 "\xa0\xc1\xba\x6a\x33\xb8\xc7\xb2"
7625 "\x9d\xe1\x12\x4f\xc0\x64\xd4\x01"
7626 "\xfe\x8c\x7a\x66\xf7\xe6\x5a\x91"
7627 "\xbb\xde\x56\x86\xab\x65\x21\x30"
7628 "\x00\x84\x65\x24\xa5\x7d\x85\xb4"
7629 "\xe3\x17\xed\x3a\xb7\x6f\xb4\x0b"
7630 "\x0b\xaf\x15\xae\x5a\x8f\xf2\x0c"
7631 "\x2f\x27\xf4\x09\xd8\xd2\x96\xb7"
7632 "\x71\xf2\xc5\x99\x4d\x7e\x7f\x75"
7633 "\x77\x89\x30\x8b\x59\xdb\xa2\xb2"
7634 "\xa0\xf3\x19\x39\x2b\xc5\x7e\x3f"
7635 "\x4f\xd9\xd3\x56\x28\x97\x44\xdc"
7636 "\xc0\x8b\x77\x24\xd9\x52\xe7\xc5"
7637 "\xaf\xf6\x7d\x59\xb2\x44\x05\x1d"
7638 "\xb1\xb0\x11\xa5\x0f\xec\x33\xe1"
7639 "\x6d\x1b\x4e\x1f\xff\x57\x91\xb4"
7640 "\x5b\x9a\x96\xc5\x53\xbc\xae\x20"
7641 "\x3c\xbb\x14\xe2\xe8\x22\x33\xc1"
7642 "\x5e\x76\x9e\x46\x99\xf6\x2a\x15"
7643 "\xc6\x97\x02\xa0\x66\x43\xd1\xa6"
7644 "\x31\xa6\x9f\xfb\xf4\xd3\x69\xe5"
7645 "\xcd\x76\x95\xb8\x7a\x82\x7f\x21"
7646 "\x45\xff\x3f\xce\x55\xf6\x95\x10"
7647 "\x08\x77\x10\x43\xc6\xf3\x09\xe5"
7648 "\x68\xe7\x3c\xad\x00\x52\x45\x0d"
7649 "\xfe\x2d\xc6\xc2\x94\x8c\x12\x1d"
7650 "\xe6\x25\xae\x98\x12\x8e\x19\x9c"
7651 "\x81\x68\xb1\x11\xf6\x69\xda\xe3"
7652 "\x62\x08\x18\x7a\x25\x49\x28\xac"
7653 "\xba\x71\x12\x0b\xe4\xa2\xe5\xc7"
7654 "\x5d\x8e\xec\x49\x40\x21\xbf\x5a"
7655 "\x98\xf3\x02\x68\x55\x03\x7f\x8a"
7656 "\xe5\x94\x0c\x32\x5c\x07\x82\x63"
7657 "\xaf\x6f\x91\x40\x84\x8e\x52\x25"
7658 "\xd0\xb0\x29\x53\x05\xe2\x50\x7a"
7659 "\x34\xeb\xc9\x46\x20\xa8\x3d\xde"
7660 "\x7f\x16\x5f\x36\xc5\x2e\xdc\xd1"
7661 "\x15\x47\xc7\x50\x40\x6d\x91\xc5"
7662 "\xe7\x93\x95\x1a\xd3\x57\xbc\x52"
7663 "\x33\xee\x14\x19\x22\x52\x89\xa7"
7664 "\x4a\x25\x56\x77\x4b\xca\xcf\x0a"
7665 "\xe1\xf5\x35\x85\x30\x7e\x59\x4a"
7666 "\xbd\x14\x5b\xdf\xe3\x46\xcb\xac"
7667 "\x1f\x6c\x96\x0e\xf4\x81\xd1\x99"
7668 "\xca\x88\x63\x3d\x02\x58\x6b\xa9"
7669 "\xe5\x9f\xb3\x00\xb2\x54\xc6\x74"
7670 "\x1c\xbf\x46\xab\x97\xcc\xf8\x54"
7671 "\x04\x07\x08\x52\xe6\xc0\xda\x93"
7672 "\x74\x7d\x93\x99\x5d\x78\x68\xa6"
7673 "\x2e\x6b\xd3\x6a\x69\xcc\x12\x6b"
7674 "\xd4\xc7\xa5\xc6\xe7\xf6\x03\x04"
7675 "\x5d\xcd\x61\x5e\x17\x40\xdc\xd1"
7676 "\x5c\xf5\x08\xdf\x5c\x90\x85\xa4"
7677 "\xaf\xf6\x78\xbb\x0d\xf1\xf4\xa4"
7678 "\x54\x26\x72\x9e\x61\xfa\x86\xcf"
7679 "\xe8\x9e\xa1\xe0\xc7\x48\x23\xae"
7680 "\x5a\x90\xae\x75\x0a\x74\x18\x89"
7681 "\x05\xb1\x92\xb2\x7f\xd0\x1b\xa6"
7682 "\x62\x07\x25\x01\xc7\xc2\x4f\xf9"
7683 "\xe8\xfe\x63\x95\x80\x07\xb4\x26"
7684 "\xcc\xd1\x26\xb6\xc4\x3f\x9e\xcb"
7685 "\x8e\x3b\x2e\x44\x16\xd3\x10\x9a"
7686 "\x95\x08\xeb\xc8\xcb\xeb\xbf\x6f"
7687 "\x0b\xcd\x1f\xc8\xca\x86\xaa\xec"
7688 "\x33\xe6\x69\xf4\x45\x25\x86\x3a"
7689 "\x22\x94\x4f\x00\x23\x6a\x44\xc2"
7690 "\x49\x97\x33\xab\x36\x14\x0a\x70"
7691 "\x24\xc3\xbe\x04\x3b\x79\xa0\xf9"
7692 "\xb8\xe7\x76\x29\x22\x83\xd7\xf2"
7693 "\x94\xf4\x41\x49\xba\x5f\x7b\x07"
7694 "\xb5\xfb\xdb\x03\x1a\x9f\xb6\x4c"
7695 "\xc2\x2e\x37\x40\x49\xc3\x38\x16"
7696 "\xe2\x4f\x77\x82\xb0\x68\x4c\x71"
7697 "\x1d\x57\x61\x9c\xd9\x4e\x54\x99"
7698 "\x47\x13\x28\x73\x3c\xbb\x00\x90"
7699 "\xf3\x4d\xc9\x0e\xfd\xe7\xb1\x71"
7700 "\xd3\x15\x79\xbf\xcc\x26\x2f\xbd"
7701 "\xad\x6c\x50\x69\x6c\x3e\x6d\x80"
7702 "\x9a\xea\x78\xaf\x19\xb2\x0d\x4d"
7703 "\xad\x04\x07\xae\x22\x90\x4a\x93"
7704 "\x32\x0e\x36\x9b\x1b\x46\xba\x3b"
7705 "\xb4\xac\xc6\xd1\xa2\x31\x53\x3b"
7706 "\x2a\x3d\x45\xfe\x03\x61\x10\x85"
7707 "\x17\x69\xa6\x78\xcc\x6c\x87\x49"
7708 "\x53\xf9\x80\x10\xde\x80\xa2\x41"
7709 "\x6a\xc3\x32\x02\xad\x6d\x3c\x56"
7710 "\x00\x71\x51\x06\xa7\xbd\xfb\xef"
7711 "\x3c\xb5\x9f\xfc\x48\x7d\x53\x7c"
7712 "\x66\xb0\x49\x23\xc4\x47\x10\x0e"
7713 "\xe5\x6c\x74\x13\xe6\xc5\x3f\xaa"
7714 "\xde\xff\x07\x44\xdd\x56\x1b\xad"
7715 "\x09\x77\xfb\x5b\x12\xb8\x0d\x38"
7716 "\x17\x37\x35\x7b\x9b\xbc\xfe\xd4"
7717 "\x7e\x8b\xda\x7e\x5b\x04\xa7\x22"
7718 "\xa7\x31\xa1\x20\x86\xc7\x1b\x99"
7719 "\xdb\xd1\x89\xf4\x94\xa3\x53\x69"
7720 "\x8d\xe7\xe8\x74\x11\x8d\x74\xd6"
7721 "\x07\x37\x91\x9f\xfd\x67\x50\x3a"
7722 "\xc9\xe1\xf4\x36\xd5\xa0\x47\xd1"
7723 "\xf9\xe5\x39\xa3\x31\xac\x07\x36"
7724 "\x23\xf8\x66\x18\x14\x28\x34\x0f"
7725 "\xb8\xd0\xe7\x29\xb3\x04\x4b\x55"
7726 "\x01\x41\xb2\x75\x8d\xcb\x96\x85"
7727 "\x3a\xfb\xab\x2b\x9e\xfa\x58\x20"
7728 "\x44\x1f\xc0\x14\x22\x75\x61\xe8"
7729 "\xaa\x19\xcf\xf1\x82\x56\xf4\xd7"
7730 "\x78\x7b\x3d\x5f\xb3\x9e\x0b\x8a"
7731 "\x57\x50\xdb\x17\x41\x65\x4d\xa3"
7732 "\x02\xc9\x9c\x9c\x53\xfb\x39\x39"
7733 "\x9b\x1d\x72\x24\xda\xb7\x39\xbe"
7734 "\x13\x3b\xfa\x29\xda\x9e\x54\x64"
7735 "\x6e\xba\xd8\xa1\xcb\xb3\x36\xfa"
7736 "\xcb\x47\x85\xe9\x61\x38\xbc\xbe"
7737 "\xc5\x00\x38\x2a\x54\xf7\xc4\xb9"
7738 "\xb3\xd3\x7b\xa0\xa0\xf8\x72\x7f"
7739 "\x8c\x8e\x82\x0e\xc6\x1c\x75\x9d"
7740 "\xca\x8e\x61\x87\xde\xad\x80\xd2"
7741 "\xf5\xf9\x80\xef\x15\x75\xaf\xf5"
7742 "\x80\xfb\xff\x6d\x1e\x25\xb7\x40"
7743 "\x61\x6a\x39\x5a\x6a\xb5\x31\xab"
7744 "\x97\x8a\x19\x89\x44\x40\xc0\xa6"
7745 "\xb4\x4e\x30\x32\x7b\x13\xe7\x67"
7746 "\xa9\x8b\x57\x04\xc2\x01\xa6\xf4"
7747 "\x28\x99\xad\x2c\x76\xa3\x78\xc2"
7748 "\x4a\xe6\xca\x5c\x50\x6a\xc1\xb0"
7749 "\x62\x4b\x10\x8e\x7c\x17\x43\xb3"
7750 "\x17\x66\x1c\x3e\x8d\x69\xf0\x5a"
7751 "\x71\xf5\x97\xdc\xd1\x45\xdd\x28"
7752 "\xf3\x5d\xdf\x53\x7b\x11\xe5\xbc"
7753 "\x4c\xdb\x1b\x51\x6b\xe9\xfb\x3d"
7754 "\xc1\xc3\x2c\xb9\x71\xf5\xb6\xb2"
7755 "\x13\x36\x79\x80\x53\xe8\xd3\xa6"
7756 "\x0a\xaf\xfd\x56\x97\xf7\x40\x8e"
7757 "\x45\xce\xf8\xb0\x9e\x5c\x33\x82"
7758 "\xb0\x44\x56\xfc\x05\x09\xe9\x2a"
7759 "\xac\x26\x80\x14\x1d\xc8\x3a\x35"
7760 "\x4c\x82\x97\xfd\x76\xb7\xa9\x0a"
7761 "\x35\x58\x79\x8e\x0f\x66\xea\xaf"
7762 "\x51\x6c\x09\xa9\x6e\x9b\xcb\x9a"
7763 "\x31\x47\xa0\x2f\x7c\x71\xb4\x4a"
7764 "\x11\xaa\x8c\x66\xc5\x64\xe6\x3a"
7765 "\x54\xda\x24\x6a\xc4\x41\x65\x46"
7766 "\x82\xa0\x0a\x0f\x5f\xfb\x25\xd0"
7767 "\x2c\x91\xa7\xee\xc4\x81\x07\x86"
7768 "\x75\x5e\x33\x69\x97\xe4\x2c\xa8"
7769 "\x9d\x9f\x0b\x6a\xbe\xad\x98\xda"
7770 "\x6d\x94\x41\xda\x2c\x1e\x89\xc4"
7771 "\xc2\xaf\x1e\x00\x05\x0b\x83\x60"
7772 "\xbd\x43\xea\x15\x23\x7f\xb9\xac"
7773 "\xee\x4f\x2c\xaf\x2a\xf3\xdf\xd0"
7774 "\xf3\x19\x31\xbb\x4a\x74\x84\x17"
7775 "\x52\x32\x2c\x7d\x61\xe4\xcb\xeb"
7776 "\x80\x38\x15\x52\xcb\x6f\xea\xe5"
7777 "\x73\x9c\xd9\x24\x69\xc6\x95\x32"
7778 "\x21\xc8\x11\xe4\xdc\x36\xd7\x93"
7779 "\x38\x66\xfb\xb2\x7f\x3a\xb9\xaf"
7780 "\x31\xdd\x93\x75\x78\x8a\x2c\x94"
7781 "\x87\x1a\x58\xec\x9e\x7d\x4d\xba"
7782 "\xe1\xe5\x4d\xfc\xbc\xa4\x2a\x14"
7783 "\xef\xcc\xa7\xec\xab\x43\x09\x18"
7784 "\xd3\xab\x68\xd1\x07\x99\x44\x47"
7785 "\xd6\x83\x85\x3b\x30\xea\xa9\x6b"
7786 "\x63\xea\xc4\x07\xfb\x43\x2f\xa4"
7787 "\xaa\xb0\xab\x03\x89\xce\x3f\x8c"
7788 "\x02\x7c\x86\x54\xbc\x88\xaf\x75"
7789 "\xd2\xdc\x63\x17\xd3\x26\xf6\x96"
7790 "\xa9\x3c\xf1\x61\x8c\x11\x18\xcc"
7791 "\xd6\xea\x5b\xe2\xcd\xf0\xf1\xb2"
7792 "\xe5\x35\x90\x1f\x85\x4c\x76\x5b"
7793 "\x66\xce\x44\xa4\x32\x9f\xe6\x7b"
7794 "\x71\x6e\x9f\x58\x15\x67\x72\x87"
7795 "\x64\x8e\x3a\x44\x45\xd4\x76\xfa"
7796 "\xc2\xf6\xef\x85\x05\x18\x7a\x9b"
7797 "\xba\x41\x54\xac\xf0\xfc\x59\x12"
7798 "\x3f\xdf\xa0\xe5\x8a\x65\xfd\x3a"
7799 "\x62\x8d\x83\x2c\x03\xbe\x05\x76"
7800 "\x2e\x53\x49\x97\x94\x33\xae\x40"
7801 "\x81\x15\xdb\x6e\xad\xaa\xf5\x4b"
7802 "\xe3\x98\x70\xdf\xe0\x7c\xcd\xdb"
7803 "\x02\xd4\x7d\x2f\xc1\xe6\xb4\xf3"
7804 "\xd7\x0d\x7a\xd9\x23\x9e\x87\x2d"
7805 "\xce\x87\xad\xcc\x72\x05\x00\x29"
7806 "\xdc\x73\x7f\x64\xc1\x15\x0e\xc2"
7807 "\xdf\xa7\x5f\xeb\x41\xa1\xcd\xef"
7808 "\x5c\x50\x79\x2a\x56\x56\x71\x8c"
7809 "\xac\xc0\x79\x50\x69\xca\x59\x32"
7810 "\x65\xf2\x54\xe4\x52\x38\x76\xd1"
7811 "\x5e\xde\x26\x9e\xfb\x75\x2e\x11"
7812 "\xb5\x10\xf4\x17\x73\xf5\x89\xc7"
7813 "\x4f\x43\x5c\x8e\x7c\xb9\x05\x52"
7814 "\x24\x40\x99\xfe\x9b\x85\x0b\x6c"
7815 "\x22\x3e\x8b\xae\x86\xa1\xd2\x79"
7816 "\x05\x68\x6b\xab\xe3\x41\x49\xed"
7817 "\x15\xa1\x8d\x40\x2d\x61\xdf\x1a"
7818 "\x59\xc9\x26\x8b\xef\x30\x4c\x88"
7819 "\x4b\x10\xf8\x8d\xa6\x92\x9f\x4b"
7820 "\xf3\xc4\x53\x0b\x89\x5d\x28\x92"
7821 "\xcf\x78\xb2\xc0\x5d\xed\x7e\xfc"
7822 "\xc0\x12\x23\x5f\x5a\x78\x86\x43"
7823 "\x6e\x27\xf7\x5a\xa7\x6a\xed\x19"
7824 "\x04\xf0\xb3\x12\xd1\xbd\x0e\x89"
7825 "\x6e\xbc\x96\xa8\xd8\x49\x39\x9f"
7826 "\x7e\x67\xf0\x2e\x3e\x01\xa9\xba"
7827 "\xec\x8b\x62\x8e\xcb\x4a\x70\x43"
7828 "\xc7\xc2\xc4\xca\x82\x03\x73\xe9"
7829 "\x11\xdf\xcf\x54\xea\xc9\xb0\x95"
7830 "\x51\xc0\x13\x3d\x92\x05\xfa\xf4"
7831 "\xa9\x34\xc8\xce\x6c\x3d\x54\xcc"
7832 "\xc4\xaf\xf1\xdc\x11\x44\x26\xa2"
7833 "\xaf\xf1\x85\x75\x7d\x03\x61\x68"
7834 "\x4e\x78\xc6\x92\x7d\x86\x7d\x77"
7835 "\xdc\x71\x72\xdb\xc6\xae\xa1\xcb"
7836 "\x70\x9a\x0b\x19\xbe\x4a\x6c\x2a"
7837 "\xe2\xba\x6c\x64\x9a\x13\x28\xdf"
7838 "\x85\x75\xe6\x43\xf6\x87\x08\x68"
7839 "\x6e\xba\x6e\x79\x9f\x04\xbc\x23"
7840 "\x50\xf6\x33\x5c\x1f\x24\x25\xbe"
7841 "\x33\x47\x80\x45\x56\xa3\xa7\xd7"
7842 "\x7a\xb1\x34\x0b\x90\x3c\x9c\xad"
7843 "\x44\x5f\x9e\x0e\x9d\xd4\xbd\x93"
7844 "\x5e\xfa\x3c\xe0\xb0\xd9\xed\xf3"
7845 "\xd6\x2e\xff\x24\xd8\x71\x6c\xed"
7846 "\xaf\x55\xeb\x22\xac\x93\x68\x32"
7847 "\x05\x5b\x47\xdd\xc6\x4a\xcb\xc7"
7848 "\x10\xe1\x3c\x92\x1a\xf3\x23\x78"
7849 "\x2b\xa1\xd2\x80\xf4\x12\xb1\x20"
7850 "\x8f\xff\x26\x35\xdd\xfb\xc7\x4e"
7851 "\x78\xf1\x2d\x50\x12\x77\xa8\x60"
7852 "\x7c\x0f\xf5\x16\x2f\x63\x70\x2a"
7853 "\xc0\x96\x80\x4e\x0a\xb4\x93\x35"
7854 "\x5d\x1d\x3f\x56\xf7\x2f\xbb\x90"
7855 "\x11\x16\x8f\xa2\xec\x47\xbe\xac"
7856 "\x56\x01\x26\x56\xb1\x8c\xb2\x10"
7857 "\xf9\x1a\xca\xf5\xd1\xb7\x39\x20"
7858 "\x63\xf1\x69\x20\x4f\x13\x12\x1f"
7859 "\x5b\x65\xfc\x98\xf7\xc4\x7a\xbe"
7860 "\xf7\x26\x4d\x2b\x84\x7b\x42\xad"
7861 "\xd8\x7a\x0a\xb4\xd8\x74\xbf\xc1"
7862 "\xf0\x6e\xb4\x29\xa3\xbb\xca\x46"
7863 "\x67\x70\x6a\x2d\xce\x0e\xa2\x8a"
7864 "\xa9\x87\xbf\x05\xc4\xc1\x04\xa3"
7865 "\xab\xd4\x45\x43\x8c\xb6\x02\xb0"
7866 "\x41\xc8\xfc\x44\x3d\x59\xaa\x2e"
7867 "\x44\x21\x2a\x8d\x88\x9d\x57\xf4"
7868 "\xa0\x02\x77\xb8\xa6\xa0\xe6\x75"
7869 "\x5c\x82\x65\x3e\x03\x5c\x29\x8f"
7870 "\x38\x55\xab\x33\x26\xef\x9f\x43"
7871 "\x52\xfd\x68\xaf\x36\xb4\xbb\x9a"
7872 "\x58\x09\x09\x1b\xc3\x65\x46\x46"
7873 "\x1d\xa7\x94\x18\x23\x50\x2c\xca"
7874 "\x2c\x55\x19\x97\x01\x9d\x93\x3b"
7875 "\x63\x86\xf2\x03\x67\x45\xd2\x72"
7876 "\x28\x52\x6c\xf4\xe3\x1c\xb5\x11"
7877 "\x13\xf1\xeb\x21\xc7\xd9\x56\x82"
7878 "\x2b\x82\x39\xbd\x69\x54\xed\x62"
7879 "\xc3\xe2\xde\x73\xd4\x6a\x12\xae"
7880 "\x13\x21\x7f\x4b\x5b\xfc\xbf\xe8"
7881 "\x2b\xbe\x56\xba\x68\x8b\x9a\xb1"
7882 "\x6e\xfa\xbf\x7e\x5a\x4b\xf1\xac"
7883 "\x98\x65\x85\xd1\x93\x53\xd3\x7b"
7884 "\x09\xdd\x4b\x10\x6d\x84\xb0\x13"
7885 "\x65\xbd\xcf\x52\x09\xc4\x85\xe2"
7886 "\x84\x74\x15\x65\xb7\xf7\x51\xaf"
7887 "\x55\xad\xa4\xd1\x22\x54\x70\x94"
7888 "\xa0\x1c\x90\x41\xfd\x99\xd7\x5a"
7889 "\x31\xef\xaa\x25\xd0\x7f\x4f\xea"
7890 "\x1d\x55\x42\xe5\x49\xb0\xd0\x46"
7891 "\x62\x36\x43\xb2\x82\x15\x75\x50"
7892 "\xa4\x72\xeb\x54\x27\x1f\x8a\xe4"
7893 "\x7d\xe9\x66\xc5\xf1\x53\xa4\xd1"
7894 "\x0c\xeb\xb8\xf8\xbc\xd4\xe2\xe7"
7895 "\xe1\xf8\x4b\xcb\xa9\xa1\xaf\x15"
7896 "\x83\xcb\x72\xd0\x33\x79\x00\x2d"
7897 "\x9f\xd7\xf1\x2e\x1e\x10\xe4\x45"
7898 "\xc0\x75\x3a\x39\xea\x68\xf7\x5d"
7899 "\x1b\x73\x8f\xe9\x8e\x0f\x72\x47"
7900 "\xae\x35\x0a\x31\x7a\x14\x4d\x4a"
7901 "\x6f\x47\xf7\x7e\x91\x6e\x74\x8b"
7902 "\x26\x47\xf9\xc3\xf9\xde\x70\xf5"
7903 "\x61\xab\xa9\x27\x9f\x82\xe4\x9c"
7904 "\x89\x91\x3f\x2e\x6a\xfd\xb5\x49"
7905 "\xe9\xfd\x59\x14\x36\x49\x40\x6d"
7906 "\x32\xd8\x85\x42\xf3\xa5\xdf\x0c"
7907 "\xa8\x27\xd7\x54\xe2\x63\x2f\xf2"
7908 "\x7e\x8b\x8b\xe7\xf1\x9a\x95\x35"
7909 "\x43\xdc\x3a\xe4\xb6\xf4\xd0\xdf"
7910 "\x9c\xcb\x94\xf3\x21\xa0\x77\x50"
7911 "\xe2\xc6\xc4\xc6\x5f\x09\x64\x5b"
7912 "\x92\x90\xd8\xe1\xd1\xed\x4b\x42"
7913 "\xd7\x37\xaf\x65\x3d\x11\x39\xb6"
7914 "\x24\x8a\x60\xae\xd6\x1e\xbf\x0e"
7915 "\x0d\xd7\xdc\x96\x0e\x65\x75\x4e"
7916 "\x29\x06\x9d\xa4\x51\x3a\x10\x63"
7917 "\x8f\x17\x07\xd5\x8e\x3c\xf4\x28"
7918 "\x00\x5a\x5b\x05\x19\xd8\xc0\x6c"
7919 "\xe5\x15\xe4\x9c\x9d\x71\x9d\x5e"
7920 "\x94\x29\x1a\xa7\x80\xfa\x0e\x33"
7921 "\x03\xdd\xb7\x3e\x9a\xa9\x26\x18"
7922 "\x37\xa9\x64\x08\x4d\x94\x5a\x88"
7923 "\xca\x35\xce\x81\x02\xe3\x1f\x1b"
7924 "\x89\x1a\x77\x85\xe3\x41\x6d\x32"
7925 "\x42\x19\x23\x7d\xc8\x73\xee\x25"
7926 "\x85\x0d\xf8\x31\x25\x79\x1b\x6f"
7927 "\x79\x25\xd2\xd8\xd4\x23\xfd\xf7"
7928 "\x82\x36\x6a\x0c\x46\x22\x15\xe9"
7929 "\xff\x72\x41\x91\x91\x7d\x3a\xb7"
7930 "\xdd\x65\x99\x70\xf6\x8d\x84\xf8"
7931 "\x67\x15\x20\x11\xd6\xb2\x55\x7b"
7932 "\xdb\x87\xee\xef\x55\x89\x2a\x59"
7933 "\x2b\x07\x8f\x43\x8a\x59\x3c\x01"
7934 "\x8b\x65\x54\xa1\x66\xd5\x38\xbd"
7935 "\xc6\x30\xa9\xcc\x49\xb6\xa8\x1b"
7936 "\xb8\xc0\x0e\xe3\x45\x28\xe2\xff"
7937 "\x41\x9f\x7e\x7c\xd1\xae\x9e\x25"
7938 "\x3f\x4c\x7c\x7c\xf4\xa8\x26\x4d"
7939 "\x5c\xfd\x4b\x27\x18\xf9\x61\x76"
7940 "\x48\xba\x0c\x6b\xa9\x4d\xfc\xf5"
7941 "\x3b\x35\x7e\x2f\x4a\xa9\xc2\x9a"
7942 "\xae\xab\x86\x09\x89\xc9\xc2\x40"
7943 "\x39\x2c\x81\xb3\xb8\x17\x67\xc2"
7944 "\x0d\x32\x4a\x3a\x67\x81\xd7\x1a"
7945 "\x34\x52\xc5\xdb\x0a\xf5\x63\x39"
7946 "\xea\x1f\xe1\x7c\xa1\x9e\xc1\x35"
7947 "\xe3\xb1\x18\x45\x67\xf9\x22\x38"
7948 "\x95\xd9\x34\x34\x86\xc6\x41\x94"
7949 "\x15\xf9\x5b\x41\xa6\x87\x8b\xf8"
7950 "\xd5\xe1\x1b\xe2\x5b\xf3\x86\x10"
7951 "\xff\xe6\xae\x69\x76\xbc\x0d\xb4"
7952 "\x09\x90\x0c\xa2\x65\x0c\xad\x74"
7953 "\xf5\xd7\xff\xda\xc1\xce\x85\xbe"
7954 "\x00\xa7\xff\x4d\x2f\x65\xd3\x8c"
7955 "\x86\x2d\x05\xe8\xed\x3e\x6b\x8b"
7956 "\x0f\x3d\x83\x8c\xf1\x1d\x5b\x96"
7957 "\x2e\xb1\x9c\xc2\x98\xe1\x70\xb9"
7958 "\xba\x5c\x8a\x43\xd6\x34\xa7\x2d"
7959 "\xc9\x92\xae\xf2\xa5\x7b\x05\x49"
7960 "\xa7\x33\x34\x86\xca\xe4\x96\x23"
7961 "\x76\x5b\xf2\xc6\xf1\x51\x28\x42"
7962 "\x7b\xcc\x76\x8f\xfa\xa2\xad\x31"
7963 "\xd4\xd6\x7a\x6d\x25\x25\x54\xe4"
7964 "\x3f\x50\x59\xe1\x5c\x05\xb7\x27"
7965 "\x48\xbf\x07\xec\x1b\x13\xbe\x2b"
7966 "\xa1\x57\x2b\xd5\xab\xd7\xd0\x4c"
7967 "\x1e\xcb\x71\x9b\xc5\x90\x85\xd3"
7968 "\xde\x59\xec\x71\xeb\x89\xbb\xd0"
7969 "\x09\x50\xe1\x16\x3f\xfd\x1c\x34"
7970 "\xc3\x1c\xa1\x10\x77\x53\x98\xef"
7971 "\xf2\xfd\xa5\x01\x59\xc2\x9b\x26"
7972 "\xc7\x42\xd9\x49\xda\x58\x2b\x6e"
7973 "\x9f\x53\x19\x76\x7e\xd9\xc9\x0e"
7974 "\x68\xc8\x7f\x51\x22\x42\xef\x49"
7975 "\xa4\x55\xb6\x36\xac\x09\xc7\x31"
7976 "\x88\x15\x4b\x2e\x8f\x3a\x08\xf7"
7977 "\xd8\xf7\xa8\xc5\xa9\x33\xa6\x45"
7978 "\xe4\xc4\x94\x76\xf3\x0d\x8f\x7e"
7979 "\xc8\xf6\xbc\x23\x0a\xb6\x4c\xd3"
7980 "\x6a\xcd\x36\xc2\x90\x5c\x5c\x3c"
7981 "\x65\x7b\xc2\xd6\xcc\xe6\x0d\x87"
7982 "\x73\x2e\x71\x79\x16\x06\x63\x28"
7983 "\x09\x15\xd8\x89\x38\x38\x3d\xb5"
7984 "\x42\x1c\x08\x24\xf7\x2a\xd2\x9d"
7985 "\xc8\xca\xef\xf9\x27\xd8\x07\x86"
7986 "\xf7\x43\x0b\x55\x15\x3f\x9f\x83"
7987 "\xef\xdc\x49\x9d\x2a\xc1\x54\x62"
7988 "\xbd\x9b\x66\x55\x9f\xb7\x12\xf3"
7989 "\x1b\x4d\x9d\x2a\x5c\xed\x87\x75"
7990 "\x87\x26\xec\x61\x2c\xb4\x0f\x89"
7991 "\xb0\xfb\x2e\x68\x5d\x15\xc7\x8d"
7992 "\x2e\xc0\xd9\xec\xaf\x4f\xd2\x25"
7993 "\x29\xe8\xd2\x26\x2b\x67\xe9\xfc"
7994 "\x2b\xa8\x67\x96\x12\x1f\x5b\x96"
7995 "\xc6\x14\x53\xaf\x44\xea\xd6\xe2"
7996 "\x94\x98\xe4\x12\x93\x4c\x92\xe0"
7997 "\x18\xa5\x8d\x2d\xe4\x71\x3c\x47"
7998 "\x4c\xf7\xe6\x47\x9e\xc0\x68\xdf"
7999 "\xd4\xf5\x5a\x74\xb1\x2b\x29\x03"
8000 "\x19\x07\xaf\x90\x62\x5c\x68\x98"
8001 "\x48\x16\x11\x02\x9d\xee\xb4\x9b"
8002 "\xe5\x42\x7f\x08\xfd\x16\x32\x0b"
8003 "\xd0\xb3\xfa\x2b\xb7\x99\xf9\x29"
8004 "\xcd\x20\x45\x9f\xb3\x1a\x5d\xa2"
8005 "\xaf\x4d\xe0\xbd\x42\x0d\xbc\x74"
8006 "\x99\x9c\x8e\x53\x1a\xb4\x3e\xbd"
8007 "\xa2\x9a\x2d\xf7\xf8\x39\x0f\x67"
8008 "\x63\xfc\x6b\xc0\xaf\xb3\x4b\x4f"
8009 "\x55\xc4\xcf\xa7\xc8\x04\x11\x3e"
8010 "\x14\x32\xbb\x1b\x38\x77\xd6\x7f"
8011 "\x54\x4c\xdf\x75\xf3\x07\x2d\x33"
8012 "\x9b\xa8\x20\xe1\x7b\x12\xb5\xf3"
8013 "\xef\x2f\xce\x72\xe5\x24\x60\xc1"
8014 "\x30\xe2\xab\xa1\x8e\x11\x09\xa8"
8015 "\x21\x33\x44\xfe\x7f\x35\x32\x93"
8016 "\x39\xa7\xad\x8b\x79\x06\xb2\xcb"
8017 "\x4e\xa9\x5f\xc7\xba\x74\x29\xec"
8018 "\x93\xa0\x4e\x54\x93\xc0\xbc\x55"
8019 "\x64\xf0\x48\xe5\x57\x99\xee\x75"
8020 "\xd6\x79\x0f\x66\xb7\xc6\x57\x76"
8021 "\xf7\xb7\xf3\x9c\xc5\x60\xe8\x7f"
8022 "\x83\x76\xd6\x0e\xaa\xe6\x90\x39"
8023 "\x1d\xa6\x32\x6a\x34\xe3\x55\xf8"
8024 "\x58\xa0\x58\x7d\x33\xe0\x22\x39"
8025 "\x44\x64\x87\x86\x5a\x2f\xa7\x7e"
8026 "\x0f\x38\xea\xb0\x30\xcc\x61\xa5"
8027 "\x6a\x32\xae\x1e\xf7\xe9\xd0\xa9"
8028 "\x0c\x32\x4b\xb5\x49\x28\xab\x85"
8029 "\x2f\x8e\x01\x36\x38\x52\xd0\xba"
8030 "\xd6\x02\x78\xf8\x0e\x3e\x9c\x8b"
8031 "\x6b\x45\x99\x3f\x5c\xfe\x58\xf1"
8032 "\x5c\x94\x04\xe1\xf5\x18\x6d\x51"
8033 "\xb2\x5d\x18\x20\xb6\xc2\x9a\x42"
8034 "\x1d\xb3\xab\x3c\xb6\x3a\x13\x03"
8035 "\xb2\x46\x82\x4f\xfc\x64\xbc\x4f"
8036 "\xca\xfa\x9c\xc0\xd5\xa7\xbd\x11"
8037 "\xb7\xe4\x5a\xf6\x6f\x4d\x4d\x54"
8038 "\xea\xa4\x98\x66\xd4\x22\x3b\xd3"
8039 "\x8f\x34\x47\xd9\x7c\xf4\x72\x3b"
8040 "\x4d\x02\x77\xf6\xd6\xdd\x08\x0a"
8041 "\x81\xe1\x86\x89\x3e\x56\x10\x3c"
8042 "\xba\xd7\x81\x8c\x08\xbc\x8b\xe2"
8043 "\x53\xec\xa7\x89\xee\xc8\x56\xb5"
8044 "\x36\x2c\xb2\x03\xba\x99\xdd\x7c"
8045 "\x48\xa0\xb0\xbc\x91\x33\xe9\xa8"
8046 "\xcb\xcd\xcf\x59\x5f\x1f\x15\xe2"
8047 "\x56\xf5\x4e\x01\x35\x27\x45\x77"
8048 "\x47\xc8\xbc\xcb\x7e\x39\xc1\x97"
8049 "\x28\xd3\x84\xfc\x2c\x3e\xc8\xad"
8050 "\x9c\xf8\x8a\x61\x9c\x28\xaa\xc5"
8051 "\x99\x20\x43\x85\x9d\xa5\xe2\x8b"
8052 "\xb8\xae\xeb\xd0\x32\x0d\x52\x78"
8053 "\x09\x56\x3f\xc7\xd8\x7e\x26\xfc"
8054 "\x37\xfb\x6f\x04\xfc\xfa\x92\x10"
8055 "\xac\xf8\x3e\x21\xdc\x8c\x21\x16"
8056 "\x7d\x67\x6e\xf6\xcd\xda\xb6\x98"
8057 "\x23\xab\x23\x3c\xb2\x10\xa0\x53"
8058 "\x5a\x56\x9f\xc5\xd0\xff\xbb\xe4"
8059 "\x98\x3c\x69\x1e\xdb\x38\x8f\x7e"
8060 "\x0f\xd2\x98\x88\x81\x8b\x45\x67"
8061 "\xea\x33\xf1\xeb\xe9\x97\x55\x2e"
8062 "\xd9\xaa\xeb\x5a\xec\xda\xe1\x68"
8063 "\xa8\x9d\x3c\x84\x7c\x05\x3d\x62"
8064 "\x87\x8f\x03\x21\x28\x95\x0c\x89"
8065 "\x25\x22\x4a\xb0\x93\xa9\x50\xa2"
8066 "\x2f\x57\x6e\x18\x42\x19\x54\x0c"
8067 "\x55\x67\xc6\x11\x49\xf4\x5c\xd2"
8068 "\xe9\x3d\xdd\x8b\x48\x71\x21\x00"
8069 "\xc3\x9a\x6c\x85\x74\x28\x83\x4a"
8070 "\x1b\x31\x05\xe1\x06\x92\xe7\xda"
8071 "\x85\x73\x78\x45\x20\x7f\xae\x13"
8072 "\x7c\x33\x06\x22\xf4\x83\xf9\x35"
8073 "\x3f\x6c\x71\xa8\x4e\x48\xbe\x9b"
8074 "\xce\x8a\xba\xda\xbe\x28\x08\xf7"
8075 "\xe2\x14\x8c\x71\xea\x72\xf9\x33"
8076 "\xf2\x88\x3f\xd7\xbb\x69\x6c\x29"
8077 "\x19\xdc\x84\xce\x1f\x12\x4f\xc8"
8078 "\xaf\xa5\x04\xba\x5a\xab\xb0\xd9"
8079 "\x14\x1f\x6c\x68\x98\x39\x89\x7a"
8080 "\xd9\xd8\x2f\xdf\xa8\x47\x4a\x25"
8081 "\xe2\xfb\x33\xf4\x59\x78\xe1\x68"
8082 "\x85\xcf\xfe\x59\x20\xd4\x05\x1d"
8083 "\x80\x99\xae\xbc\xca\xae\x0f\x2f"
8084 "\x65\x43\x34\x8e\x7e\xac\xd3\x93"
8085 "\x2f\xac\x6d\x14\x3d\x02\x07\x70"
8086 "\x9d\xa4\xf3\x1b\x5c\x36\xfc\x01"
8087 "\x73\x34\x85\x0c\x6c\xd6\xf1\xbd"
8088 "\x3f\xdf\xee\xf5\xd9\xba\x56\xef"
8089 "\xf4\x9b\x6b\xee\x9f\x5a\x78\x6d"
8090 "\x32\x19\xf4\xf7\xf8\x4c\x69\x0b"
8091 "\x4b\xbc\xbb\xb7\xf2\x85\xaf\x70"
8092 "\x75\x24\x6c\x54\xa7\x0e\x4d\x1d"
8093 "\x01\xbf\x08\xac\xcf\x7f\x2c\xe3"
8094 "\x14\x89\x5e\x70\x5a\x99\x92\xcd"
8095 "\x01\x84\xc8\xd2\xab\xe5\x4f\x58"
8096 "\xe7\x0f\x2f\x0e\xff\x68\xea\xfd"
8097 "\x15\xb3\x17\xe6\xb0\xe7\x85\xd8"
8098 "\x23\x2e\x05\xc7\xc9\xc4\x46\x1f"
8099 "\xe1\x9e\x49\x20\x23\x24\x4d\x7e"
8100 "\x29\x65\xff\xf4\xb6\xfd\x1a\x85"
8101 "\xc4\x16\xec\xfc\xea\x7b\xd6\x2c"
8102 "\x43\xf8\xb7\xbf\x79\xc0\x85\xcd"
8103 "\xef\xe1\x98\xd3\xa5\xf7\x90\x8c"
8104 "\xe9\x7f\x80\x6b\xd2\xac\x4c\x30"
8105 "\xa7\xc6\x61\x6c\xd2\xf9\x2c\xff"
8106 "\x30\xbc\x22\x81\x7d\x93\x12\xe4"
8107 "\x0a\xcd\xaf\xdd\xe8\xab\x0a\x1e"
8108 "\x13\xa4\x27\xc3\x5f\xf7\x4b\xbb"
8109 "\x37\x09\x4b\x91\x6f\x92\x4f\xaf"
8110 "\x52\xee\xdf\xef\x09\x6f\xf7\x5c"
8111 "\x6e\x12\x17\x72\x63\x57\xc7\xba"
8112 "\x3b\x6b\x38\x32\x73\x1b\x9c\x80"
8113 "\xc1\x7a\xc6\xcf\xcd\x35\xc0\x6b"
8114 "\x31\x1a\x6b\xe9\xd8\x2c\x29\x3f"
8115 "\x96\xfb\xb6\xcd\x13\x91\x3b\xc2"
8116 "\xd2\xa3\x31\x8d\xa4\xcd\x57\xcd"
8117 "\x13\x3d\x64\xfd\x06\xce\xe6\xdc"
8118 "\x0c\x24\x43\x31\x40\x57\xf1\x72"
8119 "\x17\xe3\x3a\x63\x6d\x35\xcf\x5d"
8120 "\x97\x40\x59\xdd\xf7\x3c\x02\xf7"
8121 "\x1c\x7e\x05\xbb\xa9\x0d\x01\xb1"
8122 "\x8e\xc0\x30\xa9\x53\x24\xc9\x89"
8123 "\x84\x6d\xaa\xd0\xcd\x91\xc2\x4d"
8124 "\x91\xb0\x89\xe2\xbf\x83\x44\xaa"
8125 "\x28\x72\x23\xa0\xc2\xad\xad\x1c"
8126 "\xfc\x3f\x09\x7a\x0b\xdc\xc5\x1b"
8127 "\x87\x13\xc6\x5b\x59\x8d\xf2\xc8"
8128 "\xaf\xdf\x11\x95",
Tan Swee Heng8bff6642007-12-07 16:41:29 +08008129 .rlen = 4100,
8130 },
Tan Swee Heng2407d602007-11-23 19:45:00 +08008131};
8132
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08008133/*
Kevin Coffman76cb9522008-03-24 21:26:16 +08008134 * CTS (Cipher Text Stealing) mode tests
8135 */
8136#define CTS_MODE_ENC_TEST_VECTORS 6
8137#define CTS_MODE_DEC_TEST_VECTORS 6
8138static struct cipher_testvec cts_mode_enc_tv_template[] = {
8139 { /* from rfc3962 */
8140 .klen = 16,
8141 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8142 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8143 .ilen = 17,
8144 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8145 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8146 "\x20",
8147 .rlen = 17,
8148 .result = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
8149 "\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
8150 "\x97",
8151 }, {
8152 .klen = 16,
8153 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8154 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8155 .ilen = 31,
8156 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8157 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8158 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8159 "\x20\x47\x61\x75\x27\x73\x20",
8160 .rlen = 31,
8161 .result = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
8162 "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
8163 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8164 "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
8165 }, {
8166 .klen = 16,
8167 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8168 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8169 .ilen = 32,
8170 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8171 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8172 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8173 "\x20\x47\x61\x75\x27\x73\x20\x43",
8174 .rlen = 32,
8175 .result = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8176 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8177 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8178 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
8179 }, {
8180 .klen = 16,
8181 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8182 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8183 .ilen = 47,
8184 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8185 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8186 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8187 "\x20\x47\x61\x75\x27\x73\x20\x43"
8188 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8189 "\x70\x6c\x65\x61\x73\x65\x2c",
8190 .rlen = 47,
8191 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8192 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8193 "\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
8194 "\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
8195 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8196 "\xbe\x7f\xcb\xcc\x98\xeb\xf5",
8197 }, {
8198 .klen = 16,
8199 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8200 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8201 .ilen = 48,
8202 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8203 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8204 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8205 "\x20\x47\x61\x75\x27\x73\x20\x43"
8206 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8207 "\x70\x6c\x65\x61\x73\x65\x2c\x20",
8208 .rlen = 48,
8209 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8210 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8211 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8212 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
8213 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8214 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
8215 }, {
8216 .klen = 16,
8217 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8218 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8219 .ilen = 64,
8220 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8221 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8222 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8223 "\x20\x47\x61\x75\x27\x73\x20\x43"
8224 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8225 "\x70\x6c\x65\x61\x73\x65\x2c\x20"
8226 "\x61\x6e\x64\x20\x77\x6f\x6e\x74"
8227 "\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
8228 .rlen = 64,
8229 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8230 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8231 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8232 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8233 "\x48\x07\xef\xe8\x36\xee\x89\xa5"
8234 "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
8235 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8236 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
8237 }
8238};
8239
8240static struct cipher_testvec cts_mode_dec_tv_template[] = {
8241 { /* from rfc3962 */
8242 .klen = 16,
8243 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8244 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8245 .rlen = 17,
8246 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8247 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8248 "\x20",
8249 .ilen = 17,
8250 .input = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
8251 "\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
8252 "\x97",
8253 }, {
8254 .klen = 16,
8255 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8256 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8257 .rlen = 31,
8258 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8259 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8260 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8261 "\x20\x47\x61\x75\x27\x73\x20",
8262 .ilen = 31,
8263 .input = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
8264 "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
8265 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8266 "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
8267 }, {
8268 .klen = 16,
8269 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8270 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8271 .rlen = 32,
8272 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8273 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8274 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8275 "\x20\x47\x61\x75\x27\x73\x20\x43",
8276 .ilen = 32,
8277 .input = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8278 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8279 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8280 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
8281 }, {
8282 .klen = 16,
8283 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8284 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8285 .rlen = 47,
8286 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8287 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8288 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8289 "\x20\x47\x61\x75\x27\x73\x20\x43"
8290 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8291 "\x70\x6c\x65\x61\x73\x65\x2c",
8292 .ilen = 47,
8293 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8294 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8295 "\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
8296 "\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
8297 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8298 "\xbe\x7f\xcb\xcc\x98\xeb\xf5",
8299 }, {
8300 .klen = 16,
8301 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8302 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8303 .rlen = 48,
8304 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8305 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8306 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8307 "\x20\x47\x61\x75\x27\x73\x20\x43"
8308 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8309 "\x70\x6c\x65\x61\x73\x65\x2c\x20",
8310 .ilen = 48,
8311 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8312 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8313 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8314 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
8315 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8316 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
8317 }, {
8318 .klen = 16,
8319 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8320 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8321 .rlen = 64,
8322 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8323 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8324 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8325 "\x20\x47\x61\x75\x27\x73\x20\x43"
8326 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8327 "\x70\x6c\x65\x61\x73\x65\x2c\x20"
8328 "\x61\x6e\x64\x20\x77\x6f\x6e\x74"
8329 "\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
8330 .ilen = 64,
8331 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8332 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8333 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8334 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8335 "\x48\x07\xef\xe8\x36\xee\x89\xa5"
8336 "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
8337 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8338 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
8339 }
8340};
8341
8342/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07008343 * Compression stuff.
8344 */
8345#define COMP_BUF_SIZE 512
8346
8347struct comp_testvec {
8348 int inlen, outlen;
8349 char input[COMP_BUF_SIZE];
8350 char output[COMP_BUF_SIZE];
8351};
8352
8353/*
8354 * Deflate test vectors (null-terminated strings).
8355 * Params: winbits=11, Z_DEFAULT_COMPRESSION, MAX_MEM_LEVEL.
8356 */
8357#define DEFLATE_COMP_TEST_VECTORS 2
8358#define DEFLATE_DECOMP_TEST_VECTORS 2
8359
8360static struct comp_testvec deflate_comp_tv_template[] = {
8361 {
8362 .inlen = 70,
8363 .outlen = 38,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008364 .input = "Join us now and share the software "
8365 "Join us now and share the software ",
8366 .output = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
8367 "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
8368 "\x28\xce\x48\x2c\x4a\x55\x28\xc9"
8369 "\x48\x55\x28\xce\x4f\x2b\x29\x07"
8370 "\x71\xbc\x08\x2b\x01\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008371 }, {
8372 .inlen = 191,
8373 .outlen = 122,
8374 .input = "This document describes a compression method based on the DEFLATE"
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008375 "compression algorithm. This document defines the application of "
8376 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
8377 .output = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
8378 "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
8379 "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
8380 "\x24\xdb\x67\xd9\x47\xc1\xef\x49"
8381 "\x68\x12\x51\xae\x76\x67\xd6\x27"
8382 "\x19\x88\x1a\xde\x85\xab\x21\xf2"
8383 "\x08\x5d\x16\x1e\x20\x04\x2d\xad"
8384 "\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
8385 "\x42\x83\x23\xb6\x6c\x89\x71\x9b"
8386 "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
8387 "\xed\x62\xa9\x4c\x80\xff\x13\xaf"
8388 "\x52\x37\xed\x0e\x52\x6b\x59\x02"
8389 "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
8390 "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
8391 "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
8392 "\xfa\x02",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008393 },
8394};
8395
8396static struct comp_testvec deflate_decomp_tv_template[] = {
8397 {
8398 .inlen = 122,
8399 .outlen = 191,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008400 .input = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
8401 "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
8402 "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
8403 "\x24\xdb\x67\xd9\x47\xc1\xef\x49"
8404 "\x68\x12\x51\xae\x76\x67\xd6\x27"
8405 "\x19\x88\x1a\xde\x85\xab\x21\xf2"
8406 "\x08\x5d\x16\x1e\x20\x04\x2d\xad"
8407 "\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
8408 "\x42\x83\x23\xb6\x6c\x89\x71\x9b"
8409 "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
8410 "\xed\x62\xa9\x4c\x80\xff\x13\xaf"
8411 "\x52\x37\xed\x0e\x52\x6b\x59\x02"
8412 "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
8413 "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
8414 "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
8415 "\xfa\x02",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008416 .output = "This document describes a compression method based on the DEFLATE"
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008417 "compression algorithm. This document defines the application of "
8418 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008419 }, {
8420 .inlen = 38,
8421 .outlen = 70,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008422 .input = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
8423 "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
8424 "\x28\xce\x48\x2c\x4a\x55\x28\xc9"
8425 "\x48\x55\x28\xce\x4f\x2b\x29\x07"
8426 "\x71\xbc\x08\x2b\x01\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008427 .output = "Join us now and share the software "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008428 "Join us now and share the software ",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008429 },
8430};
8431
8432/*
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08008433 * LZO test vectors (null-terminated strings).
8434 */
8435#define LZO_COMP_TEST_VECTORS 2
8436#define LZO_DECOMP_TEST_VECTORS 2
8437
8438static struct comp_testvec lzo_comp_tv_template[] = {
8439 {
8440 .inlen = 70,
8441 .outlen = 46,
8442 .input = "Join us now and share the software "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008443 "Join us now and share the software ",
8444 .output = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
8445 "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
8446 "\x64\x20\x73\x68\x61\x72\x65\x20"
8447 "\x74\x68\x65\x20\x73\x6f\x66\x74"
8448 "\x77\x70\x01\x01\x4a\x6f\x69\x6e"
8449 "\x3d\x88\x00\x11\x00\x00",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08008450 }, {
8451 .inlen = 159,
8452 .outlen = 133,
8453 .input = "This document describes a compression method based on the LZO "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008454 "compression algorithm. This document defines the application of "
8455 "the LZO algorithm used in UBIFS.",
8456 .output = "\x00\x2b\x54\x68\x69\x73\x20\x64"
8457 "\x6f\x63\x75\x6d\x65\x6e\x74\x20"
8458 "\x64\x65\x73\x63\x72\x69\x62\x65"
8459 "\x73\x20\x61\x20\x63\x6f\x6d\x70"
8460 "\x72\x65\x73\x73\x69\x6f\x6e\x20"
8461 "\x6d\x65\x74\x68\x6f\x64\x20\x62"
8462 "\x61\x73\x65\x64\x20\x6f\x6e\x20"
8463 "\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
8464 "\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
8465 "\x69\x74\x68\x6d\x2e\x20\x20\x54"
8466 "\x68\x69\x73\x2a\x54\x01\x02\x66"
8467 "\x69\x6e\x65\x73\x94\x06\x05\x61"
8468 "\x70\x70\x6c\x69\x63\x61\x74\x76"
8469 "\x0a\x6f\x66\x88\x02\x60\x09\x27"
8470 "\xf0\x00\x0c\x20\x75\x73\x65\x64"
8471 "\x20\x69\x6e\x20\x55\x42\x49\x46"
8472 "\x53\x2e\x11\x00\x00",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08008473 },
8474};
8475
8476static struct comp_testvec lzo_decomp_tv_template[] = {
8477 {
8478 .inlen = 133,
8479 .outlen = 159,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008480 .input = "\x00\x2b\x54\x68\x69\x73\x20\x64"
8481 "\x6f\x63\x75\x6d\x65\x6e\x74\x20"
8482 "\x64\x65\x73\x63\x72\x69\x62\x65"
8483 "\x73\x20\x61\x20\x63\x6f\x6d\x70"
8484 "\x72\x65\x73\x73\x69\x6f\x6e\x20"
8485 "\x6d\x65\x74\x68\x6f\x64\x20\x62"
8486 "\x61\x73\x65\x64\x20\x6f\x6e\x20"
8487 "\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
8488 "\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
8489 "\x69\x74\x68\x6d\x2e\x20\x20\x54"
8490 "\x68\x69\x73\x2a\x54\x01\x02\x66"
8491 "\x69\x6e\x65\x73\x94\x06\x05\x61"
8492 "\x70\x70\x6c\x69\x63\x61\x74\x76"
8493 "\x0a\x6f\x66\x88\x02\x60\x09\x27"
8494 "\xf0\x00\x0c\x20\x75\x73\x65\x64"
8495 "\x20\x69\x6e\x20\x55\x42\x49\x46"
8496 "\x53\x2e\x11\x00\x00",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08008497 .output = "This document describes a compression method based on the LZO "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008498 "compression algorithm. This document defines the application of "
8499 "the LZO algorithm used in UBIFS.",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08008500 }, {
8501 .inlen = 46,
8502 .outlen = 70,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008503 .input = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
8504 "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
8505 "\x64\x20\x73\x68\x61\x72\x65\x20"
8506 "\x74\x68\x65\x20\x73\x6f\x66\x74"
8507 "\x77\x70\x01\x01\x4a\x6f\x69\x6e"
8508 "\x3d\x88\x00\x11\x00\x00",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08008509 .output = "Join us now and share the software "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008510 "Join us now and share the software ",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08008511 },
8512};
8513
8514/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07008515 * Michael MIC test vectors from IEEE 802.11i
8516 */
8517#define MICHAEL_MIC_TEST_VECTORS 6
8518
Herbert Xuef2736f2005-06-22 13:26:03 -07008519static struct hash_testvec michael_mic_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07008520 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008521 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008522 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008523 .plaintext = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07008524 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008525 .digest = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008526 },
8527 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008528 .key = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008529 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008530 .plaintext = "M",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008531 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008532 .digest = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008533 },
8534 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008535 .key = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008536 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008537 .plaintext = "Mi",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008538 .psize = 2,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008539 .digest = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008540 },
8541 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008542 .key = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008543 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008544 .plaintext = "Mic",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008545 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008546 .digest = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008547 },
8548 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008549 .key = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008550 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008551 .plaintext = "Mich",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008552 .psize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008553 .digest = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008554 },
8555 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008556 .key = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008557 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008558 .plaintext = "Michael",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008559 .psize = 7,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008560 .digest = "\x0a\x94\x2b\x12\x4e\xca\xa5\x46",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008561 }
8562};
8563
Harald Welteebfd9bc2005-06-22 13:27:23 -07008564/*
Herbert Xuc907ee72006-08-21 22:04:03 +10008565 * CRC32C test vectors
8566 */
8567#define CRC32C_TEST_VECTORS 14
8568
8569static struct hash_testvec crc32c_tv_template[] = {
8570 {
8571 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008572 .digest = "\x00\x00\x00\x00",
Herbert Xuc907ee72006-08-21 22:04:03 +10008573 },
8574 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008575 .key = "\x87\xa9\xcb\xed",
Herbert Xuc907ee72006-08-21 22:04:03 +10008576 .ksize = 4,
8577 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008578 .digest = "\x78\x56\x34\x12",
Herbert Xuc907ee72006-08-21 22:04:03 +10008579 },
8580 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008581 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008582 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008583 .plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08"
8584 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
8585 "\x11\x12\x13\x14\x15\x16\x17\x18"
8586 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
8587 "\x21\x22\x23\x24\x25\x26\x27\x28",
Herbert Xuc907ee72006-08-21 22:04:03 +10008588 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008589 .digest = "\x7f\x15\x2c\x0e",
Herbert Xuc907ee72006-08-21 22:04:03 +10008590 },
8591 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008592 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008593 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008594 .plaintext = "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8595 "\x31\x32\x33\x34\x35\x36\x37\x38"
8596 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8597 "\x41\x42\x43\x44\x45\x46\x47\x48"
8598 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50",
Herbert Xuc907ee72006-08-21 22:04:03 +10008599 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008600 .digest = "\xf6\xeb\x80\xe9",
Herbert Xuc907ee72006-08-21 22:04:03 +10008601 },
8602 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008603 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008604 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008605 .plaintext = "\x51\x52\x53\x54\x55\x56\x57\x58"
8606 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8607 "\x61\x62\x63\x64\x65\x66\x67\x68"
8608 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8609 "\x71\x72\x73\x74\x75\x76\x77\x78",
Herbert Xuc907ee72006-08-21 22:04:03 +10008610 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008611 .digest = "\xed\xbd\x74\xde",
Herbert Xuc907ee72006-08-21 22:04:03 +10008612 },
8613 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008614 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008615 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008616 .plaintext = "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8617 "\x81\x82\x83\x84\x85\x86\x87\x88"
8618 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8619 "\x91\x92\x93\x94\x95\x96\x97\x98"
8620 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0",
Herbert Xuc907ee72006-08-21 22:04:03 +10008621 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008622 .digest = "\x62\xc8\x79\xd5",
Herbert Xuc907ee72006-08-21 22:04:03 +10008623 },
8624 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008625 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008626 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008627 .plaintext = "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8628 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8629 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8630 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8631 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8",
Herbert Xuc907ee72006-08-21 22:04:03 +10008632 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008633 .digest = "\xd0\x9a\x97\xba",
Herbert Xuc907ee72006-08-21 22:04:03 +10008634 },
8635 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008636 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008637 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008638 .plaintext = "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8639 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8640 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8641 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8642 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
Herbert Xuc907ee72006-08-21 22:04:03 +10008643 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008644 .digest = "\x13\xd9\x29\x2b",
Herbert Xuc907ee72006-08-21 22:04:03 +10008645 },
8646 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008647 .key = "\x80\xea\xd3\xf1",
Herbert Xuc907ee72006-08-21 22:04:03 +10008648 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008649 .plaintext = "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8650 "\x31\x32\x33\x34\x35\x36\x37\x38"
8651 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8652 "\x41\x42\x43\x44\x45\x46\x47\x48"
8653 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50",
Herbert Xuc907ee72006-08-21 22:04:03 +10008654 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008655 .digest = "\x0c\xb5\xe2\xa2",
Herbert Xuc907ee72006-08-21 22:04:03 +10008656 },
8657 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008658 .key = "\xf3\x4a\x1d\x5d",
Herbert Xuc907ee72006-08-21 22:04:03 +10008659 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008660 .plaintext = "\x51\x52\x53\x54\x55\x56\x57\x58"
8661 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8662 "\x61\x62\x63\x64\x65\x66\x67\x68"
8663 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8664 "\x71\x72\x73\x74\x75\x76\x77\x78",
Herbert Xuc907ee72006-08-21 22:04:03 +10008665 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008666 .digest = "\xd1\x7f\xfb\xa6",
Herbert Xuc907ee72006-08-21 22:04:03 +10008667 },
8668 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008669 .key = "\x2e\x80\x04\x59",
Herbert Xuc907ee72006-08-21 22:04:03 +10008670 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008671 .plaintext = "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8672 "\x81\x82\x83\x84\x85\x86\x87\x88"
8673 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8674 "\x91\x92\x93\x94\x95\x96\x97\x98"
8675 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0",
Herbert Xuc907ee72006-08-21 22:04:03 +10008676 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008677 .digest = "\x59\x33\xe6\x7a",
Herbert Xuc907ee72006-08-21 22:04:03 +10008678 },
8679 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008680 .key = "\xa6\xcc\x19\x85",
Herbert Xuc907ee72006-08-21 22:04:03 +10008681 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008682 .plaintext = "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8683 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8684 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8685 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8686 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8",
Herbert Xuc907ee72006-08-21 22:04:03 +10008687 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008688 .digest = "\xbe\x03\x01\xd2",
Herbert Xuc907ee72006-08-21 22:04:03 +10008689 },
8690 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008691 .key = "\x41\xfc\xfe\x2d",
Herbert Xuc907ee72006-08-21 22:04:03 +10008692 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008693 .plaintext = "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8694 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8695 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8696 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8697 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
Herbert Xuc907ee72006-08-21 22:04:03 +10008698 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008699 .digest = "\x75\xd3\xc5\x24",
Herbert Xuc907ee72006-08-21 22:04:03 +10008700 },
8701 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008702 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008703 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008704 .plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08"
8705 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
8706 "\x11\x12\x13\x14\x15\x16\x17\x18"
8707 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
8708 "\x21\x22\x23\x24\x25\x26\x27\x28"
8709 "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8710 "\x31\x32\x33\x34\x35\x36\x37\x38"
8711 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8712 "\x41\x42\x43\x44\x45\x46\x47\x48"
8713 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50"
8714 "\x51\x52\x53\x54\x55\x56\x57\x58"
8715 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8716 "\x61\x62\x63\x64\x65\x66\x67\x68"
8717 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8718 "\x71\x72\x73\x74\x75\x76\x77\x78"
8719 "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8720 "\x81\x82\x83\x84\x85\x86\x87\x88"
8721 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8722 "\x91\x92\x93\x94\x95\x96\x97\x98"
8723 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0"
8724 "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8725 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8726 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8727 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8728 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8"
8729 "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8730 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8731 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8732 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8733 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
Herbert Xuc907ee72006-08-21 22:04:03 +10008734 .psize = 240,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008735 .digest = "\x75\xd3\xc5\x24",
Herbert Xuc907ee72006-08-21 22:04:03 +10008736 .np = 2,
8737 .tap = { 31, 209 }
8738 },
8739};
8740
8741/*
Harald Welteebfd9bc2005-06-22 13:27:23 -07008742 * Cipher speed tests
8743 */
Sebastian Siewiord5dc3922008-03-11 21:27:11 +08008744static u8 speed_template_8[] = {8, 0};
8745static u8 speed_template_24[] = {24, 0};
8746static u8 speed_template_8_32[] = {8, 32, 0};
8747static u8 speed_template_16_32[] = {16, 32, 0};
8748static u8 speed_template_16_24_32[] = {16, 24, 32, 0};
8749static u8 speed_template_32_40_48[] = {32, 40, 48, 0};
8750static u8 speed_template_32_48_64[] = {32, 48, 64, 0};
Rik Snelf19f5112007-09-19 20:23:13 +08008751
Michal Ludvige8057922006-05-30 22:04:19 +10008752/*
8753 * Digest speed tests
8754 */
Herbert Xue9d41162006-08-19 21:38:49 +10008755static struct hash_speed generic_hash_speed_template[] = {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008756 { .blen = 16, .plen = 16, },
Michal Ludvige8057922006-05-30 22:04:19 +10008757 { .blen = 64, .plen = 16, },
8758 { .blen = 64, .plen = 64, },
8759 { .blen = 256, .plen = 16, },
8760 { .blen = 256, .plen = 64, },
8761 { .blen = 256, .plen = 256, },
8762 { .blen = 1024, .plen = 16, },
8763 { .blen = 1024, .plen = 256, },
8764 { .blen = 1024, .plen = 1024, },
8765 { .blen = 2048, .plen = 16, },
8766 { .blen = 2048, .plen = 256, },
8767 { .blen = 2048, .plen = 1024, },
8768 { .blen = 2048, .plen = 2048, },
8769 { .blen = 4096, .plen = 16, },
8770 { .blen = 4096, .plen = 256, },
8771 { .blen = 4096, .plen = 1024, },
8772 { .blen = 4096, .plen = 4096, },
8773 { .blen = 8192, .plen = 16, },
8774 { .blen = 8192, .plen = 256, },
8775 { .blen = 8192, .plen = 1024, },
8776 { .blen = 8192, .plen = 4096, },
8777 { .blen = 8192, .plen = 8192, },
8778
8779 /* End marker */
8780 { .blen = 0, .plen = 0, }
8781};
8782
Linus Torvalds1da177e2005-04-16 15:20:36 -07008783#endif /* _CRYPTO_TCRYPT_H */