blob: 89068233acfde1e445a63020f6445abb8b6d8bb8 [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 *
Adrian-Ken Rueegseggerfd4adf12008-05-07 22:16:36 +080016 * 2008-04-27 Added RIPEMD tests
Mikko Herranen28db8e32007-11-26 22:24:11 +080017 * 2007-11-13 Added GCM tests
Mikko Herranene3a4ea42007-11-26 22:12:07 +080018 * 2007-11-13 Added AEAD support
Andrew Donofrioa28091a2006-12-10 12:10:20 +110019 * 2006-12-07 Added SHA384 HMAC and SHA512 HMAC tests
Harald Welteebfd9bc2005-06-22 13:27:23 -070020 * 2004-08-09 Cipher speed tests by Reyk Floeter <reyk@vantronix.net>
21 * 2003-09-14 Changes by Kartikey Mahendra Bhatt
Linus Torvalds1da177e2005-04-16 15:20:36 -070022 *
23 */
24#ifndef _CRYPTO_TCRYPT_H
25#define _CRYPTO_TCRYPT_H
26
27#define MAX_DIGEST_SIZE 64
28#define MAX_TAP 8
29
30#define MAX_KEYLEN 56
31#define MAX_IVLEN 32
32
33struct hash_testvec {
Atsushi Nemoto06b42aa2006-03-13 21:39:23 +110034 /* only used with keyed hash algorithms */
Sebastian Siewiorde224c32008-03-13 20:21:51 +080035 char *key;
36 char *plaintext;
37 char *digest;
Herbert Xuef2736f2005-06-22 13:26:03 -070038 unsigned char tap[MAX_TAP];
Atsushi Nemoto06b42aa2006-03-13 21:39:23 +110039 unsigned char psize;
40 unsigned char np;
Linus Torvalds1da177e2005-04-16 15:20:36 -070041 unsigned char ksize;
42};
43
Linus Torvalds1da177e2005-04-16 15:20:36 -070044struct cipher_testvec {
Sebastian Siewiorde224c32008-03-13 20:21:51 +080045 char *key;
46 char *iv;
47 char *input;
48 char *result;
Herbert Xuef2736f2005-06-22 13:26:03 -070049 unsigned char tap[MAX_TAP];
Atsushi Nemoto06b42aa2006-03-13 21:39:23 +110050 int np;
51 unsigned char fail;
52 unsigned char wk; /* weak key flag */
53 unsigned char klen;
Rik Snelf3d10442006-11-29 19:01:41 +110054 unsigned short ilen;
55 unsigned short rlen;
Linus Torvalds1da177e2005-04-16 15:20:36 -070056};
57
Mikko Herranene3a4ea42007-11-26 22:12:07 +080058struct aead_testvec {
Sebastian Siewiorde224c32008-03-13 20:21:51 +080059 char *key;
60 char *iv;
61 char *input;
62 char *assoc;
63 char *result;
Mikko Herranene3a4ea42007-11-26 22:12:07 +080064 unsigned char tap[MAX_TAP];
65 unsigned char atap[MAX_TAP];
66 int np;
67 int anp;
68 unsigned char fail;
69 unsigned char wk; /* weak key flag */
70 unsigned char klen;
71 unsigned short ilen;
72 unsigned short alen;
73 unsigned short rlen;
Mikko Herranene3a4ea42007-11-26 22:12:07 +080074};
75
Herbert Xue9d41162006-08-19 21:38:49 +100076struct hash_speed {
Michal Ludvige8057922006-05-30 22:04:19 +100077 unsigned int blen; /* buffer length */
78 unsigned int plen; /* per-update length */
79};
80
Sebastian Siewiorde224c32008-03-13 20:21:51 +080081static char zeroed_string[48];
82
Linus Torvalds1da177e2005-04-16 15:20:36 -070083/*
84 * MD4 test vectors from RFC1320
85 */
86#define MD4_TEST_VECTORS 7
87
88static struct hash_testvec md4_tv_template [] = {
89 {
90 .plaintext = "",
Sebastian Siewiorde224c32008-03-13 20:21:51 +080091 .digest = "\x31\xd6\xcf\xe0\xd1\x6a\xe9\x31"
92 "\xb7\x3c\x59\xd7\xe0\xc0\x89\xc0",
Linus Torvalds1da177e2005-04-16 15:20:36 -070093 }, {
94 .plaintext = "a",
95 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +080096 .digest = "\xbd\xe5\x2c\xb3\x1d\xe3\x3e\x46"
97 "\x24\x5e\x05\xfb\xdb\xd6\xfb\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -070098 }, {
99 .plaintext = "abc",
100 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800101 .digest = "\xa4\x48\x01\x7a\xaf\x21\xd8\x52"
102 "\x5f\xc1\x0a\xe8\x7a\xa6\x72\x9d",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700103 }, {
104 .plaintext = "message digest",
105 .psize = 14,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800106 .digest = "\xd9\x13\x0a\x81\x64\x54\x9f\xe8"
107 "\x18\x87\x48\x06\xe1\xc7\x01\x4b",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700108 }, {
109 .plaintext = "abcdefghijklmnopqrstuvwxyz",
110 .psize = 26,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800111 .digest = "\xd7\x9e\x1c\x30\x8a\xa5\xbb\xcd"
112 "\xee\xa8\xed\x63\xdf\x41\x2d\xa9",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700113 .np = 2,
114 .tap = { 13, 13 },
115 }, {
116 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
117 .psize = 62,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800118 .digest = "\x04\x3f\x85\x82\xf2\x41\xdb\x35"
119 "\x1c\xe6\x27\xe1\x53\xe7\xf0\xe4",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700120 }, {
121 .plaintext = "123456789012345678901234567890123456789012345678901234567890123"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800122 "45678901234567890",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700123 .psize = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800124 .digest = "\xe3\x3b\x4d\xdc\x9c\x38\xf2\x19"
125 "\x9c\x3e\x7b\x16\x4f\xcc\x05\x36",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700126 },
127};
128
129/*
130 * MD5 test vectors from RFC1321
131 */
132#define MD5_TEST_VECTORS 7
133
134static struct hash_testvec md5_tv_template[] = {
135 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800136 .digest = "\xd4\x1d\x8c\xd9\x8f\x00\xb2\x04"
137 "\xe9\x80\x09\x98\xec\xf8\x42\x7e",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700138 }, {
139 .plaintext = "a",
140 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800141 .digest = "\x0c\xc1\x75\xb9\xc0\xf1\xb6\xa8"
142 "\x31\xc3\x99\xe2\x69\x77\x26\x61",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700143 }, {
144 .plaintext = "abc",
145 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800146 .digest = "\x90\x01\x50\x98\x3c\xd2\x4f\xb0"
147 "\xd6\x96\x3f\x7d\x28\xe1\x7f\x72",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700148 }, {
149 .plaintext = "message digest",
150 .psize = 14,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800151 .digest = "\xf9\x6b\x69\x7d\x7c\xb7\x93\x8d"
152 "\x52\x5a\x2f\x31\xaa\xf1\x61\xd0",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700153 }, {
154 .plaintext = "abcdefghijklmnopqrstuvwxyz",
155 .psize = 26,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800156 .digest = "\xc3\xfc\xd3\xd7\x61\x92\xe4\x00"
157 "\x7d\xfb\x49\x6c\xca\x67\xe1\x3b",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700158 .np = 2,
159 .tap = {13, 13}
160 }, {
161 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
162 .psize = 62,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800163 .digest = "\xd1\x74\xab\x98\xd2\x77\xd9\xf5"
164 "\xa5\x61\x1c\x2c\x9f\x41\x9d\x9f",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700165 }, {
166 .plaintext = "12345678901234567890123456789012345678901234567890123456789012"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800167 "345678901234567890",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700168 .psize = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800169 .digest = "\x57\xed\xf4\xa2\x2b\xe3\xc9\x55"
170 "\xac\x49\xda\x2e\x21\x07\xb6\x7a",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700171 }
Adrian-Ken Rueegseggerfd4adf12008-05-07 22:16:36 +0800172
173};
174
175/*
176 * RIPEMD-128 test vectors from ISO/IEC 10118-3:2004(E)
177 */
178#define RMD128_TEST_VECTORS 10
179
180static struct hash_testvec rmd128_tv_template[] = {
181 {
182 .digest = "\xcd\xf2\x62\x13\xa1\x50\xdc\x3e"
183 "\xcb\x61\x0f\x18\xf6\xb3\x8b\x46",
184 }, {
185 .plaintext = "a",
186 .psize = 1,
187 .digest = "\x86\xbe\x7a\xfa\x33\x9d\x0f\xc7"
188 "\xcf\xc7\x85\xe7\x2f\x57\x8d\x33",
189 }, {
190 .plaintext = "abc",
191 .psize = 3,
192 .digest = "\xc1\x4a\x12\x19\x9c\x66\xe4\xba"
193 "\x84\x63\x6b\x0f\x69\x14\x4c\x77",
194 }, {
195 .plaintext = "message digest",
196 .psize = 14,
197 .digest = "\x9e\x32\x7b\x3d\x6e\x52\x30\x62"
198 "\xaf\xc1\x13\x2d\x7d\xf9\xd1\xb8",
199 }, {
200 .plaintext = "abcdefghijklmnopqrstuvwxyz",
201 .psize = 26,
202 .digest = "\xfd\x2a\xa6\x07\xf7\x1d\xc8\xf5"
203 "\x10\x71\x49\x22\xb3\x71\x83\x4e",
204 }, {
205 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
206 "fghijklmnopqrstuvwxyz0123456789",
207 .psize = 62,
208 .digest = "\xd1\xe9\x59\xeb\x17\x9c\x91\x1f"
209 "\xae\xa4\x62\x4c\x60\xc5\xc7\x02",
210 }, {
211 .plaintext = "1234567890123456789012345678901234567890"
212 "1234567890123456789012345678901234567890",
213 .psize = 80,
214 .digest = "\x3f\x45\xef\x19\x47\x32\xc2\xdb"
215 "\xb2\xc4\xa2\xc7\x69\x79\x5f\xa3",
216 }, {
217 .plaintext = "abcdbcdecdefdefgefghfghighij"
218 "hijkijkljklmklmnlmnomnopnopq",
219 .psize = 56,
220 .digest = "\xa1\xaa\x06\x89\xd0\xfa\xfa\x2d"
221 "\xdc\x22\xe8\x8b\x49\x13\x3a\x06",
222 .np = 2,
223 .tap = { 28, 28 },
224 }, {
225 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghi"
226 "jklmghijklmnhijklmnoijklmnopjklmnopqklmnopqr"
227 "lmnopqrsmnopqrstnopqrstu",
228 .psize = 112,
229 .digest = "\xd4\xec\xc9\x13\xe1\xdf\x77\x6b"
230 "\xf4\x8d\xe9\xd5\x5b\x1f\x25\x46",
231 }, {
232 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
233 .psize = 32,
234 .digest = "\x13\xfc\x13\xe8\xef\xff\x34\x7d"
235 "\xe1\x93\xff\x46\xdb\xac\xcf\xd4",
236 }
237};
238
239/*
240 * RIPEMD-160 test vectors from ISO/IEC 10118-3:2004(E)
241 */
242#define RMD160_TEST_VECTORS 10
243
244static struct hash_testvec rmd160_tv_template[] = {
245 {
246 .digest = "\x9c\x11\x85\xa5\xc5\xe9\xfc\x54\x61\x28"
247 "\x08\x97\x7e\xe8\xf5\x48\xb2\x25\x8d\x31",
248 }, {
249 .plaintext = "a",
250 .psize = 1,
251 .digest = "\x0b\xdc\x9d\x2d\x25\x6b\x3e\xe9\xda\xae"
252 "\x34\x7b\xe6\xf4\xdc\x83\x5a\x46\x7f\xfe",
253 }, {
254 .plaintext = "abc",
255 .psize = 3,
256 .digest = "\x8e\xb2\x08\xf7\xe0\x5d\x98\x7a\x9b\x04"
257 "\x4a\x8e\x98\xc6\xb0\x87\xf1\x5a\x0b\xfc",
258 }, {
259 .plaintext = "message digest",
260 .psize = 14,
261 .digest = "\x5d\x06\x89\xef\x49\xd2\xfa\xe5\x72\xb8"
262 "\x81\xb1\x23\xa8\x5f\xfa\x21\x59\x5f\x36",
263 }, {
264 .plaintext = "abcdefghijklmnopqrstuvwxyz",
265 .psize = 26,
266 .digest = "\xf7\x1c\x27\x10\x9c\x69\x2c\x1b\x56\xbb"
267 "\xdc\xeb\x5b\x9d\x28\x65\xb3\x70\x8d\xbc",
268 }, {
269 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
270 "fghijklmnopqrstuvwxyz0123456789",
271 .psize = 62,
272 .digest = "\xb0\xe2\x0b\x6e\x31\x16\x64\x02\x86\xed"
273 "\x3a\x87\xa5\x71\x30\x79\xb2\x1f\x51\x89",
274 }, {
275 .plaintext = "1234567890123456789012345678901234567890"
276 "1234567890123456789012345678901234567890",
277 .psize = 80,
278 .digest = "\x9b\x75\x2e\x45\x57\x3d\x4b\x39\xf4\xdb"
279 "\xd3\x32\x3c\xab\x82\xbf\x63\x32\x6b\xfb",
280 }, {
281 .plaintext = "abcdbcdecdefdefgefghfghighij"
282 "hijkijkljklmklmnlmnomnopnopq",
283 .psize = 56,
284 .digest = "\x12\xa0\x53\x38\x4a\x9c\x0c\x88\xe4\x05"
285 "\xa0\x6c\x27\xdc\xf4\x9a\xda\x62\xeb\x2b",
286 .np = 2,
287 .tap = { 28, 28 },
288 }, {
289 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghi"
290 "jklmghijklmnhijklmnoijklmnopjklmnopqklmnopqr"
291 "lmnopqrsmnopqrstnopqrstu",
292 .psize = 112,
293 .digest = "\x6f\x3f\xa3\x9b\x6b\x50\x3c\x38\x4f\x91"
294 "\x9a\x49\xa7\xaa\x5c\x2c\x08\xbd\xfb\x45",
295 }, {
296 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
297 .psize = 32,
298 .digest = "\x94\xc2\x64\x11\x54\x04\xe6\x33\x79\x0d"
299 "\xfc\xc8\x7b\x58\x7d\x36\x77\x06\x7d\x9f",
300 }
Linus Torvalds1da177e2005-04-16 15:20:36 -0700301};
302
303/*
304 * SHA1 test vectors from from FIPS PUB 180-1
305 */
306#define SHA1_TEST_VECTORS 2
307
308static struct hash_testvec sha1_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700309 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700310 .plaintext = "abc",
311 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800312 .digest = "\xa9\x99\x3e\x36\x47\x06\x81\x6a\xba\x3e"
313 "\x25\x71\x78\x50\xc2\x6c\x9c\xd0\xd8\x9d",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700314 }, {
315 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
316 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800317 .digest = "\x84\x98\x3e\x44\x1c\x3b\xd2\x6e\xba\xae"
318 "\x4a\xa1\xf9\x51\x29\xe5\xe5\x46\x70\xf1",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700319 .np = 2,
320 .tap = { 28, 28 }
321 }
322};
323
Jonathan Lynchcd12fb92007-11-10 20:08:25 +0800324
325/*
326 * SHA224 test vectors from from FIPS PUB 180-2
327 */
328#define SHA224_TEST_VECTORS 2
329
330static struct hash_testvec sha224_tv_template[] = {
331 {
332 .plaintext = "abc",
333 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800334 .digest = "\x23\x09\x7D\x22\x34\x05\xD8\x22"
335 "\x86\x42\xA4\x77\xBD\xA2\x55\xB3"
336 "\x2A\xAD\xBC\xE4\xBD\xA0\xB3\xF7"
337 "\xE3\x6C\x9D\xA7",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +0800338 }, {
339 .plaintext =
340 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
341 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800342 .digest = "\x75\x38\x8B\x16\x51\x27\x76\xCC"
343 "\x5D\xBA\x5D\xA1\xFD\x89\x01\x50"
344 "\xB0\xC6\x45\x5C\xB4\xF5\x8B\x19"
345 "\x52\x52\x25\x25",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +0800346 .np = 2,
347 .tap = { 28, 28 }
348 }
349};
350
Linus Torvalds1da177e2005-04-16 15:20:36 -0700351/*
352 * SHA256 test vectors from from NIST
353 */
354#define SHA256_TEST_VECTORS 2
355
Herbert Xuef2736f2005-06-22 13:26:03 -0700356static struct hash_testvec sha256_tv_template[] = {
357 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700358 .plaintext = "abc",
359 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800360 .digest = "\xba\x78\x16\xbf\x8f\x01\xcf\xea"
361 "\x41\x41\x40\xde\x5d\xae\x22\x23"
362 "\xb0\x03\x61\xa3\x96\x17\x7a\x9c"
363 "\xb4\x10\xff\x61\xf2\x00\x15\xad",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700364 }, {
365 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
366 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800367 .digest = "\x24\x8d\x6a\x61\xd2\x06\x38\xb8"
368 "\xe5\xc0\x26\x93\x0c\x3e\x60\x39"
369 "\xa3\x3c\xe4\x59\x64\xff\x21\x67"
370 "\xf6\xec\xed\xd4\x19\xdb\x06\xc1",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700371 .np = 2,
372 .tap = { 28, 28 }
373 },
374};
375
376/*
377 * SHA384 test vectors from from NIST and kerneli
378 */
379#define SHA384_TEST_VECTORS 4
380
381static struct hash_testvec sha384_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700382 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700383 .plaintext= "abc",
384 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800385 .digest = "\xcb\x00\x75\x3f\x45\xa3\x5e\x8b"
386 "\xb5\xa0\x3d\x69\x9a\xc6\x50\x07"
387 "\x27\x2c\x32\xab\x0e\xde\xd1\x63"
388 "\x1a\x8b\x60\x5a\x43\xff\x5b\xed"
389 "\x80\x86\x07\x2b\xa1\xe7\xcc\x23"
390 "\x58\xba\xec\xa1\x34\xc8\x25\xa7",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700391 }, {
392 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
393 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800394 .digest = "\x33\x91\xfd\xdd\xfc\x8d\xc7\x39"
395 "\x37\x07\xa6\x5b\x1b\x47\x09\x39"
396 "\x7c\xf8\xb1\xd1\x62\xaf\x05\xab"
397 "\xfe\x8f\x45\x0d\xe5\xf3\x6b\xc6"
398 "\xb0\x45\x5a\x85\x20\xbc\x4e\x6f"
399 "\x5f\xe9\x5b\x1f\xe3\xc8\x45\x2b",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700400 }, {
401 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800402 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700403 .psize = 112,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800404 .digest = "\x09\x33\x0c\x33\xf7\x11\x47\xe8"
405 "\x3d\x19\x2f\xc7\x82\xcd\x1b\x47"
406 "\x53\x11\x1b\x17\x3b\x3b\x05\xd2"
407 "\x2f\xa0\x80\x86\xe3\xb0\xf7\x12"
408 "\xfc\xc7\xc7\x1a\x55\x7e\x2d\xb9"
409 "\x66\xc3\xe9\xfa\x91\x74\x60\x39",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700410 }, {
411 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800412 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700413 .psize = 104,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800414 .digest = "\x3d\x20\x89\x73\xab\x35\x08\xdb"
415 "\xbd\x7e\x2c\x28\x62\xba\x29\x0a"
416 "\xd3\x01\x0e\x49\x78\xc1\x98\xdc"
417 "\x4d\x8f\xd0\x14\xe5\x82\x82\x3a"
418 "\x89\xe1\x6f\x9b\x2a\x7b\xbc\x1a"
419 "\xc9\x38\xe2\xd1\x99\xe8\xbe\xa4",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700420 .np = 4,
421 .tap = { 26, 26, 26, 26 }
422 },
423};
424
425/*
426 * SHA512 test vectors from from NIST and kerneli
427 */
428#define SHA512_TEST_VECTORS 4
429
430static struct hash_testvec sha512_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700431 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700432 .plaintext = "abc",
433 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800434 .digest = "\xdd\xaf\x35\xa1\x93\x61\x7a\xba"
435 "\xcc\x41\x73\x49\xae\x20\x41\x31"
436 "\x12\xe6\xfa\x4e\x89\xa9\x7e\xa2"
437 "\x0a\x9e\xee\xe6\x4b\x55\xd3\x9a"
438 "\x21\x92\x99\x2a\x27\x4f\xc1\xa8"
439 "\x36\xba\x3c\x23\xa3\xfe\xeb\xbd"
440 "\x45\x4d\x44\x23\x64\x3c\xe8\x0e"
441 "\x2a\x9a\xc9\x4f\xa5\x4c\xa4\x9f",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700442 }, {
443 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
444 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800445 .digest = "\x20\x4a\x8f\xc6\xdd\xa8\x2f\x0a"
446 "\x0c\xed\x7b\xeb\x8e\x08\xa4\x16"
447 "\x57\xc1\x6e\xf4\x68\xb2\x28\xa8"
448 "\x27\x9b\xe3\x31\xa7\x03\xc3\x35"
449 "\x96\xfd\x15\xc1\x3b\x1b\x07\xf9"
450 "\xaa\x1d\x3b\xea\x57\x78\x9c\xa0"
451 "\x31\xad\x85\xc7\xa7\x1d\xd7\x03"
452 "\x54\xec\x63\x12\x38\xca\x34\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700453 }, {
454 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800455 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700456 .psize = 112,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800457 .digest = "\x8e\x95\x9b\x75\xda\xe3\x13\xda"
458 "\x8c\xf4\xf7\x28\x14\xfc\x14\x3f"
459 "\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1"
460 "\x72\x99\xae\xad\xb6\x88\x90\x18"
461 "\x50\x1d\x28\x9e\x49\x00\xf7\xe4"
462 "\x33\x1b\x99\xde\xc4\xb5\x43\x3a"
463 "\xc7\xd3\x29\xee\xb6\xdd\x26\x54"
464 "\x5e\x96\xe5\x5b\x87\x4b\xe9\x09",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700465 }, {
466 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800467 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700468 .psize = 104,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800469 .digest = "\x93\x0d\x0c\xef\xcb\x30\xff\x11"
470 "\x33\xb6\x89\x81\x21\xf1\xcf\x3d"
471 "\x27\x57\x8a\xfc\xaf\xe8\x67\x7c"
472 "\x52\x57\xcf\x06\x99\x11\xf7\x5d"
473 "\x8f\x58\x31\xb5\x6e\xbf\xda\x67"
474 "\xb2\x78\xe6\x6d\xff\x8b\x84\xfe"
475 "\x2b\x28\x70\xf7\x42\xa5\x80\xd8"
476 "\xed\xb4\x19\x87\x23\x28\x50\xc9",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700477 .np = 4,
478 .tap = { 26, 26, 26, 26 }
479 },
480};
481
482
483/*
Herbert Xuef2736f2005-06-22 13:26:03 -0700484 * WHIRLPOOL test vectors from Whirlpool package
Linus Torvalds1da177e2005-04-16 15:20:36 -0700485 * by Vincent Rijmen and Paulo S. L. M. Barreto as part of the NESSIE
486 * submission
487 */
488#define WP512_TEST_VECTORS 8
489
490static struct hash_testvec wp512_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700491 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700492 .plaintext = "",
493 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800494 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
495 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
496 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
497 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7"
498 "\x3E\x83\xBE\x69\x8B\x28\x8F\xEB"
499 "\xCF\x88\xE3\xE0\x3C\x4F\x07\x57"
500 "\xEA\x89\x64\xE5\x9B\x63\xD9\x37"
501 "\x08\xB1\x38\xCC\x42\xA6\x6E\xB3",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700502
503
504 }, {
505 .plaintext = "a",
506 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800507 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
508 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
509 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
510 "\x73\xC4\x50\x01\xD0\x08\x7B\x42"
511 "\xD1\x1B\xC6\x45\x41\x3A\xEF\xF6"
512 "\x3A\x42\x39\x1A\x39\x14\x5A\x59"
513 "\x1A\x92\x20\x0D\x56\x01\x95\xE5"
514 "\x3B\x47\x85\x84\xFD\xAE\x23\x1A",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700515 }, {
516 .plaintext = "abc",
517 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800518 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
519 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
520 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
521 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C"
522 "\x71\x81\xEE\xBD\xB6\xC5\x7E\x27"
523 "\x7D\x0E\x34\x95\x71\x14\xCB\xD6"
524 "\xC7\x97\xFC\x9D\x95\xD8\xB5\x82"
525 "\xD2\x25\x29\x20\x76\xD4\xEE\xF5",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700526 }, {
527 .plaintext = "message digest",
528 .psize = 14,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800529 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
530 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
531 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
532 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B"
533 "\x84\x21\x55\x76\x59\xEF\x55\xC1"
534 "\x06\xB4\xB5\x2A\xC5\xA4\xAA\xA6"
535 "\x92\xED\x92\x00\x52\x83\x8F\x33"
536 "\x62\xE8\x6D\xBD\x37\xA8\x90\x3E",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700537 }, {
538 .plaintext = "abcdefghijklmnopqrstuvwxyz",
539 .psize = 26,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800540 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
541 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
542 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
543 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B"
544 "\x08\xBF\x2A\x92\x51\xC3\x0B\x6A"
545 "\x0B\x8A\xAE\x86\x17\x7A\xB4\xA6"
546 "\xF6\x8F\x67\x3E\x72\x07\x86\x5D"
547 "\x5D\x98\x19\xA3\xDB\xA4\xEB\x3B",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700548 }, {
549 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800550 "abcdefghijklmnopqrstuvwxyz0123456789",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700551 .psize = 62,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800552 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
553 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
554 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
555 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E"
556 "\x08\xEB\xA2\x66\x29\x12\x9D\x8F"
557 "\xB7\xCB\x57\x21\x1B\x92\x81\xA6"
558 "\x55\x17\xCC\x87\x9D\x7B\x96\x21"
559 "\x42\xC6\x5F\x5A\x7A\xF0\x14\x67",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700560 }, {
561 .plaintext = "1234567890123456789012345678901234567890"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800562 "1234567890123456789012345678901234567890",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700563 .psize = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800564 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
565 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
566 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
567 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29"
568 "\x4D\x5B\xD8\xDF\x2A\x6C\x44\xE5"
569 "\x38\xCD\x04\x7B\x26\x81\xA5\x1A"
570 "\x2C\x60\x48\x1E\x88\xC5\xA2\x0B"
571 "\x2C\x2A\x80\xCF\x3A\x9A\x08\x3B",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700572 }, {
573 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
574 .psize = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800575 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
576 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
577 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
578 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69"
579 "\x16\xBD\xC8\x03\x1B\xC5\xBE\x1B"
580 "\x7B\x94\x76\x39\xFE\x05\x0B\x56"
581 "\x93\x9B\xAA\xA0\xAD\xFF\x9A\xE6"
582 "\x74\x5B\x7B\x18\x1C\x3B\xE3\xFD",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700583 },
584};
585
586#define WP384_TEST_VECTORS 8
587
588static struct hash_testvec wp384_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700589 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700590 .plaintext = "",
591 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800592 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
593 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
594 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
595 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7"
596 "\x3E\x83\xBE\x69\x8B\x28\x8F\xEB"
597 "\xCF\x88\xE3\xE0\x3C\x4F\x07\x57",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700598
599
600 }, {
601 .plaintext = "a",
602 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800603 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
604 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
605 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
606 "\x73\xC4\x50\x01\xD0\x08\x7B\x42"
607 "\xD1\x1B\xC6\x45\x41\x3A\xEF\xF6"
608 "\x3A\x42\x39\x1A\x39\x14\x5A\x59",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700609 }, {
610 .plaintext = "abc",
611 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800612 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
613 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
614 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
615 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C"
616 "\x71\x81\xEE\xBD\xB6\xC5\x7E\x27"
617 "\x7D\x0E\x34\x95\x71\x14\xCB\xD6",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700618 }, {
619 .plaintext = "message digest",
620 .psize = 14,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800621 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
622 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
623 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
624 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B"
625 "\x84\x21\x55\x76\x59\xEF\x55\xC1"
626 "\x06\xB4\xB5\x2A\xC5\xA4\xAA\xA6",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700627 }, {
628 .plaintext = "abcdefghijklmnopqrstuvwxyz",
629 .psize = 26,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800630 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
631 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
632 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
633 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B"
634 "\x08\xBF\x2A\x92\x51\xC3\x0B\x6A"
635 "\x0B\x8A\xAE\x86\x17\x7A\xB4\xA6",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700636 }, {
637 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800638 "abcdefghijklmnopqrstuvwxyz0123456789",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700639 .psize = 62,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800640 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
641 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
642 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
643 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E"
644 "\x08\xEB\xA2\x66\x29\x12\x9D\x8F"
645 "\xB7\xCB\x57\x21\x1B\x92\x81\xA6",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700646 }, {
647 .plaintext = "1234567890123456789012345678901234567890"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800648 "1234567890123456789012345678901234567890",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700649 .psize = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800650 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
651 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
652 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
653 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29"
654 "\x4D\x5B\xD8\xDF\x2A\x6C\x44\xE5"
655 "\x38\xCD\x04\x7B\x26\x81\xA5\x1A",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700656 }, {
657 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
658 .psize = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800659 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
660 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
661 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
662 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69"
663 "\x16\xBD\xC8\x03\x1B\xC5\xBE\x1B"
664 "\x7B\x94\x76\x39\xFE\x05\x0B\x56",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700665 },
666};
667
668#define WP256_TEST_VECTORS 8
669
670static struct hash_testvec wp256_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700671 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700672 .plaintext = "",
673 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800674 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
675 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
676 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
677 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700678
679
680 }, {
681 .plaintext = "a",
682 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800683 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
684 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
685 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
686 "\x73\xC4\x50\x01\xD0\x08\x7B\x42",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700687 }, {
688 .plaintext = "abc",
689 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800690 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
691 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
692 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
693 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700694 }, {
695 .plaintext = "message digest",
696 .psize = 14,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800697 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
698 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
699 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
700 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700701 }, {
702 .plaintext = "abcdefghijklmnopqrstuvwxyz",
703 .psize = 26,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800704 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
705 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
706 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
707 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700708 }, {
709 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800710 "abcdefghijklmnopqrstuvwxyz0123456789",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700711 .psize = 62,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800712 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
713 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
714 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
715 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700716 }, {
717 .plaintext = "1234567890123456789012345678901234567890"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800718 "1234567890123456789012345678901234567890",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700719 .psize = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800720 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
721 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
722 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
723 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700724 }, {
725 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
726 .psize = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800727 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
728 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
729 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
730 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700731 },
732};
733
734/*
Herbert Xuef2736f2005-06-22 13:26:03 -0700735 * TIGER test vectors from Tiger website
Linus Torvalds1da177e2005-04-16 15:20:36 -0700736 */
737#define TGR192_TEST_VECTORS 6
738
739static struct hash_testvec tgr192_tv_template[] = {
740 {
741 .plaintext = "",
742 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800743 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
744 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f"
745 "\xf3\x73\xde\x2d\x49\x58\x4e\x7a",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700746 }, {
747 .plaintext = "abc",
748 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800749 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
750 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf"
751 "\x93\x5f\x7b\x95\x1c\x13\x29\x51",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700752 }, {
753 .plaintext = "Tiger",
754 .psize = 5,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800755 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
756 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec"
757 "\x37\x79\x0c\x11\x6f\x9d\x2b\xdf",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700758 }, {
759 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
760 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800761 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
762 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e"
763 "\xb5\x86\x44\x50\x34\xa5\xa3\x86",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700764 }, {
765 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
766 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800767 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
768 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9"
769 "\x57\x89\x65\x65\x97\x5f\x91\x97",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700770 }, {
771 .plaintext = "Tiger - A Fast New Hash Function, "
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800772 "by Ross Anderson and Eli Biham, "
773 "proceedings of Fast Software Encryption 3, "
774 "Cambridge, 1996.",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700775 .psize = 125,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800776 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
777 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24"
778 "\xdd\x68\x15\x1d\x50\x39\x74\xfc",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700779 },
780};
781
782#define TGR160_TEST_VECTORS 6
783
784static struct hash_testvec tgr160_tv_template[] = {
785 {
786 .plaintext = "",
787 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800788 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
789 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f"
790 "\xf3\x73\xde\x2d",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700791 }, {
792 .plaintext = "abc",
793 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800794 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
795 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf"
796 "\x93\x5f\x7b\x95",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700797 }, {
798 .plaintext = "Tiger",
799 .psize = 5,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800800 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
801 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec"
802 "\x37\x79\x0c\x11",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700803 }, {
804 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
805 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800806 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
807 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e"
808 "\xb5\x86\x44\x50",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700809 }, {
810 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
811 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800812 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
813 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9"
814 "\x57\x89\x65\x65",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700815 }, {
816 .plaintext = "Tiger - A Fast New Hash Function, "
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800817 "by Ross Anderson and Eli Biham, "
818 "proceedings of Fast Software Encryption 3, "
819 "Cambridge, 1996.",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700820 .psize = 125,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800821 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
822 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24"
823 "\xdd\x68\x15\x1d",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700824 },
825};
826
827#define TGR128_TEST_VECTORS 6
828
829static struct hash_testvec tgr128_tv_template[] = {
830 {
831 .plaintext = "",
832 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800833 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
834 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700835 }, {
836 .plaintext = "abc",
837 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800838 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
839 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700840 }, {
841 .plaintext = "Tiger",
842 .psize = 5,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800843 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
844 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700845 }, {
846 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
847 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800848 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
849 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700850 }, {
851 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
852 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800853 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
854 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700855 }, {
856 .plaintext = "Tiger - A Fast New Hash Function, "
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800857 "by Ross Anderson and Eli Biham, "
858 "proceedings of Fast Software Encryption 3, "
859 "Cambridge, 1996.",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700860 .psize = 125,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800861 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
862 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700863 },
864};
865
Linus Torvalds1da177e2005-04-16 15:20:36 -0700866/*
867 * HMAC-MD5 test vectors from RFC2202
868 * (These need to be fixed to not use strlen).
869 */
870#define HMAC_MD5_TEST_VECTORS 7
871
Herbert Xue9d41162006-08-19 21:38:49 +1000872static struct hash_testvec hmac_md5_tv_template[] =
Herbert Xuef2736f2005-06-22 13:26:03 -0700873{
Linus Torvalds1da177e2005-04-16 15:20:36 -0700874 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800875 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700876 .ksize = 16,
877 .plaintext = "Hi There",
878 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800879 .digest = "\x92\x94\x72\x7a\x36\x38\xbb\x1c"
880 "\x13\xf4\x8e\xf8\x15\x8b\xfc\x9d",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700881 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800882 .key = "Jefe",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700883 .ksize = 4,
884 .plaintext = "what do ya want for nothing?",
885 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800886 .digest = "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03"
887 "\xea\xa8\x6e\x31\x0a\x5d\xb7\x38",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700888 .np = 2,
889 .tap = {14, 14}
890 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800891 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700892 .ksize = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800893 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
894 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
895 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
896 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700897 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800898 .digest = "\x56\xbe\x34\x52\x1d\x14\x4c\x88"
899 "\xdb\xb8\xc7\x33\xf0\xe8\xb3\xf6",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700900 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800901 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
902 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
903 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700904 .ksize = 25,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800905 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
906 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
907 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
908 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700909 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800910 .digest = "\x69\x7e\xaf\x0a\xca\x3a\x3a\xea"
911 "\x3a\x75\x16\x47\x46\xff\xaa\x79",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700912 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800913 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700914 .ksize = 16,
915 .plaintext = "Test With Truncation",
916 .psize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800917 .digest = "\x56\x46\x1e\xf2\x34\x2e\xdc\x00"
918 "\xf9\xba\xb9\x95\x69\x0e\xfd\x4c",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700919 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800920 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
921 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
922 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
923 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
924 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
925 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
926 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700927 .ksize = 80,
928 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
929 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800930 .digest = "\x6b\x1a\xb7\xfe\x4b\xd7\xbf\x8f"
931 "\x0b\x62\xe6\xce\x61\xb9\xd0\xcd",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700932 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800933 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
934 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
935 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
936 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
937 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
938 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
939 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700940 .ksize = 80,
941 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800942 "Block-Size Data",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700943 .psize = 73,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800944 .digest = "\x6f\x63\x0f\xad\x67\xcd\xa0\xee"
945 "\x1f\xb1\xf5\x62\xdb\x3a\xa5\x3e",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700946 },
947};
948
949/*
Adrian-Ken Rueegseggerfd4adf12008-05-07 22:16:36 +0800950 * HMAC-RIPEMD128 test vectors from RFC2286
951 */
952#define HMAC_RMD128_TEST_VECTORS 7
953
954static struct hash_testvec hmac_rmd128_tv_template[] = {
955 {
956 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
957 .ksize = 16,
958 .plaintext = "Hi There",
959 .psize = 8,
960 .digest = "\xfb\xf6\x1f\x94\x92\xaa\x4b\xbf"
961 "\x81\xc1\x72\xe8\x4e\x07\x34\xdb",
962 }, {
963 .key = "Jefe",
964 .ksize = 4,
965 .plaintext = "what do ya want for nothing?",
966 .psize = 28,
967 .digest = "\x87\x5f\x82\x88\x62\xb6\xb3\x34"
968 "\xb4\x27\xc5\x5f\x9f\x7f\xf0\x9b",
969 .np = 2,
970 .tap = { 14, 14 },
971 }, {
972 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
973 .ksize = 16,
974 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
975 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
976 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
977 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
978 .psize = 50,
979 .digest = "\x09\xf0\xb2\x84\x6d\x2f\x54\x3d"
980 "\xa3\x63\xcb\xec\x8d\x62\xa3\x8d",
981 }, {
982 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
983 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
984 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
985 .ksize = 25,
986 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
987 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
988 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
989 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
990 .psize = 50,
991 .digest = "\xbd\xbb\xd7\xcf\x03\xe4\x4b\x5a"
992 "\xa6\x0a\xf8\x15\xbe\x4d\x22\x94",
993 }, {
994 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
995 .ksize = 16,
996 .plaintext = "Test With Truncation",
997 .psize = 20,
998 .digest = "\xe7\x98\x08\xf2\x4b\x25\xfd\x03"
999 "\x1c\x15\x5f\x0d\x55\x1d\x9a\x3a",
1000 }, {
1001 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1002 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1003 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1004 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1005 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1006 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1007 "\xaa\xaa",
1008 .ksize = 80,
1009 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1010 .psize = 54,
1011 .digest = "\xdc\x73\x29\x28\xde\x98\x10\x4a"
1012 "\x1f\x59\xd3\x73\xc1\x50\xac\xbb",
1013 }, {
1014 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1015 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1016 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1017 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1018 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1019 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1020 "\xaa\xaa",
1021 .ksize = 80,
1022 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
1023 "Block-Size Data",
1024 .psize = 73,
1025 .digest = "\x5c\x6b\xec\x96\x79\x3e\x16\xd4"
1026 "\x06\x90\xc2\x37\x63\x5f\x30\xc5",
1027 },
1028};
1029
1030/*
1031 * HMAC-RIPEMD160 test vectors from RFC2286
1032 */
1033#define HMAC_RMD160_TEST_VECTORS 7
1034
1035static struct hash_testvec hmac_rmd160_tv_template[] = {
1036 {
1037 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
1038 .ksize = 20,
1039 .plaintext = "Hi There",
1040 .psize = 8,
1041 .digest = "\x24\xcb\x4b\xd6\x7d\x20\xfc\x1a\x5d\x2e"
1042 "\xd7\x73\x2d\xcc\x39\x37\x7f\x0a\x56\x68",
1043 }, {
1044 .key = "Jefe",
1045 .ksize = 4,
1046 .plaintext = "what do ya want for nothing?",
1047 .psize = 28,
1048 .digest = "\xdd\xa6\xc0\x21\x3a\x48\x5a\x9e\x24\xf4"
1049 "\x74\x20\x64\xa7\xf0\x33\xb4\x3c\x40\x69",
1050 .np = 2,
1051 .tap = { 14, 14 },
1052 }, {
1053 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1054 .ksize = 20,
1055 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1056 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1057 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1058 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1059 .psize = 50,
1060 .digest = "\xb0\xb1\x05\x36\x0d\xe7\x59\x96\x0a\xb4"
1061 "\xf3\x52\x98\xe1\x16\xe2\x95\xd8\xe7\xc1",
1062 }, {
1063 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1064 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1065 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
1066 .ksize = 25,
1067 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1068 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1069 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1070 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1071 .psize = 50,
1072 .digest = "\xd5\xca\x86\x2f\x4d\x21\xd5\xe6\x10\xe1"
1073 "\x8b\x4c\xf1\xbe\xb9\x7a\x43\x65\xec\xf4",
1074 }, {
1075 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
1076 .ksize = 20,
1077 .plaintext = "Test With Truncation",
1078 .psize = 20,
1079 .digest = "\x76\x19\x69\x39\x78\xf9\x1d\x90\x53\x9a"
1080 "\xe7\x86\x50\x0f\xf3\xd8\xe0\x51\x8e\x39",
1081 }, {
1082 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1083 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1084 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1085 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1086 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1087 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1088 "\xaa\xaa",
1089 .ksize = 80,
1090 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1091 .psize = 54,
1092 .digest = "\x64\x66\xca\x07\xac\x5e\xac\x29\xe1\xbd"
1093 "\x52\x3e\x5a\xda\x76\x05\xb7\x91\xfd\x8b",
1094 }, {
1095 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1096 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1097 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1098 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1099 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1100 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1101 "\xaa\xaa",
1102 .ksize = 80,
1103 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
1104 "Block-Size Data",
1105 .psize = 73,
1106 .digest = "\x69\xea\x60\x79\x8d\x71\x61\x6c\xce\x5f"
1107 "\xd0\x87\x1e\x23\x75\x4c\xd7\x5d\x5a\x0a",
1108 },
1109};
1110
1111/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07001112 * HMAC-SHA1 test vectors from RFC2202
1113 */
1114#define HMAC_SHA1_TEST_VECTORS 7
1115
Herbert Xue9d41162006-08-19 21:38:49 +10001116static struct hash_testvec hmac_sha1_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07001117 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001118 .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 -07001119 .ksize = 20,
1120 .plaintext = "Hi There",
1121 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001122 .digest = "\xb6\x17\x31\x86\x55\x05\x72\x64"
1123 "\xe2\x8b\xc0\xb6\xfb\x37\x8c\x8e\xf1"
1124 "\x46\xbe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001125 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001126 .key = "Jefe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001127 .ksize = 4,
1128 .plaintext = "what do ya want for nothing?",
1129 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001130 .digest = "\xef\xfc\xdf\x6a\xe5\xeb\x2f\xa2\xd2\x74"
1131 "\x16\xd5\xf1\x84\xdf\x9c\x25\x9a\x7c\x79",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001132 .np = 2,
1133 .tap = { 14, 14 }
1134 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001135 .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 -07001136 .ksize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001137 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1138 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1139 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1140 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001141 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001142 .digest = "\x12\x5d\x73\x42\xb9\xac\x11\xcd\x91\xa3"
1143 "\x9a\xf4\x8a\xa1\x7b\x4f\x63\xf1\x75\xd3",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001144 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001145 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1146 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1147 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001148 .ksize = 25,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001149 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1150 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1151 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1152 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001153 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001154 .digest = "\x4c\x90\x07\xf4\x02\x62\x50\xc6\xbc\x84"
1155 "\x14\xf9\xbf\x50\xc8\x6c\x2d\x72\x35\xda",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001156 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001157 .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 -07001158 .ksize = 20,
1159 .plaintext = "Test With Truncation",
1160 .psize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001161 .digest = "\x4c\x1a\x03\x42\x4b\x55\xe0\x7f\xe7\xf2"
1162 "\x7b\xe1\xd5\x8b\xb9\x32\x4a\x9a\x5a\x04",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001163 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001164 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1165 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1166 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1167 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1168 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1169 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1170 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001171 .ksize = 80,
1172 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1173 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001174 .digest = "\xaa\x4a\xe5\xe1\x52\x72\xd0\x0e\x95\x70"
1175 "\x56\x37\xce\x8a\x3b\x55\xed\x40\x21\x12",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001176 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001177 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1178 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1179 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1180 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1181 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1182 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1183 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001184 .ksize = 80,
1185 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001186 "Block-Size Data",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001187 .psize = 73,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001188 .digest = "\xe8\xe9\x9d\x0f\x45\x23\x7d\x78\x6d\x6b"
1189 "\xba\xa7\x96\x5c\x78\x08\xbb\xff\x1a\x91",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001190 },
1191};
1192
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001193
1194/*
1195 * SHA224 HMAC test vectors from RFC4231
1196 */
1197#define HMAC_SHA224_TEST_VECTORS 4
1198
1199static struct hash_testvec hmac_sha224_tv_template[] = {
1200 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001201 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1202 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1203 "\x0b\x0b\x0b\x0b",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001204 .ksize = 20,
1205 /* ("Hi There") */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001206 .plaintext = "\x48\x69\x20\x54\x68\x65\x72\x65",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001207 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001208 .digest = "\x89\x6f\xb1\x12\x8a\xbb\xdf\x19"
1209 "\x68\x32\x10\x7c\xd4\x9d\xf3\x3f"
1210 "\x47\xb4\xb1\x16\x99\x12\xba\x4f"
1211 "\x53\x68\x4b\x22",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001212 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001213 .key = "Jefe",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001214 .ksize = 4,
1215 /* ("what do ya want for nothing?") */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001216 .plaintext = "\x77\x68\x61\x74\x20\x64\x6f\x20"
1217 "\x79\x61\x20\x77\x61\x6e\x74\x20"
1218 "\x66\x6f\x72\x20\x6e\x6f\x74\x68"
1219 "\x69\x6e\x67\x3f",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001220 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001221 .digest = "\xa3\x0e\x01\x09\x8b\xc6\xdb\xbf"
1222 "\x45\x69\x0f\x3a\x7e\x9e\x6d\x0f"
1223 "\x8b\xbe\xa2\xa3\x9e\x61\x48\x00"
1224 "\x8f\xd0\x5e\x44",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001225 .np = 4,
1226 .tap = { 7, 7, 7, 7 }
1227 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001228 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1229 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1230 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1231 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1232 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1233 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1234 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1235 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1236 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1237 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1238 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1239 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1240 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1241 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1242 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1243 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1244 "\xaa\xaa\xaa",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001245 .ksize = 131,
1246 /* ("Test Using Larger Than Block-Size Key - Hash Key First") */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001247 .plaintext = "\x54\x65\x73\x74\x20\x55\x73\x69"
1248 "\x6e\x67\x20\x4c\x61\x72\x67\x65"
1249 "\x72\x20\x54\x68\x61\x6e\x20\x42"
1250 "\x6c\x6f\x63\x6b\x2d\x53\x69\x7a"
1251 "\x65\x20\x4b\x65\x79\x20\x2d\x20"
1252 "\x48\x61\x73\x68\x20\x4b\x65\x79"
1253 "\x20\x46\x69\x72\x73\x74",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001254 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001255 .digest = "\x95\xe9\xa0\xdb\x96\x20\x95\xad"
1256 "\xae\xbe\x9b\x2d\x6f\x0d\xbc\xe2"
1257 "\xd4\x99\xf1\x12\xf2\xd2\xb7\x27"
1258 "\x3f\xa6\x87\x0e",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001259 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001260 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1261 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1262 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1263 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1264 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1265 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1266 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1267 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1268 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1269 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1270 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1271 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1272 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1273 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1274 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1275 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1276 "\xaa\xaa\xaa",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001277 .ksize = 131,
1278 /* ("This is a test using a larger than block-size key and a")
1279 (" larger than block-size data. The key needs to be")
1280 (" hashed before being used by the HMAC algorithm.") */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001281 .plaintext = "\x54\x68\x69\x73\x20\x69\x73\x20"
1282 "\x61\x20\x74\x65\x73\x74\x20\x75"
1283 "\x73\x69\x6e\x67\x20\x61\x20\x6c"
1284 "\x61\x72\x67\x65\x72\x20\x74\x68"
1285 "\x61\x6e\x20\x62\x6c\x6f\x63\x6b"
1286 "\x2d\x73\x69\x7a\x65\x20\x6b\x65"
1287 "\x79\x20\x61\x6e\x64\x20\x61\x20"
1288 "\x6c\x61\x72\x67\x65\x72\x20\x74"
1289 "\x68\x61\x6e\x20\x62\x6c\x6f\x63"
1290 "\x6b\x2d\x73\x69\x7a\x65\x20\x64"
1291 "\x61\x74\x61\x2e\x20\x54\x68\x65"
1292 "\x20\x6b\x65\x79\x20\x6e\x65\x65"
1293 "\x64\x73\x20\x74\x6f\x20\x62\x65"
1294 "\x20\x68\x61\x73\x68\x65\x64\x20"
1295 "\x62\x65\x66\x6f\x72\x65\x20\x62"
1296 "\x65\x69\x6e\x67\x20\x75\x73\x65"
1297 "\x64\x20\x62\x79\x20\x74\x68\x65"
1298 "\x20\x48\x4d\x41\x43\x20\x61\x6c"
1299 "\x67\x6f\x72\x69\x74\x68\x6d\x2e",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001300 .psize = 152,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001301 .digest = "\x3a\x85\x41\x66\xac\x5d\x9f\x02"
1302 "\x3f\x54\xd5\x17\xd0\xb3\x9d\xbd"
1303 "\x94\x67\x70\xdb\x9c\x2b\x95\xc9"
1304 "\xf6\xf5\x65\xd1",
Jonathan Lynchcd12fb92007-11-10 20:08:25 +08001305 },
1306};
1307
Linus Torvalds1da177e2005-04-16 15:20:36 -07001308/*
1309 * HMAC-SHA256 test vectors from
1310 * draft-ietf-ipsec-ciph-sha-256-01.txt
1311 */
1312#define HMAC_SHA256_TEST_VECTORS 10
1313
Herbert Xue9d41162006-08-19 21:38:49 +10001314static struct hash_testvec hmac_sha256_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07001315 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001316 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1317 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1318 "\x11\x12\x13\x14\x15\x16\x17\x18"
1319 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001320 .ksize = 32,
1321 .plaintext = "abc",
1322 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001323 .digest = "\xa2\x1b\x1f\x5d\x4c\xf4\xf7\x3a"
1324 "\x4d\xd9\x39\x75\x0f\x7a\x06\x6a"
1325 "\x7f\x98\xcc\x13\x1c\xb1\x6a\x66"
1326 "\x92\x75\x90\x21\xcf\xab\x81\x81",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001327 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001328 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1329 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1330 "\x11\x12\x13\x14\x15\x16\x17\x18"
1331 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001332 .ksize = 32,
1333 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
1334 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001335 .digest = "\x10\x4f\xdc\x12\x57\x32\x8f\x08"
1336 "\x18\x4b\xa7\x31\x31\xc5\x3c\xae"
1337 "\xe6\x98\xe3\x61\x19\x42\x11\x49"
1338 "\xea\x8c\x71\x24\x56\x69\x7d\x30",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001339 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001340 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1341 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1342 "\x11\x12\x13\x14\x15\x16\x17\x18"
1343 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001344 .ksize = 32,
1345 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001346 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001347 .psize = 112,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001348 .digest = "\x47\x03\x05\xfc\x7e\x40\xfe\x34"
1349 "\xd3\xee\xb3\xe7\x73\xd9\x5a\xab"
1350 "\x73\xac\xf0\xfd\x06\x04\x47\xa5"
1351 "\xeb\x45\x95\xbf\x33\xa9\xd1\xa3",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001352 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001353 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1354 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1355 "\x0b\x0b\x0b\x0b\x0b\x0b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001356 .ksize = 32,
1357 .plaintext = "Hi There",
1358 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001359 .digest = "\x19\x8a\x60\x7e\xb4\x4b\xfb\xc6"
1360 "\x99\x03\xa0\xf1\xcf\x2b\xbd\xc5"
1361 "\xba\x0a\xa3\xf3\xd9\xae\x3c\x1c"
1362 "\x7a\x3b\x16\x96\xa0\xb6\x8c\xf7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001363 }, {
1364 .key = "Jefe",
1365 .ksize = 4,
1366 .plaintext = "what do ya want for nothing?",
1367 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001368 .digest = "\x5b\xdc\xc1\x46\xbf\x60\x75\x4e"
1369 "\x6a\x04\x24\x26\x08\x95\x75\xc7"
1370 "\x5a\x00\x3f\x08\x9d\x27\x39\x83"
1371 "\x9d\xec\x58\xb9\x64\xec\x38\x43",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001372 .np = 2,
1373 .tap = { 14, 14 }
1374 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001375 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1376 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1377 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001378 .ksize = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001379 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1380 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1381 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1382 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001383 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001384 .digest = "\xcd\xcb\x12\x20\xd1\xec\xcc\xea"
1385 "\x91\xe5\x3a\xba\x30\x92\xf9\x62"
1386 "\xe5\x49\xfe\x6c\xe9\xed\x7f\xdc"
1387 "\x43\x19\x1f\xbd\xe4\x5c\x30\xb0",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001388 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001389 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1390 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1391 "\x11\x12\x13\x14\x15\x16\x17\x18"
1392 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
1393 "\x21\x22\x23\x24\x25",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001394 .ksize = 37,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001395 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1396 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1397 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1398 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001399 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001400 .digest = "\xd4\x63\x3c\x17\xf6\xfb\x8d\x74"
1401 "\x4c\x66\xde\xe0\xf8\xf0\x74\x55"
1402 "\x6e\xc4\xaf\x55\xef\x07\x99\x85"
1403 "\x41\x46\x8e\xb4\x9b\xd2\xe9\x17",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001404 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001405 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
1406 "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
1407 "\x0c\x0c\x0c\x0c\x0c\x0c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001408 .ksize = 32,
1409 .plaintext = "Test With Truncation",
1410 .psize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001411 .digest = "\x75\x46\xaf\x01\x84\x1f\xc0\x9b"
1412 "\x1a\xb9\xc3\x74\x9a\x5f\x1c\x17"
1413 "\xd4\xf5\x89\x66\x8a\x58\x7b\x27"
1414 "\x00\xa9\xc9\x7c\x11\x93\xcf\x42",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001415 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001416 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1417 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1418 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1419 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1420 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1421 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1422 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001423 .ksize = 80,
1424 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1425 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001426 .digest = "\x69\x53\x02\x5e\xd9\x6f\x0c\x09"
1427 "\xf8\x0a\x96\xf7\x8e\x65\x38\xdb"
1428 "\xe2\xe7\xb8\x20\xe3\xdd\x97\x0e"
1429 "\x7d\xdd\x39\x09\x1b\x32\x35\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001430 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001431 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1432 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1433 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1434 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1435 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1436 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1437 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001438 .ksize = 80,
1439 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001440 "One Block-Size Data",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001441 .psize = 73,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001442 .digest = "\x63\x55\xac\x22\xe8\x90\xd0\xa3"
1443 "\xc8\x48\x1a\x5c\xa4\x82\x5b\xc8"
1444 "\x84\xd3\xe7\xa1\xff\x98\xa2\xfc"
1445 "\x2a\xc7\xd8\xe0\x64\xc3\xb2\xe6",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001446 },
1447};
1448
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001449#define XCBC_AES_TEST_VECTORS 6
1450
1451static struct hash_testvec aes_xcbc128_tv_template[] = {
1452 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001453 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1454 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1455 .plaintext = zeroed_string,
1456 .digest = "\x75\xf0\x25\x1d\x52\x8a\xc0\x1c"
1457 "\x45\x73\xdf\xd5\x84\xd7\x9f\x29",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001458 .psize = 0,
1459 .ksize = 16,
1460 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001461 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1462 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1463 .plaintext = "\x00\x01\x02",
1464 .digest = "\x5b\x37\x65\x80\xae\x2f\x19\xaf"
1465 "\xe7\x21\x9c\xee\xf1\x72\x75\x6f",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001466 .psize = 3,
1467 .ksize = 16,
1468 } , {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001469 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1470 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1471 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1472 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1473 .digest = "\xd2\xa2\x46\xfa\x34\x9b\x68\xa7"
1474 "\x99\x98\xa4\x39\x4f\xf7\xa2\x63",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001475 .psize = 16,
1476 .ksize = 16,
1477 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001478 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1479 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1480 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1481 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1482 "\x10\x11\x12\x13",
1483 .digest = "\x47\xf5\x1b\x45\x64\x96\x62\x15"
1484 "\xb8\x98\x5c\x63\x05\x5e\xd3\x08",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001485 .tap = { 10, 10 },
1486 .psize = 20,
1487 .np = 2,
1488 .ksize = 16,
1489 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001490 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1491 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1492 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1493 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1494 "\x10\x11\x12\x13\x14\x15\x16\x17"
1495 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1496 .digest = "\xf5\x4f\x0e\xc8\xd2\xb9\xf3\xd3"
1497 "\x68\x07\x73\x4b\xd5\x28\x3f\xd4",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001498 .psize = 32,
1499 .ksize = 16,
1500 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001501 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1502 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1503 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1504 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1505 "\x10\x11\x12\x13\x14\x15\x16\x17"
1506 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
1507 "\x20\x21",
1508 .digest = "\xbe\xcb\xb3\xbc\xcd\xb5\x18\xa3"
1509 "\x06\x77\xd5\x48\x1f\xb6\xb4\xd8",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001510 .tap = { 17, 17 },
1511 .psize = 34,
1512 .np = 2,
1513 .ksize = 16,
1514 }
1515};
1516
Linus Torvalds1da177e2005-04-16 15:20:36 -07001517/*
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001518 * SHA384 HMAC test vectors from RFC4231
1519 */
1520
1521#define HMAC_SHA384_TEST_VECTORS 4
1522
1523static struct hash_testvec hmac_sha384_tv_template[] = {
1524 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001525 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1526 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1527 "\x0b\x0b\x0b\x0b",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001528 .ksize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001529 .plaintext = "Hi There",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001530 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001531 .digest = "\xaf\xd0\x39\x44\xd8\x48\x95\x62"
1532 "\x6b\x08\x25\xf4\xab\x46\x90\x7f"
1533 "\x15\xf9\xda\xdb\xe4\x10\x1e\xc6"
1534 "\x82\xaa\x03\x4c\x7c\xeb\xc5\x9c"
1535 "\xfa\xea\x9e\xa9\x07\x6e\xde\x7f"
1536 "\x4a\xf1\x52\xe8\xb2\xfa\x9c\xb6",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001537 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001538 .key = "Jefe",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001539 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001540 .plaintext = "what do ya want for nothing?",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001541 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001542 .digest = "\xaf\x45\xd2\xe3\x76\x48\x40\x31"
1543 "\x61\x7f\x78\xd2\xb5\x8a\x6b\x1b"
1544 "\x9c\x7e\xf4\x64\xf5\xa0\x1b\x47"
1545 "\xe4\x2e\xc3\x73\x63\x22\x44\x5e"
1546 "\x8e\x22\x40\xca\x5e\x69\xe2\xc7"
1547 "\x8b\x32\x39\xec\xfa\xb2\x16\x49",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001548 .np = 4,
1549 .tap = { 7, 7, 7, 7 }
1550 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001551 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1552 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1553 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1554 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1555 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1556 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1557 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1558 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1559 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1560 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1561 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1562 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1563 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1564 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1565 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1566 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1567 "\xaa\xaa\xaa",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001568 .ksize = 131,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001569 .plaintext = "Test Using Larger Than Block-Siz"
1570 "e Key - Hash Key First",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001571 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001572 .digest = "\x4e\xce\x08\x44\x85\x81\x3e\x90"
1573 "\x88\xd2\xc6\x3a\x04\x1b\xc5\xb4"
1574 "\x4f\x9e\xf1\x01\x2a\x2b\x58\x8f"
1575 "\x3c\xd1\x1f\x05\x03\x3a\xc4\xc6"
1576 "\x0c\x2e\xf6\xab\x40\x30\xfe\x82"
1577 "\x96\x24\x8d\xf1\x63\xf4\x49\x52",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001578 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001579 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1580 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1581 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1582 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1583 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1584 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1585 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1586 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1587 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1588 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1589 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1590 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1591 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1592 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1593 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1594 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1595 "\xaa\xaa\xaa",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001596 .ksize = 131,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001597 .plaintext = "This is a test u"
1598 "sing a larger th"
1599 "an block-size ke"
1600 "y and a larger t"
1601 "han block-size d"
1602 "ata. The key nee"
1603 "ds to be hashed "
1604 "before being use"
1605 "d by the HMAC al"
1606 "gorithm.",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001607 .psize = 152,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001608 .digest = "\x66\x17\x17\x8e\x94\x1f\x02\x0d"
1609 "\x35\x1e\x2f\x25\x4e\x8f\xd3\x2c"
1610 "\x60\x24\x20\xfe\xb0\xb8\xfb\x9a"
1611 "\xdc\xce\xbb\x82\x46\x1e\x99\xc5"
1612 "\xa6\x78\xcc\x31\xe7\x99\x17\x6d"
1613 "\x38\x60\xe6\x11\x0c\x46\x52\x3e",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001614 },
1615};
1616
1617/*
1618 * SHA512 HMAC test vectors from RFC4231
1619 */
1620
1621#define HMAC_SHA512_TEST_VECTORS 4
1622
1623static struct hash_testvec hmac_sha512_tv_template[] = {
1624 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001625 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1626 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1627 "\x0b\x0b\x0b\x0b",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001628 .ksize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001629 .plaintext = "Hi There",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001630 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001631 .digest = "\x87\xaa\x7c\xde\xa5\xef\x61\x9d"
1632 "\x4f\xf0\xb4\x24\x1a\x1d\x6c\xb0"
1633 "\x23\x79\xf4\xe2\xce\x4e\xc2\x78"
1634 "\x7a\xd0\xb3\x05\x45\xe1\x7c\xde"
1635 "\xda\xa8\x33\xb7\xd6\xb8\xa7\x02"
1636 "\x03\x8b\x27\x4e\xae\xa3\xf4\xe4"
1637 "\xbe\x9d\x91\x4e\xeb\x61\xf1\x70"
1638 "\x2e\x69\x6c\x20\x3a\x12\x68\x54",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001639 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001640 .key = "Jefe",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001641 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001642 .plaintext = "what do ya want for nothing?",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001643 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001644 .digest = "\x16\x4b\x7a\x7b\xfc\xf8\x19\xe2"
1645 "\xe3\x95\xfb\xe7\x3b\x56\xe0\xa3"
1646 "\x87\xbd\x64\x22\x2e\x83\x1f\xd6"
1647 "\x10\x27\x0c\xd7\xea\x25\x05\x54"
1648 "\x97\x58\xbf\x75\xc0\x5a\x99\x4a"
1649 "\x6d\x03\x4f\x65\xf8\xf0\xe6\xfd"
1650 "\xca\xea\xb1\xa3\x4d\x4a\x6b\x4b"
1651 "\x63\x6e\x07\x0a\x38\xbc\xe7\x37",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001652 .np = 4,
1653 .tap = { 7, 7, 7, 7 }
1654 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001655 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1656 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1657 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1658 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1659 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1660 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1661 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1662 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1663 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1664 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1665 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1666 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1667 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1668 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1669 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1670 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1671 "\xaa\xaa\xaa",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001672 .ksize = 131,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001673 .plaintext = "Test Using Large"
1674 "r Than Block-Siz"
1675 "e Key - Hash Key"
1676 " First",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001677 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001678 .digest = "\x80\xb2\x42\x63\xc7\xc1\xa3\xeb"
1679 "\xb7\x14\x93\xc1\xdd\x7b\xe8\xb4"
1680 "\x9b\x46\xd1\xf4\x1b\x4a\xee\xc1"
1681 "\x12\x1b\x01\x37\x83\xf8\xf3\x52"
1682 "\x6b\x56\xd0\x37\xe0\x5f\x25\x98"
1683 "\xbd\x0f\xd2\x21\x5d\x6a\x1e\x52"
1684 "\x95\xe6\x4f\x73\xf6\x3f\x0a\xec"
1685 "\x8b\x91\x5a\x98\x5d\x78\x65\x98",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001686 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001687 .key = "\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\xaa\xaa\xaa\xaa\xaa"
1697 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1698 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1699 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1700 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1701 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1702 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1703 "\xaa\xaa\xaa",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001704 .ksize = 131,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001705 .plaintext =
1706 "This is a test u"
1707 "sing a larger th"
1708 "an block-size ke"
1709 "y and a larger t"
1710 "han block-size d"
1711 "ata. The key nee"
1712 "ds to be hashed "
1713 "before being use"
1714 "d by the HMAC al"
1715 "gorithm.",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001716 .psize = 152,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001717 .digest = "\xe3\x7b\x6a\x77\x5d\xc8\x7d\xba"
1718 "\xa4\xdf\xa9\xf9\x6e\x5e\x3f\xfd"
1719 "\xde\xbd\x71\xf8\x86\x72\x89\x86"
1720 "\x5d\xf5\xa3\x2d\x20\xcd\xc9\x44"
1721 "\xb6\x02\x2c\xac\x3c\x49\x82\xb1"
1722 "\x0d\x5e\xeb\x55\xc3\xe4\xde\x15"
1723 "\x13\x46\x76\xfb\x6d\xe0\x44\x60"
1724 "\x65\xc9\x74\x40\xfa\x8c\x6a\x58",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001725 },
1726};
1727
1728/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07001729 * DES test vectors.
1730 */
1731#define DES_ENC_TEST_VECTORS 10
1732#define DES_DEC_TEST_VECTORS 4
1733#define DES_CBC_ENC_TEST_VECTORS 5
1734#define DES_CBC_DEC_TEST_VECTORS 4
1735#define DES3_EDE_ENC_TEST_VECTORS 3
1736#define DES3_EDE_DEC_TEST_VECTORS 3
1737
1738static struct cipher_testvec des_enc_tv_template[] = {
1739 { /* From Applied Cryptography */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001740 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001741 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001742 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001743 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001744 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001745 .rlen = 8,
1746 }, { /* Same key, different plaintext block */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001747 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001748 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001749 .input = "\x22\x33\x44\x55\x66\x77\x88\x99",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001750 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001751 .result = "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001752 .rlen = 8,
1753 }, { /* Sbox test from NBS */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001754 .key = "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001755 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001756 .input = "\x01\xa1\xd6\xd0\x39\x77\x67\x42",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001757 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001758 .result = "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001759 .rlen = 8,
1760 }, { /* Three blocks */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001761 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001762 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001763 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1764 "\x22\x33\x44\x55\x66\x77\x88\x99"
1765 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001766 .ilen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001767 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1768 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1769 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001770 .rlen = 24,
1771 }, { /* Weak key */
1772 .fail = 1,
1773 .wk = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001774 .key = "\x01\x01\x01\x01\x01\x01\x01\x01",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001775 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001776 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001777 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001778 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001779 .rlen = 8,
1780 }, { /* Two blocks -- for testing encryption across pages */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001781 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001782 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001783 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1784 "\x22\x33\x44\x55\x66\x77\x88\x99",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001785 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001786 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1787 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001788 .rlen = 16,
1789 .np = 2,
1790 .tap = { 8, 8 }
1791 }, { /* Four blocks -- for testing encryption with chunking */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001792 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001793 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001794 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1795 "\x22\x33\x44\x55\x66\x77\x88\x99"
1796 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef"
1797 "\x22\x33\x44\x55\x66\x77\x88\x99",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001798 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001799 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1800 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1801 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90"
1802 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001803 .rlen = 32,
1804 .np = 3,
Herbert Xuef2736f2005-06-22 13:26:03 -07001805 .tap = { 14, 10, 8 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001806 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001807 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001808 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001809 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1810 "\x22\x33\x44\x55\x66\x77\x88\x99"
1811 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001812 .ilen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001813 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1814 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1815 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001816 .rlen = 24,
1817 .np = 4,
Herbert Xuef2736f2005-06-22 13:26:03 -07001818 .tap = { 2, 1, 3, 18 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001819 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001820 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001821 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001822 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1823 "\x22\x33\x44\x55\x66\x77\x88\x99",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001824 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001825 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1826 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001827 .rlen = 16,
1828 .np = 5,
Herbert Xuef2736f2005-06-22 13:26:03 -07001829 .tap = { 2, 2, 2, 2, 8 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001830 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001831 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001832 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001833 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001834 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001835 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001836 .rlen = 8,
1837 .np = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001838 .tap = { 1, 1, 1, 1, 1, 1, 1, 1 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001839 },
1840};
1841
1842static struct cipher_testvec des_dec_tv_template[] = {
1843 { /* From Applied Cryptography */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001844 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001845 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001846 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001847 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001848 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001849 .rlen = 8,
1850 }, { /* Sbox test from NBS */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001851 .key = "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001852 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001853 .input = "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001854 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001855 .result = "\x01\xa1\xd6\xd0\x39\x77\x67\x42",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001856 .rlen = 8,
1857 }, { /* Two blocks, for chunking test */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001858 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001859 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001860 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1861 "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001862 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001863 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1864 "\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001865 .rlen = 16,
1866 .np = 2,
1867 .tap = { 8, 8 }
1868 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001869 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001870 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001871 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1872 "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001873 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001874 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1875 "\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001876 .rlen = 16,
1877 .np = 3,
1878 .tap = { 3, 12, 1 }
1879 },
1880};
1881
1882static struct cipher_testvec des_cbc_enc_tv_template[] = {
1883 { /* From OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001884 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001885 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001886 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1887 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
1888 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
1889 "\x68\x65\x20\x74\x69\x6d\x65\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001890 .ilen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001891 .result = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
1892 "\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb"
1893 "\x46\x8e\x91\x15\x78\x88\xba\x68",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001894 .rlen = 24,
1895 }, { /* FIPS Pub 81 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001896 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001897 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001898 .iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
1899 .input = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001900 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001901 .result = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001902 .rlen = 8,
1903 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001904 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001905 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001906 .iv = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
1907 .input = "\x68\x65\x20\x74\x69\x6d\x65\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001908 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001909 .result = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001910 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001911 }, {
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 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1915 .input = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001916 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001917 .result = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001918 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001919 }, { /* Copy of openssl vector for chunk testing */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001920 /* From OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001921 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001922 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001923 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1924 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
1925 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
1926 "\x68\x65\x20\x74\x69\x6d\x65\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001927 .ilen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001928 .result = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
1929 "\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb"
1930 "\x46\x8e\x91\x15\x78\x88\xba\x68",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001931 .rlen = 24,
1932 .np = 2,
1933 .tap = { 13, 11 }
1934 },
1935};
1936
1937static struct cipher_testvec des_cbc_dec_tv_template[] = {
1938 { /* FIPS Pub 81 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001939 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001940 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001941 .iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
1942 .input = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001943 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001944 .result = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001945 .rlen = 8,
1946 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001947 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001948 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001949 .iv = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
1950 .input = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001951 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001952 .result = "\x68\x65\x20\x74\x69\x6d\x65\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001953 .rlen = 8,
1954 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001955 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001956 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001957 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1958 .input = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001959 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001960 .result = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001961 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001962 }, { /* Copy of above, for chunk testing */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001963 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001964 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001965 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1966 .input = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001967 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001968 .result = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001969 .rlen = 8,
1970 .np = 2,
1971 .tap = { 4, 4 }
1972 },
1973};
1974
1975/*
1976 * We really need some more test vectors, especially for DES3 CBC.
1977 */
1978static struct cipher_testvec des3_ede_enc_tv_template[] = {
1979 { /* These are from openssl */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001980 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1981 "\x55\x55\x55\x55\x55\x55\x55\x55"
1982 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001983 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001984 .input = "\x73\x6f\x6d\x65\x64\x61\x74\x61",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001985 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001986 .result = "\x18\xd7\x48\xe5\x63\x62\x05\x72",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001987 .rlen = 8,
1988 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001989 .key = "\x03\x52\x02\x07\x67\x20\x82\x17"
1990 "\x86\x02\x87\x66\x59\x08\x21\x98"
1991 "\x64\x05\x6a\xbd\xfe\xa9\x34\x57",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001992 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001993 .input = "\x73\x71\x75\x69\x67\x67\x6c\x65",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001994 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001995 .result = "\xc0\x7d\x2a\x0f\xa5\x66\xfa\x30",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001996 .rlen = 8,
1997 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001998 .key = "\x10\x46\x10\x34\x89\x98\x80\x20"
1999 "\x91\x07\xd0\x15\x89\x19\x01\x01"
2000 "\x19\x07\x92\x10\x98\x1a\x01\x01",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002001 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002002 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002003 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002004 .result = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002005 .rlen = 8,
2006 },
2007};
2008
2009static struct cipher_testvec des3_ede_dec_tv_template[] = {
2010 { /* These are from openssl */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002011 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2012 "\x55\x55\x55\x55\x55\x55\x55\x55"
2013 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002014 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002015 .input = "\x18\xd7\x48\xe5\x63\x62\x05\x72",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002016 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002017 .result = "\x73\x6f\x6d\x65\x64\x61\x74\x61",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002018 .rlen = 8,
2019 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002020 .key = "\x03\x52\x02\x07\x67\x20\x82\x17"
2021 "\x86\x02\x87\x66\x59\x08\x21\x98"
2022 "\x64\x05\x6a\xbd\xfe\xa9\x34\x57",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002023 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002024 .input = "\xc0\x7d\x2a\x0f\xa5\x66\xfa\x30",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002025 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002026 .result = "\x73\x71\x75\x69\x67\x67\x6c\x65",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002027 .rlen = 8,
2028 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002029 .key = "\x10\x46\x10\x34\x89\x98\x80\x20"
2030 "\x91\x07\xd0\x15\x89\x19\x01\x01"
2031 "\x19\x07\x92\x10\x98\x1a\x01\x01",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002032 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002033 .input = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002034 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002035 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002036 .rlen = 8,
2037 },
2038};
2039
2040/*
2041 * Blowfish test vectors.
2042 */
2043#define BF_ENC_TEST_VECTORS 6
2044#define BF_DEC_TEST_VECTORS 6
2045#define BF_CBC_ENC_TEST_VECTORS 1
2046#define BF_CBC_DEC_TEST_VECTORS 1
2047
2048static struct cipher_testvec bf_enc_tv_template[] = {
2049 { /* DES test vectors from OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002050 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002051 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002052 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002053 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002054 .result = "\x4e\xf9\x97\x45\x61\x98\xdd\x78",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002055 .rlen = 8,
2056 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002057 .key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002058 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002059 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002060 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002061 .result = "\xa7\x90\x79\x51\x08\xea\x3c\xae",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002062 .rlen = 8,
2063 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002064 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002065 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002066 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002067 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002068 .result = "\xe8\x7a\x24\x4e\x2c\xc8\x5e\x82",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002069 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07002070 }, { /* Vary the keylength... */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002071 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2072 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002073 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002074 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002075 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002076 .result = "\x93\x14\x28\x87\xee\x3b\xe1\x5c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002077 .rlen = 8,
2078 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002079 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2080 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
2081 "\x00\x11\x22\x33\x44",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002082 .klen = 21,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002083 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002084 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002085 .result = "\xe6\xf5\x1e\xd7\x9b\x9d\xb2\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002086 .rlen = 8,
2087 }, { /* Generated with bf488 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002088 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2089 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
2090 "\x00\x11\x22\x33\x44\x55\x66\x77"
2091 "\x04\x68\x91\x04\xc2\xfd\x3b\x2f"
2092 "\x58\x40\x23\x64\x1a\xba\x61\x76"
2093 "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e"
2094 "\xff\xff\xff\xff\xff\xff\xff\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002095 .klen = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002096 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002097 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002098 .result = "\xc0\x45\x04\x01\x2e\x4e\x1f\x53",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002099 .rlen = 8,
2100 },
2101};
2102
2103static struct cipher_testvec bf_dec_tv_template[] = {
2104 { /* DES test vectors from OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002105 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002106 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002107 .input = "\x4e\xf9\x97\x45\x61\x98\xdd\x78",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002108 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002109 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002110 .rlen = 8,
2111 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002112 .key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002113 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002114 .input = "\xa7\x90\x79\x51\x08\xea\x3c\xae",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002115 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002116 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002117 .rlen = 8,
2118 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002119 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002120 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002121 .input = "\xe8\x7a\x24\x4e\x2c\xc8\x5e\x82",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002122 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002123 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002124 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07002125 }, { /* Vary the keylength... */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002126 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2127 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002128 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002129 .input = "\x93\x14\x28\x87\xee\x3b\xe1\x5c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002130 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002131 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002132 .rlen = 8,
2133 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002134 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2135 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
2136 "\x00\x11\x22\x33\x44",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002137 .klen = 21,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002138 .input = "\xe6\xf5\x1e\xd7\x9b\x9d\xb2\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002139 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002140 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002141 .rlen = 8,
2142 }, { /* Generated with bf488, using OpenSSL, Libgcrypt and Nettle */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002143 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
2144 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
2145 "\x00\x11\x22\x33\x44\x55\x66\x77"
2146 "\x04\x68\x91\x04\xc2\xfd\x3b\x2f"
2147 "\x58\x40\x23\x64\x1a\xba\x61\x76"
2148 "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e"
2149 "\xff\xff\xff\xff\xff\xff\xff\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002150 .klen = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002151 .input = "\xc0\x45\x04\x01\x2e\x4e\x1f\x53",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002152 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002153 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002154 .rlen = 8,
2155 },
2156};
2157
2158static struct cipher_testvec bf_cbc_enc_tv_template[] = {
2159 { /* From OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002160 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2161 "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002162 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002163 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
2164 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
2165 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
2166 "\x68\x65\x20\x74\x69\x6d\x65\x20"
2167 "\x66\x6f\x72\x20\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002168 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002169 .result = "\x6b\x77\xb4\xd6\x30\x06\xde\xe6"
2170 "\x05\xb1\x56\xe2\x74\x03\x97\x93"
2171 "\x58\xde\xb9\xe7\x15\x46\x16\xd9"
2172 "\x59\xf1\x65\x2b\xd5\xff\x92\xcc",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002173 .rlen = 32,
2174 },
2175};
2176
2177static struct cipher_testvec bf_cbc_dec_tv_template[] = {
2178 { /* From OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002179 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2180 "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002181 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002182 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
2183 .input = "\x6b\x77\xb4\xd6\x30\x06\xde\xe6"
2184 "\x05\xb1\x56\xe2\x74\x03\x97\x93"
2185 "\x58\xde\xb9\xe7\x15\x46\x16\xd9"
2186 "\x59\xf1\x65\x2b\xd5\xff\x92\xcc",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002187 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002188 .result = "\x37\x36\x35\x34\x33\x32\x31\x20"
2189 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
2190 "\x68\x65\x20\x74\x69\x6d\x65\x20"
2191 "\x66\x6f\x72\x20\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002192 .rlen = 32,
2193 },
2194};
2195
2196/*
2197 * Twofish test vectors.
2198 */
2199#define TF_ENC_TEST_VECTORS 3
2200#define TF_DEC_TEST_VECTORS 3
2201#define TF_CBC_ENC_TEST_VECTORS 4
2202#define TF_CBC_DEC_TEST_VECTORS 4
2203
2204static struct cipher_testvec tf_enc_tv_template[] = {
2205 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002206 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002207 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002208 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002209 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002210 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2211 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002212 .rlen = 16,
2213 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002214 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2215 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
2216 "\x00\x11\x22\x33\x44\x55\x66\x77",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002217 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002218 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002219 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002220 .result = "\xcf\xd1\xd2\xe5\xa9\xbe\x9c\xdf"
2221 "\x50\x1f\x13\xb8\x92\xbd\x22\x48",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002222 .rlen = 16,
2223 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002224 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2225 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
2226 "\x00\x11\x22\x33\x44\x55\x66\x77"
2227 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002228 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002229 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002230 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002231 .result = "\x37\x52\x7b\xe0\x05\x23\x34\xb8"
2232 "\x9f\x0c\xfc\xca\xe8\x7c\xfa\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002233 .rlen = 16,
2234 },
2235};
2236
2237static struct cipher_testvec tf_dec_tv_template[] = {
2238 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002239 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002240 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002241 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2242 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002243 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002244 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002245 .rlen = 16,
2246 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002247 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2248 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
2249 "\x00\x11\x22\x33\x44\x55\x66\x77",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002250 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002251 .input = "\xcf\xd1\xd2\xe5\xa9\xbe\x9c\xdf"
2252 "\x50\x1f\x13\xb8\x92\xbd\x22\x48",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002253 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002254 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002255 .rlen = 16,
2256 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002257 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
2258 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
2259 "\x00\x11\x22\x33\x44\x55\x66\x77"
2260 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002261 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002262 .input = "\x37\x52\x7b\xe0\x05\x23\x34\xb8"
2263 "\x9f\x0c\xfc\xca\xe8\x7c\xfa\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002264 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002265 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002266 .rlen = 16,
2267 },
2268};
2269
2270static struct cipher_testvec tf_cbc_enc_tv_template[] = {
2271 { /* Generated with Nettle */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002272 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002273 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002274 .iv = zeroed_string,
2275 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002276 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002277 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2278 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002279 .rlen = 16,
2280 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002281 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002282 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002283 .iv = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2284 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
2285 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002286 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002287 .result = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2288 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002289 .rlen = 16,
2290 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002291 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002292 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002293 .iv = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2294 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
2295 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002296 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002297 .result = "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2298 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002299 .rlen = 16,
2300 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002301 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002302 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002303 .iv = zeroed_string,
2304 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002305 .ilen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002306 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2307 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a"
2308 "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2309 "\x86\xcb\x08\x6b\x78\x9f\x54\x19"
2310 "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2311 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002312 .rlen = 48,
2313 },
2314};
2315
2316static struct cipher_testvec tf_cbc_dec_tv_template[] = {
2317 { /* Reverse of the first four above */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002318 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002319 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002320 .iv = zeroed_string,
2321 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2322 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002323 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002324 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002325 .rlen = 16,
2326 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002327 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002328 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002329 .iv = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2330 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
2331 .input = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2332 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002333 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002334 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002335 .rlen = 16,
2336 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002337 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002338 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002339 .iv = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2340 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
2341 .input = "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2342 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002343 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002344 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002345 .rlen = 16,
2346 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002347 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002348 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002349 .iv = zeroed_string,
2350 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2351 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a"
2352 "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2353 "\x86\xcb\x08\x6b\x78\x9f\x54\x19"
2354 "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2355 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002356 .ilen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002357 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002358 .rlen = 48,
2359 },
2360};
2361
2362/*
2363 * Serpent test vectors. These are backwards because Serpent writes
2364 * octet sequences in right-to-left mode.
2365 */
2366#define SERPENT_ENC_TEST_VECTORS 4
2367#define SERPENT_DEC_TEST_VECTORS 4
2368
2369#define TNEPRES_ENC_TEST_VECTORS 4
2370#define TNEPRES_DEC_TEST_VECTORS 4
2371
Herbert Xuef2736f2005-06-22 13:26:03 -07002372static struct cipher_testvec serpent_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002373 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002374 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2375 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002376 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002377 .result = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
2378 "\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002379 .rlen = 16,
2380 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002381 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2382 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002383 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002384 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2385 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002386 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002387 .result = "\x4c\x7d\x8a\x32\x80\x72\xa2\x2c"
2388 "\x82\x3e\x4a\x1f\x3a\xcd\xa1\x6d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002389 .rlen = 16,
2390 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002391 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2392 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2393 "\x10\x11\x12\x13\x14\x15\x16\x17"
2394 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002395 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002396 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2397 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002398 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002399 .result = "\xde\x26\x9f\xf8\x33\xe4\x32\xb8"
2400 "\x5b\x2e\x88\xd2\x70\x1c\xe7\x5c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002401 .rlen = 16,
2402 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002403 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002404 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002405 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002406 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002407 .result = "\xdd\xd2\x6b\x98\xa5\xff\xd8\x2c"
2408 "\x05\x34\x5a\x9d\xad\xbf\xaf\x49",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002409 .rlen = 16,
2410 },
2411};
2412
Herbert Xuef2736f2005-06-22 13:26:03 -07002413static struct cipher_testvec tnepres_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002414 { /* KeySize=128, PT=0, I=1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002415 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2416 "\x00\x00\x00\x00\x00\x00\x00\x00",
2417 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2418 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002419 .klen = 16,
2420 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002421 .result = "\x49\xaf\xbf\xad\x9d\x5a\x34\x05"
2422 "\x2c\xd8\xff\xa5\x98\x6b\xd2\xdd",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002423 .rlen = 16,
2424 }, { /* KeySize=192, PT=0, I=1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002425 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2426 "\x00\x00\x00\x00\x00\x00\x00\x00"
2427 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002428 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002429 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2430 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002431 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002432 .result = "\xe7\x8e\x54\x02\xc7\x19\x55\x68"
2433 "\xac\x36\x78\xf7\xa3\xf6\x0c\x66",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002434 .rlen = 16,
2435 }, { /* KeySize=256, PT=0, I=1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002436 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2437 "\x00\x00\x00\x00\x00\x00\x00\x00"
2438 "\x00\x00\x00\x00\x00\x00\x00\x00"
2439 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002440 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002441 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2442 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002443 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002444 .result = "\xab\xed\x96\xe7\x66\xbf\x28\xcb"
2445 "\xc0\xeb\xd2\x1a\x82\xef\x08\x19",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002446 .rlen = 16,
2447 }, { /* KeySize=256, I=257 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002448 .key = "\x1f\x1e\x1d\x1c\x1b\x1a\x19\x18"
2449 "\x17\x16\x15\x14\x13\x12\x11\x10"
2450 "\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08"
2451 "\x07\x06\x05\x04\x03\x02\x01\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002452 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002453 .input = "\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08"
2454 "\x07\x06\x05\x04\x03\x02\x01\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002455 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002456 .result = "\x5c\xe7\x1c\x70\xd2\x88\x2e\x5b"
2457 "\xb8\x32\xe4\x33\xf8\x9f\x26\xde",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002458 .rlen = 16,
2459 },
2460};
2461
2462
Herbert Xuef2736f2005-06-22 13:26:03 -07002463static struct cipher_testvec serpent_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002464 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002465 .input = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
2466 "\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002467 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002468 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2469 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002470 .rlen = 16,
2471 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002472 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2473 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002474 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002475 .input = "\x4c\x7d\x8a\x32\x80\x72\xa2\x2c"
2476 "\x82\x3e\x4a\x1f\x3a\xcd\xa1\x6d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002477 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002478 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2479 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002480 .rlen = 16,
2481 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002482 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2483 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2484 "\x10\x11\x12\x13\x14\x15\x16\x17"
2485 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002486 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002487 .input = "\xde\x26\x9f\xf8\x33\xe4\x32\xb8"
2488 "\x5b\x2e\x88\xd2\x70\x1c\xe7\x5c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002489 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002490 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2491 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002492 .rlen = 16,
2493 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002494 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002495 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002496 .input = "\xdd\xd2\x6b\x98\xa5\xff\xd8\x2c"
2497 "\x05\x34\x5a\x9d\xad\xbf\xaf\x49",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002498 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002499 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002500 .rlen = 16,
2501 },
2502};
2503
Herbert Xuef2736f2005-06-22 13:26:03 -07002504static struct cipher_testvec tnepres_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002505 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002506 .input = "\x41\xcc\x6b\x31\x59\x31\x45\x97"
2507 "\x6d\x6f\xbb\x38\x4b\x37\x21\x28",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002508 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002509 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2510 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002511 .rlen = 16,
2512 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002513 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2514 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002515 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002516 .input = "\xea\xf4\xd7\xfc\xd8\x01\x34\x47"
2517 "\x81\x45\x0b\xfa\x0c\xd6\xad\x6e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002518 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002519 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2520 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002521 .rlen = 16,
2522 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002523 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2524 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2525 "\x10\x11\x12\x13\x14\x15\x16\x17"
2526 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002527 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002528 .input = "\x64\xa9\x1a\x37\xed\x9f\xe7\x49"
2529 "\xa8\x4e\x76\xd6\xf5\x0d\x78\xee",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002530 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002531 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2532 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002533 .rlen = 16,
2534 }, { /* KeySize=128, I=121 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002535 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002536 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002537 .input = "\x3d\xda\xbf\xc0\x06\xda\xab\x06"
2538 "\x46\x2a\xf4\xef\x81\x54\x4e\x26",
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 },
2543};
2544
2545
2546/* Cast6 test vectors from RFC 2612 */
2547#define CAST6_ENC_TEST_VECTORS 3
2548#define CAST6_DEC_TEST_VECTORS 3
2549
Herbert Xuef2736f2005-06-22 13:26:03 -07002550static struct cipher_testvec cast6_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002551 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002552 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2553 "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002554 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002555 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002556 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002557 .result = "\xc8\x42\xa0\x89\x72\xb4\x3d\x20"
2558 "\x83\x6c\x91\xd1\xb7\x53\x0f\x6b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002559 .rlen = 16,
2560 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002561 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2562 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2563 "\xba\xc7\x7a\x77\x17\x94\x28\x63",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002564 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002565 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002566 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002567 .result = "\x1b\x38\x6c\x02\x10\xdc\xad\xcb"
2568 "\xdd\x0e\x41\xaa\x08\xa7\xa7\xe8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002569 .rlen = 16,
2570 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002571 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2572 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2573 "\x8d\x7c\x47\xce\x26\x49\x08\x46"
2574 "\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002575 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002576 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002577 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002578 .result = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
2579 "\xc9\x87\x01\x36\x55\x33\x17\xfa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002580 .rlen = 16,
2581 },
2582};
2583
Herbert Xuef2736f2005-06-22 13:26:03 -07002584static struct cipher_testvec cast6_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002585 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002586 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2587 "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002588 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002589 .input = "\xc8\x42\xa0\x89\x72\xb4\x3d\x20"
2590 "\x83\x6c\x91\xd1\xb7\x53\x0f\x6b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002591 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002592 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002593 .rlen = 16,
2594 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002595 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2596 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2597 "\xba\xc7\x7a\x77\x17\x94\x28\x63",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002598 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002599 .input = "\x1b\x38\x6c\x02\x10\xdc\xad\xcb"
2600 "\xdd\x0e\x41\xaa\x08\xa7\xa7\xe8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002601 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002602 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002603 .rlen = 16,
2604 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002605 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2606 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2607 "\x8d\x7c\x47\xce\x26\x49\x08\x46"
2608 "\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002609 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002610 .input = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
2611 "\xc9\x87\x01\x36\x55\x33\x17\xfa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002612 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002613 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002614 .rlen = 16,
2615 },
2616};
2617
2618
2619/*
2620 * AES test vectors.
2621 */
2622#define AES_ENC_TEST_VECTORS 3
2623#define AES_DEC_TEST_VECTORS 3
Jan Glauber9617d6e2007-11-30 15:57:05 +11002624#define AES_CBC_ENC_TEST_VECTORS 4
2625#define AES_CBC_DEC_TEST_VECTORS 4
Rik Snelf3d10442006-11-29 19:01:41 +11002626#define AES_LRW_ENC_TEST_VECTORS 8
2627#define AES_LRW_DEC_TEST_VECTORS 8
Rik Snelf19f5112007-09-19 20:23:13 +08002628#define AES_XTS_ENC_TEST_VECTORS 4
2629#define AES_XTS_DEC_TEST_VECTORS 4
Tan Swee Henga773edb2007-11-30 00:36:07 +11002630#define AES_CTR_ENC_TEST_VECTORS 7
Joy Latten23e353c2007-10-23 08:50:32 +08002631#define AES_CTR_DEC_TEST_VECTORS 6
Mikko Herranen28db8e32007-11-26 22:24:11 +08002632#define AES_GCM_ENC_TEST_VECTORS 9
2633#define AES_GCM_DEC_TEST_VECTORS 8
Joy Latten93cc74e2007-12-12 20:24:22 +08002634#define AES_CCM_ENC_TEST_VECTORS 7
2635#define AES_CCM_DEC_TEST_VECTORS 7
Linus Torvalds1da177e2005-04-16 15:20:36 -07002636
Herbert Xuef2736f2005-06-22 13:26:03 -07002637static struct cipher_testvec aes_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002638 { /* From FIPS-197 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002639 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2640 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002641 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002642 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2643 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002644 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002645 .result = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
2646 "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002647 .rlen = 16,
2648 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002649 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2650 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2651 "\x10\x11\x12\x13\x14\x15\x16\x17",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002652 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002653 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2654 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002655 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002656 .result = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
2657 "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002658 .rlen = 16,
2659 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002660 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2661 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2662 "\x10\x11\x12\x13\x14\x15\x16\x17"
2663 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002664 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002665 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2666 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002667 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002668 .result = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
2669 "\xea\xfc\x49\x90\x4b\x49\x60\x89",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002670 .rlen = 16,
2671 },
2672};
2673
Herbert Xuef2736f2005-06-22 13:26:03 -07002674static struct cipher_testvec aes_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002675 { /* From FIPS-197 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002676 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2677 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002678 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002679 .input = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
2680 "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002681 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002682 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2683 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002684 .rlen = 16,
2685 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002686 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2687 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2688 "\x10\x11\x12\x13\x14\x15\x16\x17",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002689 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002690 .input = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
2691 "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002692 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002693 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2694 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002695 .rlen = 16,
2696 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002697 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2698 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2699 "\x10\x11\x12\x13\x14\x15\x16\x17"
2700 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002701 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002702 .input = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
2703 "\xea\xfc\x49\x90\x4b\x49\x60\x89",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002704 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002705 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2706 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002707 .rlen = 16,
2708 },
2709};
2710
Jan Glauber05f29fc2006-01-06 00:19:19 -08002711static struct cipher_testvec aes_cbc_enc_tv_template[] = {
2712 { /* From RFC 3602 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002713 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
2714 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002715 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002716 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
2717 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
2718 .input = "Single block msg",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002719 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002720 .result = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
2721 "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002722 .rlen = 16,
2723 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002724 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
2725 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002726 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002727 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
2728 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
2729 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2730 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2731 "\x10\x11\x12\x13\x14\x15\x16\x17"
2732 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002733 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002734 .result = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
2735 "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
2736 "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
2737 "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002738 .rlen = 32,
Jan Glauber9617d6e2007-11-30 15:57:05 +11002739 }, { /* From NIST SP800-38A */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002740 .key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
2741 "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
2742 "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002743 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002744 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2745 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2746 .input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2747 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2748 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2749 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2750 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2751 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2752 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2753 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002754 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002755 .result = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
2756 "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
2757 "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
2758 "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
2759 "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
2760 "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
2761 "\x08\xb0\xe2\x79\x88\x59\x88\x81"
2762 "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002763 .rlen = 64,
2764 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002765 .key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
2766 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
2767 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
2768 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002769 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002770 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2771 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2772 .input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2773 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2774 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2775 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2776 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2777 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2778 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2779 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002780 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002781 .result = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
2782 "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
2783 "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
2784 "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
2785 "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
2786 "\xa5\x30\xe2\x63\x04\x23\x14\x61"
2787 "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
2788 "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002789 .rlen = 64,
Jan Glauber05f29fc2006-01-06 00:19:19 -08002790 },
2791};
2792
2793static struct cipher_testvec aes_cbc_dec_tv_template[] = {
2794 { /* From RFC 3602 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002795 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
2796 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002797 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002798 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
2799 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
2800 .input = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
2801 "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002802 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002803 .result = "Single block msg",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002804 .rlen = 16,
2805 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002806 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
2807 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002808 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002809 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
2810 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
2811 .input = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
2812 "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
2813 "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
2814 "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002815 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002816 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2817 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2818 "\x10\x11\x12\x13\x14\x15\x16\x17"
2819 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002820 .rlen = 32,
Jan Glauber9617d6e2007-11-30 15:57:05 +11002821 }, { /* From NIST SP800-38A */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002822 .key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
2823 "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
2824 "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002825 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002826 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2827 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2828 .input = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
2829 "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
2830 "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
2831 "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
2832 "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
2833 "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
2834 "\x08\xb0\xe2\x79\x88\x59\x88\x81"
2835 "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002836 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002837 .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2838 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2839 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2840 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2841 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2842 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2843 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2844 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002845 .rlen = 64,
2846 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002847 .key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
2848 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
2849 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
2850 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002851 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002852 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2853 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2854 .input = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
2855 "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
2856 "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
2857 "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
2858 "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
2859 "\xa5\x30\xe2\x63\x04\x23\x14\x61"
2860 "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
2861 "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002862 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002863 .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2864 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2865 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2866 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2867 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2868 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2869 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2870 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002871 .rlen = 64,
Jan Glauber05f29fc2006-01-06 00:19:19 -08002872 },
2873};
2874
Rik Snelf3d10442006-11-29 19:01:41 +11002875static struct cipher_testvec aes_lrw_enc_tv_template[] = {
2876 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
2877 { /* LRW-32-AES 1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002878 .key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
2879 "\x4c\x26\x84\x14\xb5\x68\x01\x85"
2880 "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
2881 "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
Rik Snelf3d10442006-11-29 19:01:41 +11002882 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002883 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2884 "\x00\x00\x00\x00\x00\x00\x00\x01",
2885 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2886 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002887 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002888 .result = "\xf1\xb2\x73\xcd\x65\xa3\xdf\x5f"
2889 "\xe9\x5d\x48\x92\x54\x63\x4e\xb8",
Rik Snelf3d10442006-11-29 19:01:41 +11002890 .rlen = 16,
2891 }, { /* LRW-32-AES 2 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002892 .key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
2893 "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
2894 "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
2895 "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
Rik Snelf3d10442006-11-29 19:01:41 +11002896 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002897 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2898 "\x00\x00\x00\x00\x00\x00\x00\x02",
2899 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2900 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002901 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002902 .result = "\x00\xc8\x2b\xae\x95\xbb\xcd\xe5"
2903 "\x27\x4f\x07\x69\xb2\x60\xe1\x36",
Rik Snelf3d10442006-11-29 19:01:41 +11002904 .rlen = 16,
2905 }, { /* LRW-32-AES 3 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002906 .key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
2907 "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
2908 "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
2909 "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
Rik Snelf3d10442006-11-29 19:01:41 +11002910 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002911 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2912 "\x00\x00\x00\x02\x00\x00\x00\x00",
2913 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2914 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002915 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002916 .result = "\x76\x32\x21\x83\xed\x8f\xf1\x82"
2917 "\xf9\x59\x62\x03\x69\x0e\x5e\x01",
Rik Snelf3d10442006-11-29 19:01:41 +11002918 .rlen = 16,
2919 }, { /* LRW-32-AES 4 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002920 .key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
2921 "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
2922 "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
2923 "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
2924 "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
Rik Snelf3d10442006-11-29 19:01:41 +11002925 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002926 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2927 "\x00\x00\x00\x00\x00\x00\x00\x01",
2928 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2929 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002930 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002931 .result = "\x9c\x0f\x15\x2f\x55\xa2\xd8\xf0"
2932 "\xd6\x7b\x8f\x9e\x28\x22\xbc\x41",
Rik Snelf3d10442006-11-29 19:01:41 +11002933 .rlen = 16,
2934 }, { /* LRW-32-AES 5 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002935 .key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
2936 "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
2937 "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
2938 "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
2939 "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
Rik Snelf3d10442006-11-29 19:01:41 +11002940 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002941 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2942 "\x00\x00\x00\x02\x00\x00\x00\x00",
2943 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2944 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002945 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002946 .result = "\xd4\x27\x6a\x7f\x14\x91\x3d\x65"
2947 "\xc8\x60\x48\x02\x87\xe3\x34\x06",
Rik Snelf3d10442006-11-29 19:01:41 +11002948 .rlen = 16,
2949 }, { /* LRW-32-AES 6 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002950 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
2951 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
2952 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
2953 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
2954 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
2955 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
Rik Snelf3d10442006-11-29 19:01:41 +11002956 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002957 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2958 "\x00\x00\x00\x00\x00\x00\x00\x01",
2959 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2960 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002961 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002962 .result = "\xbd\x06\xb8\xe1\xdb\x98\x89\x9e"
2963 "\xc4\x98\xe4\x91\xcf\x1c\x70\x2b",
Rik Snelf3d10442006-11-29 19:01:41 +11002964 .rlen = 16,
2965 }, { /* LRW-32-AES 7 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002966 .key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
2967 "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
2968 "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
2969 "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
2970 "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
2971 "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
Rik Snelf3d10442006-11-29 19:01:41 +11002972 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002973 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2974 "\x00\x00\x00\x02\x00\x00\x00\x00",
2975 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2976 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002977 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002978 .result = "\x5b\x90\x8e\xc1\xab\xdd\x67\x5f"
2979 "\x3d\x69\x8a\x95\x53\xc8\x9c\xe5",
Rik Snelf3d10442006-11-29 19:01:41 +11002980 .rlen = 16,
2981 }, {
2982/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002983 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
2984 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
2985 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
2986 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
2987 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
2988 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
Rik Snelf3d10442006-11-29 19:01:41 +11002989 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002990 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2991 "\x00\x00\x00\x00\x00\x00\x00\x01",
2992 .input = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
2993 "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
2994 "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
2995 "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
2996 "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
2997 "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
2998 "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
2999 "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
3000 "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
3001 "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
3002 "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
3003 "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
3004 "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
3005 "\x4c\x96\x12\xed\x7c\x92\x03\x01"
3006 "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
3007 "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
3008 "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
3009 "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
3010 "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
3011 "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
3012 "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
3013 "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
3014 "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
3015 "\x76\x12\x73\x44\x1a\x56\xd7\x72"
3016 "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
3017 "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
3018 "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
3019 "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
3020 "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
3021 "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
3022 "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
3023 "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
3024 "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
3025 "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
3026 "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
3027 "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
3028 "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
3029 "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
3030 "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
3031 "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
3032 "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
3033 "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
3034 "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
3035 "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
3036 "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
3037 "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
3038 "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
3039 "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
3040 "\x62\x73\x65\xfd\x46\x63\x25\x3d"
3041 "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
3042 "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
3043 "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
3044 "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
3045 "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
3046 "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
3047 "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
3048 "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
3049 "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
3050 "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
3051 "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
3052 "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
3053 "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
3054 "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
3055 "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
Rik Snelf3d10442006-11-29 19:01:41 +11003056 .ilen = 512,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003057 .result = "\x1a\x1d\xa9\x30\xad\xf9\x2f\x9b"
3058 "\xb6\x1d\xae\xef\xf0\x2f\xf8\x5a"
3059 "\x39\x3c\xbf\x2a\xb2\x45\xb2\x23"
3060 "\x1b\x63\x3c\xcf\xaa\xbe\xcf\x4e"
3061 "\xfa\xe8\x29\xc2\x20\x68\x2b\x3c"
3062 "\x2e\x8b\xf7\x6e\x25\xbd\xe3\x3d"
3063 "\x66\x27\xd6\xaf\xd6\x64\x3e\xe3"
3064 "\xe8\x58\x46\x97\x39\x51\x07\xde"
3065 "\xcb\x37\xbc\xa9\xc0\x5f\x75\xc3"
3066 "\x0e\x84\x23\x1d\x16\xd4\x1c\x59"
3067 "\x9c\x1a\x02\x55\xab\x3a\x97\x1d"
3068 "\xdf\xdd\xc7\x06\x51\xd7\x70\xae"
3069 "\x23\xc6\x8c\xf5\x1e\xa0\xe5\x82"
3070 "\xb8\xb2\xbf\x04\xa0\x32\x8e\x68"
3071 "\xeb\xaf\x6e\x2d\x94\x22\x2f\xce"
3072 "\x4c\xb5\x59\xe2\xa2\x2f\xa0\x98"
3073 "\x1a\x97\xc6\xd4\xb5\x00\x59\xf2"
3074 "\x84\x14\x72\xb1\x9a\x6e\xa3\x7f"
3075 "\xea\x20\xe7\xcb\x65\x77\x3a\xdf"
3076 "\xc8\x97\x67\x15\xc2\x2a\x27\xcc"
3077 "\x18\x55\xa1\x24\x0b\x24\x24\xaf"
3078 "\x5b\xec\x68\xb8\xc8\xf5\xba\x63"
3079 "\xff\xed\x89\xce\xd5\x3d\x88\xf3"
3080 "\x25\xef\x05\x7c\x3a\xef\xeb\xd8"
3081 "\x7a\x32\x0d\xd1\x1e\x58\x59\x99"
3082 "\x90\x25\xb5\x26\xb0\xe3\x2b\x6c"
3083 "\x4c\xa9\x8b\x84\x4f\x5e\x01\x50"
3084 "\x41\x30\x58\xc5\x62\x74\x52\x1d"
3085 "\x45\x24\x6a\x42\x64\x4f\x97\x1c"
3086 "\xa8\x66\xb5\x6d\x79\xd4\x0d\x48"
3087 "\xc5\x5f\xf3\x90\x32\xdd\xdd\xe1"
3088 "\xe4\xa9\x9f\xfc\xc3\x52\x5a\x46"
3089 "\xe4\x81\x84\x95\x36\x59\x7a\x6b"
3090 "\xaa\xb3\x60\xad\xce\x9f\x9f\x28"
3091 "\xe0\x01\x75\x22\xc4\x4e\xa9\x62"
3092 "\x5c\x62\x0d\x00\xcb\x13\xe8\x43"
3093 "\x72\xd4\x2d\x53\x46\xb5\xd1\x16"
3094 "\x22\x18\xdf\x34\x33\xf5\xd6\x1c"
3095 "\xb8\x79\x78\x97\x94\xff\x72\x13"
3096 "\x4c\x27\xfc\xcb\xbf\x01\x53\xa6"
3097 "\xb4\x50\x6e\xde\xdf\xb5\x43\xa4"
3098 "\x59\xdf\x52\xf9\x7c\xe0\x11\x6f"
3099 "\x2d\x14\x8e\x24\x61\x2c\xe1\x17"
3100 "\xcc\xce\x51\x0c\x19\x8a\x82\x30"
3101 "\x94\xd5\x3d\x6a\x53\x06\x5e\xbd"
3102 "\xb7\xeb\xfa\xfd\x27\x51\xde\x85"
3103 "\x1e\x86\x53\x11\x53\x94\x00\xee"
3104 "\x2b\x8c\x08\x2a\xbf\xdd\xae\x11"
3105 "\xcb\x1e\xa2\x07\x9a\x80\xcf\x62"
3106 "\x9b\x09\xdc\x95\x3c\x96\x8e\xb1"
3107 "\x09\xbd\xe4\xeb\xdb\xca\x70\x7a"
3108 "\x9e\xfa\x31\x18\x45\x3c\x21\x33"
3109 "\xb0\xb3\x2b\xea\xf3\x71\x2d\xe1"
3110 "\x03\xad\x1b\x48\xd4\x67\x27\xf0"
3111 "\x62\xe4\x3d\xfb\x9b\x08\x76\xe7"
3112 "\xdd\x2b\x01\x39\x04\x5a\x58\x7a"
3113 "\xf7\x11\x90\xec\xbd\x51\x5c\x32"
3114 "\x6b\xd7\x35\x39\x02\x6b\xf2\xa6"
3115 "\xd0\x0d\x07\xe1\x06\xc4\x5b\x7d"
3116 "\xe4\x6a\xd7\xee\x15\x1f\x83\xb4"
3117 "\xa3\xa7\x5e\xc3\x90\xb7\xef\xd3"
3118 "\xb7\x4f\xf8\x92\x4c\xb7\x3c\x29"
3119 "\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
3120 "\x74\x3f\x7d\x58\x88\x75\xde\x3e",
Rik Snelf3d10442006-11-29 19:01:41 +11003121 .rlen = 512,
3122 }
3123};
3124
3125static struct cipher_testvec aes_lrw_dec_tv_template[] = {
3126 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
3127 /* same as enc vectors with input and result reversed */
3128 { /* LRW-32-AES 1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003129 .key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
3130 "\x4c\x26\x84\x14\xb5\x68\x01\x85"
3131 "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
3132 "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
Rik Snelf3d10442006-11-29 19:01:41 +11003133 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003134 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3135 "\x00\x00\x00\x00\x00\x00\x00\x01",
3136 .input = "\xf1\xb2\x73\xcd\x65\xa3\xdf\x5f"
3137 "\xe9\x5d\x48\x92\x54\x63\x4e\xb8",
Rik Snelf3d10442006-11-29 19:01:41 +11003138 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003139 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3140 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003141 .rlen = 16,
3142 }, { /* LRW-32-AES 2 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003143 .key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
3144 "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
3145 "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
3146 "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
Rik Snelf3d10442006-11-29 19:01:41 +11003147 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003148 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3149 "\x00\x00\x00\x00\x00\x00\x00\x02",
3150 .input = "\x00\xc8\x2b\xae\x95\xbb\xcd\xe5"
3151 "\x27\x4f\x07\x69\xb2\x60\xe1\x36",
Rik Snelf3d10442006-11-29 19:01:41 +11003152 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003153 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3154 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003155 .rlen = 16,
3156 }, { /* LRW-32-AES 3 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003157 .key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
3158 "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
3159 "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
3160 "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
Rik Snelf3d10442006-11-29 19:01:41 +11003161 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003162 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3163 "\x00\x00\x00\x02\x00\x00\x00\x00",
3164 .input = "\x76\x32\x21\x83\xed\x8f\xf1\x82"
3165 "\xf9\x59\x62\x03\x69\x0e\x5e\x01",
Rik Snelf3d10442006-11-29 19:01:41 +11003166 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003167 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3168 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003169 .rlen = 16,
3170 }, { /* LRW-32-AES 4 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003171 .key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
3172 "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
3173 "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
3174 "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
3175 "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
Rik Snelf3d10442006-11-29 19:01:41 +11003176 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003177 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3178 "\x00\x00\x00\x00\x00\x00\x00\x01",
3179 .input = "\x9c\x0f\x15\x2f\x55\xa2\xd8\xf0"
3180 "\xd6\x7b\x8f\x9e\x28\x22\xbc\x41",
Rik Snelf3d10442006-11-29 19:01:41 +11003181 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003182 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3183 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003184 .rlen = 16,
3185 }, { /* LRW-32-AES 5 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003186 .key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
3187 "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
3188 "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
3189 "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
3190 "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
Rik Snelf3d10442006-11-29 19:01:41 +11003191 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003192 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3193 "\x00\x00\x00\x02\x00\x00\x00\x00",
3194 .input = "\xd4\x27\x6a\x7f\x14\x91\x3d\x65"
3195 "\xc8\x60\x48\x02\x87\xe3\x34\x06",
Rik Snelf3d10442006-11-29 19:01:41 +11003196 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003197 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3198 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003199 .rlen = 16,
3200 }, { /* LRW-32-AES 6 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003201 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
3202 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
3203 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
3204 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
3205 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
3206 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
Rik Snelf3d10442006-11-29 19:01:41 +11003207 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003208 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3209 "\x00\x00\x00\x00\x00\x00\x00\x01",
3210 .input = "\xbd\x06\xb8\xe1\xdb\x98\x89\x9e"
3211 "\xc4\x98\xe4\x91\xcf\x1c\x70\x2b",
Rik Snelf3d10442006-11-29 19:01:41 +11003212 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003213 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3214 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003215 .rlen = 16,
3216 }, { /* LRW-32-AES 7 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003217 .key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
3218 "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
3219 "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
3220 "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
3221 "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
3222 "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
Rik Snelf3d10442006-11-29 19:01:41 +11003223 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003224 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3225 "\x00\x00\x00\x02\x00\x00\x00\x00",
3226 .input = "\x5b\x90\x8e\xc1\xab\xdd\x67\x5f"
3227 "\x3d\x69\x8a\x95\x53\xc8\x9c\xe5",
Rik Snelf3d10442006-11-29 19:01:41 +11003228 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003229 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
3230 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11003231 .rlen = 16,
3232 }, {
3233/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003234 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
3235 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
3236 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
3237 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
3238 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
3239 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
Rik Snelf3d10442006-11-29 19:01:41 +11003240 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003241 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3242 "\x00\x00\x00\x00\x00\x00\x00\x01",
3243 .input = "\x1a\x1d\xa9\x30\xad\xf9\x2f\x9b"
3244 "\xb6\x1d\xae\xef\xf0\x2f\xf8\x5a"
3245 "\x39\x3c\xbf\x2a\xb2\x45\xb2\x23"
3246 "\x1b\x63\x3c\xcf\xaa\xbe\xcf\x4e"
3247 "\xfa\xe8\x29\xc2\x20\x68\x2b\x3c"
3248 "\x2e\x8b\xf7\x6e\x25\xbd\xe3\x3d"
3249 "\x66\x27\xd6\xaf\xd6\x64\x3e\xe3"
3250 "\xe8\x58\x46\x97\x39\x51\x07\xde"
3251 "\xcb\x37\xbc\xa9\xc0\x5f\x75\xc3"
3252 "\x0e\x84\x23\x1d\x16\xd4\x1c\x59"
3253 "\x9c\x1a\x02\x55\xab\x3a\x97\x1d"
3254 "\xdf\xdd\xc7\x06\x51\xd7\x70\xae"
3255 "\x23\xc6\x8c\xf5\x1e\xa0\xe5\x82"
3256 "\xb8\xb2\xbf\x04\xa0\x32\x8e\x68"
3257 "\xeb\xaf\x6e\x2d\x94\x22\x2f\xce"
3258 "\x4c\xb5\x59\xe2\xa2\x2f\xa0\x98"
3259 "\x1a\x97\xc6\xd4\xb5\x00\x59\xf2"
3260 "\x84\x14\x72\xb1\x9a\x6e\xa3\x7f"
3261 "\xea\x20\xe7\xcb\x65\x77\x3a\xdf"
3262 "\xc8\x97\x67\x15\xc2\x2a\x27\xcc"
3263 "\x18\x55\xa1\x24\x0b\x24\x24\xaf"
3264 "\x5b\xec\x68\xb8\xc8\xf5\xba\x63"
3265 "\xff\xed\x89\xce\xd5\x3d\x88\xf3"
3266 "\x25\xef\x05\x7c\x3a\xef\xeb\xd8"
3267 "\x7a\x32\x0d\xd1\x1e\x58\x59\x99"
3268 "\x90\x25\xb5\x26\xb0\xe3\x2b\x6c"
3269 "\x4c\xa9\x8b\x84\x4f\x5e\x01\x50"
3270 "\x41\x30\x58\xc5\x62\x74\x52\x1d"
3271 "\x45\x24\x6a\x42\x64\x4f\x97\x1c"
3272 "\xa8\x66\xb5\x6d\x79\xd4\x0d\x48"
3273 "\xc5\x5f\xf3\x90\x32\xdd\xdd\xe1"
3274 "\xe4\xa9\x9f\xfc\xc3\x52\x5a\x46"
3275 "\xe4\x81\x84\x95\x36\x59\x7a\x6b"
3276 "\xaa\xb3\x60\xad\xce\x9f\x9f\x28"
3277 "\xe0\x01\x75\x22\xc4\x4e\xa9\x62"
3278 "\x5c\x62\x0d\x00\xcb\x13\xe8\x43"
3279 "\x72\xd4\x2d\x53\x46\xb5\xd1\x16"
3280 "\x22\x18\xdf\x34\x33\xf5\xd6\x1c"
3281 "\xb8\x79\x78\x97\x94\xff\x72\x13"
3282 "\x4c\x27\xfc\xcb\xbf\x01\x53\xa6"
3283 "\xb4\x50\x6e\xde\xdf\xb5\x43\xa4"
3284 "\x59\xdf\x52\xf9\x7c\xe0\x11\x6f"
3285 "\x2d\x14\x8e\x24\x61\x2c\xe1\x17"
3286 "\xcc\xce\x51\x0c\x19\x8a\x82\x30"
3287 "\x94\xd5\x3d\x6a\x53\x06\x5e\xbd"
3288 "\xb7\xeb\xfa\xfd\x27\x51\xde\x85"
3289 "\x1e\x86\x53\x11\x53\x94\x00\xee"
3290 "\x2b\x8c\x08\x2a\xbf\xdd\xae\x11"
3291 "\xcb\x1e\xa2\x07\x9a\x80\xcf\x62"
3292 "\x9b\x09\xdc\x95\x3c\x96\x8e\xb1"
3293 "\x09\xbd\xe4\xeb\xdb\xca\x70\x7a"
3294 "\x9e\xfa\x31\x18\x45\x3c\x21\x33"
3295 "\xb0\xb3\x2b\xea\xf3\x71\x2d\xe1"
3296 "\x03\xad\x1b\x48\xd4\x67\x27\xf0"
3297 "\x62\xe4\x3d\xfb\x9b\x08\x76\xe7"
3298 "\xdd\x2b\x01\x39\x04\x5a\x58\x7a"
3299 "\xf7\x11\x90\xec\xbd\x51\x5c\x32"
3300 "\x6b\xd7\x35\x39\x02\x6b\xf2\xa6"
3301 "\xd0\x0d\x07\xe1\x06\xc4\x5b\x7d"
3302 "\xe4\x6a\xd7\xee\x15\x1f\x83\xb4"
3303 "\xa3\xa7\x5e\xc3\x90\xb7\xef\xd3"
3304 "\xb7\x4f\xf8\x92\x4c\xb7\x3c\x29"
3305 "\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
3306 "\x74\x3f\x7d\x58\x88\x75\xde\x3e",
Rik Snelf3d10442006-11-29 19:01:41 +11003307 .ilen = 512,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003308 .result = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
3309 "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
3310 "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
3311 "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
3312 "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
3313 "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
3314 "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
3315 "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
3316 "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
3317 "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
3318 "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
3319 "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
3320 "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
3321 "\x4c\x96\x12\xed\x7c\x92\x03\x01"
3322 "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
3323 "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
3324 "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
3325 "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
3326 "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
3327 "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
3328 "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
3329 "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
3330 "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
3331 "\x76\x12\x73\x44\x1a\x56\xd7\x72"
3332 "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
3333 "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
3334 "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
3335 "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
3336 "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
3337 "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
3338 "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
3339 "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
3340 "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
3341 "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
3342 "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
3343 "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
3344 "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
3345 "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
3346 "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
3347 "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
3348 "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
3349 "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
3350 "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
3351 "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
3352 "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
3353 "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
3354 "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
3355 "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
3356 "\x62\x73\x65\xfd\x46\x63\x25\x3d"
3357 "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
3358 "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
3359 "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
3360 "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
3361 "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
3362 "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
3363 "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
3364 "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
3365 "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
3366 "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
3367 "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
3368 "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
3369 "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
3370 "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
3371 "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
Rik Snelf3d10442006-11-29 19:01:41 +11003372 .rlen = 512,
3373 }
3374};
3375
Rik Snelf19f5112007-09-19 20:23:13 +08003376static struct cipher_testvec aes_xts_enc_tv_template[] = {
3377 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
3378 { /* XTS-AES 1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003379 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
3380 "\x00\x00\x00\x00\x00\x00\x00\x00"
3381 "\x00\x00\x00\x00\x00\x00\x00\x00"
3382 "\x00\x00\x00\x00\x00\x00\x00\x00",
Rik Snelf19f5112007-09-19 20:23:13 +08003383 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003384 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3385 "\x00\x00\x00\x00\x00\x00\x00\x00",
3386 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
3387 "\x00\x00\x00\x00\x00\x00\x00\x00"
3388 "\x00\x00\x00\x00\x00\x00\x00\x00"
3389 "\x00\x00\x00\x00\x00\x00\x00\x00",
Rik Snelf19f5112007-09-19 20:23:13 +08003390 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003391 .result = "\x91\x7c\xf6\x9e\xbd\x68\xb2\xec"
3392 "\x9b\x9f\xe9\xa3\xea\xdd\xa6\x92"
3393 "\xcd\x43\xd2\xf5\x95\x98\xed\x85"
3394 "\x8c\x02\xc2\x65\x2f\xbf\x92\x2e",
Rik Snelf19f5112007-09-19 20:23:13 +08003395 .rlen = 32,
3396 }, { /* XTS-AES 2 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003397 .key = "\x11\x11\x11\x11\x11\x11\x11\x11"
3398 "\x11\x11\x11\x11\x11\x11\x11\x11"
3399 "\x22\x22\x22\x22\x22\x22\x22\x22"
3400 "\x22\x22\x22\x22\x22\x22\x22\x22",
Rik Snelf19f5112007-09-19 20:23:13 +08003401 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003402 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3403 "\x00\x00\x00\x00\x00\x00\x00\x00",
3404 .input = "\x44\x44\x44\x44\x44\x44\x44\x44"
3405 "\x44\x44\x44\x44\x44\x44\x44\x44"
3406 "\x44\x44\x44\x44\x44\x44\x44\x44"
3407 "\x44\x44\x44\x44\x44\x44\x44\x44",
Rik Snelf19f5112007-09-19 20:23:13 +08003408 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003409 .result = "\xc4\x54\x18\x5e\x6a\x16\x93\x6e"
3410 "\x39\x33\x40\x38\xac\xef\x83\x8b"
3411 "\xfb\x18\x6f\xff\x74\x80\xad\xc4"
3412 "\x28\x93\x82\xec\xd6\xd3\x94\xf0",
Rik Snelf19f5112007-09-19 20:23:13 +08003413 .rlen = 32,
3414 }, { /* XTS-AES 3 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003415 .key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
3416 "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
3417 "\x22\x22\x22\x22\x22\x22\x22\x22"
3418 "\x22\x22\x22\x22\x22\x22\x22\x22",
Rik Snelf19f5112007-09-19 20:23:13 +08003419 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003420 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3421 "\x00\x00\x00\x00\x00\x00\x00\x00",
3422 .input = "\x44\x44\x44\x44\x44\x44\x44\x44"
3423 "\x44\x44\x44\x44\x44\x44\x44\x44"
3424 "\x44\x44\x44\x44\x44\x44\x44\x44"
3425 "\x44\x44\x44\x44\x44\x44\x44\x44",
Rik Snelf19f5112007-09-19 20:23:13 +08003426 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003427 .result = "\xaf\x85\x33\x6b\x59\x7a\xfc\x1a"
3428 "\x90\x0b\x2e\xb2\x1e\xc9\x49\xd2"
3429 "\x92\xdf\x4c\x04\x7e\x0b\x21\x53"
3430 "\x21\x86\xa5\x97\x1a\x22\x7a\x89",
Rik Snelf19f5112007-09-19 20:23:13 +08003431 .rlen = 32,
3432 }, { /* XTS-AES 4 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003433 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
3434 "\x23\x53\x60\x28\x74\x71\x35\x26"
3435 "\x31\x41\x59\x26\x53\x58\x97\x93"
3436 "\x23\x84\x62\x64\x33\x83\x27\x95",
Rik Snelf19f5112007-09-19 20:23:13 +08003437 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003438 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3439 "\x00\x00\x00\x00\x00\x00\x00\x00",
3440 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3441 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3442 "\x10\x11\x12\x13\x14\x15\x16\x17"
3443 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3444 "\x20\x21\x22\x23\x24\x25\x26\x27"
3445 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3446 "\x30\x31\x32\x33\x34\x35\x36\x37"
3447 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3448 "\x40\x41\x42\x43\x44\x45\x46\x47"
3449 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3450 "\x50\x51\x52\x53\x54\x55\x56\x57"
3451 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3452 "\x60\x61\x62\x63\x64\x65\x66\x67"
3453 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3454 "\x70\x71\x72\x73\x74\x75\x76\x77"
3455 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3456 "\x80\x81\x82\x83\x84\x85\x86\x87"
3457 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3458 "\x90\x91\x92\x93\x94\x95\x96\x97"
3459 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3460 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3461 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3462 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3463 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3464 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3465 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3466 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3467 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3468 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3469 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3470 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3471 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3472 "\x00\x01\x02\x03\x04\x05\x06\x07"
3473 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3474 "\x10\x11\x12\x13\x14\x15\x16\x17"
3475 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3476 "\x20\x21\x22\x23\x24\x25\x26\x27"
3477 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3478 "\x30\x31\x32\x33\x34\x35\x36\x37"
3479 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3480 "\x40\x41\x42\x43\x44\x45\x46\x47"
3481 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3482 "\x50\x51\x52\x53\x54\x55\x56\x57"
3483 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3484 "\x60\x61\x62\x63\x64\x65\x66\x67"
3485 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3486 "\x70\x71\x72\x73\x74\x75\x76\x77"
3487 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3488 "\x80\x81\x82\x83\x84\x85\x86\x87"
3489 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3490 "\x90\x91\x92\x93\x94\x95\x96\x97"
3491 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3492 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3493 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3494 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3495 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3496 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3497 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3498 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3499 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3500 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3501 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3502 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3503 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
Rik Snelf19f5112007-09-19 20:23:13 +08003504 .ilen = 512,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003505 .result = "\x27\xa7\x47\x9b\xef\xa1\xd4\x76"
3506 "\x48\x9f\x30\x8c\xd4\xcf\xa6\xe2"
3507 "\xa9\x6e\x4b\xbe\x32\x08\xff\x25"
3508 "\x28\x7d\xd3\x81\x96\x16\xe8\x9c"
3509 "\xc7\x8c\xf7\xf5\xe5\x43\x44\x5f"
3510 "\x83\x33\xd8\xfa\x7f\x56\x00\x00"
3511 "\x05\x27\x9f\xa5\xd8\xb5\xe4\xad"
3512 "\x40\xe7\x36\xdd\xb4\xd3\x54\x12"
3513 "\x32\x80\x63\xfd\x2a\xab\x53\xe5"
3514 "\xea\x1e\x0a\x9f\x33\x25\x00\xa5"
3515 "\xdf\x94\x87\xd0\x7a\x5c\x92\xcc"
3516 "\x51\x2c\x88\x66\xc7\xe8\x60\xce"
3517 "\x93\xfd\xf1\x66\xa2\x49\x12\xb4"
3518 "\x22\x97\x61\x46\xae\x20\xce\x84"
3519 "\x6b\xb7\xdc\x9b\xa9\x4a\x76\x7a"
3520 "\xae\xf2\x0c\x0d\x61\xad\x02\x65"
3521 "\x5e\xa9\x2d\xc4\xc4\xe4\x1a\x89"
3522 "\x52\xc6\x51\xd3\x31\x74\xbe\x51"
3523 "\xa1\x0c\x42\x11\x10\xe6\xd8\x15"
3524 "\x88\xed\xe8\x21\x03\xa2\x52\xd8"
3525 "\xa7\x50\xe8\x76\x8d\xef\xff\xed"
3526 "\x91\x22\x81\x0a\xae\xb9\x9f\x91"
3527 "\x72\xaf\x82\xb6\x04\xdc\x4b\x8e"
3528 "\x51\xbc\xb0\x82\x35\xa6\xf4\x34"
3529 "\x13\x32\xe4\xca\x60\x48\x2a\x4b"
3530 "\xa1\xa0\x3b\x3e\x65\x00\x8f\xc5"
3531 "\xda\x76\xb7\x0b\xf1\x69\x0d\xb4"
3532 "\xea\xe2\x9c\x5f\x1b\xad\xd0\x3c"
3533 "\x5c\xcf\x2a\x55\xd7\x05\xdd\xcd"
3534 "\x86\xd4\x49\x51\x1c\xeb\x7e\xc3"
3535 "\x0b\xf1\x2b\x1f\xa3\x5b\x91\x3f"
3536 "\x9f\x74\x7a\x8a\xfd\x1b\x13\x0e"
3537 "\x94\xbf\xf9\x4e\xff\xd0\x1a\x91"
3538 "\x73\x5c\xa1\x72\x6a\xcd\x0b\x19"
3539 "\x7c\x4e\x5b\x03\x39\x36\x97\xe1"
3540 "\x26\x82\x6f\xb6\xbb\xde\x8e\xcc"
3541 "\x1e\x08\x29\x85\x16\xe2\xc9\xed"
3542 "\x03\xff\x3c\x1b\x78\x60\xf6\xde"
3543 "\x76\xd4\xce\xcd\x94\xc8\x11\x98"
3544 "\x55\xef\x52\x97\xca\x67\xe9\xf3"
3545 "\xe7\xff\x72\xb1\xe9\x97\x85\xca"
3546 "\x0a\x7e\x77\x20\xc5\xb3\x6d\xc6"
3547 "\xd7\x2c\xac\x95\x74\xc8\xcb\xbc"
3548 "\x2f\x80\x1e\x23\xe5\x6f\xd3\x44"
3549 "\xb0\x7f\x22\x15\x4b\xeb\xa0\xf0"
3550 "\x8c\xe8\x89\x1e\x64\x3e\xd9\x95"
3551 "\xc9\x4d\x9a\x69\xc9\xf1\xb5\xf4"
3552 "\x99\x02\x7a\x78\x57\x2a\xee\xbd"
3553 "\x74\xd2\x0c\xc3\x98\x81\xc2\x13"
3554 "\xee\x77\x0b\x10\x10\xe4\xbe\xa7"
3555 "\x18\x84\x69\x77\xae\x11\x9f\x7a"
3556 "\x02\x3a\xb5\x8c\xca\x0a\xd7\x52"
3557 "\xaf\xe6\x56\xbb\x3c\x17\x25\x6a"
3558 "\x9f\x6e\x9b\xf1\x9f\xdd\x5a\x38"
3559 "\xfc\x82\xbb\xe8\x72\xc5\x53\x9e"
3560 "\xdb\x60\x9e\xf4\xf7\x9c\x20\x3e"
3561 "\xbb\x14\x0f\x2e\x58\x3c\xb2\xad"
3562 "\x15\xb4\xaa\x5b\x65\x50\x16\xa8"
3563 "\x44\x92\x77\xdb\xd4\x77\xef\x2c"
3564 "\x8d\x6c\x01\x7d\xb7\x38\xb1\x8d"
3565 "\xeb\x4a\x42\x7d\x19\x23\xce\x3f"
3566 "\xf2\x62\x73\x57\x79\xa4\x18\xf2"
3567 "\x0a\x28\x2d\xf9\x20\x14\x7b\xea"
3568 "\xbe\x42\x1e\xe5\x31\x9d\x05\x68",
Rik Snelf19f5112007-09-19 20:23:13 +08003569 .rlen = 512,
3570 }
3571};
3572
3573static struct cipher_testvec aes_xts_dec_tv_template[] = {
3574 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
3575 { /* XTS-AES 1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003576 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
3577 "\x00\x00\x00\x00\x00\x00\x00\x00"
3578 "\x00\x00\x00\x00\x00\x00\x00\x00"
3579 "\x00\x00\x00\x00\x00\x00\x00\x00",
Rik Snelf19f5112007-09-19 20:23:13 +08003580 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003581 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3582 "\x00\x00\x00\x00\x00\x00\x00\x00",
3583 .input = "\x91\x7c\xf6\x9e\xbd\x68\xb2\xec"
3584 "\x9b\x9f\xe9\xa3\xea\xdd\xa6\x92"
3585 "\xcd\x43\xd2\xf5\x95\x98\xed\x85"
3586 "\x8c\x02\xc2\x65\x2f\xbf\x92\x2e",
Rik Snelf19f5112007-09-19 20:23:13 +08003587 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003588 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
3589 "\x00\x00\x00\x00\x00\x00\x00\x00"
3590 "\x00\x00\x00\x00\x00\x00\x00\x00"
3591 "\x00\x00\x00\x00\x00\x00\x00\x00",
Rik Snelf19f5112007-09-19 20:23:13 +08003592 .rlen = 32,
3593 }, { /* XTS-AES 2 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003594 .key = "\x11\x11\x11\x11\x11\x11\x11\x11"
3595 "\x11\x11\x11\x11\x11\x11\x11\x11"
3596 "\x22\x22\x22\x22\x22\x22\x22\x22"
3597 "\x22\x22\x22\x22\x22\x22\x22\x22",
Rik Snelf19f5112007-09-19 20:23:13 +08003598 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003599 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3600 "\x00\x00\x00\x00\x00\x00\x00\x00",
3601 .input = "\xc4\x54\x18\x5e\x6a\x16\x93\x6e"
3602 "\x39\x33\x40\x38\xac\xef\x83\x8b"
3603 "\xfb\x18\x6f\xff\x74\x80\xad\xc4"
3604 "\x28\x93\x82\xec\xd6\xd3\x94\xf0",
Rik Snelf19f5112007-09-19 20:23:13 +08003605 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003606 .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
3607 "\x44\x44\x44\x44\x44\x44\x44\x44"
3608 "\x44\x44\x44\x44\x44\x44\x44\x44"
3609 "\x44\x44\x44\x44\x44\x44\x44\x44",
Rik Snelf19f5112007-09-19 20:23:13 +08003610 .rlen = 32,
3611 }, { /* XTS-AES 3 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003612 .key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
3613 "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
3614 "\x22\x22\x22\x22\x22\x22\x22\x22"
3615 "\x22\x22\x22\x22\x22\x22\x22\x22",
Rik Snelf19f5112007-09-19 20:23:13 +08003616 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003617 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3618 "\x00\x00\x00\x00\x00\x00\x00\x00",
3619 .input = "\xaf\x85\x33\x6b\x59\x7a\xfc\x1a"
3620 "\x90\x0b\x2e\xb2\x1e\xc9\x49\xd2"
3621 "\x92\xdf\x4c\x04\x7e\x0b\x21\x53"
3622 "\x21\x86\xa5\x97\x1a\x22\x7a\x89",
Rik Snelf19f5112007-09-19 20:23:13 +08003623 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003624 .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
3625 "\x44\x44\x44\x44\x44\x44\x44\x44"
3626 "\x44\x44\x44\x44\x44\x44\x44\x44"
3627 "\x44\x44\x44\x44\x44\x44\x44\x44",
Rik Snelf19f5112007-09-19 20:23:13 +08003628 .rlen = 32,
3629 }, { /* XTS-AES 4 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003630 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
3631 "\x23\x53\x60\x28\x74\x71\x35\x26"
3632 "\x31\x41\x59\x26\x53\x58\x97\x93"
3633 "\x23\x84\x62\x64\x33\x83\x27\x95",
Rik Snelf19f5112007-09-19 20:23:13 +08003634 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003635 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3636 "\x00\x00\x00\x00\x00\x00\x00\x00",
3637 .input = "\x27\xa7\x47\x9b\xef\xa1\xd4\x76"
3638 "\x48\x9f\x30\x8c\xd4\xcf\xa6\xe2"
3639 "\xa9\x6e\x4b\xbe\x32\x08\xff\x25"
3640 "\x28\x7d\xd3\x81\x96\x16\xe8\x9c"
3641 "\xc7\x8c\xf7\xf5\xe5\x43\x44\x5f"
3642 "\x83\x33\xd8\xfa\x7f\x56\x00\x00"
3643 "\x05\x27\x9f\xa5\xd8\xb5\xe4\xad"
3644 "\x40\xe7\x36\xdd\xb4\xd3\x54\x12"
3645 "\x32\x80\x63\xfd\x2a\xab\x53\xe5"
3646 "\xea\x1e\x0a\x9f\x33\x25\x00\xa5"
3647 "\xdf\x94\x87\xd0\x7a\x5c\x92\xcc"
3648 "\x51\x2c\x88\x66\xc7\xe8\x60\xce"
3649 "\x93\xfd\xf1\x66\xa2\x49\x12\xb4"
3650 "\x22\x97\x61\x46\xae\x20\xce\x84"
3651 "\x6b\xb7\xdc\x9b\xa9\x4a\x76\x7a"
3652 "\xae\xf2\x0c\x0d\x61\xad\x02\x65"
3653 "\x5e\xa9\x2d\xc4\xc4\xe4\x1a\x89"
3654 "\x52\xc6\x51\xd3\x31\x74\xbe\x51"
3655 "\xa1\x0c\x42\x11\x10\xe6\xd8\x15"
3656 "\x88\xed\xe8\x21\x03\xa2\x52\xd8"
3657 "\xa7\x50\xe8\x76\x8d\xef\xff\xed"
3658 "\x91\x22\x81\x0a\xae\xb9\x9f\x91"
3659 "\x72\xaf\x82\xb6\x04\xdc\x4b\x8e"
3660 "\x51\xbc\xb0\x82\x35\xa6\xf4\x34"
3661 "\x13\x32\xe4\xca\x60\x48\x2a\x4b"
3662 "\xa1\xa0\x3b\x3e\x65\x00\x8f\xc5"
3663 "\xda\x76\xb7\x0b\xf1\x69\x0d\xb4"
3664 "\xea\xe2\x9c\x5f\x1b\xad\xd0\x3c"
3665 "\x5c\xcf\x2a\x55\xd7\x05\xdd\xcd"
3666 "\x86\xd4\x49\x51\x1c\xeb\x7e\xc3"
3667 "\x0b\xf1\x2b\x1f\xa3\x5b\x91\x3f"
3668 "\x9f\x74\x7a\x8a\xfd\x1b\x13\x0e"
3669 "\x94\xbf\xf9\x4e\xff\xd0\x1a\x91"
3670 "\x73\x5c\xa1\x72\x6a\xcd\x0b\x19"
3671 "\x7c\x4e\x5b\x03\x39\x36\x97\xe1"
3672 "\x26\x82\x6f\xb6\xbb\xde\x8e\xcc"
3673 "\x1e\x08\x29\x85\x16\xe2\xc9\xed"
3674 "\x03\xff\x3c\x1b\x78\x60\xf6\xde"
3675 "\x76\xd4\xce\xcd\x94\xc8\x11\x98"
3676 "\x55\xef\x52\x97\xca\x67\xe9\xf3"
3677 "\xe7\xff\x72\xb1\xe9\x97\x85\xca"
3678 "\x0a\x7e\x77\x20\xc5\xb3\x6d\xc6"
3679 "\xd7\x2c\xac\x95\x74\xc8\xcb\xbc"
3680 "\x2f\x80\x1e\x23\xe5\x6f\xd3\x44"
3681 "\xb0\x7f\x22\x15\x4b\xeb\xa0\xf0"
3682 "\x8c\xe8\x89\x1e\x64\x3e\xd9\x95"
3683 "\xc9\x4d\x9a\x69\xc9\xf1\xb5\xf4"
3684 "\x99\x02\x7a\x78\x57\x2a\xee\xbd"
3685 "\x74\xd2\x0c\xc3\x98\x81\xc2\x13"
3686 "\xee\x77\x0b\x10\x10\xe4\xbe\xa7"
3687 "\x18\x84\x69\x77\xae\x11\x9f\x7a"
3688 "\x02\x3a\xb5\x8c\xca\x0a\xd7\x52"
3689 "\xaf\xe6\x56\xbb\x3c\x17\x25\x6a"
3690 "\x9f\x6e\x9b\xf1\x9f\xdd\x5a\x38"
3691 "\xfc\x82\xbb\xe8\x72\xc5\x53\x9e"
3692 "\xdb\x60\x9e\xf4\xf7\x9c\x20\x3e"
3693 "\xbb\x14\x0f\x2e\x58\x3c\xb2\xad"
3694 "\x15\xb4\xaa\x5b\x65\x50\x16\xa8"
3695 "\x44\x92\x77\xdb\xd4\x77\xef\x2c"
3696 "\x8d\x6c\x01\x7d\xb7\x38\xb1\x8d"
3697 "\xeb\x4a\x42\x7d\x19\x23\xce\x3f"
3698 "\xf2\x62\x73\x57\x79\xa4\x18\xf2"
3699 "\x0a\x28\x2d\xf9\x20\x14\x7b\xea"
3700 "\xbe\x42\x1e\xe5\x31\x9d\x05\x68",
Rik Snelf19f5112007-09-19 20:23:13 +08003701 .ilen = 512,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003702 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
3703 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3704 "\x10\x11\x12\x13\x14\x15\x16\x17"
3705 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3706 "\x20\x21\x22\x23\x24\x25\x26\x27"
3707 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3708 "\x30\x31\x32\x33\x34\x35\x36\x37"
3709 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3710 "\x40\x41\x42\x43\x44\x45\x46\x47"
3711 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3712 "\x50\x51\x52\x53\x54\x55\x56\x57"
3713 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3714 "\x60\x61\x62\x63\x64\x65\x66\x67"
3715 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3716 "\x70\x71\x72\x73\x74\x75\x76\x77"
3717 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3718 "\x80\x81\x82\x83\x84\x85\x86\x87"
3719 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3720 "\x90\x91\x92\x93\x94\x95\x96\x97"
3721 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3722 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3723 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3724 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3725 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3726 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3727 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3728 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3729 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3730 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3731 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3732 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3733 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3734 "\x00\x01\x02\x03\x04\x05\x06\x07"
3735 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3736 "\x10\x11\x12\x13\x14\x15\x16\x17"
3737 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3738 "\x20\x21\x22\x23\x24\x25\x26\x27"
3739 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3740 "\x30\x31\x32\x33\x34\x35\x36\x37"
3741 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3742 "\x40\x41\x42\x43\x44\x45\x46\x47"
3743 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3744 "\x50\x51\x52\x53\x54\x55\x56\x57"
3745 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3746 "\x60\x61\x62\x63\x64\x65\x66\x67"
3747 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3748 "\x70\x71\x72\x73\x74\x75\x76\x77"
3749 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3750 "\x80\x81\x82\x83\x84\x85\x86\x87"
3751 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3752 "\x90\x91\x92\x93\x94\x95\x96\x97"
3753 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3754 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3755 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3756 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3757 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3758 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3759 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3760 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3761 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3762 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3763 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3764 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3765 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
Rik Snelf19f5112007-09-19 20:23:13 +08003766 .rlen = 512,
3767 }
3768};
3769
Joy Latten23e353c2007-10-23 08:50:32 +08003770
3771static struct cipher_testvec aes_ctr_enc_tv_template[] = {
3772 { /* From RFC 3686 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003773 .key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
3774 "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
3775 "\x00\x00\x00\x30",
Joy Latten23e353c2007-10-23 08:50:32 +08003776 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003777 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
3778 .input = "Single block msg",
Joy Latten23e353c2007-10-23 08:50:32 +08003779 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003780 .result = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
3781 "\x2d\x61\x75\xa3\x26\x13\x11\xb8",
Joy Latten23e353c2007-10-23 08:50:32 +08003782 .rlen = 16,
3783 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003784 .key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
3785 "\x43\xd6\xce\x1f\x32\x53\x91\x63"
3786 "\x00\x6c\xb6\xdb",
Joy Latten23e353c2007-10-23 08:50:32 +08003787 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003788 .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
3789 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3790 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3791 "\x10\x11\x12\x13\x14\x15\x16\x17"
3792 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
3793 .ilen = 32,
3794 .result = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
3795 "\x79\x0d\x41\xee\x8e\xda\xd3\x88"
3796 "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
3797 "\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
Joy Latten23e353c2007-10-23 08:50:32 +08003798 .rlen = 32,
3799 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003800 .key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
3801 "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
3802 "\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
3803 "\x00\x00\x00\x48",
3804 .klen = 28,
3805 .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
3806 .input = "Single block msg",
3807 .ilen = 16,
3808 .result = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
3809 "\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
Joy Latten23e353c2007-10-23 08:50:32 +08003810 .rlen = 16,
3811 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003812 .key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
3813 "\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
3814 "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
3815 "\x00\x96\xb0\x3b",
Joy Latten23e353c2007-10-23 08:50:32 +08003816 .klen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003817 .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
3818 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3819 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3820 "\x10\x11\x12\x13\x14\x15\x16\x17"
3821 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Joy Latten23e353c2007-10-23 08:50:32 +08003822 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003823 .result = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
3824 "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
3825 "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
3826 "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
3827 .rlen = 32,
Joy Latten23e353c2007-10-23 08:50:32 +08003828 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003829 .key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
3830 "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
3831 "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
3832 "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
3833 "\x00\x00\x00\x60",
Joy Latten23e353c2007-10-23 08:50:32 +08003834 .klen = 36,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003835 .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
3836 .input = "Single block msg",
Joy Latten23e353c2007-10-23 08:50:32 +08003837 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003838 .result = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
3839 "\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
3840 .rlen = 16,
Joy Latten23e353c2007-10-23 08:50:32 +08003841 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003842 .key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
3843 "\x07\x96\x36\x58\x79\xef\xf8\x86"
3844 "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
3845 "\x4b\x50\x59\x0c\x87\xa2\x38\x84"
3846 "\x00\xfa\xac\x24",
3847 .klen = 36,
3848 .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
3849 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3850 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3851 "\x10\x11\x12\x13\x14\x15\x16\x17"
3852 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Joy Latten23e353c2007-10-23 08:50:32 +08003853 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003854 .result = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
3855 "\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
3856 "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
3857 "\x55\x30\x83\x1d\x93\x44\xaf\x1c",
Joy Latten23e353c2007-10-23 08:50:32 +08003858 .rlen = 32,
Tan Swee Henga773edb2007-11-30 00:36:07 +11003859 }, {
3860 // generated using Crypto++
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003861 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
3862 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3863 "\x10\x11\x12\x13\x14\x15\x16\x17"
3864 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3865 "\x00\x00\x00\x00",
Tan Swee Henga773edb2007-11-30 00:36:07 +11003866 .klen = 32 + 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003867 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
3868 .input =
3869 "\x00\x01\x02\x03\x04\x05\x06\x07"
3870 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3871 "\x10\x11\x12\x13\x14\x15\x16\x17"
3872 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3873 "\x20\x21\x22\x23\x24\x25\x26\x27"
3874 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3875 "\x30\x31\x32\x33\x34\x35\x36\x37"
3876 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3877 "\x40\x41\x42\x43\x44\x45\x46\x47"
3878 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3879 "\x50\x51\x52\x53\x54\x55\x56\x57"
3880 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3881 "\x60\x61\x62\x63\x64\x65\x66\x67"
3882 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3883 "\x70\x71\x72\x73\x74\x75\x76\x77"
3884 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3885 "\x80\x81\x82\x83\x84\x85\x86\x87"
3886 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3887 "\x90\x91\x92\x93\x94\x95\x96\x97"
3888 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3889 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3890 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3891 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3892 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3893 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3894 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3895 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3896 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3897 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3898 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3899 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3900 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3901 "\x00\x03\x06\x09\x0c\x0f\x12\x15"
3902 "\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
3903 "\x30\x33\x36\x39\x3c\x3f\x42\x45"
3904 "\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
3905 "\x60\x63\x66\x69\x6c\x6f\x72\x75"
3906 "\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
3907 "\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
3908 "\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
3909 "\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
3910 "\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
3911 "\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
3912 "\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
3913 "\x20\x23\x26\x29\x2c\x2f\x32\x35"
3914 "\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
3915 "\x50\x53\x56\x59\x5c\x5f\x62\x65"
3916 "\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
3917 "\x80\x83\x86\x89\x8c\x8f\x92\x95"
3918 "\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
3919 "\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
3920 "\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
3921 "\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
3922 "\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
3923 "\x10\x13\x16\x19\x1c\x1f\x22\x25"
3924 "\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
3925 "\x40\x43\x46\x49\x4c\x4f\x52\x55"
3926 "\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
3927 "\x70\x73\x76\x79\x7c\x7f\x82\x85"
3928 "\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
3929 "\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
3930 "\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
3931 "\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
3932 "\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
3933 "\x00\x05\x0a\x0f\x14\x19\x1e\x23"
3934 "\x28\x2d\x32\x37\x3c\x41\x46\x4b"
3935 "\x50\x55\x5a\x5f\x64\x69\x6e\x73"
3936 "\x78\x7d\x82\x87\x8c\x91\x96\x9b"
3937 "\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
3938 "\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
3939 "\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
3940 "\x18\x1d\x22\x27\x2c\x31\x36\x3b"
3941 "\x40\x45\x4a\x4f\x54\x59\x5e\x63"
3942 "\x68\x6d\x72\x77\x7c\x81\x86\x8b"
3943 "\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
3944 "\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
3945 "\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
3946 "\x08\x0d\x12\x17\x1c\x21\x26\x2b"
3947 "\x30\x35\x3a\x3f\x44\x49\x4e\x53"
3948 "\x58\x5d\x62\x67\x6c\x71\x76\x7b"
3949 "\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
3950 "\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
3951 "\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
3952 "\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
3953 "\x20\x25\x2a\x2f\x34\x39\x3e\x43"
3954 "\x48\x4d\x52\x57\x5c\x61\x66\x6b"
3955 "\x70\x75\x7a\x7f\x84\x89\x8e\x93"
3956 "\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
3957 "\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
3958 "\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
3959 "\x10\x15\x1a\x1f\x24\x29\x2e\x33"
3960 "\x38\x3d\x42\x47\x4c\x51\x56\x5b"
3961 "\x60\x65\x6a\x6f\x74\x79\x7e\x83"
3962 "\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
3963 "\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
3964 "\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
3965 "\x00\x07\x0e\x15\x1c\x23\x2a\x31"
3966 "\x38\x3f\x46\x4d\x54\x5b\x62\x69"
3967 "\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
3968 "\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
3969 "\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
3970 "\x18\x1f\x26\x2d\x34\x3b\x42\x49"
3971 "\x50\x57\x5e\x65\x6c\x73\x7a\x81"
3972 "\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
3973 "\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
3974 "\xf8\xff\x06\x0d\x14\x1b\x22\x29"
3975 "\x30\x37\x3e\x45\x4c\x53\x5a\x61"
3976 "\x68\x6f\x76\x7d\x84\x8b\x92\x99"
3977 "\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
3978 "\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
3979 "\x10\x17\x1e\x25\x2c\x33\x3a\x41"
3980 "\x48\x4f\x56\x5d\x64\x6b\x72\x79"
3981 "\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
3982 "\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
3983 "\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
3984 "\x28\x2f\x36\x3d\x44\x4b\x52\x59"
3985 "\x60\x67\x6e\x75\x7c\x83\x8a\x91"
3986 "\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
3987 "\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
3988 "\x08\x0f\x16\x1d\x24\x2b\x32\x39"
3989 "\x40\x47\x4e\x55\x5c\x63\x6a\x71"
3990 "\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
3991 "\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
3992 "\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
3993 "\x20\x27\x2e\x35\x3c\x43\x4a\x51"
3994 "\x58\x5f\x66\x6d\x74\x7b\x82\x89"
3995 "\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
3996 "\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
3997 "\x00\x09\x12\x1b\x24\x2d\x36\x3f"
3998 "\x48\x51\x5a\x63\x6c\x75\x7e\x87"
3999 "\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
4000 "\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
4001 "\x20\x29\x32\x3b\x44\x4d\x56\x5f"
4002 "\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
4003 "\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
4004 "\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
4005 "\x40\x49\x52\x5b\x64\x6d\x76\x7f"
4006 "\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
4007 "\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
4008 "\x18\x21\x2a\x33\x3c\x45\x4e\x57"
4009 "\x60\x69\x72\x7b\x84\x8d\x96\x9f"
4010 "\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
4011 "\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
4012 "\x38\x41\x4a\x53\x5c\x65\x6e\x77"
4013 "\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
4014 "\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
4015 "\x10\x19\x22\x2b\x34\x3d\x46\x4f"
4016 "\x58\x61\x6a\x73\x7c\x85\x8e\x97"
4017 "\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
4018 "\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
4019 "\x30\x39\x42\x4b\x54\x5d\x66\x6f"
4020 "\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
4021 "\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
4022 "\x08\x11\x1a\x23\x2c\x35\x3e\x47"
4023 "\x50\x59\x62\x6b\x74\x7d\x86\x8f"
4024 "\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
4025 "\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
4026 "\x28\x31\x3a\x43\x4c\x55\x5e\x67"
4027 "\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
4028 "\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
4029 "\x00\x0b\x16\x21\x2c\x37\x42\x4d"
4030 "\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
4031 "\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
4032 "\x08\x13\x1e\x29\x34\x3f\x4a\x55"
4033 "\x60\x6b\x76\x81\x8c\x97\xa2\xad"
4034 "\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
4035 "\x10\x1b\x26\x31\x3c\x47\x52\x5d"
4036 "\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
4037 "\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
4038 "\x18\x23\x2e\x39\x44\x4f\x5a\x65"
4039 "\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
4040 "\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
4041 "\x20\x2b\x36\x41\x4c\x57\x62\x6d"
4042 "\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
4043 "\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
4044 "\x28\x33\x3e\x49\x54\x5f\x6a\x75"
4045 "\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
4046 "\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
4047 "\x30\x3b\x46\x51\x5c\x67\x72\x7d"
4048 "\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
4049 "\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
4050 "\x38\x43\x4e\x59\x64\x6f\x7a\x85"
4051 "\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
4052 "\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
4053 "\x40\x4b\x56\x61\x6c\x77\x82\x8d"
4054 "\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
4055 "\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
4056 "\x48\x53\x5e\x69\x74\x7f\x8a\x95"
4057 "\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
4058 "\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
4059 "\x50\x5b\x66\x71\x7c\x87\x92\x9d"
4060 "\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
4061 "\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
4062 "\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
4063 "\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
4064 "\x38\x45\x52\x5f\x6c\x79\x86\x93"
4065 "\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
4066 "\x08\x15\x22\x2f\x3c\x49\x56\x63"
4067 "\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
4068 "\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
4069 "\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
4070 "\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
4071 "\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
4072 "\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
4073 "\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
4074 "\x48\x55\x62\x6f\x7c\x89\x96\xa3"
4075 "\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
4076 "\x18\x25\x32\x3f\x4c\x59\x66\x73"
4077 "\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
4078 "\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
4079 "\x50\x5d\x6a\x77\x84\x91\x9e\xab"
4080 "\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
4081 "\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
4082 "\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
4083 "\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
4084 "\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
4085 "\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
4086 "\x28\x35\x42\x4f\x5c\x69\x76\x83"
4087 "\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
4088 "\xf8\x05\x12\x1f\x2c\x39\x46\x53"
4089 "\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
4090 "\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
4091 "\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
4092 "\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
4093 "\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
4094 "\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
4095 "\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
4096 "\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
4097 "\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
4098 "\x58\x67\x76\x85\x94\xa3\xb2\xc1"
4099 "\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
4100 "\x48\x57\x66\x75\x84\x93\xa2\xb1"
4101 "\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
4102 "\x38\x47\x56\x65\x74\x83\x92\xa1"
4103 "\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
4104 "\x28\x37\x46\x55\x64\x73\x82\x91"
4105 "\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
4106 "\x18\x27\x36\x45\x54\x63\x72\x81"
4107 "\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
4108 "\x08\x17\x26\x35\x44\x53\x62\x71"
4109 "\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
4110 "\xf8\x07\x16\x25\x34\x43\x52\x61"
4111 "\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
4112 "\xe8\xf7\x06\x15\x24\x33\x42\x51"
4113 "\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
4114 "\xd8\xe7\xf6\x05\x14\x23\x32\x41"
4115 "\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
4116 "\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
4117 "\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
4118 "\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
4119 "\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
4120 "\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
4121 "\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
4122 "\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
4123 "\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
4124 "\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
4125 "\x00\x11\x22\x33\x44\x55\x66\x77"
4126 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
4127 "\x10\x21\x32\x43\x54\x65\x76\x87"
4128 "\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
4129 "\x20\x31\x42\x53\x64\x75\x86\x97"
4130 "\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
4131 "\x30\x41\x52\x63\x74\x85\x96\xa7"
4132 "\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
4133 "\x40\x51\x62\x73\x84\x95\xa6\xb7"
4134 "\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
4135 "\x50\x61\x72\x83\x94\xa5\xb6\xc7"
4136 "\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
4137 "\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
4138 "\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
4139 "\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
4140 "\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
4141 "\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
4142 "\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
4143 "\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
4144 "\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
4145 "\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
4146 "\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
4147 "\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
4148 "\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
4149 "\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
4150 "\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
4151 "\xd0\xe1\xf2\x03\x14\x25\x36\x47"
4152 "\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
4153 "\xe0\xf1\x02\x13\x24\x35\x46\x57"
4154 "\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
4155 "\xf0\x01\x12\x23\x34\x45\x56\x67"
4156 "\x78\x89\x9a\xab\xbc\xcd\xde\xef"
4157 "\x00\x13\x26\x39\x4c\x5f\x72\x85"
4158 "\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
4159 "\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
4160 "\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
4161 "\x60\x73\x86\x99\xac\xbf\xd2\xe5"
4162 "\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
4163 "\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
4164 "\x28\x3b\x4e\x61\x74\x87\x9a\xad"
4165 "\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
4166 "\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
4167 "\xf0\x03\x16\x29\x3c\x4f\x62\x75"
4168 "\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
4169 "\x20\x33\x46\x59\x6c\x7f\x92\xa5"
4170 "\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
4171 "\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
4172 "\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
4173 "\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
4174 "\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
4175 "\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
4176 "\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
4177 "\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
4178 "\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
4179 "\x10\x23\x36\x49\x5c\x6f\x82\x95"
4180 "\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
4181 "\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
4182 "\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
4183 "\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
4184 "\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
4185 "\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
4186 "\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
4187 "\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
4188 "\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
4189 "\x00\x15\x2a\x3f\x54\x69\x7e\x93"
4190 "\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
4191 "\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
4192 "\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
4193 "\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
4194 "\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
4195 "\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
4196 "\x98\xad\xc2\xd7\xec\x01\x16\x2b"
4197 "\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
4198 "\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
4199 "\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
4200 "\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
4201 "\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
4202 "\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
4203 "\x30\x45\x5a\x6f\x84\x99\xae\xc3"
4204 "\xd8\xed\x02\x17\x2c\x41\x56\x6b"
4205 "\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
4206 "\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
4207 "\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
4208 "\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
4209 "\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
4210 "\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
4211 "\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
4212 "\x18\x2d\x42\x57\x6c\x81\x96\xab"
4213 "\xc0\xd5\xea\xff\x14\x29\x3e\x53"
4214 "\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
4215 "\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
4216 "\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
4217 "\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
4218 "\x08\x1d\x32\x47\x5c\x71\x86\x9b"
4219 "\xb0\xc5\xda\xef\x04\x19\x2e\x43"
4220 "\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
4221 "\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
4222 "\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
4223 "\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
4224 "\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
4225 "\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
4226 "\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
4227 "\x50\x67\x7e\x95\xac\xc3\xda\xf1"
4228 "\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
4229 "\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
4230 "\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
4231 "\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
4232 "\xe8\xff\x16\x2d\x44\x5b\x72\x89"
4233 "\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
4234 "\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
4235 "\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
4236 "\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
4237 "\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
4238 "\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
4239 "\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
4240 "\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
4241 "\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
4242 "\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
4243 "\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
4244 "\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
4245 "\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
4246 "\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
4247 "\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
4248 "\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
4249 "\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
4250 "\xd8\xef\x06\x1d\x34\x4b\x62\x79"
4251 "\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
4252 "\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
4253 "\x00\x19\x32\x4b\x64\x7d\x96\xaf"
4254 "\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
4255 "\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
4256 "\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
4257 "\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
4258 "\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
4259 "\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
4260 "\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
4261 "\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
4262 "\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
4263 "\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
4264 "\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
4265 "\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
4266 "\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
4267 "\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
4268 "\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
4269 "\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
4270 "\x48\x61\x7a\x93\xac\xc5\xde\xf7"
4271 "\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
4272 "\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
4273 "\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
4274 "\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
4275 "\x30\x49\x62\x7b\x94\xad\xc6\xdf"
4276 "\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
4277 "\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
4278 "\x88\xa1\xba\xd3\xec\x05\x1e\x37"
4279 "\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
4280 "\x18\x31\x4a\x63\x7c\x95\xae\xc7"
4281 "\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
4282 "\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
4283 "\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
4284 "\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
4285 "\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
4286 "\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
4287 "\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
4288 "\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
4289 "\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
4290 "\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
4291 "\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
4292 "\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
4293 "\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
4294 "\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
4295 "\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
4296 "\x48\x63\x7e\x99\xb4\xcf\xea\x05"
4297 "\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
4298 "\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
4299 "\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
4300 "\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
4301 "\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
4302 "\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
4303 "\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
4304 "\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
4305 "\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
4306 "\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
4307 "\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
4308 "\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
4309 "\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
4310 "\x18\x33\x4e\x69\x84\x9f\xba\xd5"
4311 "\xf0\x0b\x26\x41\x5c\x77\x92\xad"
4312 "\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
4313 "\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
4314 "\x78\x93\xae\xc9\xe4\xff\x1a\x35"
4315 "\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
4316 "\x28\x43\x5e\x79\x94\xaf\xca\xe5"
4317 "\x00\x1d\x3a\x57\x74\x91\xae\xcb"
4318 "\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
4319 "\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
4320 "\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
4321 "\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
4322 "\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
4323 "\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
4324 "\x58\x75\x92\xaf\xcc\xe9\x06\x23"
4325 "\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
4326 "\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
4327 "\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
4328 "\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
4329 "\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
4330 "\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
4331 "\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
4332 "\x98\xb5\xd2\xef\x0c\x29\x46\x63"
4333 "\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
4334 "\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
4335 "\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
4336 "\x38\x55\x72\x8f\xac\xc9\xe6\x03"
4337 "\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
4338 "\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
4339 "\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
4340 "\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
4341 "\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
4342 "\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
4343 "\x90\xad\xca\xe7\x04\x21\x3e\x5b"
4344 "\x78\x95\xb2\xcf\xec\x09\x26\x43"
4345 "\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
4346 "\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
4347 "\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
4348 "\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
4349 "\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
4350 "\xf8\x17\x36\x55\x74\x93\xb2\xd1"
4351 "\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
4352 "\xe8\x07\x26\x45\x64\x83\xa2\xc1"
4353 "\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
4354 "\xd8\xf7\x16\x35\x54\x73\x92\xb1"
4355 "\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
4356 "\xc8\xe7\x06\x25\x44\x63\x82\xa1"
4357 "\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
4358 "\xb8\xd7\xf6\x15\x34\x53\x72\x91"
4359 "\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
4360 "\xa8\xc7\xe6\x05\x24\x43\x62\x81"
4361 "\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
4362 "\x98\xb7\xd6\xf5\x14\x33\x52\x71"
4363 "\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
4364 "\x88\xa7\xc6\xe5\x04\x23\x42\x61"
4365 "\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
4366 "\x78\x97\xb6\xd5\xf4\x13\x32\x51"
4367 "\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
4368 "\x68\x87\xa6\xc5\xe4\x03\x22\x41"
4369 "\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
4370 "\x58\x77\x96\xb5\xd4\xf3\x12\x31"
4371 "\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
4372 "\x48\x67\x86\xa5\xc4\xe3\x02\x21"
4373 "\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
4374 "\x38\x57\x76\x95\xb4\xd3\xf2\x11"
4375 "\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
4376 "\x28\x47\x66\x85\xa4\xc3\xe2\x01"
4377 "\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
4378 "\x18\x37\x56\x75\x94\xb3\xd2\xf1"
4379 "\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
4380 "\x08\x27\x46\x65\x84\xa3\xc2\xe1"
4381 "\x00\x21\x42\x63",
Tan Swee Henga773edb2007-11-30 00:36:07 +11004382 .ilen = 4100,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004383 .result =
4384 "\xf0\x5c\x74\xad\x4e\xbc\x99\xe2"
4385 "\xae\xff\x91\x3a\x44\xcf\x38\x32"
4386 "\x1e\xad\xa7\xcd\xa1\x39\x95\xaa"
4387 "\x10\xb1\xb3\x2e\x04\x31\x8f\x86"
4388 "\xf2\x62\x74\x70\x0c\xa4\x46\x08"
4389 "\xa8\xb7\x99\xa8\xe9\xd2\x73\x79"
4390 "\x7e\x6e\xd4\x8f\x1e\xc7\x8e\x31"
4391 "\x0b\xfa\x4b\xce\xfd\xf3\x57\x71"
4392 "\xe9\x46\x03\xa5\x3d\x34\x00\xe2"
4393 "\x18\xff\x75\x6d\x06\x2d\x00\xab"
4394 "\xb9\x3e\x6c\x59\xc5\x84\x06\xb5"
4395 "\x8b\xd0\x89\x9c\x4a\x79\x16\xc6"
4396 "\x3d\x74\x54\xfa\x44\xcd\x23\x26"
4397 "\x5c\xcf\x7e\x28\x92\x32\xbf\xdf"
4398 "\xa7\x20\x3c\x74\x58\x2a\x9a\xde"
4399 "\x61\x00\x1c\x4f\xff\x59\xc4\x22"
4400 "\xac\x3c\xd0\xe8\x6c\xf9\x97\x1b"
4401 "\x58\x9b\xad\x71\xe8\xa9\xb5\x0d"
4402 "\xee\x2f\x04\x1f\x7f\xbc\x99\xee"
4403 "\x84\xff\x42\x60\xdc\x3a\x18\xa5"
4404 "\x81\xf9\xef\xdc\x7a\x0f\x65\x41"
4405 "\x2f\xa3\xd3\xf9\xc2\xcb\xc0\x4d"
4406 "\x8f\xd3\x76\x96\xad\x49\x6d\x38"
4407 "\x3d\x39\x0b\x6c\x80\xb7\x54\x69"
4408 "\xf0\x2c\x90\x02\x29\x0d\x1c\x12"
4409 "\xad\x55\xc3\x8b\x68\xd9\xcc\xb3"
4410 "\xb2\x64\x33\x90\x5e\xca\x4b\xe2"
4411 "\xfb\x75\xdc\x63\xf7\x9f\x82\x74"
4412 "\xf0\xc9\xaa\x7f\xe9\x2a\x9b\x33"
4413 "\xbc\x88\x00\x7f\xca\xb2\x1f\x14"
4414 "\xdb\xc5\x8e\x7b\x11\x3c\x3e\x08"
4415 "\xf3\x83\xe8\xe0\x94\x86\x2e\x92"
4416 "\x78\x6b\x01\xc9\xc7\x83\xba\x21"
4417 "\x6a\x25\x15\x33\x4e\x45\x08\xec"
4418 "\x35\xdb\xe0\x6e\x31\x51\x79\xa9"
4419 "\x42\x44\x65\xc1\xa0\xf1\xf9\x2a"
4420 "\x70\xd5\xb6\xc6\xc1\x8c\x39\xfc"
4421 "\x25\xa6\x55\xd9\xdd\x2d\x4c\xec"
4422 "\x49\xc6\xeb\x0e\xa8\x25\x2a\x16"
4423 "\x1b\x66\x84\xda\xe2\x92\xe5\xc0"
4424 "\xc8\x53\x07\xaf\x80\x84\xec\xfd"
4425 "\xcd\xd1\x6e\xcd\x6f\x6a\xf5\x36"
4426 "\xc5\x15\xe5\x25\x7d\x77\xd1\x1a"
4427 "\x93\x36\xa9\xcf\x7c\xa4\x54\x4a"
4428 "\x06\x51\x48\x4e\xf6\x59\x87\xd2"
4429 "\x04\x02\xef\xd3\x44\xde\x76\x31"
4430 "\xb3\x34\x17\x1b\x9d\x66\x11\x9f"
4431 "\x1e\xcc\x17\xe9\xc7\x3c\x1b\xe7"
4432 "\xcb\x50\x08\xfc\xdc\x2b\x24\xdb"
4433 "\x65\x83\xd0\x3b\xe3\x30\xea\x94"
4434 "\x6c\xe7\xe8\x35\x32\xc7\xdb\x64"
4435 "\xb4\x01\xab\x36\x2c\x77\x13\xaf"
4436 "\xf8\x2b\x88\x3f\x54\x39\xc4\x44"
4437 "\xfe\xef\x6f\x68\x34\xbe\x0f\x05"
4438 "\x16\x6d\xf6\x0a\x30\xe7\xe3\xed"
4439 "\xc4\xde\x3c\x1b\x13\xd8\xdb\xfe"
4440 "\x41\x62\xe5\x28\xd4\x8d\xa3\xc7"
4441 "\x93\x97\xc6\x48\x45\x1d\x9f\x83"
4442 "\xdf\x4b\x40\x3e\x42\x25\x87\x80"
4443 "\x4c\x7d\xa8\xd4\x98\x23\x95\x75"
4444 "\x41\x8c\xda\x41\x9b\xd4\xa7\x06"
4445 "\xb5\xf1\x71\x09\x53\xbe\xca\xbf"
4446 "\x32\x03\xed\xf0\x50\x1c\x56\x39"
4447 "\x5b\xa4\x75\x18\xf7\x9b\x58\xef"
4448 "\x53\xfc\x2a\x38\x23\x15\x75\xcd"
4449 "\x45\xe5\x5a\x82\x55\xba\x21\xfa"
4450 "\xd4\xbd\xc6\x94\x7c\xc5\x80\x12"
4451 "\xf7\x4b\x32\xc4\x9a\x82\xd8\x28"
4452 "\x8f\xd9\xc2\x0f\x60\x03\xbe\x5e"
4453 "\x21\xd6\x5f\x58\xbf\x5c\xb1\x32"
4454 "\x82\x8d\xa9\xe5\xf2\x66\x1a\xc0"
4455 "\xa0\xbc\x58\x2f\x71\xf5\x2f\xed"
4456 "\xd1\x26\xb9\xd8\x49\x5a\x07\x19"
4457 "\x01\x7c\x59\xb0\xf8\xa4\xb7\xd3"
4458 "\x7b\x1a\x8c\x38\xf4\x50\xa4\x59"
4459 "\xb0\xcc\x41\x0b\x88\x7f\xe5\x31"
4460 "\xb3\x42\xba\xa2\x7e\xd4\x32\x71"
4461 "\x45\x87\x48\xa9\xc2\xf2\x89\xb3"
4462 "\xe4\xa7\x7e\x52\x15\x61\xfa\xfe"
4463 "\xc9\xdd\x81\xeb\x13\xab\xab\xc3"
4464 "\x98\x59\xd8\x16\x3d\x14\x7a\x1c"
4465 "\x3c\x41\x9a\x16\x16\x9b\xd2\xd2"
4466 "\x69\x3a\x29\x23\xac\x86\x32\xa5"
4467 "\x48\x9c\x9e\xf3\x47\x77\x81\x70"
4468 "\x24\xe8\x85\xd2\xf5\xb5\xfa\xff"
4469 "\x59\x6a\xd3\x50\x59\x43\x59\xde"
4470 "\xd9\xf1\x55\xa5\x0c\xc3\x1a\x1a"
4471 "\x18\x34\x0d\x1a\x63\x33\xed\x10"
4472 "\xe0\x1d\x2a\x18\xd2\xc0\x54\xa8"
4473 "\xca\xb5\x9a\xd3\xdd\xca\x45\x84"
4474 "\x50\xe7\x0f\xfe\xa4\x99\x5a\xbe"
4475 "\x43\x2d\x9a\xcb\x92\x3f\x5a\x1d"
4476 "\x85\xd8\xc9\xdf\x68\xc9\x12\x80"
4477 "\x56\x0c\xdc\x00\xdc\x3a\x7d\x9d"
4478 "\xa3\xa2\xe8\x4d\xbf\xf9\x70\xa0"
4479 "\xa4\x13\x4f\x6b\xaf\x0a\x89\x7f"
4480 "\xda\xf0\xbf\x9b\xc8\x1d\xe5\xf8"
4481 "\x2e\x8b\x07\xb5\x73\x1b\xcc\xa2"
4482 "\xa6\xad\x30\xbc\x78\x3c\x5b\x10"
4483 "\xfa\x5e\x62\x2d\x9e\x64\xb3\x33"
4484 "\xce\xf9\x1f\x86\xe7\x8b\xa2\xb8"
4485 "\xe8\x99\x57\x8c\x11\xed\x66\xd9"
4486 "\x3c\x72\xb9\xc3\xe6\x4e\x17\x3a"
4487 "\x6a\xcb\x42\x24\x06\xed\x3e\x4e"
4488 "\xa3\xe8\x6a\x94\xda\x0d\x4e\xd5"
4489 "\x14\x19\xcf\xb6\x26\xd8\x2e\xcc"
4490 "\x64\x76\x38\x49\x4d\xfe\x30\x6d"
4491 "\xe4\xc8\x8c\x7b\xc4\xe0\x35\xba"
4492 "\x22\x6e\x76\xe1\x1a\xf2\x53\xc3"
4493 "\x28\xa2\x82\x1f\x61\x69\xad\xc1"
4494 "\x7b\x28\x4b\x1e\x6c\x85\x95\x9b"
4495 "\x51\xb5\x17\x7f\x12\x69\x8c\x24"
4496 "\xd5\xc7\x5a\x5a\x11\x54\xff\x5a"
4497 "\xf7\x16\xc3\x91\xa6\xf0\xdc\x0a"
4498 "\xb6\xa7\x4a\x0d\x7a\x58\xfe\xa5"
4499 "\xf5\xcb\x8f\x7b\x0e\xea\x57\xe7"
4500 "\xbd\x79\xd6\x1c\x88\x23\x6c\xf2"
4501 "\x4d\x29\x77\x53\x35\x6a\x00\x8d"
4502 "\xcd\xa3\x58\xbe\x77\x99\x18\xf8"
4503 "\xe6\xe1\x8f\xe9\x37\x8f\xe3\xe2"
4504 "\x5a\x8a\x93\x25\xaf\xf3\x78\x80"
4505 "\xbe\xa6\x1b\xc6\xac\x8b\x1c\x91"
4506 "\x58\xe1\x9f\x89\x35\x9d\x1d\x21"
4507 "\x29\x9f\xf4\x99\x02\x27\x0f\xa8"
4508 "\x4f\x79\x94\x2b\x33\x2c\xda\xa2"
4509 "\x26\x39\x83\x94\xef\x27\xd8\x53"
4510 "\x8f\x66\x0d\xe4\x41\x7d\x34\xcd"
4511 "\x43\x7c\x95\x0a\x53\xef\x66\xda"
4512 "\x7e\x9b\xf3\x93\xaf\xd0\x73\x71"
4513 "\xba\x40\x9b\x74\xf8\xd7\xd7\x41"
4514 "\x6d\xaf\x72\x9c\x8d\x21\x87\x3c"
4515 "\xfd\x0a\x90\xa9\x47\x96\x9e\xd3"
4516 "\x88\xee\x73\xcf\x66\x2f\x52\x56"
4517 "\x6d\xa9\x80\x4c\xe2\x6f\x62\x88"
4518 "\x3f\x0e\x54\x17\x48\x80\x5d\xd3"
4519 "\xc3\xda\x25\x3d\xa1\xc8\xcb\x9f"
4520 "\x9b\x70\xb3\xa1\xeb\x04\x52\xa1"
4521 "\xf2\x22\x0f\xfc\xc8\x18\xfa\xf9"
4522 "\x85\x9c\xf1\xac\xeb\x0c\x02\x46"
4523 "\x75\xd2\xf5\x2c\xe3\xd2\x59\x94"
4524 "\x12\xf3\x3c\xfc\xd7\x92\xfa\x36"
4525 "\xba\x61\x34\x38\x7c\xda\x48\x3e"
4526 "\x08\xc9\x39\x23\x5e\x02\x2c\x1a"
4527 "\x18\x7e\xb4\xd9\xfd\x9e\x40\x02"
4528 "\xb1\x33\x37\x32\xe7\xde\xd6\xd0"
4529 "\x7c\x58\x65\x4b\xf8\x34\x27\x9c"
4530 "\x44\xb4\xbd\xe9\xe9\x4c\x78\x7d"
4531 "\x4b\x9f\xce\xb1\xcd\x47\xa5\x37"
4532 "\xe5\x6d\xbd\xb9\x43\x94\x0a\xd4"
4533 "\xd6\xf9\x04\x5f\xb5\x66\x6c\x1a"
4534 "\x35\x12\xe3\x36\x28\x27\x36\x58"
4535 "\x01\x2b\x79\xe4\xba\x6d\x10\x7d"
4536 "\x65\xdf\x84\x95\xf4\xd5\xb6\x8f"
4537 "\x2b\x9f\x96\x00\x86\x60\xf0\x21"
4538 "\x76\xa8\x6a\x8c\x28\x1c\xb3\x6b"
4539 "\x97\xd7\xb6\x53\x2a\xcc\xab\x40"
4540 "\x9d\x62\x79\x58\x52\xe6\x65\xb7"
4541 "\xab\x55\x67\x9c\x89\x7c\x03\xb0"
4542 "\x73\x59\xc5\x81\xf5\x18\x17\x5c"
4543 "\x89\xf3\x78\x35\x44\x62\x78\x72"
4544 "\xd0\x96\xeb\x31\xe7\x87\x77\x14"
4545 "\x99\x51\xf2\x59\x26\x9e\xb5\xa6"
4546 "\x45\xfe\x6e\xbd\x07\x4c\x94\x5a"
4547 "\xa5\x7d\xfc\xf1\x2b\x77\xe2\xfe"
4548 "\x17\xd4\x84\xa0\xac\xb5\xc7\xda"
4549 "\xa9\x1a\xb6\xf3\x74\x11\xb4\x9d"
4550 "\xfb\x79\x2e\x04\x2d\x50\x28\x83"
4551 "\xbf\xc6\x52\xd3\x34\xd6\xe8\x7a"
4552 "\xb6\xea\xe7\xa8\x6c\x15\x1e\x2c"
4553 "\x57\xbc\x48\x4e\x5f\x5c\xb6\x92"
4554 "\xd2\x49\x77\x81\x6d\x90\x70\xae"
4555 "\x98\xa1\x03\x0d\x6b\xb9\x77\x14"
4556 "\xf1\x4e\x23\xd3\xf8\x68\xbd\xc2"
4557 "\xfe\x04\xb7\x5c\xc5\x17\x60\x8f"
4558 "\x65\x54\xa4\x7a\x42\xdc\x18\x0d"
4559 "\xb5\xcf\x0f\xd3\xc7\x91\x66\x1b"
4560 "\x45\x42\x27\x75\x50\xe5\xee\xb8"
4561 "\x7f\x33\x2c\xba\x4a\x92\x4d\x2c"
4562 "\x3c\xe3\x0d\x80\x01\xba\x0d\x29"
4563 "\xd8\x3c\xe9\x13\x16\x57\xe6\xea"
4564 "\x94\x52\xe7\x00\x4d\x30\xb0\x0f"
4565 "\x35\xb8\xb8\xa7\xb1\xb5\x3b\x44"
4566 "\xe1\x2f\xfd\x88\xed\x43\xe7\x52"
4567 "\x10\x93\xb3\x8a\x30\x6b\x0a\xf7"
4568 "\x23\xc6\x50\x9d\x4a\xb0\xde\xc3"
4569 "\xdc\x9b\x2f\x01\x56\x36\x09\xc5"
4570 "\x2f\x6b\xfe\xf1\xd8\x27\x45\x03"
4571 "\x30\x5e\x5c\x5b\xb4\x62\x0e\x1a"
4572 "\xa9\x21\x2b\x92\x94\x87\x62\x57"
4573 "\x4c\x10\x74\x1a\xf1\x0a\xc5\x84"
4574 "\x3b\x9e\x72\x02\xd7\xcc\x09\x56"
4575 "\xbd\x54\xc1\xf0\xc3\xe3\xb3\xf8"
4576 "\xd2\x0d\x61\xcb\xef\xce\x0d\x05"
4577 "\xb0\x98\xd9\x8e\x4f\xf9\xbc\x93"
4578 "\xa6\xea\xc8\xcf\x10\x53\x4b\xf1"
4579 "\xec\xfc\x89\xf9\x64\xb0\x22\xbf"
4580 "\x9e\x55\x46\x9f\x7c\x50\x8e\x84"
4581 "\x54\x20\x98\xd7\x6c\x40\x1e\xdb"
4582 "\x69\x34\x78\x61\x24\x21\x9c\x8a"
4583 "\xb3\x62\x31\x8b\x6e\xf5\x2a\x35"
4584 "\x86\x13\xb1\x6c\x64\x2e\x41\xa5"
4585 "\x05\xf2\x42\xba\xd2\x3a\x0d\x8e"
4586 "\x8a\x59\x94\x3c\xcf\x36\x27\x82"
4587 "\xc2\x45\xee\x58\xcd\x88\xb4\xec"
4588 "\xde\xb2\x96\x0a\xaf\x38\x6f\x88"
4589 "\xd7\xd8\xe1\xdf\xb9\x96\xa9\x0a"
4590 "\xb1\x95\x28\x86\x20\xe9\x17\x49"
4591 "\xa2\x29\x38\xaa\xa5\xe9\x6e\xf1"
4592 "\x19\x27\xc0\xd5\x2a\x22\xc3\x0b"
4593 "\xdb\x7c\x73\x10\xb9\xba\x89\x76"
4594 "\x54\xae\x7d\x71\xb3\x93\xf6\x32"
4595 "\xe6\x47\x43\x55\xac\xa0\x0d\xc2"
4596 "\x93\x27\x4a\x8e\x0e\x74\x15\xc7"
4597 "\x0b\x85\xd9\x0c\xa9\x30\x7a\x3e"
4598 "\xea\x8f\x85\x6d\x3a\x12\x4f\x72"
4599 "\x69\x58\x7a\x80\xbb\xb5\x97\xf3"
4600 "\xcf\x70\xd2\x5d\xdd\x4d\x21\x79"
4601 "\x54\x4d\xe4\x05\xe8\xbd\xc2\x62"
4602 "\xb1\x3b\x77\x1c\xd6\x5c\xf3\xa0"
4603 "\x79\x00\xa8\x6c\x29\xd9\x18\x24"
4604 "\x36\xa2\x46\xc0\x96\x65\x7f\xbd"
4605 "\x2a\xed\x36\x16\x0c\xaa\x9f\xf4"
4606 "\xc5\xb4\xe2\x12\xed\x69\xed\x4f"
4607 "\x26\x2c\x39\x52\x89\x98\xe7\x2c"
4608 "\x99\xa4\x9e\xa3\x9b\x99\x46\x7a"
4609 "\x3a\xdc\xa8\x59\xa3\xdb\xc3\x3b"
4610 "\x95\x0d\x3b\x09\x6e\xee\x83\x5d"
4611 "\x32\x4d\xed\xab\xfa\x98\x14\x4e"
4612 "\xc3\x15\x45\x53\x61\xc4\x93\xbd"
4613 "\x90\xf4\x99\x95\x4c\xe6\x76\x92"
4614 "\x29\x90\x46\x30\x92\x69\x7d\x13"
4615 "\xf2\xa5\xcd\x69\x49\x44\xb2\x0f"
4616 "\x63\x40\x36\x5f\x09\xe2\x78\xf8"
4617 "\x91\xe3\xe2\xfa\x10\xf7\xc8\x24"
4618 "\xa8\x89\x32\x5c\x37\x25\x1d\xb2"
4619 "\xea\x17\x8a\x0a\xa9\x64\xc3\x7c"
4620 "\x3c\x7c\xbd\xc6\x79\x34\xe7\xe2"
4621 "\x85\x8e\xbf\xf8\xde\x92\xa0\xae"
4622 "\x20\xc4\xf6\xbb\x1f\x38\x19\x0e"
4623 "\xe8\x79\x9c\xa1\x23\xe9\x54\x7e"
4624 "\x37\x2f\xe2\x94\x32\xaf\xa0\x23"
4625 "\x49\xe4\xc0\xb3\xac\x00\x8f\x36"
4626 "\x05\xc4\xa6\x96\xec\x05\x98\x4f"
4627 "\x96\x67\x57\x1f\x20\x86\x1b\x2d"
4628 "\x69\xe4\x29\x93\x66\x5f\xaf\x6b"
4629 "\x88\x26\x2c\x67\x02\x4b\x52\xd0"
4630 "\x83\x7a\x43\x1f\xc0\x71\x15\x25"
4631 "\x77\x65\x08\x60\x11\x76\x4c\x8d"
4632 "\xed\xa9\x27\xc6\xb1\x2a\x2c\x6a"
4633 "\x4a\x97\xf5\xc6\xb7\x70\x42\xd3"
4634 "\x03\xd1\x24\x95\xec\x6d\xab\x38"
4635 "\x72\xce\xe2\x8b\x33\xd7\x51\x09"
4636 "\xdc\x45\xe0\x09\x96\x32\xf3\xc4"
4637 "\x84\xdc\x73\x73\x2d\x1b\x11\x98"
4638 "\xc5\x0e\x69\x28\x94\xc7\xb5\x4d"
4639 "\xc8\x8a\xd0\xaa\x13\x2e\x18\x74"
4640 "\xdd\xd1\x1e\xf3\x90\xe8\xfc\x9a"
4641 "\x72\x4a\x0e\xd1\xe4\xfb\x0d\x96"
4642 "\xd1\x0c\x79\x85\x1b\x1c\xfe\xe1"
4643 "\x62\x8f\x7a\x73\x32\xab\xc8\x18"
4644 "\x69\xe3\x34\x30\xdf\x13\xa6\xe5"
4645 "\xe8\x0e\x67\x7f\x81\x11\xb4\x60"
4646 "\xc7\xbd\x79\x65\x50\xdc\xc4\x5b"
4647 "\xde\x39\xa4\x01\x72\x63\xf3\xd1"
4648 "\x64\x4e\xdf\xfc\x27\x92\x37\x0d"
4649 "\x57\xcd\x11\x4f\x11\x04\x8e\x1d"
4650 "\x16\xf7\xcd\x92\x9a\x99\x30\x14"
4651 "\xf1\x7c\x67\x1b\x1f\x41\x0b\xe8"
4652 "\x32\xe8\xb8\xc1\x4f\x54\x86\x4f"
4653 "\xe5\x79\x81\x73\xcd\x43\x59\x68"
4654 "\x73\x02\x3b\x78\x21\x72\x43\x00"
4655 "\x49\x17\xf7\x00\xaf\x68\x24\x53"
4656 "\x05\x0a\xc3\x33\xe0\x33\x3f\x69"
4657 "\xd2\x84\x2f\x0b\xed\xde\x04\xf4"
4658 "\x11\x94\x13\x69\x51\x09\x28\xde"
4659 "\x57\x5c\xef\xdc\x9a\x49\x1c\x17"
4660 "\x97\xf3\x96\xc1\x7f\x5d\x2e\x7d"
4661 "\x55\xb8\xb3\x02\x09\xb3\x1f\xe7"
4662 "\xc9\x8d\xa3\x36\x34\x8a\x77\x13"
4663 "\x30\x63\x4c\xa5\xcd\xc3\xe0\x7e"
4664 "\x05\xa1\x7b\x0c\xcb\x74\x47\x31"
4665 "\x62\x03\x43\xf1\x87\xb4\xb0\x85"
4666 "\x87\x8e\x4b\x25\xc7\xcf\xae\x4b"
4667 "\x36\x46\x3e\x62\xbc\x6f\xeb\x5f"
4668 "\x73\xac\xe6\x07\xee\xc1\xa1\xd6"
4669 "\xc4\xab\xc9\xd6\x89\x45\xe1\xf1"
4670 "\x04\x4e\x1a\x6f\xbb\x4f\x3a\xa3"
4671 "\xa0\xcb\xa3\x0a\xd8\x71\x35\x55"
4672 "\xe4\xbc\x2e\x04\x06\xe6\xff\x5b"
4673 "\x1c\xc0\x11\x7c\xc5\x17\xf3\x38"
4674 "\xcf\xe9\xba\x0f\x0e\xef\x02\xc2"
4675 "\x8d\xc6\xbc\x4b\x67\x20\x95\xd7"
4676 "\x2c\x45\x5b\x86\x44\x8c\x6f\x2e"
4677 "\x7e\x9f\x1c\x77\xba\x6b\x0e\xa3"
4678 "\x69\xdc\xab\x24\x57\x60\x47\xc1"
4679 "\xd1\xa5\x9d\x23\xe6\xb1\x37\xfe"
4680 "\x93\xd2\x4c\x46\xf9\x0c\xc6\xfb"
4681 "\xd6\x9d\x99\x69\xab\x7a\x07\x0c"
4682 "\x65\xe7\xc4\x08\x96\xe2\xa5\x01"
4683 "\x3f\x46\x07\x05\x7e\xe8\x9a\x90"
4684 "\x50\xdc\xe9\x7a\xea\xa1\x39\x6e"
4685 "\x66\xe4\x6f\xa5\x5f\xb2\xd9\x5b"
4686 "\xf5\xdb\x2a\x32\xf0\x11\x6f\x7c"
4687 "\x26\x10\x8f\x3d\x80\xe9\x58\xf7"
4688 "\xe0\xa8\x57\xf8\xdb\x0e\xce\x99"
4689 "\x63\x19\x3d\xd5\xec\x1b\x77\x69"
4690 "\x98\xf6\xe4\x5f\x67\x17\x4b\x09"
4691 "\x85\x62\x82\x70\x18\xe2\x9a\x78"
4692 "\xe2\x62\xbd\xb4\xf1\x42\xc6\xfb"
4693 "\x08\xd0\xbd\xeb\x4e\x09\xf2\xc8"
4694 "\x1e\xdc\x3d\x32\x21\x56\x9c\x4f"
4695 "\x35\xf3\x61\x06\x72\x84\xc4\x32"
4696 "\xf2\xf1\xfa\x0b\x2f\xc3\xdb\x02"
4697 "\x04\xc2\xde\x57\x64\x60\x8d\xcf"
4698 "\xcb\x86\x5d\x97\x3e\xb1\x9c\x01"
4699 "\xd6\x28\x8f\x99\xbc\x46\xeb\x05"
4700 "\xaf\x7e\xb8\x21\x2a\x56\x85\x1c"
4701 "\xb3\x71\xa0\xde\xca\x96\xf1\x78"
4702 "\x49\xa2\x99\x81\x80\x5c\x01\xf5"
4703 "\xa0\xa2\x56\x63\xe2\x70\x07\xa5"
4704 "\x95\xd6\x85\xeb\x36\x9e\xa9\x51"
4705 "\x66\x56\x5f\x1d\x02\x19\xe2\xf6"
4706 "\x4f\x73\x38\x09\x75\x64\x48\xe0"
4707 "\xf1\x7e\x0e\xe8\x9d\xf9\xed\x94"
4708 "\xfe\x16\x26\x62\x49\x74\xf4\xb0"
4709 "\xd4\xa9\x6c\xb0\xfd\x53\xe9\x81"
4710 "\xe0\x7a\xbf\xcf\xb5\xc4\x01\x81"
4711 "\x79\x99\x77\x01\x3b\xe9\xa2\xb6"
4712 "\xe6\x6a\x8a\x9e\x56\x1c\x8d\x1e"
4713 "\x8f\x06\x55\x2c\x6c\xdc\x92\x87"
4714 "\x64\x3b\x4b\x19\xa1\x13\x64\x1d"
4715 "\x4a\xe9\xc0\x00\xb8\x95\xef\x6b"
4716 "\x1a\x86\x6d\x37\x52\x02\xc2\xe0"
4717 "\xc8\xbb\x42\x0c\x02\x21\x4a\xc9"
4718 "\xef\xa0\x54\xe4\x5e\x16\x53\x81"
4719 "\x70\x62\x10\xaf\xde\xb8\xb5\xd3"
4720 "\xe8\x5e\x6c\xc3\x8a\x3e\x18\x07"
4721 "\xf2\x2f\x7d\xa7\xe1\x3d\x4e\xb4"
4722 "\x26\xa7\xa3\x93\x86\xb2\x04\x1e"
4723 "\x53\x5d\x86\xd6\xde\x65\xca\xe3"
4724 "\x4e\xc1\xcf\xef\xc8\x70\x1b\x83"
4725 "\x13\xdd\x18\x8b\x0d\x76\xd2\xf6"
4726 "\x37\x7a\x93\x7a\x50\x11\x9f\x96"
4727 "\x86\x25\xfd\xac\xdc\xbe\x18\x93"
4728 "\x19\x6b\xec\x58\x4f\xb9\x75\xa7"
4729 "\xdd\x3f\x2f\xec\xc8\x5a\x84\xab"
4730 "\xd5\xe4\x8a\x07\xf6\x4d\x23\xd6"
4731 "\x03\xfb\x03\x6a\xea\x66\xbf\xd4"
4732 "\xb1\x34\xfb\x78\xe9\x55\xdc\x7c"
4733 "\x3d\x9c\xe5\x9a\xac\xc3\x7a\x80"
4734 "\x24\x6d\xa0\xef\x25\x7c\xb7\xea"
4735 "\xce\x4d\x5f\x18\x60\xce\x87\x22"
4736 "\x66\x2f\xd5\xdd\xdd\x02\x21\x75"
4737 "\x82\xa0\x1f\x58\xc6\xd3\x62\xf7"
4738 "\x32\xd8\xaf\x1e\x07\x77\x51\x96"
4739 "\xd5\x6b\x1e\x7e\x80\x02\xe8\x67"
4740 "\xea\x17\x0b\x10\xd2\x3f\x28\x25"
4741 "\x4f\x05\x77\x02\x14\x69\xf0\x2c"
4742 "\xbe\x0c\xf1\x74\x30\xd1\xb9\x9b"
4743 "\xfc\x8c\xbb\x04\x16\xd9\xba\xc3"
4744 "\xbc\x91\x8a\xc4\x30\xa4\xb0\x12"
4745 "\x4c\x21\x87\xcb\xc9\x1d\x16\x96"
4746 "\x07\x6f\x23\x54\xb9\x6f\x79\xe5"
4747 "\x64\xc0\x64\xda\xb1\xae\xdd\x60"
4748 "\x6c\x1a\x9d\xd3\x04\x8e\x45\xb0"
4749 "\x92\x61\xd0\x48\x81\xed\x5e\x1d"
4750 "\xa0\xc9\xa4\x33\xc7\x13\x51\x5d"
4751 "\x7f\x83\x73\xb6\x70\x18\x65\x3e"
4752 "\x2f\x0e\x7a\x12\x39\x98\xab\xd8"
4753 "\x7e\x6f\xa3\xd1\xba\x56\xad\xbd"
4754 "\xf0\x03\x01\x1c\x85\x35\x9f\xeb"
4755 "\x19\x63\xa1\xaf\xfe\x2d\x35\x50"
4756 "\x39\xa0\x65\x7c\x95\x7e\x6b\xfe"
4757 "\xc1\xac\x07\x7c\x98\x4f\xbe\x57"
4758 "\xa7\x22\xec\xe2\x7e\x29\x09\x53"
4759 "\xe8\xbf\xb4\x7e\x3f\x8f\xfc\x14"
4760 "\xce\x54\xf9\x18\x58\xb5\xff\x44"
4761 "\x05\x9d\xce\x1b\xb6\x82\x23\xc8"
4762 "\x2e\xbc\x69\xbb\x4a\x29\x0f\x65"
4763 "\x94\xf0\x63\x06\x0e\xef\x8c\xbd"
4764 "\xff\xfd\xb0\x21\x6e\x57\x05\x75"
4765 "\xda\xd5\xc4\xeb\x8d\x32\xf7\x50"
4766 "\xd3\x6f\x22\xed\x5f\x8e\xa2\x5b"
4767 "\x80\x8c\xc8\x78\x40\x24\x4b\x89"
4768 "\x30\xce\x7a\x97\x0e\xc4\xaf\xef"
4769 "\x9b\xb4\xcd\x66\x74\x14\x04\x2b"
4770 "\xf7\xce\x0b\x1c\x6e\xc2\x78\x8c"
4771 "\xca\xc5\xd0\x1c\x95\x4a\x91\x2d"
4772 "\xa7\x20\xeb\x86\x52\xb7\x67\xd8"
4773 "\x0c\xd6\x04\x14\xde\x51\x74\x75"
4774 "\xe7\x11\xb4\x87\xa3\x3d\x2d\xad"
4775 "\x4f\xef\xa0\x0f\x70\x00\x6d\x13"
4776 "\x19\x1d\x41\x50\xe9\xd8\xf0\x32"
4777 "\x71\xbc\xd3\x11\xf2\xac\xbe\xaf"
4778 "\x75\x46\x65\x4e\x07\x34\x37\xa3"
4779 "\x89\xfe\x75\xd4\x70\x4c\xc6\x3f"
4780 "\x69\x24\x0e\x38\x67\x43\x8c\xde"
4781 "\x06\xb5\xb8\xe7\xc4\xf0\x41\x8f"
4782 "\xf0\xbd\x2f\x0b\xb9\x18\xf8\xde"
4783 "\x64\xb1\xdb\xee\x00\x50\x77\xe1"
4784 "\xc7\xff\xa6\xfa\xdd\x70\xf4\xe3"
4785 "\x93\xe9\x77\x35\x3d\x4b\x2f\x2b"
4786 "\x6d\x55\xf0\xfc\x88\x54\x4e\x89"
4787 "\xc1\x8a\x23\x31\x2d\x14\x2a\xb8"
4788 "\x1b\x15\xdd\x9e\x6e\x7b\xda\x05"
4789 "\x91\x7d\x62\x64\x96\x72\xde\xfc"
4790 "\xc1\xec\xf0\x23\x51\x6f\xdb\x5b"
4791 "\x1d\x08\x57\xce\x09\xb8\xf6\xcd"
4792 "\x8d\x95\xf2\x20\xbf\x0f\x20\x57"
4793 "\x98\x81\x84\x4f\x15\x5c\x76\xe7"
4794 "\x3e\x0a\x3a\x6c\xc4\x8a\xbe\x78"
4795 "\x74\x77\xc3\x09\x4b\x5d\x48\xe4"
4796 "\xc8\xcb\x0b\xea\x17\x28\xcf\xcf"
4797 "\x31\x32\x44\xa4\xe5\x0e\x1a\x98"
4798 "\x94\xc4\xf0\xff\xae\x3e\x44\xe8"
4799 "\xa5\xb3\xb5\x37\x2f\xe8\xaf\x6f"
4800 "\x28\xc1\x37\x5f\x31\xd2\xb9\x33"
4801 "\xb1\xb2\x52\x94\x75\x2c\x29\x59"
4802 "\x06\xc2\x25\xe8\x71\x65\x4e\xed"
4803 "\xc0\x9c\xb1\xbb\x25\xdc\x6c\xe7"
4804 "\x4b\xa5\x7a\x54\x7a\x60\xff\x7a"
4805 "\xe0\x50\x40\x96\x35\x63\xe4\x0b"
4806 "\x76\xbd\xa4\x65\x00\x1b\x57\x88"
4807 "\xae\xed\x39\x88\x42\x11\x3c\xed"
4808 "\x85\x67\x7d\xb9\x68\x82\xe9\x43"
4809 "\x3c\x47\x53\xfa\xe8\xf8\x9f\x1f"
4810 "\x9f\xef\x0f\xf7\x30\xd9\x30\x0e"
4811 "\xb9\x9f\x69\x18\x2f\x7e\xf8\xf8"
4812 "\xf8\x8c\x0f\xd4\x02\x4d\xea\xcd"
4813 "\x0a\x9c\x6f\x71\x6d\x5a\x4c\x60"
4814 "\xce\x20\x56\x32\xc6\xc5\x99\x1f"
4815 "\x09\xe6\x4e\x18\x1a\x15\x13\xa8"
4816 "\x7d\xb1\x6b\xc0\xb2\x6d\xf8\x26"
4817 "\x66\xf8\x3d\x18\x74\x70\x66\x7a"
4818 "\x34\x17\xde\xba\x47\xf1\x06\x18"
4819 "\xcb\xaf\xeb\x4a\x1e\x8f\xa7\x77"
4820 "\xe0\x3b\x78\x62\x66\xc9\x10\xea"
4821 "\x1f\xb7\x29\x0a\x45\xa1\x1d\x1e"
4822 "\x1d\xe2\x65\x61\x50\x9c\xd7\x05"
4823 "\xf2\x0b\x5b\x12\x61\x02\xc8\xe5"
4824 "\x63\x4f\x20\x0c\x07\x17\x33\x5e"
4825 "\x03\x9a\x53\x0f\x2e\x55\xfe\x50"
4826 "\x43\x7d\xd0\xb6\x7e\x5a\xda\xae"
4827 "\x58\xef\x15\xa9\x83\xd9\x46\xb1"
4828 "\x42\xaa\xf5\x02\x6c\xce\x92\x06"
4829 "\x1b\xdb\x66\x45\x91\x79\xc2\x2d"
4830 "\xe6\x53\xd3\x14\xfd\xbb\x44\x63"
4831 "\xc6\xd7\x3d\x7a\x0c\x75\x78\x9d"
4832 "\x5c\xa6\x39\xb3\xe5\x63\xca\x8b"
4833 "\xfe\xd3\xef\x60\x83\xf6\x8e\x70"
4834 "\xb6\x67\xc7\x77\xed\x23\xef\x4c"
4835 "\xf0\xed\x2d\x07\x59\x6f\xc1\x01"
4836 "\x34\x37\x08\xab\xd9\x1f\x09\xb1"
4837 "\xce\x5b\x17\xff\x74\xf8\x9c\xd5"
4838 "\x2c\x56\x39\x79\x0f\x69\x44\x75"
4839 "\x58\x27\x01\xc4\xbf\xa7\xa1\x1d"
4840 "\x90\x17\x77\x86\x5a\x3f\xd9\xd1"
4841 "\x0e\xa0\x10\xf8\xec\x1e\xa5\x7f"
4842 "\x5e\x36\xd1\xe3\x04\x2c\x70\xf7"
4843 "\x8e\xc0\x98\x2f\x6c\x94\x2b\x41"
4844 "\xb7\x60\x00\xb7\x2e\xb8\x02\x8d"
4845 "\xb8\xb0\xd3\x86\xba\x1d\xd7\x90"
4846 "\xd6\xb6\xe1\xfc\xd7\xd8\x28\x06"
4847 "\x63\x9b\xce\x61\x24\x79\xc0\x70"
4848 "\x52\xd0\xb6\xd4\x28\x95\x24\x87"
4849 "\x03\x1f\xb7\x9a\xda\xa3\xfb\x52"
4850 "\x5b\x68\xe7\x4c\x8c\x24\xe1\x42"
4851 "\xf7\xd5\xfd\xad\x06\x32\x9f\xba"
4852 "\xc1\xfc\xdd\xc6\xfc\xfc\xb3\x38"
4853 "\x74\x56\x58\x40\x02\x37\x52\x2c"
4854 "\x55\xcc\xb3\x9e\x7a\xe9\xd4\x38"
4855 "\x41\x5e\x0c\x35\xe2\x11\xd1\x13"
4856 "\xf8\xb7\x8d\x72\x6b\x22\x2a\xb0"
4857 "\xdb\x08\xba\x35\xb9\x3f\xc8\xd3"
4858 "\x24\x90\xec\x58\xd2\x09\xc7\x2d"
4859 "\xed\x38\x80\x36\x72\x43\x27\x49"
4860 "\x4a\x80\x8a\xa2\xe8\xd3\xda\x30"
4861 "\x7d\xb6\x82\x37\x86\x92\x86\x3e"
4862 "\x08\xb2\x28\x5a\x55\x44\x24\x7d"
4863 "\x40\x48\x8a\xb6\x89\x58\x08\xa0"
4864 "\xd6\x6d\x3a\x17\xbf\xf6\x54\xa2"
4865 "\xf5\xd3\x8c\x0f\x78\x12\x57\x8b"
4866 "\xd5\xc2\xfd\x58\x5b\x7f\x38\xe3"
4867 "\xcc\xb7\x7c\x48\xb3\x20\xe8\x81"
4868 "\x14\x32\x45\x05\xe0\xdb\x9f\x75"
4869 "\x85\xb4\x6a\xfc\x95\xe3\x54\x22"
4870 "\x12\xee\x30\xfe\xd8\x30\xef\x34"
4871 "\x50\xab\x46\x30\x98\x2f\xb7\xc0"
4872 "\x15\xa2\x83\xb6\xf2\x06\x21\xa2"
4873 "\xc3\x26\x37\x14\xd1\x4d\xb5\x10"
4874 "\x52\x76\x4d\x6a\xee\xb5\x2b\x15"
4875 "\xb7\xf9\x51\xe8\x2a\xaf\xc7\xfa"
4876 "\x77\xaf\xb0\x05\x4d\xd1\x68\x8e"
4877 "\x74\x05\x9f\x9d\x93\xa5\x3e\x7f"
4878 "\x4e\x5f\x9d\xcb\x09\xc7\x83\xe3"
4879 "\x02\x9d\x27\x1f\xef\x85\x05\x8d"
4880 "\xec\x55\x88\x0f\x0d\x7c\x4c\xe8"
4881 "\xa1\x75\xa0\xd8\x06\x47\x14\xef"
4882 "\xaa\x61\xcf\x26\x15\xad\xd8\xa3"
4883 "\xaa\x75\xf2\x78\x4a\x5a\x61\xdf"
4884 "\x8b\xc7\x04\xbc\xb2\x32\xd2\x7e"
4885 "\x42\xee\xb4\x2f\x51\xff\x7b\x2e"
4886 "\xd3\x02\xe8\xdc\x5d\x0d\x50\xdc"
4887 "\xae\xb7\x46\xf9\xa8\xe6\xd0\x16"
4888 "\xcc\xe6\x2c\x81\xc7\xad\xe9\xf0"
4889 "\x05\x72\x6d\x3d\x0a\x7a\xa9\x02"
4890 "\xac\x82\x93\x6e\xb6\x1c\x28\xfc"
4891 "\x44\x12\xfb\x73\x77\xd4\x13\x39"
4892 "\x29\x88\x8a\xf3\x5c\xa6\x36\xa0"
4893 "\x2a\xed\x7e\xb1\x1d\xd6\x4c\x6b"
4894 "\x41\x01\x18\x5d\x5d\x07\x97\xa6"
4895 "\x4b\xef\x31\x18\xea\xac\xb1\x84"
4896 "\x21\xed\xda\x86",
Tan Swee Henga773edb2007-11-30 00:36:07 +11004897 .rlen = 4100,
Joy Latten23e353c2007-10-23 08:50:32 +08004898 },
4899};
4900
4901static struct cipher_testvec aes_ctr_dec_tv_template[] = {
4902 { /* From RFC 3686 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004903 .key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
4904 "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
4905 "\x00\x00\x00\x30",
Joy Latten23e353c2007-10-23 08:50:32 +08004906 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004907 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
4908 .input = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
4909 "\x2d\x61\x75\xa3\x26\x13\x11\xb8",
Joy Latten23e353c2007-10-23 08:50:32 +08004910 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004911 .result = "Single block msg",
Joy Latten23e353c2007-10-23 08:50:32 +08004912 .rlen = 16,
4913 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004914 .key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
4915 "\x43\xd6\xce\x1f\x32\x53\x91\x63"
4916 "\x00\x6c\xb6\xdb",
Joy Latten23e353c2007-10-23 08:50:32 +08004917 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004918 .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
4919 .input = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
4920 "\x79\x0d\x41\xee\x8e\xda\xd3\x88"
4921 "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
4922 "\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
4923 .ilen = 32,
4924 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
4925 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4926 "\x10\x11\x12\x13\x14\x15\x16\x17"
4927 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Joy Latten23e353c2007-10-23 08:50:32 +08004928 .rlen = 32,
4929 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004930 .key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
4931 "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
4932 "\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
4933 "\x00\x00\x00\x48",
4934 .klen = 28,
4935 .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
4936 .input = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
4937 "\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
4938 .ilen = 16,
4939 .result = "Single block msg",
Joy Latten23e353c2007-10-23 08:50:32 +08004940 .rlen = 16,
4941 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004942 .key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
4943 "\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
4944 "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
4945 "\x00\x96\xb0\x3b",
Joy Latten23e353c2007-10-23 08:50:32 +08004946 .klen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004947 .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
4948 .input = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
4949 "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
4950 "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
4951 "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
Joy Latten23e353c2007-10-23 08:50:32 +08004952 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004953 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
4954 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4955 "\x10\x11\x12\x13\x14\x15\x16\x17"
4956 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
4957 .rlen = 32,
Joy Latten23e353c2007-10-23 08:50:32 +08004958 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004959 .key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
4960 "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
4961 "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
4962 "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
4963 "\x00\x00\x00\x60",
Joy Latten23e353c2007-10-23 08:50:32 +08004964 .klen = 36,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004965 .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
4966 .input = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
4967 "\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
Joy Latten23e353c2007-10-23 08:50:32 +08004968 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004969 .result = "Single block msg",
4970 .rlen = 16,
Joy Latten23e353c2007-10-23 08:50:32 +08004971 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004972 .key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
4973 "\x07\x96\x36\x58\x79\xef\xf8\x86"
4974 "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
4975 "\x4b\x50\x59\x0c\x87\xa2\x38\x84"
4976 "\x00\xfa\xac\x24",
4977 .klen = 36,
4978 .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
4979 .input = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
4980 "\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
4981 "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
4982 "\x55\x30\x83\x1d\x93\x44\xaf\x1c",
Joy Latten23e353c2007-10-23 08:50:32 +08004983 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004984 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
4985 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4986 "\x10\x11\x12\x13\x14\x15\x16\x17"
4987 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Joy Latten23e353c2007-10-23 08:50:32 +08004988 .rlen = 32,
4989 },
4990};
4991
Mikko Herranen28db8e32007-11-26 22:24:11 +08004992static struct aead_testvec aes_gcm_enc_tv_template[] = {
4993 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004994 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004995 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004996 .result = "\x58\xe2\xfc\xce\xfa\x7e\x30\x61"
4997 "\x36\x7f\x1d\x57\xa4\xe7\x45\x5a",
Herbert Xu6160b282007-12-04 19:17:50 +11004998 .rlen = 16,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004999 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005000 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005001 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005002 .input = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005003 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005004 .result = "\x03\x88\xda\xce\x60\xb6\xa3\x92"
5005 "\xf3\x28\xc2\xb9\x71\xb2\xfe\x78"
5006 "\xab\x6e\x47\xd4\x2c\xec\x13\xbd"
5007 "\xf5\x3a\x67\xb2\x12\x57\xbd\xdf",
Herbert Xu6160b282007-12-04 19:17:50 +11005008 .rlen = 32,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005009 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005010 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5011 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005012 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005013 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5014 "\xde\xca\xf8\x88",
5015 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5016 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5017 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5018 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5019 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5020 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5021 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5022 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005023 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005024 .result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5025 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5026 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5027 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5028 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5029 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5030 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5031 "\x3d\x58\xe0\x91\x47\x3f\x59\x85"
5032 "\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
5033 "\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
Herbert Xu6160b282007-12-04 19:17:50 +11005034 .rlen = 80,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005035 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005036 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5037 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005038 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005039 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5040 "\xde\xca\xf8\x88",
5041 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5042 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5043 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5044 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5045 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5046 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5047 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5048 "\xba\x63\x7b\x39",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005049 .ilen = 60,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005050 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5051 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5052 "\xab\xad\xda\xd2",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005053 .alen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005054 .result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5055 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5056 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5057 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5058 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5059 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5060 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5061 "\x3d\x58\xe0\x91"
5062 "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
5063 "\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
Herbert Xu6160b282007-12-04 19:17:50 +11005064 .rlen = 76,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005065 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005066 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005067 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005068 .result = "\xcd\x33\xb2\x8a\xc7\x73\xf7\x4b"
5069 "\xa0\x0e\xd1\xf3\x12\x57\x24\x35",
Herbert Xu6160b282007-12-04 19:17:50 +11005070 .rlen = 16,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005071 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005072 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005073 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005074 .input = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005075 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005076 .result = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
5077 "\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
5078 "\x2f\xf5\x8d\x80\x03\x39\x27\xab"
5079 "\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
Herbert Xu6160b282007-12-04 19:17:50 +11005080 .rlen = 32,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005081 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005082 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5083 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5084 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005085 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005086 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5087 "\xde\xca\xf8\x88",
5088 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5089 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5090 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5091 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5092 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5093 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5094 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5095 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005096 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005097 .result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5098 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5099 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5100 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5101 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5102 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5103 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5104 "\xcc\xda\x27\x10\xac\xad\xe2\x56"
5105 "\x99\x24\xa7\xc8\x58\x73\x36\xbf"
5106 "\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
Herbert Xu6160b282007-12-04 19:17:50 +11005107 .rlen = 80,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005108 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005109 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5110 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5111 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005112 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005113 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5114 "\xde\xca\xf8\x88",
5115 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5116 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5117 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5118 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5119 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5120 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5121 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5122 "\xba\x63\x7b\x39",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005123 .ilen = 60,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005124 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5125 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5126 "\xab\xad\xda\xd2",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005127 .alen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005128 .result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5129 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5130 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5131 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5132 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5133 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5134 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5135 "\xcc\xda\x27\x10"
5136 "\x25\x19\x49\x8e\x80\xf1\x47\x8f"
5137 "\x37\xba\x55\xbd\x6d\x27\x61\x8c",
Herbert Xu6160b282007-12-04 19:17:50 +11005138 .rlen = 76,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005139 .np = 2,
5140 .tap = { 32, 28 },
5141 .anp = 2,
5142 .atap = { 8, 12 }
5143 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005144 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005145 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005146 .result = "\x53\x0f\x8a\xfb\xc7\x45\x36\xb9"
5147 "\xa9\x63\xb4\xf1\xc4\xcb\x73\x8b",
Herbert Xu6160b282007-12-04 19:17:50 +11005148 .rlen = 16,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005149 }
5150};
5151
5152static struct aead_testvec aes_gcm_dec_tv_template[] = {
5153 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005154 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005155 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005156 .input = "\xce\xa7\x40\x3d\x4d\x60\x6b\x6e"
5157 "\x07\x4e\xc5\xd3\xba\xf3\x9d\x18"
5158 "\xd0\xd1\xc8\xa7\x99\x99\x6b\xf0"
5159 "\x26\x5b\x98\xb5\xd4\x8a\xb9\x19",
Herbert Xu6160b282007-12-04 19:17:50 +11005160 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005161 .result = zeroed_string,
Herbert Xu6160b282007-12-04 19:17:50 +11005162 .rlen = 16,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005163 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005164 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5165 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5166 "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5167 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005168 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005169 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5170 "\xde\xca\xf8\x88",
5171 .input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
5172 "\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
5173 "\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
5174 "\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
5175 "\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
5176 "\xa7\xb0\x8b\x10\x56\x82\x88\x38"
5177 "\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
5178 "\xbc\xc9\xf6\x62\x89\x80\x15\xad"
5179 "\xb0\x94\xda\xc5\xd9\x34\x71\xbd"
5180 "\xec\x1a\x50\x22\x70\xe3\xcc\x6c",
Herbert Xu6160b282007-12-04 19:17:50 +11005181 .ilen = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005182 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5183 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5184 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5185 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5186 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5187 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5188 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5189 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005190 .rlen = 64,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005191 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005192 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5193 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5194 "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5195 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005196 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005197 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5198 "\xde\xca\xf8\x88",
5199 .input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
5200 "\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
5201 "\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
5202 "\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
5203 "\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
5204 "\xa7\xb0\x8b\x10\x56\x82\x88\x38"
5205 "\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
5206 "\xbc\xc9\xf6\x62"
5207 "\x76\xfc\x6e\xce\x0f\x4e\x17\x68"
5208 "\xcd\xdf\x88\x53\xbb\x2d\x55\x1b",
Herbert Xu6160b282007-12-04 19:17:50 +11005209 .ilen = 76,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005210 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5211 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5212 "\xab\xad\xda\xd2",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005213 .alen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005214 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5215 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5216 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5217 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5218 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5219 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5220 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5221 "\xba\x63\x7b\x39",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005222 .rlen = 60,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005223 .np = 2,
Herbert Xu6160b282007-12-04 19:17:50 +11005224 .tap = { 48, 28 },
Mikko Herranen28db8e32007-11-26 22:24:11 +08005225 .anp = 3,
5226 .atap = { 8, 8, 4 }
5227 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005228 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5229 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005230 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005231 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5232 "\xde\xca\xf8\x88",
5233 .input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5234 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5235 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5236 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5237 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5238 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5239 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5240 "\x3d\x58\xe0\x91\x47\x3f\x59\x85"
5241 "\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
5242 "\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
Herbert Xu6160b282007-12-04 19:17:50 +11005243 .ilen = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005244 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5245 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5246 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5247 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5248 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5249 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5250 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5251 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005252 .rlen = 64,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005253 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005254 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5255 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005256 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005257 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5258 "\xde\xca\xf8\x88",
5259 .input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
5260 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
5261 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
5262 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
5263 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
5264 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
5265 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
5266 "\x3d\x58\xe0\x91"
5267 "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
5268 "\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
Herbert Xu6160b282007-12-04 19:17:50 +11005269 .ilen = 76,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005270 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5271 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5272 "\xab\xad\xda\xd2",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005273 .alen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005274 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5275 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5276 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5277 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5278 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5279 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5280 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5281 "\xba\x63\x7b\x39",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005282 .rlen = 60,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005283 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005284 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005285 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005286 .input = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
5287 "\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
5288 "\x2f\xf5\x8d\x80\x03\x39\x27\xab"
5289 "\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
Herbert Xu6160b282007-12-04 19:17:50 +11005290 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005291 .result = zeroed_string,
Herbert Xu6160b282007-12-04 19:17:50 +11005292 .rlen = 16,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005293 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005294 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5295 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5296 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005297 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005298 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5299 "\xde\xca\xf8\x88",
5300 .input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5301 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5302 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5303 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5304 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5305 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5306 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5307 "\xcc\xda\x27\x10\xac\xad\xe2\x56"
5308 "\x99\x24\xa7\xc8\x58\x73\x36\xbf"
5309 "\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
Herbert Xu6160b282007-12-04 19:17:50 +11005310 .ilen = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005311 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5312 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5313 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5314 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5315 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5316 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5317 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5318 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005319 .rlen = 64,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005320 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005321 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5322 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5323 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005324 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005325 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5326 "\xde\xca\xf8\x88",
5327 .input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5328 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5329 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5330 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5331 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5332 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5333 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5334 "\xcc\xda\x27\x10"
5335 "\x25\x19\x49\x8e\x80\xf1\x47\x8f"
5336 "\x37\xba\x55\xbd\x6d\x27\x61\x8c",
Herbert Xu6160b282007-12-04 19:17:50 +11005337 .ilen = 76,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005338 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5339 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5340 "\xab\xad\xda\xd2",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005341 .alen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005342 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5343 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5344 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5345 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5346 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5347 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5348 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5349 "\xba\x63\x7b\x39",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005350 .rlen = 60,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005351 }
5352};
5353
Joy Latten93cc74e2007-12-12 20:24:22 +08005354static struct aead_testvec aes_ccm_enc_tv_template[] = {
5355 { /* From RFC 3610 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005356 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5357 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005358 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005359 .iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
5360 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5361 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
Joy Latten93cc74e2007-12-12 20:24:22 +08005362 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005363 .input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5364 "\x10\x11\x12\x13\x14\x15\x16\x17"
5365 "\x18\x19\x1a\x1b\x1c\x1d\x1e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005366 .ilen = 23,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005367 .result = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
5368 "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
5369 "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
5370 "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
Joy Latten93cc74e2007-12-12 20:24:22 +08005371 .rlen = 31,
5372 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005373 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5374 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005375 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005376 .iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
5377 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5378 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5379 "\x08\x09\x0a\x0b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005380 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005381 .input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5382 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5383 "\x1c\x1d\x1e\x1f",
Joy Latten93cc74e2007-12-12 20:24:22 +08005384 .ilen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005385 .result = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
5386 "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
5387 "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
5388 "\x7d\x9c\x2d\x93",
Joy Latten93cc74e2007-12-12 20:24:22 +08005389 .rlen = 28,
5390 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005391 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5392 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005393 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005394 .iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
5395 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5396 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
Joy Latten93cc74e2007-12-12 20:24:22 +08005397 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005398 .input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5399 "\x10\x11\x12\x13\x14\x15\x16\x17"
5400 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
5401 "\x20",
Joy Latten93cc74e2007-12-12 20:24:22 +08005402 .ilen = 25,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005403 .result = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
5404 "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
5405 "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
5406 "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
5407 "\x7e\x5f\x4e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005408 .rlen = 35,
5409 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005410 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5411 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005412 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005413 .iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
5414 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5415 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5416 "\x08\x09\x0a\x0b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005417 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005418 .input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5419 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5420 "\x1c\x1d\x1e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005421 .ilen = 19,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005422 .result = "\x07\x34\x25\x94\x15\x77\x85\x15"
5423 "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
5424 "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
5425 "\x4d\x99\x99\x88\xdd",
Joy Latten93cc74e2007-12-12 20:24:22 +08005426 .rlen = 29,
5427 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005428 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5429 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005430 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005431 .iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
5432 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5433 .assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
Joy Latten93cc74e2007-12-12 20:24:22 +08005434 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005435 .input = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
5436 "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
5437 "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
Joy Latten93cc74e2007-12-12 20:24:22 +08005438 .ilen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005439 .result = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
5440 "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
5441 "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
5442 "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
Joy Latten93cc74e2007-12-12 20:24:22 +08005443 .rlen = 32,
5444 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005445 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5446 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005447 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005448 .iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
5449 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5450 .assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
5451 "\x20\xea\x60\xc0",
Joy Latten93cc74e2007-12-12 20:24:22 +08005452 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005453 .input = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
5454 "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
5455 "\x3a\x80\x3b\xa8\x7f",
Joy Latten93cc74e2007-12-12 20:24:22 +08005456 .ilen = 21,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005457 .result = "\x00\x97\x69\xec\xab\xdf\x48\x62"
5458 "\x55\x94\xc5\x92\x51\xe6\x03\x57"
5459 "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
5460 "\x5a\xe0\x70\x45\x51",
Joy Latten93cc74e2007-12-12 20:24:22 +08005461 .rlen = 29,
5462 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005463 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5464 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005465 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005466 .iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
5467 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5468 .assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
Joy Latten93cc74e2007-12-12 20:24:22 +08005469 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005470 .input = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
5471 "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
5472 "\x98\x09\xd6\x7d\xbe\xdd\x18",
Joy Latten93cc74e2007-12-12 20:24:22 +08005473 .ilen = 23,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005474 .result = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
5475 "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
5476 "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
5477 "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
5478 "\xba",
Joy Latten93cc74e2007-12-12 20:24:22 +08005479 .rlen = 33,
5480 },
5481};
5482
5483static struct aead_testvec aes_ccm_dec_tv_template[] = {
5484 { /* From RFC 3610 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005485 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5486 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005487 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005488 .iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
5489 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5490 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
Joy Latten93cc74e2007-12-12 20:24:22 +08005491 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005492 .input = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
5493 "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
5494 "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
5495 "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
Joy Latten93cc74e2007-12-12 20:24:22 +08005496 .ilen = 31,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005497 .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5498 "\x10\x11\x12\x13\x14\x15\x16\x17"
5499 "\x18\x19\x1a\x1b\x1c\x1d\x1e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005500 .rlen = 23,
5501 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005502 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5503 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005504 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005505 .iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
5506 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5507 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5508 "\x08\x09\x0a\x0b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005509 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005510 .input = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
5511 "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
5512 "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
5513 "\x7d\x9c\x2d\x93",
Joy Latten93cc74e2007-12-12 20:24:22 +08005514 .ilen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005515 .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5516 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5517 "\x1c\x1d\x1e\x1f",
Joy Latten93cc74e2007-12-12 20:24:22 +08005518 .rlen = 20,
5519 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005520 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5521 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005522 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005523 .iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
5524 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5525 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
Joy Latten93cc74e2007-12-12 20:24:22 +08005526 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005527 .input = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
5528 "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
5529 "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
5530 "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
5531 "\x7e\x5f\x4e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005532 .ilen = 35,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005533 .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5534 "\x10\x11\x12\x13\x14\x15\x16\x17"
5535 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
5536 "\x20",
Joy Latten93cc74e2007-12-12 20:24:22 +08005537 .rlen = 25,
5538 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005539 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5540 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005541 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005542 .iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
5543 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5544 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5545 "\x08\x09\x0a\x0b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005546 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005547 .input = "\x07\x34\x25\x94\x15\x77\x85\x15"
5548 "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
5549 "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
5550 "\x4d\x99\x99\x88\xdd",
Joy Latten93cc74e2007-12-12 20:24:22 +08005551 .ilen = 29,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005552 .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5553 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5554 "\x1c\x1d\x1e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005555 .rlen = 19,
5556 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005557 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5558 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005559 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005560 .iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
5561 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5562 .assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
Joy Latten93cc74e2007-12-12 20:24:22 +08005563 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005564 .input = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
5565 "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
5566 "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
5567 "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
Joy Latten93cc74e2007-12-12 20:24:22 +08005568 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005569 .result = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
5570 "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
5571 "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
Joy Latten93cc74e2007-12-12 20:24:22 +08005572 .rlen = 24,
5573 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005574 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5575 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005576 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005577 .iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
5578 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5579 .assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
5580 "\x20\xea\x60\xc0",
Joy Latten93cc74e2007-12-12 20:24:22 +08005581 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005582 .input = "\x00\x97\x69\xec\xab\xdf\x48\x62"
5583 "\x55\x94\xc5\x92\x51\xe6\x03\x57"
5584 "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
5585 "\x5a\xe0\x70\x45\x51",
Joy Latten93cc74e2007-12-12 20:24:22 +08005586 .ilen = 29,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005587 .result = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
5588 "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
5589 "\x3a\x80\x3b\xa8\x7f",
Joy Latten93cc74e2007-12-12 20:24:22 +08005590 .rlen = 21,
5591 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005592 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5593 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005594 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005595 .iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
5596 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5597 .assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
Joy Latten93cc74e2007-12-12 20:24:22 +08005598 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005599 .input = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
5600 "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
5601 "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
5602 "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
5603 "\xba",
Joy Latten93cc74e2007-12-12 20:24:22 +08005604 .ilen = 33,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005605 .result = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
5606 "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
5607 "\x98\x09\xd6\x7d\xbe\xdd\x18",
Joy Latten93cc74e2007-12-12 20:24:22 +08005608 .rlen = 23,
5609 },
5610};
5611
Linus Torvalds1da177e2005-04-16 15:20:36 -07005612/* Cast5 test vectors from RFC 2144 */
5613#define CAST5_ENC_TEST_VECTORS 3
5614#define CAST5_DEC_TEST_VECTORS 3
5615
Herbert Xuef2736f2005-06-22 13:26:03 -07005616static struct cipher_testvec cast5_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005617 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005618 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5619 "\x23\x45\x67\x89\x34\x56\x78\x9a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005620 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005621 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005622 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005623 .result = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005624 .rlen = 8,
5625 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005626 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5627 "\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005628 .klen = 10,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005629 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005630 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005631 .result = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005632 .rlen = 8,
5633 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005634 .key = "\x01\x23\x45\x67\x12",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005635 .klen = 5,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005636 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005637 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005638 .result = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005639 .rlen = 8,
5640 },
5641};
5642
Herbert Xuef2736f2005-06-22 13:26:03 -07005643static struct cipher_testvec cast5_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005644 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005645 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5646 "\x23\x45\x67\x89\x34\x56\x78\x9a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005647 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005648 .input = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005649 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005650 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005651 .rlen = 8,
5652 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005653 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5654 "\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005655 .klen = 10,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005656 .input = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005657 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005658 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005659 .rlen = 8,
5660 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005661 .key = "\x01\x23\x45\x67\x12",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005662 .klen = 5,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005663 .input = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005664 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005665 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005666 .rlen = 8,
5667 },
5668};
5669
Herbert Xuef2736f2005-06-22 13:26:03 -07005670/*
5671 * ARC4 test vectors from OpenSSL
Linus Torvalds1da177e2005-04-16 15:20:36 -07005672 */
5673#define ARC4_ENC_TEST_VECTORS 7
5674#define ARC4_DEC_TEST_VECTORS 7
5675
Herbert Xuef2736f2005-06-22 13:26:03 -07005676static struct cipher_testvec arc4_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005677 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005678 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005679 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005680 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005681 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005682 .result = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005683 .rlen = 8,
5684 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005685 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005686 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005687 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005688 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005689 .result = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005690 .rlen = 8,
5691 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005692 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005693 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005694 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005695 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005696 .result = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005697 .rlen = 8,
5698 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005699 .key = "\xef\x01\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005700 .klen = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005701 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
5702 "\x00\x00\x00\x00\x00\x00\x00\x00"
5703 "\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005704 .ilen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005705 .result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5706 "\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
5707 "\x36\xb6\x78\x58",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005708 .rlen = 20,
5709 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005710 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005711 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005712 .input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5713 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5714 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5715 "\x12\x34\x56\x78",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005716 .ilen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005717 .result = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
5718 "\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
5719 "\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
5720 "\x40\x01\x1e\xcf",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005721 .rlen = 28,
5722 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005723 .key = "\xef\x01\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005724 .klen = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005725 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
5726 "\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005727 .ilen = 10,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005728 .result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5729 "\xbd\x61",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005730 .rlen = 10,
5731 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005732 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
5733 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005734 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005735 .input = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005736 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005737 .result = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005738 .rlen = 8,
5739 },
5740};
5741
Herbert Xuef2736f2005-06-22 13:26:03 -07005742static struct cipher_testvec arc4_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005743 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005744 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005745 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005746 .input = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005747 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005748 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005749 .rlen = 8,
5750 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005751 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005752 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005753 .input = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005754 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005755 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005756 .rlen = 8,
5757 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005758 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005759 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005760 .input = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005761 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005762 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005763 .rlen = 8,
5764 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005765 .key = "\xef\x01\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005766 .klen = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005767 .input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5768 "\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
5769 "\x36\xb6\x78\x58",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005770 .ilen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005771 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
5772 "\x00\x00\x00\x00\x00\x00\x00\x00"
5773 "\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005774 .rlen = 20,
5775 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005776 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005777 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005778 .input = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
5779 "\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
5780 "\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
5781 "\x40\x01\x1e\xcf",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005782 .ilen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005783 .result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5784 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5785 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5786 "\x12\x34\x56\x78",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005787 .rlen = 28,
5788 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005789 .key = "\xef\x01\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005790 .klen = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005791 .input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5792 "\xbd\x61",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005793 .ilen = 10,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005794 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
5795 "\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005796 .rlen = 10,
5797 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005798 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
5799 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005800 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005801 .input = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005802 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005803 .result = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005804 .rlen = 8,
5805 },
5806};
5807
Herbert Xuef2736f2005-06-22 13:26:03 -07005808/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07005809 * TEA test vectors
5810 */
5811#define TEA_ENC_TEST_VECTORS 4
5812#define TEA_DEC_TEST_VECTORS 4
5813
Herbert Xuef2736f2005-06-22 13:26:03 -07005814static struct cipher_testvec tea_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005815 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005816 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07005817 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005818 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07005819 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005820 .result = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005821 .rlen = 8,
5822 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005823 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5824 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005825 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005826 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005827 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005828 .result = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005829 .rlen = 8,
5830 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005831 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5832 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005833 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005834 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
5835 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005836 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005837 .result = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
5838 "\xdd\x89\xa1\x25\x04\x21\xdf\x95",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005839 .rlen = 16,
5840 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005841 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5842 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005843 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005844 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
5845 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5846 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5847 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005848 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005849 .result = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
5850 "\x94\x18\x95\x91\xa9\xfc\x49\xf8"
5851 "\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
5852 "\x07\x89\x73\xc2\x45\x92\xc6\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005853 .rlen = 32,
5854 }
5855};
5856
Herbert Xuef2736f2005-06-22 13:26:03 -07005857static struct cipher_testvec tea_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005858 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005859 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07005860 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005861 .input = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005862 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005863 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07005864 .rlen = 8,
5865 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005866 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5867 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005868 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005869 .input = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005870 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005871 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005872 .rlen = 8,
5873 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005874 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5875 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005876 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005877 .input = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
5878 "\xdd\x89\xa1\x25\x04\x21\xdf\x95",
Herbert Xuef2736f2005-06-22 13:26:03 -07005879 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005880 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
5881 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005882 .rlen = 16,
5883 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005884 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5885 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005886 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005887 .input = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
5888 "\x94\x18\x95\x91\xa9\xfc\x49\xf8"
5889 "\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
5890 "\x07\x89\x73\xc2\x45\x92\xc6\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005891 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005892 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
5893 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5894 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5895 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005896 .rlen = 32,
5897 }
5898};
5899
Herbert Xuef2736f2005-06-22 13:26:03 -07005900/*
5901 * XTEA test vectors
Linus Torvalds1da177e2005-04-16 15:20:36 -07005902 */
5903#define XTEA_ENC_TEST_VECTORS 4
5904#define XTEA_DEC_TEST_VECTORS 4
5905
Herbert Xuef2736f2005-06-22 13:26:03 -07005906static struct cipher_testvec xtea_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005907 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005908 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07005909 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005910 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07005911 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005912 .result = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005913 .rlen = 8,
5914 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005915 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5916 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005917 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005918 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005919 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005920 .result = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005921 .rlen = 8,
5922 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005923 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5924 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005925 .klen = 16,
Sebastian Siewiorf0df30b2008-03-13 20:29:07 +08005926 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005927 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005928 .ilen = 16,
Sebastian Siewiorf0df30b2008-03-13 20:29:07 +08005929 .result = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
5930 "\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005931 .rlen = 16,
5932 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005933 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5934 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005935 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005936 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
5937 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5938 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5939 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005940 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005941 .result = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
5942 "\x86\xff\x6f\xd0\xe3\x87\x70\x07"
5943 "\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
5944 "\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005945 .rlen = 32,
5946 }
5947};
5948
Herbert Xuef2736f2005-06-22 13:26:03 -07005949static struct cipher_testvec xtea_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005950 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005951 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07005952 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005953 .input = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005954 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005955 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07005956 .rlen = 8,
5957 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005958 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5959 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005960 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005961 .input = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005962 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005963 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005964 .rlen = 8,
5965 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005966 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5967 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005968 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005969 .input = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
5970 "\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005971 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005972 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
5973 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005974 .rlen = 16,
5975 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005976 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5977 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005978 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005979 .input = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
5980 "\x86\xff\x6f\xd0\xe3\x87\x70\x07"
5981 "\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
5982 "\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005983 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005984 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
5985 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5986 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5987 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005988 .rlen = 32,
5989 }
5990};
5991
5992/*
5993 * KHAZAD test vectors.
5994 */
5995#define KHAZAD_ENC_TEST_VECTORS 5
5996#define KHAZAD_DEC_TEST_VECTORS 5
5997
Herbert Xuef2736f2005-06-22 13:26:03 -07005998static struct cipher_testvec khazad_enc_tv_template[] = {
5999 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006000 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
6001 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006002 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006003 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006004 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006005 .result = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006006 .rlen = 8,
6007 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006008 .key = "\x38\x38\x38\x38\x38\x38\x38\x38"
6009 "\x38\x38\x38\x38\x38\x38\x38\x38",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006010 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006011 .input = "\x38\x38\x38\x38\x38\x38\x38\x38",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006012 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006013 .result = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006014 .rlen = 8,
6015 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006016 .key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
6017 "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006018 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006019 .input = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006020 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006021 .result = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006022 .rlen = 8,
6023 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006024 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6025 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006026 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006027 .input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006028 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006029 .result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006030 .rlen = 8,
6031 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006032 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6033 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006034 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006035 .input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6036 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006037 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006038 .result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
6039 "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006040 .rlen = 16,
6041 },
6042};
6043
Herbert Xuef2736f2005-06-22 13:26:03 -07006044static struct cipher_testvec khazad_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07006045 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006046 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
6047 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006048 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006049 .input = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006050 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006051 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006052 .rlen = 8,
6053 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006054 .key = "\x38\x38\x38\x38\x38\x38\x38\x38"
6055 "\x38\x38\x38\x38\x38\x38\x38\x38",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006056 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006057 .input = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006058 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006059 .result = "\x38\x38\x38\x38\x38\x38\x38\x38",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006060 .rlen = 8,
6061 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006062 .key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
6063 "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006064 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006065 .input = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006066 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006067 .result = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006068 .rlen = 8,
6069 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006070 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6071 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006072 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006073 .input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006074 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006075 .result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006076 .rlen = 8,
6077 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006078 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6079 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006080 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006081 .input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
6082 "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006083 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006084 .result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
6085 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006086 .rlen = 16,
6087 },
6088};
6089
6090/*
6091 * Anubis test vectors.
6092 */
6093
6094#define ANUBIS_ENC_TEST_VECTORS 5
6095#define ANUBIS_DEC_TEST_VECTORS 5
6096#define ANUBIS_CBC_ENC_TEST_VECTORS 2
6097#define ANUBIS_CBC_DEC_TEST_VECTORS 2
6098
6099static struct cipher_testvec anubis_enc_tv_template[] = {
6100 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006101 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6102 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006103 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006104 .input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6105 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006106 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006107 .result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6108 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006109 .rlen = 16,
6110 }, {
6111
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006112 .key = "\x03\x03\x03\x03\x03\x03\x03\x03"
6113 "\x03\x03\x03\x03\x03\x03\x03\x03"
6114 "\x03\x03\x03\x03",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006115 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006116 .input = "\x03\x03\x03\x03\x03\x03\x03\x03"
6117 "\x03\x03\x03\x03\x03\x03\x03\x03",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006118 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006119 .result = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
6120 "\x87\x41\x6f\x82\x0a\x98\x64\xae",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006121 .rlen = 16,
6122 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006123 .key = "\x24\x24\x24\x24\x24\x24\x24\x24"
6124 "\x24\x24\x24\x24\x24\x24\x24\x24"
6125 "\x24\x24\x24\x24\x24\x24\x24\x24"
6126 "\x24\x24\x24\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006127 .klen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006128 .input = "\x24\x24\x24\x24\x24\x24\x24\x24"
6129 "\x24\x24\x24\x24\x24\x24\x24\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006130 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006131 .result = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
6132 "\x06\xd3\x61\x27\xfd\x13\x9e\xde",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006133 .rlen = 16,
6134 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006135 .key = "\x25\x25\x25\x25\x25\x25\x25\x25"
6136 "\x25\x25\x25\x25\x25\x25\x25\x25"
6137 "\x25\x25\x25\x25\x25\x25\x25\x25"
6138 "\x25\x25\x25\x25\x25\x25\x25\x25",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006139 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006140 .input = "\x25\x25\x25\x25\x25\x25\x25\x25"
6141 "\x25\x25\x25\x25\x25\x25\x25\x25",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006142 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006143 .result = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
6144 "\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006145 .rlen = 16,
6146 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006147 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6148 "\x35\x35\x35\x35\x35\x35\x35\x35"
6149 "\x35\x35\x35\x35\x35\x35\x35\x35"
6150 "\x35\x35\x35\x35\x35\x35\x35\x35"
6151 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006152 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006153 .input = "\x35\x35\x35\x35\x35\x35\x35\x35"
6154 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006155 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006156 .result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6157 "\x9e\xc6\x84\x0f\x17\x21\x07\xee",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006158 .rlen = 16,
6159 },
6160};
6161
6162static struct cipher_testvec anubis_dec_tv_template[] = {
6163 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006164 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6165 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006166 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006167 .input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6168 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006169 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006170 .result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6171 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006172 .rlen = 16,
6173 }, {
6174
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006175 .key = "\x03\x03\x03\x03\x03\x03\x03\x03"
6176 "\x03\x03\x03\x03\x03\x03\x03\x03"
6177 "\x03\x03\x03\x03",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006178 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006179 .input = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
6180 "\x87\x41\x6f\x82\x0a\x98\x64\xae",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006181 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006182 .result = "\x03\x03\x03\x03\x03\x03\x03\x03"
6183 "\x03\x03\x03\x03\x03\x03\x03\x03",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006184 .rlen = 16,
6185 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006186 .key = "\x24\x24\x24\x24\x24\x24\x24\x24"
6187 "\x24\x24\x24\x24\x24\x24\x24\x24"
6188 "\x24\x24\x24\x24\x24\x24\x24\x24"
6189 "\x24\x24\x24\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006190 .klen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006191 .input = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
6192 "\x06\xd3\x61\x27\xfd\x13\x9e\xde",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006193 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006194 .result = "\x24\x24\x24\x24\x24\x24\x24\x24"
6195 "\x24\x24\x24\x24\x24\x24\x24\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006196 .rlen = 16,
6197 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006198 .key = "\x25\x25\x25\x25\x25\x25\x25\x25"
6199 "\x25\x25\x25\x25\x25\x25\x25\x25"
6200 "\x25\x25\x25\x25\x25\x25\x25\x25"
6201 "\x25\x25\x25\x25\x25\x25\x25\x25",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006202 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006203 .input = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
6204 "\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006205 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006206 .result = "\x25\x25\x25\x25\x25\x25\x25\x25"
6207 "\x25\x25\x25\x25\x25\x25\x25\x25",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006208 .rlen = 16,
6209 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006210 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6211 "\x35\x35\x35\x35\x35\x35\x35\x35"
6212 "\x35\x35\x35\x35\x35\x35\x35\x35"
6213 "\x35\x35\x35\x35\x35\x35\x35\x35"
6214 "\x35\x35\x35\x35\x35\x35\x35\x35",
6215 .input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6216 "\x9e\xc6\x84\x0f\x17\x21\x07\xee",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006217 .klen = 40,
6218 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006219 .result = "\x35\x35\x35\x35\x35\x35\x35\x35"
6220 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006221 .rlen = 16,
6222 },
6223};
6224
6225static struct cipher_testvec anubis_cbc_enc_tv_template[] = {
6226 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006227 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6228 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006229 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006230 .input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6231 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6232 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6233 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006234 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006235 .result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6236 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
6237 "\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
6238 "\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006239 .rlen = 32,
6240 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006241 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6242 "\x35\x35\x35\x35\x35\x35\x35\x35"
6243 "\x35\x35\x35\x35\x35\x35\x35\x35"
6244 "\x35\x35\x35\x35\x35\x35\x35\x35"
6245 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006246 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006247 .input = "\x35\x35\x35\x35\x35\x35\x35\x35"
6248 "\x35\x35\x35\x35\x35\x35\x35\x35"
6249 "\x35\x35\x35\x35\x35\x35\x35\x35"
6250 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006251 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006252 .result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6253 "\x9e\xc6\x84\x0f\x17\x21\x07\xee"
6254 "\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
6255 "\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006256 .rlen = 32,
6257 },
6258};
6259
6260static struct cipher_testvec anubis_cbc_dec_tv_template[] = {
6261 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006262 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6263 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006264 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006265 .input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
6266 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
6267 "\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
6268 "\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006269 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006270 .result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6271 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6272 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
6273 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006274 .rlen = 32,
6275 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006276 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
6277 "\x35\x35\x35\x35\x35\x35\x35\x35"
6278 "\x35\x35\x35\x35\x35\x35\x35\x35"
6279 "\x35\x35\x35\x35\x35\x35\x35\x35"
6280 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006281 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006282 .input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
6283 "\x9e\xc6\x84\x0f\x17\x21\x07\xee"
6284 "\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
6285 "\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006286 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006287 .result = "\x35\x35\x35\x35\x35\x35\x35\x35"
6288 "\x35\x35\x35\x35\x35\x35\x35\x35"
6289 "\x35\x35\x35\x35\x35\x35\x35\x35"
6290 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07006291 .rlen = 32,
6292 },
6293};
6294
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006295/*
6296 * XETA test vectors
6297 */
6298#define XETA_ENC_TEST_VECTORS 4
6299#define XETA_DEC_TEST_VECTORS 4
6300
6301static struct cipher_testvec xeta_enc_tv_template[] = {
6302 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006303 .key = zeroed_string,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006304 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006305 .input = zeroed_string,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006306 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006307 .result = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006308 .rlen = 8,
6309 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006310 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6311 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006312 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006313 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006314 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006315 .result = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006316 .rlen = 8,
6317 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006318 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6319 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006320 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006321 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6322 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006323 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006324 .result = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
6325 "\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006326 .rlen = 16,
6327 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006328 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6329 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006330 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006331 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
6332 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6333 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6334 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006335 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006336 .result = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
6337 "\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
6338 "\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
6339 "\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006340 .rlen = 32,
6341 }
6342};
6343
6344static struct cipher_testvec xeta_dec_tv_template[] = {
6345 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006346 .key = zeroed_string,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006347 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006348 .input = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006349 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006350 .result = zeroed_string,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006351 .rlen = 8,
6352 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006353 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6354 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006355 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006356 .input = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006357 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006358 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006359 .rlen = 8,
6360 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006361 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6362 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006363 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006364 .input = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
6365 "\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006366 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006367 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6368 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006369 .rlen = 16,
6370 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006371 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6372 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006373 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006374 .input = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
6375 "\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
6376 "\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
6377 "\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006378 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006379 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
6380 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6381 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6382 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006383 .rlen = 32,
6384 }
6385};
6386
David Howells90831632006-12-16 12:13:14 +11006387/*
6388 * FCrypt test vectors
6389 */
6390#define FCRYPT_ENC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_enc_tv_template)
6391#define FCRYPT_DEC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_dec_tv_template)
6392
6393static struct cipher_testvec fcrypt_pcbc_enc_tv_template[] = {
6394 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006395 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
David Howells90831632006-12-16 12:13:14 +11006396 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006397 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6398 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
David Howells90831632006-12-16 12:13:14 +11006399 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006400 .result = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
David Howells90831632006-12-16 12:13:14 +11006401 .rlen = 8,
6402 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006403 .key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
David Howells90831632006-12-16 12:13:14 +11006404 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006405 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6406 .input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
David Howells90831632006-12-16 12:13:14 +11006407 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006408 .result = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
David Howells90831632006-12-16 12:13:14 +11006409 .rlen = 8,
6410 }, { /* From Arla */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006411 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
David Howells90831632006-12-16 12:13:14 +11006412 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006413 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
David Howells90831632006-12-16 12:13:14 +11006414 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6415 .ilen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006416 .result = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
6417 "\xee\xac\x98\x62\x44\x51\xe4\x84"
6418 "\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
6419 "\xd2\xd9\x13\x79\x72\xa3\x45\x03"
6420 "\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
6421 "\xf8\x91\x3c\xac\x44\x22\x92\xef",
David Howells90831632006-12-16 12:13:14 +11006422 .rlen = 48,
6423 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006424 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
David Howells90831632006-12-16 12:13:14 +11006425 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006426 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
David Howells90831632006-12-16 12:13:14 +11006427 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6428 .ilen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006429 .result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6430 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6431 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6432 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6433 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6434 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
David Howells90831632006-12-16 12:13:14 +11006435 .rlen = 48,
6436 }, { /* split-page version */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006437 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
David Howells90831632006-12-16 12:13:14 +11006438 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006439 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
David Howells90831632006-12-16 12:13:14 +11006440 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6441 .ilen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006442 .result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6443 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6444 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6445 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6446 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6447 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
David Howells90831632006-12-16 12:13:14 +11006448 .rlen = 48,
6449 .np = 2,
6450 .tap = { 20, 28 },
6451 }
6452};
6453
6454static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
6455 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006456 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
David Howells90831632006-12-16 12:13:14 +11006457 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006458 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6459 .input = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
David Howells90831632006-12-16 12:13:14 +11006460 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006461 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
David Howells90831632006-12-16 12:13:14 +11006462 .rlen = 8,
6463 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006464 .key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
David Howells90831632006-12-16 12:13:14 +11006465 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006466 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6467 .input = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
David Howells90831632006-12-16 12:13:14 +11006468 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006469 .result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
David Howells90831632006-12-16 12:13:14 +11006470 .rlen = 8,
6471 }, { /* From Arla */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006472 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
David Howells90831632006-12-16 12:13:14 +11006473 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006474 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6475 .input = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
6476 "\xee\xac\x98\x62\x44\x51\xe4\x84"
6477 "\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
6478 "\xd2\xd9\x13\x79\x72\xa3\x45\x03"
6479 "\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
6480 "\xf8\x91\x3c\xac\x44\x22\x92\xef",
David Howells90831632006-12-16 12:13:14 +11006481 .ilen = 48,
6482 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6483 .rlen = 48,
6484 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006485 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
David Howells90831632006-12-16 12:13:14 +11006486 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006487 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6488 .input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6489 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6490 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6491 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6492 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6493 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
David Howells90831632006-12-16 12:13:14 +11006494 .ilen = 48,
6495 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6496 .rlen = 48,
6497 }, { /* split-page version */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006498 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
David Howells90831632006-12-16 12:13:14 +11006499 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006500 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6501 .input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6502 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6503 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6504 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6505 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6506 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
David Howells90831632006-12-16 12:13:14 +11006507 .ilen = 48,
6508 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6509 .rlen = 48,
6510 .np = 2,
6511 .tap = { 20, 28 },
6512 }
6513};
6514
Linus Torvalds1da177e2005-04-16 15:20:36 -07006515/*
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006516 * CAMELLIA test vectors.
6517 */
6518#define CAMELLIA_ENC_TEST_VECTORS 3
6519#define CAMELLIA_DEC_TEST_VECTORS 3
6520#define CAMELLIA_CBC_ENC_TEST_VECTORS 2
6521#define CAMELLIA_CBC_DEC_TEST_VECTORS 2
6522
6523static struct cipher_testvec camellia_enc_tv_template[] = {
6524 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006525 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6526 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006527 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006528 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6529 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006530 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006531 .result = "\x67\x67\x31\x38\x54\x96\x69\x73"
6532 "\x08\x57\x06\x56\x48\xea\xbe\x43",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006533 .rlen = 16,
6534 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006535 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6536 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6537 "\x00\x11\x22\x33\x44\x55\x66\x77",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006538 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006539 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6540 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006541 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006542 .result = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
6543 "\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006544 .rlen = 16,
6545 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006546 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6547 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6548 "\x00\x11\x22\x33\x44\x55\x66\x77"
6549 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006550 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006551 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6552 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006553 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006554 .result = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
6555 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006556 .rlen = 16,
6557 },
6558};
6559
6560static struct cipher_testvec camellia_dec_tv_template[] = {
6561 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006562 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6563 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006564 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006565 .input = "\x67\x67\x31\x38\x54\x96\x69\x73"
6566 "\x08\x57\x06\x56\x48\xea\xbe\x43",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006567 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006568 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6569 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006570 .rlen = 16,
6571 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006572 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6573 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6574 "\x00\x11\x22\x33\x44\x55\x66\x77",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006575 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006576 .input = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
6577 "\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006578 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006579 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6580 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006581 .rlen = 16,
6582 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006583 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6584 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6585 "\x00\x11\x22\x33\x44\x55\x66\x77"
6586 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006587 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006588 .input = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
6589 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006590 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006591 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6592 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006593 .rlen = 16,
6594 },
6595};
6596
6597static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
6598 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006599 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
6600 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006601 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006602 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
6603 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
6604 .input = "Single block msg",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006605 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006606 .result = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
6607 "\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006608 .rlen = 16,
6609 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006610 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
6611 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006612 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006613 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
6614 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
6615 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
6616 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6617 "\x10\x11\x12\x13\x14\x15\x16\x17"
6618 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006619 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006620 .result = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
6621 "\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
6622 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
6623 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006624 .rlen = 32,
6625 },
6626};
6627
6628static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
6629 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006630 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
6631 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006632 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006633 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
6634 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
6635 .input = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
6636 "\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006637 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006638 .result = "Single block msg",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006639 .rlen = 16,
6640 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006641 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
6642 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006643 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006644 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
6645 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
6646 .input = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
6647 "\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
6648 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
6649 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006650 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006651 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
6652 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6653 "\x10\x11\x12\x13\x14\x15\x16\x17"
6654 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006655 .rlen = 32,
6656 },
6657};
6658
6659/*
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006660 * SEED test vectors
6661 */
6662#define SEED_ENC_TEST_VECTORS 4
6663#define SEED_DEC_TEST_VECTORS 4
6664
6665static struct cipher_testvec seed_enc_tv_template[] = {
6666 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006667 .key = zeroed_string,
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006668 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006669 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
6670 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006671 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006672 .result = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
6673 "\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006674 .rlen = 16,
6675 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006676 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6677 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006678 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006679 .input = zeroed_string,
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006680 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006681 .result = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
6682 "\x84\x48\x35\x97\xe4\x37\x0f\x43",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006683 .rlen = 16,
6684 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006685 .key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
6686 "\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006687 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006688 .input = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
6689 "\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006690 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006691 .result = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
6692 "\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006693 .rlen = 16,
6694 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006695 .key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
6696 "\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006697 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006698 .input = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
6699 "\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006700 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006701 .result = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
6702 "\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006703 .rlen = 16,
6704 }
6705};
6706
6707static struct cipher_testvec seed_dec_tv_template[] = {
6708 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006709 .key = zeroed_string,
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006710 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006711 .input = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
6712 "\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006713 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006714 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
6715 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006716 .rlen = 16,
6717 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006718 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6719 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006720 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006721 .input = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
6722 "\x84\x48\x35\x97\xe4\x37\x0f\x43",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006723 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006724 .result = zeroed_string,
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006725 .rlen = 16,
6726 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006727 .key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
6728 "\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006729 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006730 .input = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
6731 "\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006732 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006733 .result = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
6734 "\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006735 .rlen = 16,
6736 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006737 .key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
6738 "\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006739 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006740 .input = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
6741 "\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006742 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006743 .result = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
6744 "\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006745 .rlen = 16,
6746 }
6747};
6748
Tan Swee Heng8bff664c2007-12-07 16:41:29 +08006749#define SALSA20_STREAM_ENC_TEST_VECTORS 5
Tan Swee Heng2407d602007-11-23 19:45:00 +08006750static struct cipher_testvec salsa20_stream_enc_tv_template[] = {
6751 /*
6752 * Testvectors from verified.test-vectors submitted to ECRYPT.
6753 * They are truncated to size 39, 64, 111, 129 to test a variety
6754 * of input length.
6755 */
6756 { /* Set 3, vector 0 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006757 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6758 "\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006759 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006760 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6761 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6762 "\x00\x00\x00\x00\x00\x00\x00\x00"
6763 "\x00\x00\x00\x00\x00\x00\x00\x00"
6764 "\x00\x00\x00\x00\x00\x00\x00\x00"
6765 "\x00\x00\x00\x00\x00\x00\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006766 .ilen = 39,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006767 .result = "\x2D\xD5\xC3\xF7\xBA\x2B\x20\xF7"
6768 "\x68\x02\x41\x0C\x68\x86\x88\x89"
6769 "\x5A\xD8\xC1\xBD\x4E\xA6\xC9\xB1"
6770 "\x40\xFB\x9B\x90\xE2\x10\x49\xBF"
6771 "\x58\x3F\x52\x79\x70\xEB\xC1",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006772 .rlen = 39,
6773 }, { /* Set 5, vector 0 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006774 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
6775 "\x00\x00\x00\x00\x00\x00\x00\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006776 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006777 .iv = "\x80\x00\x00\x00\x00\x00\x00\x00",
6778 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6779 "\x00\x00\x00\x00\x00\x00\x00\x00"
6780 "\x00\x00\x00\x00\x00\x00\x00\x00"
6781 "\x00\x00\x00\x00\x00\x00\x00\x00"
6782 "\x00\x00\x00\x00\x00\x00\x00\x00"
6783 "\x00\x00\x00\x00\x00\x00\x00\x00"
6784 "\x00\x00\x00\x00\x00\x00\x00\x00"
6785 "\x00\x00\x00\x00\x00\x00\x00\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006786 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006787 .result = "\xB6\x6C\x1E\x44\x46\xDD\x95\x57"
6788 "\xE5\x78\xE2\x23\xB0\xB7\x68\x01"
6789 "\x7B\x23\xB2\x67\xBB\x02\x34\xAE"
6790 "\x46\x26\xBF\x44\x3F\x21\x97\x76"
6791 "\x43\x6F\xB1\x9F\xD0\xE8\x86\x6F"
6792 "\xCD\x0D\xE9\xA9\x53\x8F\x4A\x09"
6793 "\xCA\x9A\xC0\x73\x2E\x30\xBC\xF9"
6794 "\x8E\x4F\x13\xE4\xB9\xE2\x01\xD9",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006795 .rlen = 64,
6796 }, { /* Set 3, vector 27 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006797 .key = "\x1B\x1C\x1D\x1E\x1F\x20\x21\x22"
6798 "\x23\x24\x25\x26\x27\x28\x29\x2A"
6799 "\x2B\x2C\x2D\x2E\x2F\x30\x31\x32"
6800 "\x33\x34\x35\x36\x37\x38\x39\x3A",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006801 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006802 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6803 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6804 "\x00\x00\x00\x00\x00\x00\x00\x00"
6805 "\x00\x00\x00\x00\x00\x00\x00\x00"
6806 "\x00\x00\x00\x00\x00\x00\x00\x00"
6807 "\x00\x00\x00\x00\x00\x00\x00\x00"
6808 "\x00\x00\x00\x00\x00\x00\x00\x00"
6809 "\x00\x00\x00\x00\x00\x00\x00\x00"
6810 "\x00\x00\x00\x00\x00\x00\x00\x00"
6811 "\x00\x00\x00\x00\x00\x00\x00\x00"
6812 "\x00\x00\x00\x00\x00\x00\x00\x00"
6813 "\x00\x00\x00\x00\x00\x00\x00\x00"
6814 "\x00\x00\x00\x00\x00\x00\x00\x00"
6815 "\x00\x00\x00\x00\x00\x00\x00\x00"
6816 "\x00\x00\x00\x00\x00\x00\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006817 .ilen = 111,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006818 .result = "\xAE\x39\x50\x8E\xAC\x9A\xEC\xE7"
6819 "\xBF\x97\xBB\x20\xB9\xDE\xE4\x1F"
6820 "\x87\xD9\x47\xF8\x28\x91\x35\x98"
6821 "\xDB\x72\xCC\x23\x29\x48\x56\x5E"
6822 "\x83\x7E\x0B\xF3\x7D\x5D\x38\x7B"
6823 "\x2D\x71\x02\xB4\x3B\xB5\xD8\x23"
6824 "\xB0\x4A\xDF\x3C\xEC\xB6\xD9\x3B"
6825 "\x9B\xA7\x52\xBE\xC5\xD4\x50\x59"
6826 "\x15\x14\xB4\x0E\x40\xE6\x53\xD1"
6827 "\x83\x9C\x5B\xA0\x92\x29\x6B\x5E"
6828 "\x96\x5B\x1E\x2F\xD3\xAC\xC1\x92"
6829 "\xB1\x41\x3F\x19\x2F\xC4\x3B\xC6"
6830 "\x95\x46\x45\x54\xE9\x75\x03\x08"
6831 "\x44\xAF\xE5\x8A\x81\x12\x09",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006832 .rlen = 111,
Tan Swee Heng2407d602007-11-23 19:45:00 +08006833 }, { /* Set 5, vector 27 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006834 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
6835 "\x00\x00\x00\x00\x00\x00\x00\x00"
6836 "\x00\x00\x00\x00\x00\x00\x00\x00"
6837 "\x00\x00\x00\x00\x00\x00\x00\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006838 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006839 .iv = "\x00\x00\x00\x10\x00\x00\x00\x00",
6840 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6841 "\x00\x00\x00\x00\x00\x00\x00\x00"
6842 "\x00\x00\x00\x00\x00\x00\x00\x00"
6843 "\x00\x00\x00\x00\x00\x00\x00\x00"
6844 "\x00\x00\x00\x00\x00\x00\x00\x00"
6845 "\x00\x00\x00\x00\x00\x00\x00\x00"
6846 "\x00\x00\x00\x00\x00\x00\x00\x00"
6847 "\x00\x00\x00\x00\x00\x00\x00\x00"
6848 "\x00\x00\x00\x00\x00\x00\x00\x00"
6849 "\x00\x00\x00\x00\x00\x00\x00\x00"
6850 "\x00\x00\x00\x00\x00\x00\x00\x00"
6851 "\x00\x00\x00\x00\x00\x00\x00\x00"
6852 "\x00\x00\x00\x00\x00\x00\x00\x00"
6853 "\x00\x00\x00\x00\x00\x00\x00\x00"
6854 "\x00\x00\x00\x00\x00\x00\x00\x00"
6855 "\x00\x00\x00\x00\x00\x00\x00\x00"
6856 "\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006857 .ilen = 129,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006858 .result = "\xD2\xDB\x1A\x5C\xF1\xC1\xAC\xDB"
6859 "\xE8\x1A\x7A\x43\x40\xEF\x53\x43"
6860 "\x5E\x7F\x4B\x1A\x50\x52\x3F\x8D"
6861 "\x28\x3D\xCF\x85\x1D\x69\x6E\x60"
6862 "\xF2\xDE\x74\x56\x18\x1B\x84\x10"
6863 "\xD4\x62\xBA\x60\x50\xF0\x61\xF2"
6864 "\x1C\x78\x7F\xC1\x24\x34\xAF\x58"
6865 "\xBF\x2C\x59\xCA\x90\x77\xF3\xB0"
6866 "\x5B\x4A\xDF\x89\xCE\x2C\x2F\xFC"
6867 "\x67\xF0\xE3\x45\xE8\xB3\xB3\x75"
6868 "\xA0\x95\x71\xA1\x29\x39\x94\xCA"
6869 "\x45\x2F\xBD\xCB\x10\xB6\xBE\x9F"
6870 "\x8E\xF9\xB2\x01\x0A\x5A\x0A\xB7"
6871 "\x6B\x9D\x70\x8E\x4B\xD6\x2F\xCD"
6872 "\x2E\x40\x48\x75\xE9\xE2\x21\x45"
6873 "\x0B\xC9\xB6\xB5\x66\xBC\x9A\x59"
6874 "\x5A",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006875 .rlen = 129,
Tan Swee Heng8bff664c2007-12-07 16:41:29 +08006876 }, { /* large test vector generated using Crypto++ */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006877 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6878 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6879 "\x10\x11\x12\x13\x14\x15\x16\x17"
6880 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Tan Swee Heng8bff664c2007-12-07 16:41:29 +08006881 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006882 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
6883 "\x00\x00\x00\x00\x00\x00\x00\x00",
6884 .input =
6885 "\x00\x01\x02\x03\x04\x05\x06\x07"
6886 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6887 "\x10\x11\x12\x13\x14\x15\x16\x17"
6888 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
6889 "\x20\x21\x22\x23\x24\x25\x26\x27"
6890 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
6891 "\x30\x31\x32\x33\x34\x35\x36\x37"
6892 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
6893 "\x40\x41\x42\x43\x44\x45\x46\x47"
6894 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
6895 "\x50\x51\x52\x53\x54\x55\x56\x57"
6896 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
6897 "\x60\x61\x62\x63\x64\x65\x66\x67"
6898 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
6899 "\x70\x71\x72\x73\x74\x75\x76\x77"
6900 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
6901 "\x80\x81\x82\x83\x84\x85\x86\x87"
6902 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
6903 "\x90\x91\x92\x93\x94\x95\x96\x97"
6904 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
6905 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
6906 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
6907 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
6908 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
6909 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
6910 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
6911 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
6912 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
6913 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
6914 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
6915 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
6916 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
6917 "\x00\x03\x06\x09\x0c\x0f\x12\x15"
6918 "\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
6919 "\x30\x33\x36\x39\x3c\x3f\x42\x45"
6920 "\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
6921 "\x60\x63\x66\x69\x6c\x6f\x72\x75"
6922 "\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
6923 "\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
6924 "\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
6925 "\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
6926 "\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
6927 "\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
6928 "\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
6929 "\x20\x23\x26\x29\x2c\x2f\x32\x35"
6930 "\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
6931 "\x50\x53\x56\x59\x5c\x5f\x62\x65"
6932 "\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
6933 "\x80\x83\x86\x89\x8c\x8f\x92\x95"
6934 "\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
6935 "\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
6936 "\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
6937 "\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
6938 "\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
6939 "\x10\x13\x16\x19\x1c\x1f\x22\x25"
6940 "\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
6941 "\x40\x43\x46\x49\x4c\x4f\x52\x55"
6942 "\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
6943 "\x70\x73\x76\x79\x7c\x7f\x82\x85"
6944 "\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
6945 "\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
6946 "\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
6947 "\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
6948 "\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
6949 "\x00\x05\x0a\x0f\x14\x19\x1e\x23"
6950 "\x28\x2d\x32\x37\x3c\x41\x46\x4b"
6951 "\x50\x55\x5a\x5f\x64\x69\x6e\x73"
6952 "\x78\x7d\x82\x87\x8c\x91\x96\x9b"
6953 "\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
6954 "\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
6955 "\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
6956 "\x18\x1d\x22\x27\x2c\x31\x36\x3b"
6957 "\x40\x45\x4a\x4f\x54\x59\x5e\x63"
6958 "\x68\x6d\x72\x77\x7c\x81\x86\x8b"
6959 "\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
6960 "\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
6961 "\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
6962 "\x08\x0d\x12\x17\x1c\x21\x26\x2b"
6963 "\x30\x35\x3a\x3f\x44\x49\x4e\x53"
6964 "\x58\x5d\x62\x67\x6c\x71\x76\x7b"
6965 "\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
6966 "\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
6967 "\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
6968 "\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
6969 "\x20\x25\x2a\x2f\x34\x39\x3e\x43"
6970 "\x48\x4d\x52\x57\x5c\x61\x66\x6b"
6971 "\x70\x75\x7a\x7f\x84\x89\x8e\x93"
6972 "\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
6973 "\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
6974 "\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
6975 "\x10\x15\x1a\x1f\x24\x29\x2e\x33"
6976 "\x38\x3d\x42\x47\x4c\x51\x56\x5b"
6977 "\x60\x65\x6a\x6f\x74\x79\x7e\x83"
6978 "\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
6979 "\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
6980 "\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
6981 "\x00\x07\x0e\x15\x1c\x23\x2a\x31"
6982 "\x38\x3f\x46\x4d\x54\x5b\x62\x69"
6983 "\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
6984 "\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
6985 "\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
6986 "\x18\x1f\x26\x2d\x34\x3b\x42\x49"
6987 "\x50\x57\x5e\x65\x6c\x73\x7a\x81"
6988 "\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
6989 "\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
6990 "\xf8\xff\x06\x0d\x14\x1b\x22\x29"
6991 "\x30\x37\x3e\x45\x4c\x53\x5a\x61"
6992 "\x68\x6f\x76\x7d\x84\x8b\x92\x99"
6993 "\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
6994 "\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
6995 "\x10\x17\x1e\x25\x2c\x33\x3a\x41"
6996 "\x48\x4f\x56\x5d\x64\x6b\x72\x79"
6997 "\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
6998 "\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
6999 "\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
7000 "\x28\x2f\x36\x3d\x44\x4b\x52\x59"
7001 "\x60\x67\x6e\x75\x7c\x83\x8a\x91"
7002 "\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
7003 "\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
7004 "\x08\x0f\x16\x1d\x24\x2b\x32\x39"
7005 "\x40\x47\x4e\x55\x5c\x63\x6a\x71"
7006 "\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
7007 "\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
7008 "\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
7009 "\x20\x27\x2e\x35\x3c\x43\x4a\x51"
7010 "\x58\x5f\x66\x6d\x74\x7b\x82\x89"
7011 "\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
7012 "\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
7013 "\x00\x09\x12\x1b\x24\x2d\x36\x3f"
7014 "\x48\x51\x5a\x63\x6c\x75\x7e\x87"
7015 "\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
7016 "\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
7017 "\x20\x29\x32\x3b\x44\x4d\x56\x5f"
7018 "\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
7019 "\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
7020 "\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
7021 "\x40\x49\x52\x5b\x64\x6d\x76\x7f"
7022 "\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
7023 "\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
7024 "\x18\x21\x2a\x33\x3c\x45\x4e\x57"
7025 "\x60\x69\x72\x7b\x84\x8d\x96\x9f"
7026 "\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
7027 "\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
7028 "\x38\x41\x4a\x53\x5c\x65\x6e\x77"
7029 "\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
7030 "\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
7031 "\x10\x19\x22\x2b\x34\x3d\x46\x4f"
7032 "\x58\x61\x6a\x73\x7c\x85\x8e\x97"
7033 "\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
7034 "\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
7035 "\x30\x39\x42\x4b\x54\x5d\x66\x6f"
7036 "\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
7037 "\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
7038 "\x08\x11\x1a\x23\x2c\x35\x3e\x47"
7039 "\x50\x59\x62\x6b\x74\x7d\x86\x8f"
7040 "\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
7041 "\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
7042 "\x28\x31\x3a\x43\x4c\x55\x5e\x67"
7043 "\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
7044 "\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
7045 "\x00\x0b\x16\x21\x2c\x37\x42\x4d"
7046 "\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
7047 "\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
7048 "\x08\x13\x1e\x29\x34\x3f\x4a\x55"
7049 "\x60\x6b\x76\x81\x8c\x97\xa2\xad"
7050 "\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
7051 "\x10\x1b\x26\x31\x3c\x47\x52\x5d"
7052 "\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
7053 "\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
7054 "\x18\x23\x2e\x39\x44\x4f\x5a\x65"
7055 "\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
7056 "\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
7057 "\x20\x2b\x36\x41\x4c\x57\x62\x6d"
7058 "\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
7059 "\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
7060 "\x28\x33\x3e\x49\x54\x5f\x6a\x75"
7061 "\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
7062 "\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
7063 "\x30\x3b\x46\x51\x5c\x67\x72\x7d"
7064 "\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
7065 "\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
7066 "\x38\x43\x4e\x59\x64\x6f\x7a\x85"
7067 "\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
7068 "\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
7069 "\x40\x4b\x56\x61\x6c\x77\x82\x8d"
7070 "\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
7071 "\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
7072 "\x48\x53\x5e\x69\x74\x7f\x8a\x95"
7073 "\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
7074 "\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
7075 "\x50\x5b\x66\x71\x7c\x87\x92\x9d"
7076 "\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
7077 "\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
7078 "\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
7079 "\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
7080 "\x38\x45\x52\x5f\x6c\x79\x86\x93"
7081 "\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
7082 "\x08\x15\x22\x2f\x3c\x49\x56\x63"
7083 "\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
7084 "\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
7085 "\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
7086 "\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
7087 "\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
7088 "\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
7089 "\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
7090 "\x48\x55\x62\x6f\x7c\x89\x96\xa3"
7091 "\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
7092 "\x18\x25\x32\x3f\x4c\x59\x66\x73"
7093 "\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
7094 "\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
7095 "\x50\x5d\x6a\x77\x84\x91\x9e\xab"
7096 "\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
7097 "\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
7098 "\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
7099 "\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
7100 "\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
7101 "\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
7102 "\x28\x35\x42\x4f\x5c\x69\x76\x83"
7103 "\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
7104 "\xf8\x05\x12\x1f\x2c\x39\x46\x53"
7105 "\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
7106 "\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
7107 "\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
7108 "\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
7109 "\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
7110 "\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
7111 "\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
7112 "\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
7113 "\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
7114 "\x58\x67\x76\x85\x94\xa3\xb2\xc1"
7115 "\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
7116 "\x48\x57\x66\x75\x84\x93\xa2\xb1"
7117 "\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
7118 "\x38\x47\x56\x65\x74\x83\x92\xa1"
7119 "\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
7120 "\x28\x37\x46\x55\x64\x73\x82\x91"
7121 "\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
7122 "\x18\x27\x36\x45\x54\x63\x72\x81"
7123 "\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
7124 "\x08\x17\x26\x35\x44\x53\x62\x71"
7125 "\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
7126 "\xf8\x07\x16\x25\x34\x43\x52\x61"
7127 "\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
7128 "\xe8\xf7\x06\x15\x24\x33\x42\x51"
7129 "\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
7130 "\xd8\xe7\xf6\x05\x14\x23\x32\x41"
7131 "\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
7132 "\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
7133 "\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
7134 "\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
7135 "\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
7136 "\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
7137 "\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
7138 "\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
7139 "\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
7140 "\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
7141 "\x00\x11\x22\x33\x44\x55\x66\x77"
7142 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
7143 "\x10\x21\x32\x43\x54\x65\x76\x87"
7144 "\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
7145 "\x20\x31\x42\x53\x64\x75\x86\x97"
7146 "\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
7147 "\x30\x41\x52\x63\x74\x85\x96\xa7"
7148 "\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
7149 "\x40\x51\x62\x73\x84\x95\xa6\xb7"
7150 "\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
7151 "\x50\x61\x72\x83\x94\xa5\xb6\xc7"
7152 "\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
7153 "\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
7154 "\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
7155 "\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
7156 "\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
7157 "\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
7158 "\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
7159 "\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
7160 "\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
7161 "\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
7162 "\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
7163 "\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
7164 "\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
7165 "\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
7166 "\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
7167 "\xd0\xe1\xf2\x03\x14\x25\x36\x47"
7168 "\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
7169 "\xe0\xf1\x02\x13\x24\x35\x46\x57"
7170 "\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
7171 "\xf0\x01\x12\x23\x34\x45\x56\x67"
7172 "\x78\x89\x9a\xab\xbc\xcd\xde\xef"
7173 "\x00\x13\x26\x39\x4c\x5f\x72\x85"
7174 "\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
7175 "\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
7176 "\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
7177 "\x60\x73\x86\x99\xac\xbf\xd2\xe5"
7178 "\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
7179 "\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
7180 "\x28\x3b\x4e\x61\x74\x87\x9a\xad"
7181 "\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
7182 "\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
7183 "\xf0\x03\x16\x29\x3c\x4f\x62\x75"
7184 "\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
7185 "\x20\x33\x46\x59\x6c\x7f\x92\xa5"
7186 "\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
7187 "\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
7188 "\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
7189 "\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
7190 "\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
7191 "\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
7192 "\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
7193 "\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
7194 "\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
7195 "\x10\x23\x36\x49\x5c\x6f\x82\x95"
7196 "\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
7197 "\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
7198 "\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
7199 "\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
7200 "\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
7201 "\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
7202 "\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
7203 "\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
7204 "\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
7205 "\x00\x15\x2a\x3f\x54\x69\x7e\x93"
7206 "\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
7207 "\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
7208 "\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
7209 "\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
7210 "\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
7211 "\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
7212 "\x98\xad\xc2\xd7\xec\x01\x16\x2b"
7213 "\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
7214 "\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
7215 "\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
7216 "\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
7217 "\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
7218 "\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
7219 "\x30\x45\x5a\x6f\x84\x99\xae\xc3"
7220 "\xd8\xed\x02\x17\x2c\x41\x56\x6b"
7221 "\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
7222 "\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
7223 "\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
7224 "\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
7225 "\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
7226 "\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
7227 "\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
7228 "\x18\x2d\x42\x57\x6c\x81\x96\xab"
7229 "\xc0\xd5\xea\xff\x14\x29\x3e\x53"
7230 "\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
7231 "\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
7232 "\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
7233 "\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
7234 "\x08\x1d\x32\x47\x5c\x71\x86\x9b"
7235 "\xb0\xc5\xda\xef\x04\x19\x2e\x43"
7236 "\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
7237 "\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
7238 "\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
7239 "\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
7240 "\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
7241 "\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
7242 "\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
7243 "\x50\x67\x7e\x95\xac\xc3\xda\xf1"
7244 "\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
7245 "\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
7246 "\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
7247 "\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
7248 "\xe8\xff\x16\x2d\x44\x5b\x72\x89"
7249 "\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
7250 "\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
7251 "\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
7252 "\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
7253 "\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
7254 "\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
7255 "\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
7256 "\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
7257 "\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
7258 "\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
7259 "\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
7260 "\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
7261 "\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
7262 "\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
7263 "\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
7264 "\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
7265 "\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
7266 "\xd8\xef\x06\x1d\x34\x4b\x62\x79"
7267 "\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
7268 "\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
7269 "\x00\x19\x32\x4b\x64\x7d\x96\xaf"
7270 "\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
7271 "\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
7272 "\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
7273 "\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
7274 "\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
7275 "\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
7276 "\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
7277 "\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
7278 "\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
7279 "\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
7280 "\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
7281 "\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
7282 "\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
7283 "\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
7284 "\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
7285 "\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
7286 "\x48\x61\x7a\x93\xac\xc5\xde\xf7"
7287 "\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
7288 "\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
7289 "\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
7290 "\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
7291 "\x30\x49\x62\x7b\x94\xad\xc6\xdf"
7292 "\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
7293 "\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
7294 "\x88\xa1\xba\xd3\xec\x05\x1e\x37"
7295 "\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
7296 "\x18\x31\x4a\x63\x7c\x95\xae\xc7"
7297 "\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
7298 "\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
7299 "\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
7300 "\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
7301 "\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
7302 "\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
7303 "\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
7304 "\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
7305 "\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
7306 "\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
7307 "\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
7308 "\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
7309 "\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
7310 "\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
7311 "\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
7312 "\x48\x63\x7e\x99\xb4\xcf\xea\x05"
7313 "\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
7314 "\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
7315 "\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
7316 "\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
7317 "\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
7318 "\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
7319 "\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
7320 "\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
7321 "\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
7322 "\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
7323 "\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
7324 "\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
7325 "\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
7326 "\x18\x33\x4e\x69\x84\x9f\xba\xd5"
7327 "\xf0\x0b\x26\x41\x5c\x77\x92\xad"
7328 "\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
7329 "\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
7330 "\x78\x93\xae\xc9\xe4\xff\x1a\x35"
7331 "\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
7332 "\x28\x43\x5e\x79\x94\xaf\xca\xe5"
7333 "\x00\x1d\x3a\x57\x74\x91\xae\xcb"
7334 "\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
7335 "\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
7336 "\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
7337 "\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
7338 "\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
7339 "\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
7340 "\x58\x75\x92\xaf\xcc\xe9\x06\x23"
7341 "\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
7342 "\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
7343 "\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
7344 "\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
7345 "\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
7346 "\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
7347 "\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
7348 "\x98\xb5\xd2\xef\x0c\x29\x46\x63"
7349 "\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
7350 "\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
7351 "\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
7352 "\x38\x55\x72\x8f\xac\xc9\xe6\x03"
7353 "\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
7354 "\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
7355 "\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
7356 "\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
7357 "\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
7358 "\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
7359 "\x90\xad\xca\xe7\x04\x21\x3e\x5b"
7360 "\x78\x95\xb2\xcf\xec\x09\x26\x43"
7361 "\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
7362 "\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
7363 "\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
7364 "\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
7365 "\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
7366 "\xf8\x17\x36\x55\x74\x93\xb2\xd1"
7367 "\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
7368 "\xe8\x07\x26\x45\x64\x83\xa2\xc1"
7369 "\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
7370 "\xd8\xf7\x16\x35\x54\x73\x92\xb1"
7371 "\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
7372 "\xc8\xe7\x06\x25\x44\x63\x82\xa1"
7373 "\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
7374 "\xb8\xd7\xf6\x15\x34\x53\x72\x91"
7375 "\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
7376 "\xa8\xc7\xe6\x05\x24\x43\x62\x81"
7377 "\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
7378 "\x98\xb7\xd6\xf5\x14\x33\x52\x71"
7379 "\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
7380 "\x88\xa7\xc6\xe5\x04\x23\x42\x61"
7381 "\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
7382 "\x78\x97\xb6\xd5\xf4\x13\x32\x51"
7383 "\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
7384 "\x68\x87\xa6\xc5\xe4\x03\x22\x41"
7385 "\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
7386 "\x58\x77\x96\xb5\xd4\xf3\x12\x31"
7387 "\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
7388 "\x48\x67\x86\xa5\xc4\xe3\x02\x21"
7389 "\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
7390 "\x38\x57\x76\x95\xb4\xd3\xf2\x11"
7391 "\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
7392 "\x28\x47\x66\x85\xa4\xc3\xe2\x01"
7393 "\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
7394 "\x18\x37\x56\x75\x94\xb3\xd2\xf1"
7395 "\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
7396 "\x08\x27\x46\x65\x84\xa3\xc2\xe1"
7397 "\x00\x21\x42\x63",
Tan Swee Heng8bff664c2007-12-07 16:41:29 +08007398 .ilen = 4100,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007399 .result =
7400 "\xb5\x81\xf5\x64\x18\x73\xe3\xf0"
7401 "\x4c\x13\xf2\x77\x18\x60\x65\x5e"
7402 "\x29\x01\xce\x98\x55\x53\xf9\x0c"
7403 "\x2a\x08\xd5\x09\xb3\x57\x55\x56"
7404 "\xc5\xe9\x56\x90\xcb\x6a\xa3\xc0"
7405 "\xff\xc4\x79\xb4\xd2\x97\x5d\xc4"
7406 "\x43\xd1\xfe\x94\x7b\x88\x06\x5a"
7407 "\xb2\x9e\x2c\xfc\x44\x03\xb7\x90"
7408 "\xa0\xc1\xba\x6a\x33\xb8\xc7\xb2"
7409 "\x9d\xe1\x12\x4f\xc0\x64\xd4\x01"
7410 "\xfe\x8c\x7a\x66\xf7\xe6\x5a\x91"
7411 "\xbb\xde\x56\x86\xab\x65\x21\x30"
7412 "\x00\x84\x65\x24\xa5\x7d\x85\xb4"
7413 "\xe3\x17\xed\x3a\xb7\x6f\xb4\x0b"
7414 "\x0b\xaf\x15\xae\x5a\x8f\xf2\x0c"
7415 "\x2f\x27\xf4\x09\xd8\xd2\x96\xb7"
7416 "\x71\xf2\xc5\x99\x4d\x7e\x7f\x75"
7417 "\x77\x89\x30\x8b\x59\xdb\xa2\xb2"
7418 "\xa0\xf3\x19\x39\x2b\xc5\x7e\x3f"
7419 "\x4f\xd9\xd3\x56\x28\x97\x44\xdc"
7420 "\xc0\x8b\x77\x24\xd9\x52\xe7\xc5"
7421 "\xaf\xf6\x7d\x59\xb2\x44\x05\x1d"
7422 "\xb1\xb0\x11\xa5\x0f\xec\x33\xe1"
7423 "\x6d\x1b\x4e\x1f\xff\x57\x91\xb4"
7424 "\x5b\x9a\x96\xc5\x53\xbc\xae\x20"
7425 "\x3c\xbb\x14\xe2\xe8\x22\x33\xc1"
7426 "\x5e\x76\x9e\x46\x99\xf6\x2a\x15"
7427 "\xc6\x97\x02\xa0\x66\x43\xd1\xa6"
7428 "\x31\xa6\x9f\xfb\xf4\xd3\x69\xe5"
7429 "\xcd\x76\x95\xb8\x7a\x82\x7f\x21"
7430 "\x45\xff\x3f\xce\x55\xf6\x95\x10"
7431 "\x08\x77\x10\x43\xc6\xf3\x09\xe5"
7432 "\x68\xe7\x3c\xad\x00\x52\x45\x0d"
7433 "\xfe\x2d\xc6\xc2\x94\x8c\x12\x1d"
7434 "\xe6\x25\xae\x98\x12\x8e\x19\x9c"
7435 "\x81\x68\xb1\x11\xf6\x69\xda\xe3"
7436 "\x62\x08\x18\x7a\x25\x49\x28\xac"
7437 "\xba\x71\x12\x0b\xe4\xa2\xe5\xc7"
7438 "\x5d\x8e\xec\x49\x40\x21\xbf\x5a"
7439 "\x98\xf3\x02\x68\x55\x03\x7f\x8a"
7440 "\xe5\x94\x0c\x32\x5c\x07\x82\x63"
7441 "\xaf\x6f\x91\x40\x84\x8e\x52\x25"
7442 "\xd0\xb0\x29\x53\x05\xe2\x50\x7a"
7443 "\x34\xeb\xc9\x46\x20\xa8\x3d\xde"
7444 "\x7f\x16\x5f\x36\xc5\x2e\xdc\xd1"
7445 "\x15\x47\xc7\x50\x40\x6d\x91\xc5"
7446 "\xe7\x93\x95\x1a\xd3\x57\xbc\x52"
7447 "\x33\xee\x14\x19\x22\x52\x89\xa7"
7448 "\x4a\x25\x56\x77\x4b\xca\xcf\x0a"
7449 "\xe1\xf5\x35\x85\x30\x7e\x59\x4a"
7450 "\xbd\x14\x5b\xdf\xe3\x46\xcb\xac"
7451 "\x1f\x6c\x96\x0e\xf4\x81\xd1\x99"
7452 "\xca\x88\x63\x3d\x02\x58\x6b\xa9"
7453 "\xe5\x9f\xb3\x00\xb2\x54\xc6\x74"
7454 "\x1c\xbf\x46\xab\x97\xcc\xf8\x54"
7455 "\x04\x07\x08\x52\xe6\xc0\xda\x93"
7456 "\x74\x7d\x93\x99\x5d\x78\x68\xa6"
7457 "\x2e\x6b\xd3\x6a\x69\xcc\x12\x6b"
7458 "\xd4\xc7\xa5\xc6\xe7\xf6\x03\x04"
7459 "\x5d\xcd\x61\x5e\x17\x40\xdc\xd1"
7460 "\x5c\xf5\x08\xdf\x5c\x90\x85\xa4"
7461 "\xaf\xf6\x78\xbb\x0d\xf1\xf4\xa4"
7462 "\x54\x26\x72\x9e\x61\xfa\x86\xcf"
7463 "\xe8\x9e\xa1\xe0\xc7\x48\x23\xae"
7464 "\x5a\x90\xae\x75\x0a\x74\x18\x89"
7465 "\x05\xb1\x92\xb2\x7f\xd0\x1b\xa6"
7466 "\x62\x07\x25\x01\xc7\xc2\x4f\xf9"
7467 "\xe8\xfe\x63\x95\x80\x07\xb4\x26"
7468 "\xcc\xd1\x26\xb6\xc4\x3f\x9e\xcb"
7469 "\x8e\x3b\x2e\x44\x16\xd3\x10\x9a"
7470 "\x95\x08\xeb\xc8\xcb\xeb\xbf\x6f"
7471 "\x0b\xcd\x1f\xc8\xca\x86\xaa\xec"
7472 "\x33\xe6\x69\xf4\x45\x25\x86\x3a"
7473 "\x22\x94\x4f\x00\x23\x6a\x44\xc2"
7474 "\x49\x97\x33\xab\x36\x14\x0a\x70"
7475 "\x24\xc3\xbe\x04\x3b\x79\xa0\xf9"
7476 "\xb8\xe7\x76\x29\x22\x83\xd7\xf2"
7477 "\x94\xf4\x41\x49\xba\x5f\x7b\x07"
7478 "\xb5\xfb\xdb\x03\x1a\x9f\xb6\x4c"
7479 "\xc2\x2e\x37\x40\x49\xc3\x38\x16"
7480 "\xe2\x4f\x77\x82\xb0\x68\x4c\x71"
7481 "\x1d\x57\x61\x9c\xd9\x4e\x54\x99"
7482 "\x47\x13\x28\x73\x3c\xbb\x00\x90"
7483 "\xf3\x4d\xc9\x0e\xfd\xe7\xb1\x71"
7484 "\xd3\x15\x79\xbf\xcc\x26\x2f\xbd"
7485 "\xad\x6c\x50\x69\x6c\x3e\x6d\x80"
7486 "\x9a\xea\x78\xaf\x19\xb2\x0d\x4d"
7487 "\xad\x04\x07\xae\x22\x90\x4a\x93"
7488 "\x32\x0e\x36\x9b\x1b\x46\xba\x3b"
7489 "\xb4\xac\xc6\xd1\xa2\x31\x53\x3b"
7490 "\x2a\x3d\x45\xfe\x03\x61\x10\x85"
7491 "\x17\x69\xa6\x78\xcc\x6c\x87\x49"
7492 "\x53\xf9\x80\x10\xde\x80\xa2\x41"
7493 "\x6a\xc3\x32\x02\xad\x6d\x3c\x56"
7494 "\x00\x71\x51\x06\xa7\xbd\xfb\xef"
7495 "\x3c\xb5\x9f\xfc\x48\x7d\x53\x7c"
7496 "\x66\xb0\x49\x23\xc4\x47\x10\x0e"
7497 "\xe5\x6c\x74\x13\xe6\xc5\x3f\xaa"
7498 "\xde\xff\x07\x44\xdd\x56\x1b\xad"
7499 "\x09\x77\xfb\x5b\x12\xb8\x0d\x38"
7500 "\x17\x37\x35\x7b\x9b\xbc\xfe\xd4"
7501 "\x7e\x8b\xda\x7e\x5b\x04\xa7\x22"
7502 "\xa7\x31\xa1\x20\x86\xc7\x1b\x99"
7503 "\xdb\xd1\x89\xf4\x94\xa3\x53\x69"
7504 "\x8d\xe7\xe8\x74\x11\x8d\x74\xd6"
7505 "\x07\x37\x91\x9f\xfd\x67\x50\x3a"
7506 "\xc9\xe1\xf4\x36\xd5\xa0\x47\xd1"
7507 "\xf9\xe5\x39\xa3\x31\xac\x07\x36"
7508 "\x23\xf8\x66\x18\x14\x28\x34\x0f"
7509 "\xb8\xd0\xe7\x29\xb3\x04\x4b\x55"
7510 "\x01\x41\xb2\x75\x8d\xcb\x96\x85"
7511 "\x3a\xfb\xab\x2b\x9e\xfa\x58\x20"
7512 "\x44\x1f\xc0\x14\x22\x75\x61\xe8"
7513 "\xaa\x19\xcf\xf1\x82\x56\xf4\xd7"
7514 "\x78\x7b\x3d\x5f\xb3\x9e\x0b\x8a"
7515 "\x57\x50\xdb\x17\x41\x65\x4d\xa3"
7516 "\x02\xc9\x9c\x9c\x53\xfb\x39\x39"
7517 "\x9b\x1d\x72\x24\xda\xb7\x39\xbe"
7518 "\x13\x3b\xfa\x29\xda\x9e\x54\x64"
7519 "\x6e\xba\xd8\xa1\xcb\xb3\x36\xfa"
7520 "\xcb\x47\x85\xe9\x61\x38\xbc\xbe"
7521 "\xc5\x00\x38\x2a\x54\xf7\xc4\xb9"
7522 "\xb3\xd3\x7b\xa0\xa0\xf8\x72\x7f"
7523 "\x8c\x8e\x82\x0e\xc6\x1c\x75\x9d"
7524 "\xca\x8e\x61\x87\xde\xad\x80\xd2"
7525 "\xf5\xf9\x80\xef\x15\x75\xaf\xf5"
7526 "\x80\xfb\xff\x6d\x1e\x25\xb7\x40"
7527 "\x61\x6a\x39\x5a\x6a\xb5\x31\xab"
7528 "\x97\x8a\x19\x89\x44\x40\xc0\xa6"
7529 "\xb4\x4e\x30\x32\x7b\x13\xe7\x67"
7530 "\xa9\x8b\x57\x04\xc2\x01\xa6\xf4"
7531 "\x28\x99\xad\x2c\x76\xa3\x78\xc2"
7532 "\x4a\xe6\xca\x5c\x50\x6a\xc1\xb0"
7533 "\x62\x4b\x10\x8e\x7c\x17\x43\xb3"
7534 "\x17\x66\x1c\x3e\x8d\x69\xf0\x5a"
7535 "\x71\xf5\x97\xdc\xd1\x45\xdd\x28"
7536 "\xf3\x5d\xdf\x53\x7b\x11\xe5\xbc"
7537 "\x4c\xdb\x1b\x51\x6b\xe9\xfb\x3d"
7538 "\xc1\xc3\x2c\xb9\x71\xf5\xb6\xb2"
7539 "\x13\x36\x79\x80\x53\xe8\xd3\xa6"
7540 "\x0a\xaf\xfd\x56\x97\xf7\x40\x8e"
7541 "\x45\xce\xf8\xb0\x9e\x5c\x33\x82"
7542 "\xb0\x44\x56\xfc\x05\x09\xe9\x2a"
7543 "\xac\x26\x80\x14\x1d\xc8\x3a\x35"
7544 "\x4c\x82\x97\xfd\x76\xb7\xa9\x0a"
7545 "\x35\x58\x79\x8e\x0f\x66\xea\xaf"
7546 "\x51\x6c\x09\xa9\x6e\x9b\xcb\x9a"
7547 "\x31\x47\xa0\x2f\x7c\x71\xb4\x4a"
7548 "\x11\xaa\x8c\x66\xc5\x64\xe6\x3a"
7549 "\x54\xda\x24\x6a\xc4\x41\x65\x46"
7550 "\x82\xa0\x0a\x0f\x5f\xfb\x25\xd0"
7551 "\x2c\x91\xa7\xee\xc4\x81\x07\x86"
7552 "\x75\x5e\x33\x69\x97\xe4\x2c\xa8"
7553 "\x9d\x9f\x0b\x6a\xbe\xad\x98\xda"
7554 "\x6d\x94\x41\xda\x2c\x1e\x89\xc4"
7555 "\xc2\xaf\x1e\x00\x05\x0b\x83\x60"
7556 "\xbd\x43\xea\x15\x23\x7f\xb9\xac"
7557 "\xee\x4f\x2c\xaf\x2a\xf3\xdf\xd0"
7558 "\xf3\x19\x31\xbb\x4a\x74\x84\x17"
7559 "\x52\x32\x2c\x7d\x61\xe4\xcb\xeb"
7560 "\x80\x38\x15\x52\xcb\x6f\xea\xe5"
7561 "\x73\x9c\xd9\x24\x69\xc6\x95\x32"
7562 "\x21\xc8\x11\xe4\xdc\x36\xd7\x93"
7563 "\x38\x66\xfb\xb2\x7f\x3a\xb9\xaf"
7564 "\x31\xdd\x93\x75\x78\x8a\x2c\x94"
7565 "\x87\x1a\x58\xec\x9e\x7d\x4d\xba"
7566 "\xe1\xe5\x4d\xfc\xbc\xa4\x2a\x14"
7567 "\xef\xcc\xa7\xec\xab\x43\x09\x18"
7568 "\xd3\xab\x68\xd1\x07\x99\x44\x47"
7569 "\xd6\x83\x85\x3b\x30\xea\xa9\x6b"
7570 "\x63\xea\xc4\x07\xfb\x43\x2f\xa4"
7571 "\xaa\xb0\xab\x03\x89\xce\x3f\x8c"
7572 "\x02\x7c\x86\x54\xbc\x88\xaf\x75"
7573 "\xd2\xdc\x63\x17\xd3\x26\xf6\x96"
7574 "\xa9\x3c\xf1\x61\x8c\x11\x18\xcc"
7575 "\xd6\xea\x5b\xe2\xcd\xf0\xf1\xb2"
7576 "\xe5\x35\x90\x1f\x85\x4c\x76\x5b"
7577 "\x66\xce\x44\xa4\x32\x9f\xe6\x7b"
7578 "\x71\x6e\x9f\x58\x15\x67\x72\x87"
7579 "\x64\x8e\x3a\x44\x45\xd4\x76\xfa"
7580 "\xc2\xf6\xef\x85\x05\x18\x7a\x9b"
7581 "\xba\x41\x54\xac\xf0\xfc\x59\x12"
7582 "\x3f\xdf\xa0\xe5\x8a\x65\xfd\x3a"
7583 "\x62\x8d\x83\x2c\x03\xbe\x05\x76"
7584 "\x2e\x53\x49\x97\x94\x33\xae\x40"
7585 "\x81\x15\xdb\x6e\xad\xaa\xf5\x4b"
7586 "\xe3\x98\x70\xdf\xe0\x7c\xcd\xdb"
7587 "\x02\xd4\x7d\x2f\xc1\xe6\xb4\xf3"
7588 "\xd7\x0d\x7a\xd9\x23\x9e\x87\x2d"
7589 "\xce\x87\xad\xcc\x72\x05\x00\x29"
7590 "\xdc\x73\x7f\x64\xc1\x15\x0e\xc2"
7591 "\xdf\xa7\x5f\xeb\x41\xa1\xcd\xef"
7592 "\x5c\x50\x79\x2a\x56\x56\x71\x8c"
7593 "\xac\xc0\x79\x50\x69\xca\x59\x32"
7594 "\x65\xf2\x54\xe4\x52\x38\x76\xd1"
7595 "\x5e\xde\x26\x9e\xfb\x75\x2e\x11"
7596 "\xb5\x10\xf4\x17\x73\xf5\x89\xc7"
7597 "\x4f\x43\x5c\x8e\x7c\xb9\x05\x52"
7598 "\x24\x40\x99\xfe\x9b\x85\x0b\x6c"
7599 "\x22\x3e\x8b\xae\x86\xa1\xd2\x79"
7600 "\x05\x68\x6b\xab\xe3\x41\x49\xed"
7601 "\x15\xa1\x8d\x40\x2d\x61\xdf\x1a"
7602 "\x59\xc9\x26\x8b\xef\x30\x4c\x88"
7603 "\x4b\x10\xf8\x8d\xa6\x92\x9f\x4b"
7604 "\xf3\xc4\x53\x0b\x89\x5d\x28\x92"
7605 "\xcf\x78\xb2\xc0\x5d\xed\x7e\xfc"
7606 "\xc0\x12\x23\x5f\x5a\x78\x86\x43"
7607 "\x6e\x27\xf7\x5a\xa7\x6a\xed\x19"
7608 "\x04\xf0\xb3\x12\xd1\xbd\x0e\x89"
7609 "\x6e\xbc\x96\xa8\xd8\x49\x39\x9f"
7610 "\x7e\x67\xf0\x2e\x3e\x01\xa9\xba"
7611 "\xec\x8b\x62\x8e\xcb\x4a\x70\x43"
7612 "\xc7\xc2\xc4\xca\x82\x03\x73\xe9"
7613 "\x11\xdf\xcf\x54\xea\xc9\xb0\x95"
7614 "\x51\xc0\x13\x3d\x92\x05\xfa\xf4"
7615 "\xa9\x34\xc8\xce\x6c\x3d\x54\xcc"
7616 "\xc4\xaf\xf1\xdc\x11\x44\x26\xa2"
7617 "\xaf\xf1\x85\x75\x7d\x03\x61\x68"
7618 "\x4e\x78\xc6\x92\x7d\x86\x7d\x77"
7619 "\xdc\x71\x72\xdb\xc6\xae\xa1\xcb"
7620 "\x70\x9a\x0b\x19\xbe\x4a\x6c\x2a"
7621 "\xe2\xba\x6c\x64\x9a\x13\x28\xdf"
7622 "\x85\x75\xe6\x43\xf6\x87\x08\x68"
7623 "\x6e\xba\x6e\x79\x9f\x04\xbc\x23"
7624 "\x50\xf6\x33\x5c\x1f\x24\x25\xbe"
7625 "\x33\x47\x80\x45\x56\xa3\xa7\xd7"
7626 "\x7a\xb1\x34\x0b\x90\x3c\x9c\xad"
7627 "\x44\x5f\x9e\x0e\x9d\xd4\xbd\x93"
7628 "\x5e\xfa\x3c\xe0\xb0\xd9\xed\xf3"
7629 "\xd6\x2e\xff\x24\xd8\x71\x6c\xed"
7630 "\xaf\x55\xeb\x22\xac\x93\x68\x32"
7631 "\x05\x5b\x47\xdd\xc6\x4a\xcb\xc7"
7632 "\x10\xe1\x3c\x92\x1a\xf3\x23\x78"
7633 "\x2b\xa1\xd2\x80\xf4\x12\xb1\x20"
7634 "\x8f\xff\x26\x35\xdd\xfb\xc7\x4e"
7635 "\x78\xf1\x2d\x50\x12\x77\xa8\x60"
7636 "\x7c\x0f\xf5\x16\x2f\x63\x70\x2a"
7637 "\xc0\x96\x80\x4e\x0a\xb4\x93\x35"
7638 "\x5d\x1d\x3f\x56\xf7\x2f\xbb\x90"
7639 "\x11\x16\x8f\xa2\xec\x47\xbe\xac"
7640 "\x56\x01\x26\x56\xb1\x8c\xb2\x10"
7641 "\xf9\x1a\xca\xf5\xd1\xb7\x39\x20"
7642 "\x63\xf1\x69\x20\x4f\x13\x12\x1f"
7643 "\x5b\x65\xfc\x98\xf7\xc4\x7a\xbe"
7644 "\xf7\x26\x4d\x2b\x84\x7b\x42\xad"
7645 "\xd8\x7a\x0a\xb4\xd8\x74\xbf\xc1"
7646 "\xf0\x6e\xb4\x29\xa3\xbb\xca\x46"
7647 "\x67\x70\x6a\x2d\xce\x0e\xa2\x8a"
7648 "\xa9\x87\xbf\x05\xc4\xc1\x04\xa3"
7649 "\xab\xd4\x45\x43\x8c\xb6\x02\xb0"
7650 "\x41\xc8\xfc\x44\x3d\x59\xaa\x2e"
7651 "\x44\x21\x2a\x8d\x88\x9d\x57\xf4"
7652 "\xa0\x02\x77\xb8\xa6\xa0\xe6\x75"
7653 "\x5c\x82\x65\x3e\x03\x5c\x29\x8f"
7654 "\x38\x55\xab\x33\x26\xef\x9f\x43"
7655 "\x52\xfd\x68\xaf\x36\xb4\xbb\x9a"
7656 "\x58\x09\x09\x1b\xc3\x65\x46\x46"
7657 "\x1d\xa7\x94\x18\x23\x50\x2c\xca"
7658 "\x2c\x55\x19\x97\x01\x9d\x93\x3b"
7659 "\x63\x86\xf2\x03\x67\x45\xd2\x72"
7660 "\x28\x52\x6c\xf4\xe3\x1c\xb5\x11"
7661 "\x13\xf1\xeb\x21\xc7\xd9\x56\x82"
7662 "\x2b\x82\x39\xbd\x69\x54\xed\x62"
7663 "\xc3\xe2\xde\x73\xd4\x6a\x12\xae"
7664 "\x13\x21\x7f\x4b\x5b\xfc\xbf\xe8"
7665 "\x2b\xbe\x56\xba\x68\x8b\x9a\xb1"
7666 "\x6e\xfa\xbf\x7e\x5a\x4b\xf1\xac"
7667 "\x98\x65\x85\xd1\x93\x53\xd3\x7b"
7668 "\x09\xdd\x4b\x10\x6d\x84\xb0\x13"
7669 "\x65\xbd\xcf\x52\x09\xc4\x85\xe2"
7670 "\x84\x74\x15\x65\xb7\xf7\x51\xaf"
7671 "\x55\xad\xa4\xd1\x22\x54\x70\x94"
7672 "\xa0\x1c\x90\x41\xfd\x99\xd7\x5a"
7673 "\x31\xef\xaa\x25\xd0\x7f\x4f\xea"
7674 "\x1d\x55\x42\xe5\x49\xb0\xd0\x46"
7675 "\x62\x36\x43\xb2\x82\x15\x75\x50"
7676 "\xa4\x72\xeb\x54\x27\x1f\x8a\xe4"
7677 "\x7d\xe9\x66\xc5\xf1\x53\xa4\xd1"
7678 "\x0c\xeb\xb8\xf8\xbc\xd4\xe2\xe7"
7679 "\xe1\xf8\x4b\xcb\xa9\xa1\xaf\x15"
7680 "\x83\xcb\x72\xd0\x33\x79\x00\x2d"
7681 "\x9f\xd7\xf1\x2e\x1e\x10\xe4\x45"
7682 "\xc0\x75\x3a\x39\xea\x68\xf7\x5d"
7683 "\x1b\x73\x8f\xe9\x8e\x0f\x72\x47"
7684 "\xae\x35\x0a\x31\x7a\x14\x4d\x4a"
7685 "\x6f\x47\xf7\x7e\x91\x6e\x74\x8b"
7686 "\x26\x47\xf9\xc3\xf9\xde\x70\xf5"
7687 "\x61\xab\xa9\x27\x9f\x82\xe4\x9c"
7688 "\x89\x91\x3f\x2e\x6a\xfd\xb5\x49"
7689 "\xe9\xfd\x59\x14\x36\x49\x40\x6d"
7690 "\x32\xd8\x85\x42\xf3\xa5\xdf\x0c"
7691 "\xa8\x27\xd7\x54\xe2\x63\x2f\xf2"
7692 "\x7e\x8b\x8b\xe7\xf1\x9a\x95\x35"
7693 "\x43\xdc\x3a\xe4\xb6\xf4\xd0\xdf"
7694 "\x9c\xcb\x94\xf3\x21\xa0\x77\x50"
7695 "\xe2\xc6\xc4\xc6\x5f\x09\x64\x5b"
7696 "\x92\x90\xd8\xe1\xd1\xed\x4b\x42"
7697 "\xd7\x37\xaf\x65\x3d\x11\x39\xb6"
7698 "\x24\x8a\x60\xae\xd6\x1e\xbf\x0e"
7699 "\x0d\xd7\xdc\x96\x0e\x65\x75\x4e"
7700 "\x29\x06\x9d\xa4\x51\x3a\x10\x63"
7701 "\x8f\x17\x07\xd5\x8e\x3c\xf4\x28"
7702 "\x00\x5a\x5b\x05\x19\xd8\xc0\x6c"
7703 "\xe5\x15\xe4\x9c\x9d\x71\x9d\x5e"
7704 "\x94\x29\x1a\xa7\x80\xfa\x0e\x33"
7705 "\x03\xdd\xb7\x3e\x9a\xa9\x26\x18"
7706 "\x37\xa9\x64\x08\x4d\x94\x5a\x88"
7707 "\xca\x35\xce\x81\x02\xe3\x1f\x1b"
7708 "\x89\x1a\x77\x85\xe3\x41\x6d\x32"
7709 "\x42\x19\x23\x7d\xc8\x73\xee\x25"
7710 "\x85\x0d\xf8\x31\x25\x79\x1b\x6f"
7711 "\x79\x25\xd2\xd8\xd4\x23\xfd\xf7"
7712 "\x82\x36\x6a\x0c\x46\x22\x15\xe9"
7713 "\xff\x72\x41\x91\x91\x7d\x3a\xb7"
7714 "\xdd\x65\x99\x70\xf6\x8d\x84\xf8"
7715 "\x67\x15\x20\x11\xd6\xb2\x55\x7b"
7716 "\xdb\x87\xee\xef\x55\x89\x2a\x59"
7717 "\x2b\x07\x8f\x43\x8a\x59\x3c\x01"
7718 "\x8b\x65\x54\xa1\x66\xd5\x38\xbd"
7719 "\xc6\x30\xa9\xcc\x49\xb6\xa8\x1b"
7720 "\xb8\xc0\x0e\xe3\x45\x28\xe2\xff"
7721 "\x41\x9f\x7e\x7c\xd1\xae\x9e\x25"
7722 "\x3f\x4c\x7c\x7c\xf4\xa8\x26\x4d"
7723 "\x5c\xfd\x4b\x27\x18\xf9\x61\x76"
7724 "\x48\xba\x0c\x6b\xa9\x4d\xfc\xf5"
7725 "\x3b\x35\x7e\x2f\x4a\xa9\xc2\x9a"
7726 "\xae\xab\x86\x09\x89\xc9\xc2\x40"
7727 "\x39\x2c\x81\xb3\xb8\x17\x67\xc2"
7728 "\x0d\x32\x4a\x3a\x67\x81\xd7\x1a"
7729 "\x34\x52\xc5\xdb\x0a\xf5\x63\x39"
7730 "\xea\x1f\xe1\x7c\xa1\x9e\xc1\x35"
7731 "\xe3\xb1\x18\x45\x67\xf9\x22\x38"
7732 "\x95\xd9\x34\x34\x86\xc6\x41\x94"
7733 "\x15\xf9\x5b\x41\xa6\x87\x8b\xf8"
7734 "\xd5\xe1\x1b\xe2\x5b\xf3\x86\x10"
7735 "\xff\xe6\xae\x69\x76\xbc\x0d\xb4"
7736 "\x09\x90\x0c\xa2\x65\x0c\xad\x74"
7737 "\xf5\xd7\xff\xda\xc1\xce\x85\xbe"
7738 "\x00\xa7\xff\x4d\x2f\x65\xd3\x8c"
7739 "\x86\x2d\x05\xe8\xed\x3e\x6b\x8b"
7740 "\x0f\x3d\x83\x8c\xf1\x1d\x5b\x96"
7741 "\x2e\xb1\x9c\xc2\x98\xe1\x70\xb9"
7742 "\xba\x5c\x8a\x43\xd6\x34\xa7\x2d"
7743 "\xc9\x92\xae\xf2\xa5\x7b\x05\x49"
7744 "\xa7\x33\x34\x86\xca\xe4\x96\x23"
7745 "\x76\x5b\xf2\xc6\xf1\x51\x28\x42"
7746 "\x7b\xcc\x76\x8f\xfa\xa2\xad\x31"
7747 "\xd4\xd6\x7a\x6d\x25\x25\x54\xe4"
7748 "\x3f\x50\x59\xe1\x5c\x05\xb7\x27"
7749 "\x48\xbf\x07\xec\x1b\x13\xbe\x2b"
7750 "\xa1\x57\x2b\xd5\xab\xd7\xd0\x4c"
7751 "\x1e\xcb\x71\x9b\xc5\x90\x85\xd3"
7752 "\xde\x59\xec\x71\xeb\x89\xbb\xd0"
7753 "\x09\x50\xe1\x16\x3f\xfd\x1c\x34"
7754 "\xc3\x1c\xa1\x10\x77\x53\x98\xef"
7755 "\xf2\xfd\xa5\x01\x59\xc2\x9b\x26"
7756 "\xc7\x42\xd9\x49\xda\x58\x2b\x6e"
7757 "\x9f\x53\x19\x76\x7e\xd9\xc9\x0e"
7758 "\x68\xc8\x7f\x51\x22\x42\xef\x49"
7759 "\xa4\x55\xb6\x36\xac\x09\xc7\x31"
7760 "\x88\x15\x4b\x2e\x8f\x3a\x08\xf7"
7761 "\xd8\xf7\xa8\xc5\xa9\x33\xa6\x45"
7762 "\xe4\xc4\x94\x76\xf3\x0d\x8f\x7e"
7763 "\xc8\xf6\xbc\x23\x0a\xb6\x4c\xd3"
7764 "\x6a\xcd\x36\xc2\x90\x5c\x5c\x3c"
7765 "\x65\x7b\xc2\xd6\xcc\xe6\x0d\x87"
7766 "\x73\x2e\x71\x79\x16\x06\x63\x28"
7767 "\x09\x15\xd8\x89\x38\x38\x3d\xb5"
7768 "\x42\x1c\x08\x24\xf7\x2a\xd2\x9d"
7769 "\xc8\xca\xef\xf9\x27\xd8\x07\x86"
7770 "\xf7\x43\x0b\x55\x15\x3f\x9f\x83"
7771 "\xef\xdc\x49\x9d\x2a\xc1\x54\x62"
7772 "\xbd\x9b\x66\x55\x9f\xb7\x12\xf3"
7773 "\x1b\x4d\x9d\x2a\x5c\xed\x87\x75"
7774 "\x87\x26\xec\x61\x2c\xb4\x0f\x89"
7775 "\xb0\xfb\x2e\x68\x5d\x15\xc7\x8d"
7776 "\x2e\xc0\xd9\xec\xaf\x4f\xd2\x25"
7777 "\x29\xe8\xd2\x26\x2b\x67\xe9\xfc"
7778 "\x2b\xa8\x67\x96\x12\x1f\x5b\x96"
7779 "\xc6\x14\x53\xaf\x44\xea\xd6\xe2"
7780 "\x94\x98\xe4\x12\x93\x4c\x92\xe0"
7781 "\x18\xa5\x8d\x2d\xe4\x71\x3c\x47"
7782 "\x4c\xf7\xe6\x47\x9e\xc0\x68\xdf"
7783 "\xd4\xf5\x5a\x74\xb1\x2b\x29\x03"
7784 "\x19\x07\xaf\x90\x62\x5c\x68\x98"
7785 "\x48\x16\x11\x02\x9d\xee\xb4\x9b"
7786 "\xe5\x42\x7f\x08\xfd\x16\x32\x0b"
7787 "\xd0\xb3\xfa\x2b\xb7\x99\xf9\x29"
7788 "\xcd\x20\x45\x9f\xb3\x1a\x5d\xa2"
7789 "\xaf\x4d\xe0\xbd\x42\x0d\xbc\x74"
7790 "\x99\x9c\x8e\x53\x1a\xb4\x3e\xbd"
7791 "\xa2\x9a\x2d\xf7\xf8\x39\x0f\x67"
7792 "\x63\xfc\x6b\xc0\xaf\xb3\x4b\x4f"
7793 "\x55\xc4\xcf\xa7\xc8\x04\x11\x3e"
7794 "\x14\x32\xbb\x1b\x38\x77\xd6\x7f"
7795 "\x54\x4c\xdf\x75\xf3\x07\x2d\x33"
7796 "\x9b\xa8\x20\xe1\x7b\x12\xb5\xf3"
7797 "\xef\x2f\xce\x72\xe5\x24\x60\xc1"
7798 "\x30\xe2\xab\xa1\x8e\x11\x09\xa8"
7799 "\x21\x33\x44\xfe\x7f\x35\x32\x93"
7800 "\x39\xa7\xad\x8b\x79\x06\xb2\xcb"
7801 "\x4e\xa9\x5f\xc7\xba\x74\x29\xec"
7802 "\x93\xa0\x4e\x54\x93\xc0\xbc\x55"
7803 "\x64\xf0\x48\xe5\x57\x99\xee\x75"
7804 "\xd6\x79\x0f\x66\xb7\xc6\x57\x76"
7805 "\xf7\xb7\xf3\x9c\xc5\x60\xe8\x7f"
7806 "\x83\x76\xd6\x0e\xaa\xe6\x90\x39"
7807 "\x1d\xa6\x32\x6a\x34\xe3\x55\xf8"
7808 "\x58\xa0\x58\x7d\x33\xe0\x22\x39"
7809 "\x44\x64\x87\x86\x5a\x2f\xa7\x7e"
7810 "\x0f\x38\xea\xb0\x30\xcc\x61\xa5"
7811 "\x6a\x32\xae\x1e\xf7\xe9\xd0\xa9"
7812 "\x0c\x32\x4b\xb5\x49\x28\xab\x85"
7813 "\x2f\x8e\x01\x36\x38\x52\xd0\xba"
7814 "\xd6\x02\x78\xf8\x0e\x3e\x9c\x8b"
7815 "\x6b\x45\x99\x3f\x5c\xfe\x58\xf1"
7816 "\x5c\x94\x04\xe1\xf5\x18\x6d\x51"
7817 "\xb2\x5d\x18\x20\xb6\xc2\x9a\x42"
7818 "\x1d\xb3\xab\x3c\xb6\x3a\x13\x03"
7819 "\xb2\x46\x82\x4f\xfc\x64\xbc\x4f"
7820 "\xca\xfa\x9c\xc0\xd5\xa7\xbd\x11"
7821 "\xb7\xe4\x5a\xf6\x6f\x4d\x4d\x54"
7822 "\xea\xa4\x98\x66\xd4\x22\x3b\xd3"
7823 "\x8f\x34\x47\xd9\x7c\xf4\x72\x3b"
7824 "\x4d\x02\x77\xf6\xd6\xdd\x08\x0a"
7825 "\x81\xe1\x86\x89\x3e\x56\x10\x3c"
7826 "\xba\xd7\x81\x8c\x08\xbc\x8b\xe2"
7827 "\x53\xec\xa7\x89\xee\xc8\x56\xb5"
7828 "\x36\x2c\xb2\x03\xba\x99\xdd\x7c"
7829 "\x48\xa0\xb0\xbc\x91\x33\xe9\xa8"
7830 "\xcb\xcd\xcf\x59\x5f\x1f\x15\xe2"
7831 "\x56\xf5\x4e\x01\x35\x27\x45\x77"
7832 "\x47\xc8\xbc\xcb\x7e\x39\xc1\x97"
7833 "\x28\xd3\x84\xfc\x2c\x3e\xc8\xad"
7834 "\x9c\xf8\x8a\x61\x9c\x28\xaa\xc5"
7835 "\x99\x20\x43\x85\x9d\xa5\xe2\x8b"
7836 "\xb8\xae\xeb\xd0\x32\x0d\x52\x78"
7837 "\x09\x56\x3f\xc7\xd8\x7e\x26\xfc"
7838 "\x37\xfb\x6f\x04\xfc\xfa\x92\x10"
7839 "\xac\xf8\x3e\x21\xdc\x8c\x21\x16"
7840 "\x7d\x67\x6e\xf6\xcd\xda\xb6\x98"
7841 "\x23\xab\x23\x3c\xb2\x10\xa0\x53"
7842 "\x5a\x56\x9f\xc5\xd0\xff\xbb\xe4"
7843 "\x98\x3c\x69\x1e\xdb\x38\x8f\x7e"
7844 "\x0f\xd2\x98\x88\x81\x8b\x45\x67"
7845 "\xea\x33\xf1\xeb\xe9\x97\x55\x2e"
7846 "\xd9\xaa\xeb\x5a\xec\xda\xe1\x68"
7847 "\xa8\x9d\x3c\x84\x7c\x05\x3d\x62"
7848 "\x87\x8f\x03\x21\x28\x95\x0c\x89"
7849 "\x25\x22\x4a\xb0\x93\xa9\x50\xa2"
7850 "\x2f\x57\x6e\x18\x42\x19\x54\x0c"
7851 "\x55\x67\xc6\x11\x49\xf4\x5c\xd2"
7852 "\xe9\x3d\xdd\x8b\x48\x71\x21\x00"
7853 "\xc3\x9a\x6c\x85\x74\x28\x83\x4a"
7854 "\x1b\x31\x05\xe1\x06\x92\xe7\xda"
7855 "\x85\x73\x78\x45\x20\x7f\xae\x13"
7856 "\x7c\x33\x06\x22\xf4\x83\xf9\x35"
7857 "\x3f\x6c\x71\xa8\x4e\x48\xbe\x9b"
7858 "\xce\x8a\xba\xda\xbe\x28\x08\xf7"
7859 "\xe2\x14\x8c\x71\xea\x72\xf9\x33"
7860 "\xf2\x88\x3f\xd7\xbb\x69\x6c\x29"
7861 "\x19\xdc\x84\xce\x1f\x12\x4f\xc8"
7862 "\xaf\xa5\x04\xba\x5a\xab\xb0\xd9"
7863 "\x14\x1f\x6c\x68\x98\x39\x89\x7a"
7864 "\xd9\xd8\x2f\xdf\xa8\x47\x4a\x25"
7865 "\xe2\xfb\x33\xf4\x59\x78\xe1\x68"
7866 "\x85\xcf\xfe\x59\x20\xd4\x05\x1d"
7867 "\x80\x99\xae\xbc\xca\xae\x0f\x2f"
7868 "\x65\x43\x34\x8e\x7e\xac\xd3\x93"
7869 "\x2f\xac\x6d\x14\x3d\x02\x07\x70"
7870 "\x9d\xa4\xf3\x1b\x5c\x36\xfc\x01"
7871 "\x73\x34\x85\x0c\x6c\xd6\xf1\xbd"
7872 "\x3f\xdf\xee\xf5\xd9\xba\x56\xef"
7873 "\xf4\x9b\x6b\xee\x9f\x5a\x78\x6d"
7874 "\x32\x19\xf4\xf7\xf8\x4c\x69\x0b"
7875 "\x4b\xbc\xbb\xb7\xf2\x85\xaf\x70"
7876 "\x75\x24\x6c\x54\xa7\x0e\x4d\x1d"
7877 "\x01\xbf\x08\xac\xcf\x7f\x2c\xe3"
7878 "\x14\x89\x5e\x70\x5a\x99\x92\xcd"
7879 "\x01\x84\xc8\xd2\xab\xe5\x4f\x58"
7880 "\xe7\x0f\x2f\x0e\xff\x68\xea\xfd"
7881 "\x15\xb3\x17\xe6\xb0\xe7\x85\xd8"
7882 "\x23\x2e\x05\xc7\xc9\xc4\x46\x1f"
7883 "\xe1\x9e\x49\x20\x23\x24\x4d\x7e"
7884 "\x29\x65\xff\xf4\xb6\xfd\x1a\x85"
7885 "\xc4\x16\xec\xfc\xea\x7b\xd6\x2c"
7886 "\x43\xf8\xb7\xbf\x79\xc0\x85\xcd"
7887 "\xef\xe1\x98\xd3\xa5\xf7\x90\x8c"
7888 "\xe9\x7f\x80\x6b\xd2\xac\x4c\x30"
7889 "\xa7\xc6\x61\x6c\xd2\xf9\x2c\xff"
7890 "\x30\xbc\x22\x81\x7d\x93\x12\xe4"
7891 "\x0a\xcd\xaf\xdd\xe8\xab\x0a\x1e"
7892 "\x13\xa4\x27\xc3\x5f\xf7\x4b\xbb"
7893 "\x37\x09\x4b\x91\x6f\x92\x4f\xaf"
7894 "\x52\xee\xdf\xef\x09\x6f\xf7\x5c"
7895 "\x6e\x12\x17\x72\x63\x57\xc7\xba"
7896 "\x3b\x6b\x38\x32\x73\x1b\x9c\x80"
7897 "\xc1\x7a\xc6\xcf\xcd\x35\xc0\x6b"
7898 "\x31\x1a\x6b\xe9\xd8\x2c\x29\x3f"
7899 "\x96\xfb\xb6\xcd\x13\x91\x3b\xc2"
7900 "\xd2\xa3\x31\x8d\xa4\xcd\x57\xcd"
7901 "\x13\x3d\x64\xfd\x06\xce\xe6\xdc"
7902 "\x0c\x24\x43\x31\x40\x57\xf1\x72"
7903 "\x17\xe3\x3a\x63\x6d\x35\xcf\x5d"
7904 "\x97\x40\x59\xdd\xf7\x3c\x02\xf7"
7905 "\x1c\x7e\x05\xbb\xa9\x0d\x01\xb1"
7906 "\x8e\xc0\x30\xa9\x53\x24\xc9\x89"
7907 "\x84\x6d\xaa\xd0\xcd\x91\xc2\x4d"
7908 "\x91\xb0\x89\xe2\xbf\x83\x44\xaa"
7909 "\x28\x72\x23\xa0\xc2\xad\xad\x1c"
7910 "\xfc\x3f\x09\x7a\x0b\xdc\xc5\x1b"
7911 "\x87\x13\xc6\x5b\x59\x8d\xf2\xc8"
7912 "\xaf\xdf\x11\x95",
Tan Swee Heng8bff664c2007-12-07 16:41:29 +08007913 .rlen = 4100,
7914 },
Tan Swee Heng2407d602007-11-23 19:45:00 +08007915};
7916
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08007917/*
Kevin Coffman76cb9522008-03-24 21:26:16 +08007918 * CTS (Cipher Text Stealing) mode tests
7919 */
7920#define CTS_MODE_ENC_TEST_VECTORS 6
7921#define CTS_MODE_DEC_TEST_VECTORS 6
7922static struct cipher_testvec cts_mode_enc_tv_template[] = {
7923 { /* from rfc3962 */
7924 .klen = 16,
7925 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7926 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7927 .ilen = 17,
7928 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7929 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7930 "\x20",
7931 .rlen = 17,
7932 .result = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
7933 "\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
7934 "\x97",
7935 }, {
7936 .klen = 16,
7937 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7938 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7939 .ilen = 31,
7940 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7941 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7942 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7943 "\x20\x47\x61\x75\x27\x73\x20",
7944 .rlen = 31,
7945 .result = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
7946 "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
7947 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7948 "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
7949 }, {
7950 .klen = 16,
7951 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7952 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7953 .ilen = 32,
7954 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7955 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7956 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7957 "\x20\x47\x61\x75\x27\x73\x20\x43",
7958 .rlen = 32,
7959 .result = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7960 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
7961 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7962 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
7963 }, {
7964 .klen = 16,
7965 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7966 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7967 .ilen = 47,
7968 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7969 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7970 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7971 "\x20\x47\x61\x75\x27\x73\x20\x43"
7972 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7973 "\x70\x6c\x65\x61\x73\x65\x2c",
7974 .rlen = 47,
7975 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7976 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7977 "\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
7978 "\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
7979 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7980 "\xbe\x7f\xcb\xcc\x98\xeb\xf5",
7981 }, {
7982 .klen = 16,
7983 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7984 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7985 .ilen = 48,
7986 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7987 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7988 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7989 "\x20\x47\x61\x75\x27\x73\x20\x43"
7990 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7991 "\x70\x6c\x65\x61\x73\x65\x2c\x20",
7992 .rlen = 48,
7993 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7994 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7995 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
7996 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
7997 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7998 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
7999 }, {
8000 .klen = 16,
8001 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8002 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8003 .ilen = 64,
8004 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8005 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8006 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8007 "\x20\x47\x61\x75\x27\x73\x20\x43"
8008 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8009 "\x70\x6c\x65\x61\x73\x65\x2c\x20"
8010 "\x61\x6e\x64\x20\x77\x6f\x6e\x74"
8011 "\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
8012 .rlen = 64,
8013 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8014 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8015 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8016 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8017 "\x48\x07\xef\xe8\x36\xee\x89\xa5"
8018 "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
8019 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8020 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
8021 }
8022};
8023
8024static struct cipher_testvec cts_mode_dec_tv_template[] = {
8025 { /* from rfc3962 */
8026 .klen = 16,
8027 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8028 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8029 .rlen = 17,
8030 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8031 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8032 "\x20",
8033 .ilen = 17,
8034 .input = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
8035 "\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
8036 "\x97",
8037 }, {
8038 .klen = 16,
8039 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8040 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8041 .rlen = 31,
8042 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8043 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8044 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8045 "\x20\x47\x61\x75\x27\x73\x20",
8046 .ilen = 31,
8047 .input = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
8048 "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
8049 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8050 "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
8051 }, {
8052 .klen = 16,
8053 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8054 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8055 .rlen = 32,
8056 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8057 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8058 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8059 "\x20\x47\x61\x75\x27\x73\x20\x43",
8060 .ilen = 32,
8061 .input = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8062 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8063 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8064 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
8065 }, {
8066 .klen = 16,
8067 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8068 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8069 .rlen = 47,
8070 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8071 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8072 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8073 "\x20\x47\x61\x75\x27\x73\x20\x43"
8074 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8075 "\x70\x6c\x65\x61\x73\x65\x2c",
8076 .ilen = 47,
8077 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8078 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8079 "\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
8080 "\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
8081 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8082 "\xbe\x7f\xcb\xcc\x98\xeb\xf5",
8083 }, {
8084 .klen = 16,
8085 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8086 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8087 .rlen = 48,
8088 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8089 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8090 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8091 "\x20\x47\x61\x75\x27\x73\x20\x43"
8092 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8093 "\x70\x6c\x65\x61\x73\x65\x2c\x20",
8094 .ilen = 48,
8095 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8096 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8097 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8098 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
8099 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8100 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
8101 }, {
8102 .klen = 16,
8103 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
8104 "\x74\x65\x72\x69\x79\x61\x6b\x69",
8105 .rlen = 64,
8106 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
8107 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
8108 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
8109 "\x20\x47\x61\x75\x27\x73\x20\x43"
8110 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
8111 "\x70\x6c\x65\x61\x73\x65\x2c\x20"
8112 "\x61\x6e\x64\x20\x77\x6f\x6e\x74"
8113 "\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
8114 .ilen = 64,
8115 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
8116 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
8117 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
8118 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
8119 "\x48\x07\xef\xe8\x36\xee\x89\xa5"
8120 "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
8121 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
8122 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
8123 }
8124};
8125
8126/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07008127 * Compression stuff.
8128 */
8129#define COMP_BUF_SIZE 512
8130
8131struct comp_testvec {
8132 int inlen, outlen;
8133 char input[COMP_BUF_SIZE];
8134 char output[COMP_BUF_SIZE];
8135};
8136
8137/*
8138 * Deflate test vectors (null-terminated strings).
8139 * Params: winbits=11, Z_DEFAULT_COMPRESSION, MAX_MEM_LEVEL.
8140 */
8141#define DEFLATE_COMP_TEST_VECTORS 2
8142#define DEFLATE_DECOMP_TEST_VECTORS 2
8143
8144static struct comp_testvec deflate_comp_tv_template[] = {
8145 {
8146 .inlen = 70,
8147 .outlen = 38,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008148 .input = "Join us now and share the software "
8149 "Join us now and share the software ",
8150 .output = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
8151 "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
8152 "\x28\xce\x48\x2c\x4a\x55\x28\xc9"
8153 "\x48\x55\x28\xce\x4f\x2b\x29\x07"
8154 "\x71\xbc\x08\x2b\x01\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008155 }, {
8156 .inlen = 191,
8157 .outlen = 122,
8158 .input = "This document describes a compression method based on the DEFLATE"
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008159 "compression algorithm. This document defines the application of "
8160 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
8161 .output = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
8162 "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
8163 "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
8164 "\x24\xdb\x67\xd9\x47\xc1\xef\x49"
8165 "\x68\x12\x51\xae\x76\x67\xd6\x27"
8166 "\x19\x88\x1a\xde\x85\xab\x21\xf2"
8167 "\x08\x5d\x16\x1e\x20\x04\x2d\xad"
8168 "\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
8169 "\x42\x83\x23\xb6\x6c\x89\x71\x9b"
8170 "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
8171 "\xed\x62\xa9\x4c\x80\xff\x13\xaf"
8172 "\x52\x37\xed\x0e\x52\x6b\x59\x02"
8173 "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
8174 "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
8175 "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
8176 "\xfa\x02",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008177 },
8178};
8179
8180static struct comp_testvec deflate_decomp_tv_template[] = {
8181 {
8182 .inlen = 122,
8183 .outlen = 191,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008184 .input = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
8185 "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
8186 "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
8187 "\x24\xdb\x67\xd9\x47\xc1\xef\x49"
8188 "\x68\x12\x51\xae\x76\x67\xd6\x27"
8189 "\x19\x88\x1a\xde\x85\xab\x21\xf2"
8190 "\x08\x5d\x16\x1e\x20\x04\x2d\xad"
8191 "\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
8192 "\x42\x83\x23\xb6\x6c\x89\x71\x9b"
8193 "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
8194 "\xed\x62\xa9\x4c\x80\xff\x13\xaf"
8195 "\x52\x37\xed\x0e\x52\x6b\x59\x02"
8196 "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
8197 "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
8198 "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
8199 "\xfa\x02",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008200 .output = "This document describes a compression method based on the DEFLATE"
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008201 "compression algorithm. This document defines the application of "
8202 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008203 }, {
8204 .inlen = 38,
8205 .outlen = 70,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008206 .input = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
8207 "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
8208 "\x28\xce\x48\x2c\x4a\x55\x28\xc9"
8209 "\x48\x55\x28\xce\x4f\x2b\x29\x07"
8210 "\x71\xbc\x08\x2b\x01\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008211 .output = "Join us now and share the software "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008212 "Join us now and share the software ",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008213 },
8214};
8215
8216/*
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08008217 * LZO test vectors (null-terminated strings).
8218 */
8219#define LZO_COMP_TEST_VECTORS 2
8220#define LZO_DECOMP_TEST_VECTORS 2
8221
8222static struct comp_testvec lzo_comp_tv_template[] = {
8223 {
8224 .inlen = 70,
8225 .outlen = 46,
8226 .input = "Join us now and share the software "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008227 "Join us now and share the software ",
8228 .output = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
8229 "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
8230 "\x64\x20\x73\x68\x61\x72\x65\x20"
8231 "\x74\x68\x65\x20\x73\x6f\x66\x74"
8232 "\x77\x70\x01\x01\x4a\x6f\x69\x6e"
8233 "\x3d\x88\x00\x11\x00\x00",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08008234 }, {
8235 .inlen = 159,
8236 .outlen = 133,
8237 .input = "This document describes a compression method based on the LZO "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008238 "compression algorithm. This document defines the application of "
8239 "the LZO algorithm used in UBIFS.",
8240 .output = "\x00\x2b\x54\x68\x69\x73\x20\x64"
8241 "\x6f\x63\x75\x6d\x65\x6e\x74\x20"
8242 "\x64\x65\x73\x63\x72\x69\x62\x65"
8243 "\x73\x20\x61\x20\x63\x6f\x6d\x70"
8244 "\x72\x65\x73\x73\x69\x6f\x6e\x20"
8245 "\x6d\x65\x74\x68\x6f\x64\x20\x62"
8246 "\x61\x73\x65\x64\x20\x6f\x6e\x20"
8247 "\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
8248 "\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
8249 "\x69\x74\x68\x6d\x2e\x20\x20\x54"
8250 "\x68\x69\x73\x2a\x54\x01\x02\x66"
8251 "\x69\x6e\x65\x73\x94\x06\x05\x61"
8252 "\x70\x70\x6c\x69\x63\x61\x74\x76"
8253 "\x0a\x6f\x66\x88\x02\x60\x09\x27"
8254 "\xf0\x00\x0c\x20\x75\x73\x65\x64"
8255 "\x20\x69\x6e\x20\x55\x42\x49\x46"
8256 "\x53\x2e\x11\x00\x00",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08008257 },
8258};
8259
8260static struct comp_testvec lzo_decomp_tv_template[] = {
8261 {
8262 .inlen = 133,
8263 .outlen = 159,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008264 .input = "\x00\x2b\x54\x68\x69\x73\x20\x64"
8265 "\x6f\x63\x75\x6d\x65\x6e\x74\x20"
8266 "\x64\x65\x73\x63\x72\x69\x62\x65"
8267 "\x73\x20\x61\x20\x63\x6f\x6d\x70"
8268 "\x72\x65\x73\x73\x69\x6f\x6e\x20"
8269 "\x6d\x65\x74\x68\x6f\x64\x20\x62"
8270 "\x61\x73\x65\x64\x20\x6f\x6e\x20"
8271 "\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
8272 "\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
8273 "\x69\x74\x68\x6d\x2e\x20\x20\x54"
8274 "\x68\x69\x73\x2a\x54\x01\x02\x66"
8275 "\x69\x6e\x65\x73\x94\x06\x05\x61"
8276 "\x70\x70\x6c\x69\x63\x61\x74\x76"
8277 "\x0a\x6f\x66\x88\x02\x60\x09\x27"
8278 "\xf0\x00\x0c\x20\x75\x73\x65\x64"
8279 "\x20\x69\x6e\x20\x55\x42\x49\x46"
8280 "\x53\x2e\x11\x00\x00",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08008281 .output = "This document describes a compression method based on the LZO "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008282 "compression algorithm. This document defines the application of "
8283 "the LZO algorithm used in UBIFS.",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08008284 }, {
8285 .inlen = 46,
8286 .outlen = 70,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008287 .input = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
8288 "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
8289 "\x64\x20\x73\x68\x61\x72\x65\x20"
8290 "\x74\x68\x65\x20\x73\x6f\x66\x74"
8291 "\x77\x70\x01\x01\x4a\x6f\x69\x6e"
8292 "\x3d\x88\x00\x11\x00\x00",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08008293 .output = "Join us now and share the software "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008294 "Join us now and share the software ",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08008295 },
8296};
8297
8298/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07008299 * Michael MIC test vectors from IEEE 802.11i
8300 */
8301#define MICHAEL_MIC_TEST_VECTORS 6
8302
Herbert Xuef2736f2005-06-22 13:26:03 -07008303static struct hash_testvec michael_mic_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07008304 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008305 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008306 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008307 .plaintext = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07008308 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008309 .digest = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008310 },
8311 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008312 .key = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008313 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008314 .plaintext = "M",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008315 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008316 .digest = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008317 },
8318 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008319 .key = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008320 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008321 .plaintext = "Mi",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008322 .psize = 2,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008323 .digest = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008324 },
8325 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008326 .key = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008327 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008328 .plaintext = "Mic",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008329 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008330 .digest = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008331 },
8332 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008333 .key = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008334 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008335 .plaintext = "Mich",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008336 .psize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008337 .digest = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008338 },
8339 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008340 .key = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008341 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008342 .plaintext = "Michael",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008343 .psize = 7,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008344 .digest = "\x0a\x94\x2b\x12\x4e\xca\xa5\x46",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008345 }
8346};
8347
Harald Welteebfd9bc2005-06-22 13:27:23 -07008348/*
Herbert Xuc907ee72006-08-21 22:04:03 +10008349 * CRC32C test vectors
8350 */
8351#define CRC32C_TEST_VECTORS 14
8352
8353static struct hash_testvec crc32c_tv_template[] = {
8354 {
8355 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008356 .digest = "\x00\x00\x00\x00",
Herbert Xuc907ee72006-08-21 22:04:03 +10008357 },
8358 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008359 .key = "\x87\xa9\xcb\xed",
Herbert Xuc907ee72006-08-21 22:04:03 +10008360 .ksize = 4,
8361 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008362 .digest = "\x78\x56\x34\x12",
Herbert Xuc907ee72006-08-21 22:04:03 +10008363 },
8364 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008365 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008366 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008367 .plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08"
8368 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
8369 "\x11\x12\x13\x14\x15\x16\x17\x18"
8370 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
8371 "\x21\x22\x23\x24\x25\x26\x27\x28",
Herbert Xuc907ee72006-08-21 22:04:03 +10008372 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008373 .digest = "\x7f\x15\x2c\x0e",
Herbert Xuc907ee72006-08-21 22:04:03 +10008374 },
8375 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008376 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008377 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008378 .plaintext = "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8379 "\x31\x32\x33\x34\x35\x36\x37\x38"
8380 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8381 "\x41\x42\x43\x44\x45\x46\x47\x48"
8382 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50",
Herbert Xuc907ee72006-08-21 22:04:03 +10008383 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008384 .digest = "\xf6\xeb\x80\xe9",
Herbert Xuc907ee72006-08-21 22:04:03 +10008385 },
8386 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008387 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008388 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008389 .plaintext = "\x51\x52\x53\x54\x55\x56\x57\x58"
8390 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8391 "\x61\x62\x63\x64\x65\x66\x67\x68"
8392 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8393 "\x71\x72\x73\x74\x75\x76\x77\x78",
Herbert Xuc907ee72006-08-21 22:04:03 +10008394 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008395 .digest = "\xed\xbd\x74\xde",
Herbert Xuc907ee72006-08-21 22:04:03 +10008396 },
8397 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008398 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008399 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008400 .plaintext = "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8401 "\x81\x82\x83\x84\x85\x86\x87\x88"
8402 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8403 "\x91\x92\x93\x94\x95\x96\x97\x98"
8404 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0",
Herbert Xuc907ee72006-08-21 22:04:03 +10008405 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008406 .digest = "\x62\xc8\x79\xd5",
Herbert Xuc907ee72006-08-21 22:04:03 +10008407 },
8408 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008409 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008410 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008411 .plaintext = "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8412 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8413 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8414 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8415 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8",
Herbert Xuc907ee72006-08-21 22:04:03 +10008416 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008417 .digest = "\xd0\x9a\x97\xba",
Herbert Xuc907ee72006-08-21 22:04:03 +10008418 },
8419 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008420 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008421 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008422 .plaintext = "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8423 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8424 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8425 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8426 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
Herbert Xuc907ee72006-08-21 22:04:03 +10008427 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008428 .digest = "\x13\xd9\x29\x2b",
Herbert Xuc907ee72006-08-21 22:04:03 +10008429 },
8430 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008431 .key = "\x80\xea\xd3\xf1",
Herbert Xuc907ee72006-08-21 22:04:03 +10008432 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008433 .plaintext = "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8434 "\x31\x32\x33\x34\x35\x36\x37\x38"
8435 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8436 "\x41\x42\x43\x44\x45\x46\x47\x48"
8437 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50",
Herbert Xuc907ee72006-08-21 22:04:03 +10008438 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008439 .digest = "\x0c\xb5\xe2\xa2",
Herbert Xuc907ee72006-08-21 22:04:03 +10008440 },
8441 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008442 .key = "\xf3\x4a\x1d\x5d",
Herbert Xuc907ee72006-08-21 22:04:03 +10008443 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008444 .plaintext = "\x51\x52\x53\x54\x55\x56\x57\x58"
8445 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8446 "\x61\x62\x63\x64\x65\x66\x67\x68"
8447 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8448 "\x71\x72\x73\x74\x75\x76\x77\x78",
Herbert Xuc907ee72006-08-21 22:04:03 +10008449 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008450 .digest = "\xd1\x7f\xfb\xa6",
Herbert Xuc907ee72006-08-21 22:04:03 +10008451 },
8452 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008453 .key = "\x2e\x80\x04\x59",
Herbert Xuc907ee72006-08-21 22:04:03 +10008454 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008455 .plaintext = "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8456 "\x81\x82\x83\x84\x85\x86\x87\x88"
8457 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8458 "\x91\x92\x93\x94\x95\x96\x97\x98"
8459 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0",
Herbert Xuc907ee72006-08-21 22:04:03 +10008460 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008461 .digest = "\x59\x33\xe6\x7a",
Herbert Xuc907ee72006-08-21 22:04:03 +10008462 },
8463 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008464 .key = "\xa6\xcc\x19\x85",
Herbert Xuc907ee72006-08-21 22:04:03 +10008465 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008466 .plaintext = "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8467 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8468 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8469 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8470 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8",
Herbert Xuc907ee72006-08-21 22:04:03 +10008471 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008472 .digest = "\xbe\x03\x01\xd2",
Herbert Xuc907ee72006-08-21 22:04:03 +10008473 },
8474 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008475 .key = "\x41\xfc\xfe\x2d",
Herbert Xuc907ee72006-08-21 22:04:03 +10008476 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008477 .plaintext = "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8478 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8479 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8480 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8481 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
Herbert Xuc907ee72006-08-21 22:04:03 +10008482 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008483 .digest = "\x75\xd3\xc5\x24",
Herbert Xuc907ee72006-08-21 22:04:03 +10008484 },
8485 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008486 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008487 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008488 .plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08"
8489 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
8490 "\x11\x12\x13\x14\x15\x16\x17\x18"
8491 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
8492 "\x21\x22\x23\x24\x25\x26\x27\x28"
8493 "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8494 "\x31\x32\x33\x34\x35\x36\x37\x38"
8495 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8496 "\x41\x42\x43\x44\x45\x46\x47\x48"
8497 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50"
8498 "\x51\x52\x53\x54\x55\x56\x57\x58"
8499 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8500 "\x61\x62\x63\x64\x65\x66\x67\x68"
8501 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8502 "\x71\x72\x73\x74\x75\x76\x77\x78"
8503 "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8504 "\x81\x82\x83\x84\x85\x86\x87\x88"
8505 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8506 "\x91\x92\x93\x94\x95\x96\x97\x98"
8507 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0"
8508 "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8509 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8510 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8511 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8512 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8"
8513 "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8514 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8515 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8516 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8517 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
Herbert Xuc907ee72006-08-21 22:04:03 +10008518 .psize = 240,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008519 .digest = "\x75\xd3\xc5\x24",
Herbert Xuc907ee72006-08-21 22:04:03 +10008520 .np = 2,
8521 .tap = { 31, 209 }
8522 },
8523};
8524
8525/*
Harald Welteebfd9bc2005-06-22 13:27:23 -07008526 * Cipher speed tests
8527 */
Sebastian Siewiord5dc3922008-03-11 21:27:11 +08008528static u8 speed_template_8[] = {8, 0};
8529static u8 speed_template_24[] = {24, 0};
8530static u8 speed_template_8_32[] = {8, 32, 0};
8531static u8 speed_template_16_32[] = {16, 32, 0};
8532static u8 speed_template_16_24_32[] = {16, 24, 32, 0};
8533static u8 speed_template_32_40_48[] = {32, 40, 48, 0};
8534static u8 speed_template_32_48_64[] = {32, 48, 64, 0};
Rik Snelf19f5112007-09-19 20:23:13 +08008535
Michal Ludvige8057922006-05-30 22:04:19 +10008536/*
8537 * Digest speed tests
8538 */
Herbert Xue9d41162006-08-19 21:38:49 +10008539static struct hash_speed generic_hash_speed_template[] = {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008540 { .blen = 16, .plen = 16, },
Michal Ludvige8057922006-05-30 22:04:19 +10008541 { .blen = 64, .plen = 16, },
8542 { .blen = 64, .plen = 64, },
8543 { .blen = 256, .plen = 16, },
8544 { .blen = 256, .plen = 64, },
8545 { .blen = 256, .plen = 256, },
8546 { .blen = 1024, .plen = 16, },
8547 { .blen = 1024, .plen = 256, },
8548 { .blen = 1024, .plen = 1024, },
8549 { .blen = 2048, .plen = 16, },
8550 { .blen = 2048, .plen = 256, },
8551 { .blen = 2048, .plen = 1024, },
8552 { .blen = 2048, .plen = 2048, },
8553 { .blen = 4096, .plen = 16, },
8554 { .blen = 4096, .plen = 256, },
8555 { .blen = 4096, .plen = 1024, },
8556 { .blen = 4096, .plen = 4096, },
8557 { .blen = 8192, .plen = 16, },
8558 { .blen = 8192, .plen = 256, },
8559 { .blen = 8192, .plen = 1024, },
8560 { .blen = 8192, .plen = 4096, },
8561 { .blen = 8192, .plen = 8192, },
8562
8563 /* End marker */
8564 { .blen = 0, .plen = 0, }
8565};
8566
Linus Torvalds1da177e2005-04-16 15:20:36 -07008567#endif /* _CRYPTO_TCRYPT_H */