blob: 47bc0ecb89787e006fd92e51d229b1edd2880ea7 [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 *
Mikko Herranen28db8e32007-11-26 22:24:11 +080016 * 2007-11-13 Added GCM tests
Mikko Herranene3a4ea42007-11-26 22:12:07 +080017 * 2007-11-13 Added AEAD support
Andrew Donofrioa28091a2006-12-10 12:10:20 +110018 * 2006-12-07 Added SHA384 HMAC and SHA512 HMAC tests
Harald Welteebfd9bc2005-06-22 13:27:23 -070019 * 2004-08-09 Cipher speed tests by Reyk Floeter <reyk@vantronix.net>
20 * 2003-09-14 Changes by Kartikey Mahendra Bhatt
Linus Torvalds1da177e2005-04-16 15:20:36 -070021 *
22 */
23#ifndef _CRYPTO_TCRYPT_H
24#define _CRYPTO_TCRYPT_H
25
26#define MAX_DIGEST_SIZE 64
27#define MAX_TAP 8
28
29#define MAX_KEYLEN 56
30#define MAX_IVLEN 32
31
32struct hash_testvec {
Atsushi Nemoto06b42aa2006-03-13 21:39:23 +110033 /* only used with keyed hash algorithms */
Sebastian Siewiorde224c32008-03-13 20:21:51 +080034 char *key;
35 char *plaintext;
36 char *digest;
Herbert Xuef2736f2005-06-22 13:26:03 -070037 unsigned char tap[MAX_TAP];
Atsushi Nemoto06b42aa2006-03-13 21:39:23 +110038 unsigned char psize;
39 unsigned char np;
Linus Torvalds1da177e2005-04-16 15:20:36 -070040 unsigned char ksize;
41};
42
Linus Torvalds1da177e2005-04-16 15:20:36 -070043struct cipher_testvec {
Sebastian Siewiorde224c32008-03-13 20:21:51 +080044 char *key;
45 char *iv;
46 char *input;
47 char *result;
Herbert Xuef2736f2005-06-22 13:26:03 -070048 unsigned char tap[MAX_TAP];
Atsushi Nemoto06b42aa2006-03-13 21:39:23 +110049 int np;
50 unsigned char fail;
51 unsigned char wk; /* weak key flag */
52 unsigned char klen;
Rik Snelf3d10442006-11-29 19:01:41 +110053 unsigned short ilen;
54 unsigned short rlen;
Linus Torvalds1da177e2005-04-16 15:20:36 -070055};
56
Mikko Herranene3a4ea42007-11-26 22:12:07 +080057struct aead_testvec {
Sebastian Siewiorde224c32008-03-13 20:21:51 +080058 char *key;
59 char *iv;
60 char *input;
61 char *assoc;
62 char *result;
Mikko Herranene3a4ea42007-11-26 22:12:07 +080063 unsigned char tap[MAX_TAP];
64 unsigned char atap[MAX_TAP];
65 int np;
66 int anp;
67 unsigned char fail;
68 unsigned char wk; /* weak key flag */
69 unsigned char klen;
70 unsigned short ilen;
71 unsigned short alen;
72 unsigned short rlen;
Mikko Herranene3a4ea42007-11-26 22:12:07 +080073};
74
Herbert Xue9d41162006-08-19 21:38:49 +100075struct hash_speed {
Michal Ludvige8057922006-05-30 22:04:19 +100076 unsigned int blen; /* buffer length */
77 unsigned int plen; /* per-update length */
78};
79
Sebastian Siewiorde224c32008-03-13 20:21:51 +080080static char zeroed_string[48];
81
Linus Torvalds1da177e2005-04-16 15:20:36 -070082/*
83 * MD4 test vectors from RFC1320
84 */
85#define MD4_TEST_VECTORS 7
86
87static struct hash_testvec md4_tv_template [] = {
88 {
89 .plaintext = "",
Sebastian Siewiorde224c32008-03-13 20:21:51 +080090 .digest = "\x31\xd6\xcf\xe0\xd1\x6a\xe9\x31"
91 "\xb7\x3c\x59\xd7\xe0\xc0\x89\xc0",
Linus Torvalds1da177e2005-04-16 15:20:36 -070092 }, {
93 .plaintext = "a",
94 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +080095 .digest = "\xbd\xe5\x2c\xb3\x1d\xe3\x3e\x46"
96 "\x24\x5e\x05\xfb\xdb\xd6\xfb\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -070097 }, {
98 .plaintext = "abc",
99 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800100 .digest = "\xa4\x48\x01\x7a\xaf\x21\xd8\x52"
101 "\x5f\xc1\x0a\xe8\x7a\xa6\x72\x9d",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700102 }, {
103 .plaintext = "message digest",
104 .psize = 14,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800105 .digest = "\xd9\x13\x0a\x81\x64\x54\x9f\xe8"
106 "\x18\x87\x48\x06\xe1\xc7\x01\x4b",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700107 }, {
108 .plaintext = "abcdefghijklmnopqrstuvwxyz",
109 .psize = 26,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800110 .digest = "\xd7\x9e\x1c\x30\x8a\xa5\xbb\xcd"
111 "\xee\xa8\xed\x63\xdf\x41\x2d\xa9",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700112 .np = 2,
113 .tap = { 13, 13 },
114 }, {
115 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
116 .psize = 62,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800117 .digest = "\x04\x3f\x85\x82\xf2\x41\xdb\x35"
118 "\x1c\xe6\x27\xe1\x53\xe7\xf0\xe4",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700119 }, {
120 .plaintext = "123456789012345678901234567890123456789012345678901234567890123"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800121 "45678901234567890",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700122 .psize = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800123 .digest = "\xe3\x3b\x4d\xdc\x9c\x38\xf2\x19"
124 "\x9c\x3e\x7b\x16\x4f\xcc\x05\x36",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700125 },
126};
127
128/*
129 * MD5 test vectors from RFC1321
130 */
131#define MD5_TEST_VECTORS 7
132
133static struct hash_testvec md5_tv_template[] = {
134 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800135 .digest = "\xd4\x1d\x8c\xd9\x8f\x00\xb2\x04"
136 "\xe9\x80\x09\x98\xec\xf8\x42\x7e",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700137 }, {
138 .plaintext = "a",
139 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800140 .digest = "\x0c\xc1\x75\xb9\xc0\xf1\xb6\xa8"
141 "\x31\xc3\x99\xe2\x69\x77\x26\x61",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700142 }, {
143 .plaintext = "abc",
144 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800145 .digest = "\x90\x01\x50\x98\x3c\xd2\x4f\xb0"
146 "\xd6\x96\x3f\x7d\x28\xe1\x7f\x72",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700147 }, {
148 .plaintext = "message digest",
149 .psize = 14,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800150 .digest = "\xf9\x6b\x69\x7d\x7c\xb7\x93\x8d"
151 "\x52\x5a\x2f\x31\xaa\xf1\x61\xd0",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700152 }, {
153 .plaintext = "abcdefghijklmnopqrstuvwxyz",
154 .psize = 26,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800155 .digest = "\xc3\xfc\xd3\xd7\x61\x92\xe4\x00"
156 "\x7d\xfb\x49\x6c\xca\x67\xe1\x3b",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700157 .np = 2,
158 .tap = {13, 13}
159 }, {
160 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
161 .psize = 62,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800162 .digest = "\xd1\x74\xab\x98\xd2\x77\xd9\xf5"
163 "\xa5\x61\x1c\x2c\x9f\x41\x9d\x9f",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700164 }, {
165 .plaintext = "12345678901234567890123456789012345678901234567890123456789012"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800166 "345678901234567890",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700167 .psize = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800168 .digest = "\x57\xed\xf4\xa2\x2b\xe3\xc9\x55"
169 "\xac\x49\xda\x2e\x21\x07\xb6\x7a",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700170 }
171};
172
173/*
174 * SHA1 test vectors from from FIPS PUB 180-1
175 */
176#define SHA1_TEST_VECTORS 2
177
178static struct hash_testvec sha1_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700179 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700180 .plaintext = "abc",
181 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800182 .digest = "\xa9\x99\x3e\x36\x47\x06\x81\x6a\xba\x3e"
183 "\x25\x71\x78\x50\xc2\x6c\x9c\xd0\xd8\x9d",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700184 }, {
185 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
186 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800187 .digest = "\x84\x98\x3e\x44\x1c\x3b\xd2\x6e\xba\xae"
188 "\x4a\xa1\xf9\x51\x29\xe5\xe5\x46\x70\xf1",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700189 .np = 2,
190 .tap = { 28, 28 }
191 }
192};
193
Jonathan Lynchcd12fb902007-11-10 20:08:25 +0800194
195/*
196 * SHA224 test vectors from from FIPS PUB 180-2
197 */
198#define SHA224_TEST_VECTORS 2
199
200static struct hash_testvec sha224_tv_template[] = {
201 {
202 .plaintext = "abc",
203 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800204 .digest = "\x23\x09\x7D\x22\x34\x05\xD8\x22"
205 "\x86\x42\xA4\x77\xBD\xA2\x55\xB3"
206 "\x2A\xAD\xBC\xE4\xBD\xA0\xB3\xF7"
207 "\xE3\x6C\x9D\xA7",
Jonathan Lynchcd12fb902007-11-10 20:08:25 +0800208 }, {
209 .plaintext =
210 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
211 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800212 .digest = "\x75\x38\x8B\x16\x51\x27\x76\xCC"
213 "\x5D\xBA\x5D\xA1\xFD\x89\x01\x50"
214 "\xB0\xC6\x45\x5C\xB4\xF5\x8B\x19"
215 "\x52\x52\x25\x25",
Jonathan Lynchcd12fb902007-11-10 20:08:25 +0800216 .np = 2,
217 .tap = { 28, 28 }
218 }
219};
220
Linus Torvalds1da177e2005-04-16 15:20:36 -0700221/*
222 * SHA256 test vectors from from NIST
223 */
224#define SHA256_TEST_VECTORS 2
225
Herbert Xuef2736f2005-06-22 13:26:03 -0700226static struct hash_testvec sha256_tv_template[] = {
227 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700228 .plaintext = "abc",
229 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800230 .digest = "\xba\x78\x16\xbf\x8f\x01\xcf\xea"
231 "\x41\x41\x40\xde\x5d\xae\x22\x23"
232 "\xb0\x03\x61\xa3\x96\x17\x7a\x9c"
233 "\xb4\x10\xff\x61\xf2\x00\x15\xad",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700234 }, {
235 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
236 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800237 .digest = "\x24\x8d\x6a\x61\xd2\x06\x38\xb8"
238 "\xe5\xc0\x26\x93\x0c\x3e\x60\x39"
239 "\xa3\x3c\xe4\x59\x64\xff\x21\x67"
240 "\xf6\xec\xed\xd4\x19\xdb\x06\xc1",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700241 .np = 2,
242 .tap = { 28, 28 }
243 },
244};
245
246/*
247 * SHA384 test vectors from from NIST and kerneli
248 */
249#define SHA384_TEST_VECTORS 4
250
251static struct hash_testvec sha384_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700252 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700253 .plaintext= "abc",
254 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800255 .digest = "\xcb\x00\x75\x3f\x45\xa3\x5e\x8b"
256 "\xb5\xa0\x3d\x69\x9a\xc6\x50\x07"
257 "\x27\x2c\x32\xab\x0e\xde\xd1\x63"
258 "\x1a\x8b\x60\x5a\x43\xff\x5b\xed"
259 "\x80\x86\x07\x2b\xa1\xe7\xcc\x23"
260 "\x58\xba\xec\xa1\x34\xc8\x25\xa7",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700261 }, {
262 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
263 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800264 .digest = "\x33\x91\xfd\xdd\xfc\x8d\xc7\x39"
265 "\x37\x07\xa6\x5b\x1b\x47\x09\x39"
266 "\x7c\xf8\xb1\xd1\x62\xaf\x05\xab"
267 "\xfe\x8f\x45\x0d\xe5\xf3\x6b\xc6"
268 "\xb0\x45\x5a\x85\x20\xbc\x4e\x6f"
269 "\x5f\xe9\x5b\x1f\xe3\xc8\x45\x2b",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700270 }, {
271 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800272 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700273 .psize = 112,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800274 .digest = "\x09\x33\x0c\x33\xf7\x11\x47\xe8"
275 "\x3d\x19\x2f\xc7\x82\xcd\x1b\x47"
276 "\x53\x11\x1b\x17\x3b\x3b\x05\xd2"
277 "\x2f\xa0\x80\x86\xe3\xb0\xf7\x12"
278 "\xfc\xc7\xc7\x1a\x55\x7e\x2d\xb9"
279 "\x66\xc3\xe9\xfa\x91\x74\x60\x39",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700280 }, {
281 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800282 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700283 .psize = 104,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800284 .digest = "\x3d\x20\x89\x73\xab\x35\x08\xdb"
285 "\xbd\x7e\x2c\x28\x62\xba\x29\x0a"
286 "\xd3\x01\x0e\x49\x78\xc1\x98\xdc"
287 "\x4d\x8f\xd0\x14\xe5\x82\x82\x3a"
288 "\x89\xe1\x6f\x9b\x2a\x7b\xbc\x1a"
289 "\xc9\x38\xe2\xd1\x99\xe8\xbe\xa4",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700290 .np = 4,
291 .tap = { 26, 26, 26, 26 }
292 },
293};
294
295/*
296 * SHA512 test vectors from from NIST and kerneli
297 */
298#define SHA512_TEST_VECTORS 4
299
300static struct hash_testvec sha512_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700301 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700302 .plaintext = "abc",
303 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800304 .digest = "\xdd\xaf\x35\xa1\x93\x61\x7a\xba"
305 "\xcc\x41\x73\x49\xae\x20\x41\x31"
306 "\x12\xe6\xfa\x4e\x89\xa9\x7e\xa2"
307 "\x0a\x9e\xee\xe6\x4b\x55\xd3\x9a"
308 "\x21\x92\x99\x2a\x27\x4f\xc1\xa8"
309 "\x36\xba\x3c\x23\xa3\xfe\xeb\xbd"
310 "\x45\x4d\x44\x23\x64\x3c\xe8\x0e"
311 "\x2a\x9a\xc9\x4f\xa5\x4c\xa4\x9f",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700312 }, {
313 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
314 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800315 .digest = "\x20\x4a\x8f\xc6\xdd\xa8\x2f\x0a"
316 "\x0c\xed\x7b\xeb\x8e\x08\xa4\x16"
317 "\x57\xc1\x6e\xf4\x68\xb2\x28\xa8"
318 "\x27\x9b\xe3\x31\xa7\x03\xc3\x35"
319 "\x96\xfd\x15\xc1\x3b\x1b\x07\xf9"
320 "\xaa\x1d\x3b\xea\x57\x78\x9c\xa0"
321 "\x31\xad\x85\xc7\xa7\x1d\xd7\x03"
322 "\x54\xec\x63\x12\x38\xca\x34\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700323 }, {
324 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800325 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700326 .psize = 112,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800327 .digest = "\x8e\x95\x9b\x75\xda\xe3\x13\xda"
328 "\x8c\xf4\xf7\x28\x14\xfc\x14\x3f"
329 "\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1"
330 "\x72\x99\xae\xad\xb6\x88\x90\x18"
331 "\x50\x1d\x28\x9e\x49\x00\xf7\xe4"
332 "\x33\x1b\x99\xde\xc4\xb5\x43\x3a"
333 "\xc7\xd3\x29\xee\xb6\xdd\x26\x54"
334 "\x5e\x96\xe5\x5b\x87\x4b\xe9\x09",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700335 }, {
336 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800337 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700338 .psize = 104,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800339 .digest = "\x93\x0d\x0c\xef\xcb\x30\xff\x11"
340 "\x33\xb6\x89\x81\x21\xf1\xcf\x3d"
341 "\x27\x57\x8a\xfc\xaf\xe8\x67\x7c"
342 "\x52\x57\xcf\x06\x99\x11\xf7\x5d"
343 "\x8f\x58\x31\xb5\x6e\xbf\xda\x67"
344 "\xb2\x78\xe6\x6d\xff\x8b\x84\xfe"
345 "\x2b\x28\x70\xf7\x42\xa5\x80\xd8"
346 "\xed\xb4\x19\x87\x23\x28\x50\xc9",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700347 .np = 4,
348 .tap = { 26, 26, 26, 26 }
349 },
350};
351
352
353/*
Herbert Xuef2736f2005-06-22 13:26:03 -0700354 * WHIRLPOOL test vectors from Whirlpool package
Linus Torvalds1da177e2005-04-16 15:20:36 -0700355 * by Vincent Rijmen and Paulo S. L. M. Barreto as part of the NESSIE
356 * submission
357 */
358#define WP512_TEST_VECTORS 8
359
360static struct hash_testvec wp512_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700361 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700362 .plaintext = "",
363 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800364 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
365 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
366 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
367 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7"
368 "\x3E\x83\xBE\x69\x8B\x28\x8F\xEB"
369 "\xCF\x88\xE3\xE0\x3C\x4F\x07\x57"
370 "\xEA\x89\x64\xE5\x9B\x63\xD9\x37"
371 "\x08\xB1\x38\xCC\x42\xA6\x6E\xB3",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700372
373
374 }, {
375 .plaintext = "a",
376 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800377 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
378 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
379 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
380 "\x73\xC4\x50\x01\xD0\x08\x7B\x42"
381 "\xD1\x1B\xC6\x45\x41\x3A\xEF\xF6"
382 "\x3A\x42\x39\x1A\x39\x14\x5A\x59"
383 "\x1A\x92\x20\x0D\x56\x01\x95\xE5"
384 "\x3B\x47\x85\x84\xFD\xAE\x23\x1A",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700385 }, {
386 .plaintext = "abc",
387 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800388 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
389 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
390 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
391 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C"
392 "\x71\x81\xEE\xBD\xB6\xC5\x7E\x27"
393 "\x7D\x0E\x34\x95\x71\x14\xCB\xD6"
394 "\xC7\x97\xFC\x9D\x95\xD8\xB5\x82"
395 "\xD2\x25\x29\x20\x76\xD4\xEE\xF5",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700396 }, {
397 .plaintext = "message digest",
398 .psize = 14,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800399 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
400 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
401 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
402 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B"
403 "\x84\x21\x55\x76\x59\xEF\x55\xC1"
404 "\x06\xB4\xB5\x2A\xC5\xA4\xAA\xA6"
405 "\x92\xED\x92\x00\x52\x83\x8F\x33"
406 "\x62\xE8\x6D\xBD\x37\xA8\x90\x3E",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700407 }, {
408 .plaintext = "abcdefghijklmnopqrstuvwxyz",
409 .psize = 26,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800410 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
411 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
412 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
413 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B"
414 "\x08\xBF\x2A\x92\x51\xC3\x0B\x6A"
415 "\x0B\x8A\xAE\x86\x17\x7A\xB4\xA6"
416 "\xF6\x8F\x67\x3E\x72\x07\x86\x5D"
417 "\x5D\x98\x19\xA3\xDB\xA4\xEB\x3B",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700418 }, {
419 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800420 "abcdefghijklmnopqrstuvwxyz0123456789",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700421 .psize = 62,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800422 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
423 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
424 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
425 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E"
426 "\x08\xEB\xA2\x66\x29\x12\x9D\x8F"
427 "\xB7\xCB\x57\x21\x1B\x92\x81\xA6"
428 "\x55\x17\xCC\x87\x9D\x7B\x96\x21"
429 "\x42\xC6\x5F\x5A\x7A\xF0\x14\x67",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700430 }, {
431 .plaintext = "1234567890123456789012345678901234567890"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800432 "1234567890123456789012345678901234567890",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700433 .psize = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800434 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
435 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
436 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
437 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29"
438 "\x4D\x5B\xD8\xDF\x2A\x6C\x44\xE5"
439 "\x38\xCD\x04\x7B\x26\x81\xA5\x1A"
440 "\x2C\x60\x48\x1E\x88\xC5\xA2\x0B"
441 "\x2C\x2A\x80\xCF\x3A\x9A\x08\x3B",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700442 }, {
443 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
444 .psize = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800445 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
446 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
447 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
448 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69"
449 "\x16\xBD\xC8\x03\x1B\xC5\xBE\x1B"
450 "\x7B\x94\x76\x39\xFE\x05\x0B\x56"
451 "\x93\x9B\xAA\xA0\xAD\xFF\x9A\xE6"
452 "\x74\x5B\x7B\x18\x1C\x3B\xE3\xFD",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700453 },
454};
455
456#define WP384_TEST_VECTORS 8
457
458static struct hash_testvec wp384_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700459 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700460 .plaintext = "",
461 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800462 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
463 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
464 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
465 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7"
466 "\x3E\x83\xBE\x69\x8B\x28\x8F\xEB"
467 "\xCF\x88\xE3\xE0\x3C\x4F\x07\x57",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700468
469
470 }, {
471 .plaintext = "a",
472 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800473 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
474 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
475 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
476 "\x73\xC4\x50\x01\xD0\x08\x7B\x42"
477 "\xD1\x1B\xC6\x45\x41\x3A\xEF\xF6"
478 "\x3A\x42\x39\x1A\x39\x14\x5A\x59",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700479 }, {
480 .plaintext = "abc",
481 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800482 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
483 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
484 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
485 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C"
486 "\x71\x81\xEE\xBD\xB6\xC5\x7E\x27"
487 "\x7D\x0E\x34\x95\x71\x14\xCB\xD6",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700488 }, {
489 .plaintext = "message digest",
490 .psize = 14,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800491 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
492 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
493 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
494 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B"
495 "\x84\x21\x55\x76\x59\xEF\x55\xC1"
496 "\x06\xB4\xB5\x2A\xC5\xA4\xAA\xA6",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700497 }, {
498 .plaintext = "abcdefghijklmnopqrstuvwxyz",
499 .psize = 26,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800500 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
501 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
502 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
503 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B"
504 "\x08\xBF\x2A\x92\x51\xC3\x0B\x6A"
505 "\x0B\x8A\xAE\x86\x17\x7A\xB4\xA6",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700506 }, {
507 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800508 "abcdefghijklmnopqrstuvwxyz0123456789",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700509 .psize = 62,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800510 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
511 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
512 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
513 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E"
514 "\x08\xEB\xA2\x66\x29\x12\x9D\x8F"
515 "\xB7\xCB\x57\x21\x1B\x92\x81\xA6",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700516 }, {
517 .plaintext = "1234567890123456789012345678901234567890"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800518 "1234567890123456789012345678901234567890",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700519 .psize = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800520 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
521 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
522 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
523 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29"
524 "\x4D\x5B\xD8\xDF\x2A\x6C\x44\xE5"
525 "\x38\xCD\x04\x7B\x26\x81\xA5\x1A",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700526 }, {
527 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
528 .psize = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800529 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
530 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
531 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
532 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69"
533 "\x16\xBD\xC8\x03\x1B\xC5\xBE\x1B"
534 "\x7B\x94\x76\x39\xFE\x05\x0B\x56",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700535 },
536};
537
538#define WP256_TEST_VECTORS 8
539
540static struct hash_testvec wp256_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700541 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700542 .plaintext = "",
543 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800544 .digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
545 "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
546 "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
547 "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700548
549
550 }, {
551 .plaintext = "a",
552 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800553 .digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
554 "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
555 "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
556 "\x73\xC4\x50\x01\xD0\x08\x7B\x42",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700557 }, {
558 .plaintext = "abc",
559 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800560 .digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
561 "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
562 "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
563 "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700564 }, {
565 .plaintext = "message digest",
566 .psize = 14,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800567 .digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
568 "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
569 "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
570 "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700571 }, {
572 .plaintext = "abcdefghijklmnopqrstuvwxyz",
573 .psize = 26,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800574 .digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
575 "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
576 "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
577 "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700578 }, {
579 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800580 "abcdefghijklmnopqrstuvwxyz0123456789",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700581 .psize = 62,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800582 .digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
583 "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
584 "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
585 "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700586 }, {
587 .plaintext = "1234567890123456789012345678901234567890"
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800588 "1234567890123456789012345678901234567890",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700589 .psize = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800590 .digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
591 "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
592 "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
593 "\x54\x9C\x4A\xFA\xDB\x60\x14\x29",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700594 }, {
595 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
596 .psize = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800597 .digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
598 "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
599 "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
600 "\x07\xC5\x62\xF9\x88\xE9\x5C\x69",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700601 },
602};
603
604/*
Herbert Xuef2736f2005-06-22 13:26:03 -0700605 * TIGER test vectors from Tiger website
Linus Torvalds1da177e2005-04-16 15:20:36 -0700606 */
607#define TGR192_TEST_VECTORS 6
608
609static struct hash_testvec tgr192_tv_template[] = {
610 {
611 .plaintext = "",
612 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800613 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
614 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f"
615 "\xf3\x73\xde\x2d\x49\x58\x4e\x7a",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700616 }, {
617 .plaintext = "abc",
618 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800619 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
620 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf"
621 "\x93\x5f\x7b\x95\x1c\x13\x29\x51",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700622 }, {
623 .plaintext = "Tiger",
624 .psize = 5,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800625 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
626 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec"
627 "\x37\x79\x0c\x11\x6f\x9d\x2b\xdf",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700628 }, {
629 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
630 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800631 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
632 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e"
633 "\xb5\x86\x44\x50\x34\xa5\xa3\x86",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700634 }, {
635 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
636 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800637 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
638 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9"
639 "\x57\x89\x65\x65\x97\x5f\x91\x97",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700640 }, {
641 .plaintext = "Tiger - A Fast New Hash Function, "
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800642 "by Ross Anderson and Eli Biham, "
643 "proceedings of Fast Software Encryption 3, "
644 "Cambridge, 1996.",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700645 .psize = 125,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800646 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
647 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24"
648 "\xdd\x68\x15\x1d\x50\x39\x74\xfc",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700649 },
650};
651
652#define TGR160_TEST_VECTORS 6
653
654static struct hash_testvec tgr160_tv_template[] = {
655 {
656 .plaintext = "",
657 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800658 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
659 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f"
660 "\xf3\x73\xde\x2d",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700661 }, {
662 .plaintext = "abc",
663 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800664 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
665 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf"
666 "\x93\x5f\x7b\x95",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700667 }, {
668 .plaintext = "Tiger",
669 .psize = 5,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800670 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
671 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec"
672 "\x37\x79\x0c\x11",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700673 }, {
674 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
675 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800676 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
677 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e"
678 "\xb5\x86\x44\x50",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700679 }, {
680 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
681 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800682 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
683 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9"
684 "\x57\x89\x65\x65",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700685 }, {
686 .plaintext = "Tiger - A Fast New Hash Function, "
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800687 "by Ross Anderson and Eli Biham, "
688 "proceedings of Fast Software Encryption 3, "
689 "Cambridge, 1996.",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700690 .psize = 125,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800691 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
692 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24"
693 "\xdd\x68\x15\x1d",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700694 },
695};
696
697#define TGR128_TEST_VECTORS 6
698
699static struct hash_testvec tgr128_tv_template[] = {
700 {
701 .plaintext = "",
702 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800703 .digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
704 "\x16\x16\x6e\x76\xb1\xbb\x92\x5f",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700705 }, {
706 .plaintext = "abc",
707 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800708 .digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
709 "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700710 }, {
711 .plaintext = "Tiger",
712 .psize = 5,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800713 .digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
714 "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700715 }, {
716 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
717 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800718 .digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
719 "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700720 }, {
721 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
722 .psize = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800723 .digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
724 "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700725 }, {
726 .plaintext = "Tiger - A Fast New Hash Function, "
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800727 "by Ross Anderson and Eli Biham, "
728 "proceedings of Fast Software Encryption 3, "
729 "Cambridge, 1996.",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700730 .psize = 125,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800731 .digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
732 "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700733 },
734};
735
Linus Torvalds1da177e2005-04-16 15:20:36 -0700736/*
737 * HMAC-MD5 test vectors from RFC2202
738 * (These need to be fixed to not use strlen).
739 */
740#define HMAC_MD5_TEST_VECTORS 7
741
Herbert Xue9d41162006-08-19 21:38:49 +1000742static struct hash_testvec hmac_md5_tv_template[] =
Herbert Xuef2736f2005-06-22 13:26:03 -0700743{
Linus Torvalds1da177e2005-04-16 15:20:36 -0700744 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800745 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700746 .ksize = 16,
747 .plaintext = "Hi There",
748 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800749 .digest = "\x92\x94\x72\x7a\x36\x38\xbb\x1c"
750 "\x13\xf4\x8e\xf8\x15\x8b\xfc\x9d",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700751 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800752 .key = "Jefe",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700753 .ksize = 4,
754 .plaintext = "what do ya want for nothing?",
755 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800756 .digest = "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03"
757 "\xea\xa8\x6e\x31\x0a\x5d\xb7\x38",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700758 .np = 2,
759 .tap = {14, 14}
760 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800761 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700762 .ksize = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800763 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
764 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
765 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
766 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700767 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800768 .digest = "\x56\xbe\x34\x52\x1d\x14\x4c\x88"
769 "\xdb\xb8\xc7\x33\xf0\xe8\xb3\xf6",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700770 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800771 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
772 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
773 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700774 .ksize = 25,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800775 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
776 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
777 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
778 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700779 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800780 .digest = "\x69\x7e\xaf\x0a\xca\x3a\x3a\xea"
781 "\x3a\x75\x16\x47\x46\xff\xaa\x79",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700782 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800783 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700784 .ksize = 16,
785 .plaintext = "Test With Truncation",
786 .psize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800787 .digest = "\x56\x46\x1e\xf2\x34\x2e\xdc\x00"
788 "\xf9\xba\xb9\x95\x69\x0e\xfd\x4c",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700789 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800790 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
791 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
792 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
793 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
794 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
795 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
796 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700797 .ksize = 80,
798 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
799 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800800 .digest = "\x6b\x1a\xb7\xfe\x4b\xd7\xbf\x8f"
801 "\x0b\x62\xe6\xce\x61\xb9\xd0\xcd",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700802 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800803 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
804 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
805 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
806 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
807 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
808 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
809 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700810 .ksize = 80,
811 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800812 "Block-Size Data",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700813 .psize = 73,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800814 .digest = "\x6f\x63\x0f\xad\x67\xcd\xa0\xee"
815 "\x1f\xb1\xf5\x62\xdb\x3a\xa5\x3e",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700816 },
817};
818
819/*
820 * HMAC-SHA1 test vectors from RFC2202
821 */
822#define HMAC_SHA1_TEST_VECTORS 7
823
Herbert Xue9d41162006-08-19 21:38:49 +1000824static struct hash_testvec hmac_sha1_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700825 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800826 .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 -0700827 .ksize = 20,
828 .plaintext = "Hi There",
829 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800830 .digest = "\xb6\x17\x31\x86\x55\x05\x72\x64"
831 "\xe2\x8b\xc0\xb6\xfb\x37\x8c\x8e\xf1"
832 "\x46\xbe",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700833 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800834 .key = "Jefe",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700835 .ksize = 4,
836 .plaintext = "what do ya want for nothing?",
837 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800838 .digest = "\xef\xfc\xdf\x6a\xe5\xeb\x2f\xa2\xd2\x74"
839 "\x16\xd5\xf1\x84\xdf\x9c\x25\x9a\x7c\x79",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700840 .np = 2,
841 .tap = { 14, 14 }
842 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800843 .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 -0700844 .ksize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800845 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
846 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
847 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
848 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700849 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800850 .digest = "\x12\x5d\x73\x42\xb9\xac\x11\xcd\x91\xa3"
851 "\x9a\xf4\x8a\xa1\x7b\x4f\x63\xf1\x75\xd3",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700852 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800853 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
854 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
855 "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700856 .ksize = 25,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800857 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
858 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
859 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
860 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700861 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800862 .digest = "\x4c\x90\x07\xf4\x02\x62\x50\xc6\xbc\x84"
863 "\x14\xf9\xbf\x50\xc8\x6c\x2d\x72\x35\xda",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700864 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800865 .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 -0700866 .ksize = 20,
867 .plaintext = "Test With Truncation",
868 .psize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800869 .digest = "\x4c\x1a\x03\x42\x4b\x55\xe0\x7f\xe7\xf2"
870 "\x7b\xe1\xd5\x8b\xb9\x32\x4a\x9a\x5a\x04",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700871 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800872 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
873 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
874 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
875 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
876 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
877 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
878 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700879 .ksize = 80,
880 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
881 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800882 .digest = "\xaa\x4a\xe5\xe1\x52\x72\xd0\x0e\x95\x70"
883 "\x56\x37\xce\x8a\x3b\x55\xed\x40\x21\x12",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700884 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800885 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
886 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
887 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
888 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
889 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
890 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
891 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700892 .ksize = 80,
893 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800894 "Block-Size Data",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700895 .psize = 73,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800896 .digest = "\xe8\xe9\x9d\x0f\x45\x23\x7d\x78\x6d\x6b"
897 "\xba\xa7\x96\x5c\x78\x08\xbb\xff\x1a\x91",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700898 },
899};
900
Jonathan Lynchcd12fb902007-11-10 20:08:25 +0800901
902/*
903 * SHA224 HMAC test vectors from RFC4231
904 */
905#define HMAC_SHA224_TEST_VECTORS 4
906
907static struct hash_testvec hmac_sha224_tv_template[] = {
908 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800909 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
910 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
911 "\x0b\x0b\x0b\x0b",
Jonathan Lynchcd12fb902007-11-10 20:08:25 +0800912 .ksize = 20,
913 /* ("Hi There") */
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800914 .plaintext = "\x48\x69\x20\x54\x68\x65\x72\x65",
Jonathan Lynchcd12fb902007-11-10 20:08:25 +0800915 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800916 .digest = "\x89\x6f\xb1\x12\x8a\xbb\xdf\x19"
917 "\x68\x32\x10\x7c\xd4\x9d\xf3\x3f"
918 "\x47\xb4\xb1\x16\x99\x12\xba\x4f"
919 "\x53\x68\x4b\x22",
Jonathan Lynchcd12fb902007-11-10 20:08:25 +0800920 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800921 .key = "Jefe",
Jonathan Lynchcd12fb902007-11-10 20:08:25 +0800922 .ksize = 4,
923 /* ("what do ya want for nothing?") */
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800924 .plaintext = "\x77\x68\x61\x74\x20\x64\x6f\x20"
925 "\x79\x61\x20\x77\x61\x6e\x74\x20"
926 "\x66\x6f\x72\x20\x6e\x6f\x74\x68"
927 "\x69\x6e\x67\x3f",
Jonathan Lynchcd12fb902007-11-10 20:08:25 +0800928 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800929 .digest = "\xa3\x0e\x01\x09\x8b\xc6\xdb\xbf"
930 "\x45\x69\x0f\x3a\x7e\x9e\x6d\x0f"
931 "\x8b\xbe\xa2\xa3\x9e\x61\x48\x00"
932 "\x8f\xd0\x5e\x44",
Jonathan Lynchcd12fb902007-11-10 20:08:25 +0800933 .np = 4,
934 .tap = { 7, 7, 7, 7 }
935 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800936 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
937 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
938 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
939 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
940 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
941 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
942 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
943 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
944 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
945 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
946 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
947 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
948 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
949 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
950 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
951 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
952 "\xaa\xaa\xaa",
Jonathan Lynchcd12fb902007-11-10 20:08:25 +0800953 .ksize = 131,
954 /* ("Test Using Larger Than Block-Size Key - Hash Key First") */
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800955 .plaintext = "\x54\x65\x73\x74\x20\x55\x73\x69"
956 "\x6e\x67\x20\x4c\x61\x72\x67\x65"
957 "\x72\x20\x54\x68\x61\x6e\x20\x42"
958 "\x6c\x6f\x63\x6b\x2d\x53\x69\x7a"
959 "\x65\x20\x4b\x65\x79\x20\x2d\x20"
960 "\x48\x61\x73\x68\x20\x4b\x65\x79"
961 "\x20\x46\x69\x72\x73\x74",
Jonathan Lynchcd12fb902007-11-10 20:08:25 +0800962 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800963 .digest = "\x95\xe9\xa0\xdb\x96\x20\x95\xad"
964 "\xae\xbe\x9b\x2d\x6f\x0d\xbc\xe2"
965 "\xd4\x99\xf1\x12\xf2\xd2\xb7\x27"
966 "\x3f\xa6\x87\x0e",
Jonathan Lynchcd12fb902007-11-10 20:08:25 +0800967 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800968 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
969 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
970 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
971 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
972 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
973 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
974 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
975 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
976 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
977 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
978 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
979 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
980 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
981 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
982 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
983 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
984 "\xaa\xaa\xaa",
Jonathan Lynchcd12fb902007-11-10 20:08:25 +0800985 .ksize = 131,
986 /* ("This is a test using a larger than block-size key and a")
987 (" larger than block-size data. The key needs to be")
988 (" hashed before being used by the HMAC algorithm.") */
Sebastian Siewiorde224c32008-03-13 20:21:51 +0800989 .plaintext = "\x54\x68\x69\x73\x20\x69\x73\x20"
990 "\x61\x20\x74\x65\x73\x74\x20\x75"
991 "\x73\x69\x6e\x67\x20\x61\x20\x6c"
992 "\x61\x72\x67\x65\x72\x20\x74\x68"
993 "\x61\x6e\x20\x62\x6c\x6f\x63\x6b"
994 "\x2d\x73\x69\x7a\x65\x20\x6b\x65"
995 "\x79\x20\x61\x6e\x64\x20\x61\x20"
996 "\x6c\x61\x72\x67\x65\x72\x20\x74"
997 "\x68\x61\x6e\x20\x62\x6c\x6f\x63"
998 "\x6b\x2d\x73\x69\x7a\x65\x20\x64"
999 "\x61\x74\x61\x2e\x20\x54\x68\x65"
1000 "\x20\x6b\x65\x79\x20\x6e\x65\x65"
1001 "\x64\x73\x20\x74\x6f\x20\x62\x65"
1002 "\x20\x68\x61\x73\x68\x65\x64\x20"
1003 "\x62\x65\x66\x6f\x72\x65\x20\x62"
1004 "\x65\x69\x6e\x67\x20\x75\x73\x65"
1005 "\x64\x20\x62\x79\x20\x74\x68\x65"
1006 "\x20\x48\x4d\x41\x43\x20\x61\x6c"
1007 "\x67\x6f\x72\x69\x74\x68\x6d\x2e",
Jonathan Lynchcd12fb902007-11-10 20:08:25 +08001008 .psize = 152,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001009 .digest = "\x3a\x85\x41\x66\xac\x5d\x9f\x02"
1010 "\x3f\x54\xd5\x17\xd0\xb3\x9d\xbd"
1011 "\x94\x67\x70\xdb\x9c\x2b\x95\xc9"
1012 "\xf6\xf5\x65\xd1",
Jonathan Lynchcd12fb902007-11-10 20:08:25 +08001013 },
1014};
1015
Linus Torvalds1da177e2005-04-16 15:20:36 -07001016/*
1017 * HMAC-SHA256 test vectors from
1018 * draft-ietf-ipsec-ciph-sha-256-01.txt
1019 */
1020#define HMAC_SHA256_TEST_VECTORS 10
1021
Herbert Xue9d41162006-08-19 21:38:49 +10001022static struct hash_testvec hmac_sha256_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07001023 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001024 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1025 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1026 "\x11\x12\x13\x14\x15\x16\x17\x18"
1027 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001028 .ksize = 32,
1029 .plaintext = "abc",
1030 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001031 .digest = "\xa2\x1b\x1f\x5d\x4c\xf4\xf7\x3a"
1032 "\x4d\xd9\x39\x75\x0f\x7a\x06\x6a"
1033 "\x7f\x98\xcc\x13\x1c\xb1\x6a\x66"
1034 "\x92\x75\x90\x21\xcf\xab\x81\x81",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001035 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001036 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1037 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1038 "\x11\x12\x13\x14\x15\x16\x17\x18"
1039 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001040 .ksize = 32,
1041 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
1042 .psize = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001043 .digest = "\x10\x4f\xdc\x12\x57\x32\x8f\x08"
1044 "\x18\x4b\xa7\x31\x31\xc5\x3c\xae"
1045 "\xe6\x98\xe3\x61\x19\x42\x11\x49"
1046 "\xea\x8c\x71\x24\x56\x69\x7d\x30",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001047 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001048 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1049 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1050 "\x11\x12\x13\x14\x15\x16\x17\x18"
1051 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001052 .ksize = 32,
1053 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001054 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001055 .psize = 112,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001056 .digest = "\x47\x03\x05\xfc\x7e\x40\xfe\x34"
1057 "\xd3\xee\xb3\xe7\x73\xd9\x5a\xab"
1058 "\x73\xac\xf0\xfd\x06\x04\x47\xa5"
1059 "\xeb\x45\x95\xbf\x33\xa9\xd1\xa3",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001060 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001061 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1062 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1063 "\x0b\x0b\x0b\x0b\x0b\x0b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001064 .ksize = 32,
1065 .plaintext = "Hi There",
1066 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001067 .digest = "\x19\x8a\x60\x7e\xb4\x4b\xfb\xc6"
1068 "\x99\x03\xa0\xf1\xcf\x2b\xbd\xc5"
1069 "\xba\x0a\xa3\xf3\xd9\xae\x3c\x1c"
1070 "\x7a\x3b\x16\x96\xa0\xb6\x8c\xf7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001071 }, {
1072 .key = "Jefe",
1073 .ksize = 4,
1074 .plaintext = "what do ya want for nothing?",
1075 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001076 .digest = "\x5b\xdc\xc1\x46\xbf\x60\x75\x4e"
1077 "\x6a\x04\x24\x26\x08\x95\x75\xc7"
1078 "\x5a\x00\x3f\x08\x9d\x27\x39\x83"
1079 "\x9d\xec\x58\xb9\x64\xec\x38\x43",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001080 .np = 2,
1081 .tap = { 14, 14 }
1082 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001083 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1084 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1085 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001086 .ksize = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001087 .plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1088 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1089 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1090 "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001091 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001092 .digest = "\xcd\xcb\x12\x20\xd1\xec\xcc\xea"
1093 "\x91\xe5\x3a\xba\x30\x92\xf9\x62"
1094 "\xe5\x49\xfe\x6c\xe9\xed\x7f\xdc"
1095 "\x43\x19\x1f\xbd\xe4\x5c\x30\xb0",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001096 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001097 .key = "\x01\x02\x03\x04\x05\x06\x07\x08"
1098 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1099 "\x11\x12\x13\x14\x15\x16\x17\x18"
1100 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
1101 "\x21\x22\x23\x24\x25",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001102 .ksize = 37,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001103 .plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1104 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1105 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1106 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001107 .psize = 50,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001108 .digest = "\xd4\x63\x3c\x17\xf6\xfb\x8d\x74"
1109 "\x4c\x66\xde\xe0\xf8\xf0\x74\x55"
1110 "\x6e\xc4\xaf\x55\xef\x07\x99\x85"
1111 "\x41\x46\x8e\xb4\x9b\xd2\xe9\x17",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001112 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001113 .key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
1114 "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
1115 "\x0c\x0c\x0c\x0c\x0c\x0c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001116 .ksize = 32,
1117 .plaintext = "Test With Truncation",
1118 .psize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001119 .digest = "\x75\x46\xaf\x01\x84\x1f\xc0\x9b"
1120 "\x1a\xb9\xc3\x74\x9a\x5f\x1c\x17"
1121 "\xd4\xf5\x89\x66\x8a\x58\x7b\x27"
1122 "\x00\xa9\xc9\x7c\x11\x93\xcf\x42",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001123 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001124 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1125 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1126 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1127 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1128 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1129 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1130 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001131 .ksize = 80,
1132 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1133 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001134 .digest = "\x69\x53\x02\x5e\xd9\x6f\x0c\x09"
1135 "\xf8\x0a\x96\xf7\x8e\x65\x38\xdb"
1136 "\xe2\xe7\xb8\x20\xe3\xdd\x97\x0e"
1137 "\x7d\xdd\x39\x09\x1b\x32\x35\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001138 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001139 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1140 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1141 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1142 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1143 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1144 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1145 "\xaa\xaa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001146 .ksize = 80,
1147 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001148 "One Block-Size Data",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001149 .psize = 73,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001150 .digest = "\x63\x55\xac\x22\xe8\x90\xd0\xa3"
1151 "\xc8\x48\x1a\x5c\xa4\x82\x5b\xc8"
1152 "\x84\xd3\xe7\xa1\xff\x98\xa2\xfc"
1153 "\x2a\xc7\xd8\xe0\x64\xc3\xb2\xe6",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001154 },
1155};
1156
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001157#define XCBC_AES_TEST_VECTORS 6
1158
1159static struct hash_testvec aes_xcbc128_tv_template[] = {
1160 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001161 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1162 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1163 .plaintext = zeroed_string,
1164 .digest = "\x75\xf0\x25\x1d\x52\x8a\xc0\x1c"
1165 "\x45\x73\xdf\xd5\x84\xd7\x9f\x29",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001166 .psize = 0,
1167 .ksize = 16,
1168 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001169 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1170 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1171 .plaintext = "\x00\x01\x02",
1172 .digest = "\x5b\x37\x65\x80\xae\x2f\x19\xaf"
1173 "\xe7\x21\x9c\xee\xf1\x72\x75\x6f",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001174 .psize = 3,
1175 .ksize = 16,
1176 } , {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001177 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1178 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1179 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1180 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1181 .digest = "\xd2\xa2\x46\xfa\x34\x9b\x68\xa7"
1182 "\x99\x98\xa4\x39\x4f\xf7\xa2\x63",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001183 .psize = 16,
1184 .ksize = 16,
1185 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001186 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1187 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1188 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1189 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1190 "\x10\x11\x12\x13",
1191 .digest = "\x47\xf5\x1b\x45\x64\x96\x62\x15"
1192 "\xb8\x98\x5c\x63\x05\x5e\xd3\x08",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001193 .tap = { 10, 10 },
1194 .psize = 20,
1195 .np = 2,
1196 .ksize = 16,
1197 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001198 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1199 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1200 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1201 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1202 "\x10\x11\x12\x13\x14\x15\x16\x17"
1203 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
1204 .digest = "\xf5\x4f\x0e\xc8\xd2\xb9\xf3\xd3"
1205 "\x68\x07\x73\x4b\xd5\x28\x3f\xd4",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001206 .psize = 32,
1207 .ksize = 16,
1208 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001209 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
1210 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
1211 .plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
1212 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
1213 "\x10\x11\x12\x13\x14\x15\x16\x17"
1214 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
1215 "\x20\x21",
1216 .digest = "\xbe\xcb\xb3\xbc\xcd\xb5\x18\xa3"
1217 "\x06\x77\xd5\x48\x1f\xb6\xb4\xd8",
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +10001218 .tap = { 17, 17 },
1219 .psize = 34,
1220 .np = 2,
1221 .ksize = 16,
1222 }
1223};
1224
Linus Torvalds1da177e2005-04-16 15:20:36 -07001225/*
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001226 * SHA384 HMAC test vectors from RFC4231
1227 */
1228
1229#define HMAC_SHA384_TEST_VECTORS 4
1230
1231static struct hash_testvec hmac_sha384_tv_template[] = {
1232 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001233 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1234 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1235 "\x0b\x0b\x0b\x0b",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001236 .ksize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001237 .plaintext = "Hi There",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001238 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001239 .digest = "\xaf\xd0\x39\x44\xd8\x48\x95\x62"
1240 "\x6b\x08\x25\xf4\xab\x46\x90\x7f"
1241 "\x15\xf9\xda\xdb\xe4\x10\x1e\xc6"
1242 "\x82\xaa\x03\x4c\x7c\xeb\xc5\x9c"
1243 "\xfa\xea\x9e\xa9\x07\x6e\xde\x7f"
1244 "\x4a\xf1\x52\xe8\xb2\xfa\x9c\xb6",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001245 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001246 .key = "Jefe",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001247 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001248 .plaintext = "what do ya want for nothing?",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001249 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001250 .digest = "\xaf\x45\xd2\xe3\x76\x48\x40\x31"
1251 "\x61\x7f\x78\xd2\xb5\x8a\x6b\x1b"
1252 "\x9c\x7e\xf4\x64\xf5\xa0\x1b\x47"
1253 "\xe4\x2e\xc3\x73\x63\x22\x44\x5e"
1254 "\x8e\x22\x40\xca\x5e\x69\xe2\xc7"
1255 "\x8b\x32\x39\xec\xfa\xb2\x16\x49",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001256 .np = 4,
1257 .tap = { 7, 7, 7, 7 }
1258 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001259 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1260 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1261 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1262 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1263 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1264 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1265 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1266 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1267 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1268 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1269 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1270 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1271 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1272 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1273 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1274 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1275 "\xaa\xaa\xaa",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001276 .ksize = 131,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001277 .plaintext = "Test Using Larger Than Block-Siz"
1278 "e Key - Hash Key First",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001279 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001280 .digest = "\x4e\xce\x08\x44\x85\x81\x3e\x90"
1281 "\x88\xd2\xc6\x3a\x04\x1b\xc5\xb4"
1282 "\x4f\x9e\xf1\x01\x2a\x2b\x58\x8f"
1283 "\x3c\xd1\x1f\x05\x03\x3a\xc4\xc6"
1284 "\x0c\x2e\xf6\xab\x40\x30\xfe\x82"
1285 "\x96\x24\x8d\xf1\x63\xf4\x49\x52",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001286 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001287 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1288 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1289 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1290 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1291 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1292 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1293 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1294 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1295 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1296 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1297 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1298 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1299 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1300 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1301 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1302 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1303 "\xaa\xaa\xaa",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001304 .ksize = 131,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001305 .plaintext = "This is a test u"
1306 "sing a larger th"
1307 "an block-size ke"
1308 "y and a larger t"
1309 "han block-size d"
1310 "ata. The key nee"
1311 "ds to be hashed "
1312 "before being use"
1313 "d by the HMAC al"
1314 "gorithm.",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001315 .psize = 152,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001316 .digest = "\x66\x17\x17\x8e\x94\x1f\x02\x0d"
1317 "\x35\x1e\x2f\x25\x4e\x8f\xd3\x2c"
1318 "\x60\x24\x20\xfe\xb0\xb8\xfb\x9a"
1319 "\xdc\xce\xbb\x82\x46\x1e\x99\xc5"
1320 "\xa6\x78\xcc\x31\xe7\x99\x17\x6d"
1321 "\x38\x60\xe6\x11\x0c\x46\x52\x3e",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001322 },
1323};
1324
1325/*
1326 * SHA512 HMAC test vectors from RFC4231
1327 */
1328
1329#define HMAC_SHA512_TEST_VECTORS 4
1330
1331static struct hash_testvec hmac_sha512_tv_template[] = {
1332 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001333 .key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1334 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1335 "\x0b\x0b\x0b\x0b",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001336 .ksize = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001337 .plaintext = "Hi There",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001338 .psize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001339 .digest = "\x87\xaa\x7c\xde\xa5\xef\x61\x9d"
1340 "\x4f\xf0\xb4\x24\x1a\x1d\x6c\xb0"
1341 "\x23\x79\xf4\xe2\xce\x4e\xc2\x78"
1342 "\x7a\xd0\xb3\x05\x45\xe1\x7c\xde"
1343 "\xda\xa8\x33\xb7\xd6\xb8\xa7\x02"
1344 "\x03\x8b\x27\x4e\xae\xa3\xf4\xe4"
1345 "\xbe\x9d\x91\x4e\xeb\x61\xf1\x70"
1346 "\x2e\x69\x6c\x20\x3a\x12\x68\x54",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001347 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001348 .key = "Jefe",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001349 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001350 .plaintext = "what do ya want for nothing?",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001351 .psize = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001352 .digest = "\x16\x4b\x7a\x7b\xfc\xf8\x19\xe2"
1353 "\xe3\x95\xfb\xe7\x3b\x56\xe0\xa3"
1354 "\x87\xbd\x64\x22\x2e\x83\x1f\xd6"
1355 "\x10\x27\x0c\xd7\xea\x25\x05\x54"
1356 "\x97\x58\xbf\x75\xc0\x5a\x99\x4a"
1357 "\x6d\x03\x4f\x65\xf8\xf0\xe6\xfd"
1358 "\xca\xea\xb1\xa3\x4d\x4a\x6b\x4b"
1359 "\x63\x6e\x07\x0a\x38\xbc\xe7\x37",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001360 .np = 4,
1361 .tap = { 7, 7, 7, 7 }
1362 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001363 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1364 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1365 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1366 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1367 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1368 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1369 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1370 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1371 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1372 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1373 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1374 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1375 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1376 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1377 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1378 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1379 "\xaa\xaa\xaa",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001380 .ksize = 131,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001381 .plaintext = "Test Using Large"
1382 "r Than Block-Siz"
1383 "e Key - Hash Key"
1384 " First",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001385 .psize = 54,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001386 .digest = "\x80\xb2\x42\x63\xc7\xc1\xa3\xeb"
1387 "\xb7\x14\x93\xc1\xdd\x7b\xe8\xb4"
1388 "\x9b\x46\xd1\xf4\x1b\x4a\xee\xc1"
1389 "\x12\x1b\x01\x37\x83\xf8\xf3\x52"
1390 "\x6b\x56\xd0\x37\xe0\x5f\x25\x98"
1391 "\xbd\x0f\xd2\x21\x5d\x6a\x1e\x52"
1392 "\x95\xe6\x4f\x73\xf6\x3f\x0a\xec"
1393 "\x8b\x91\x5a\x98\x5d\x78\x65\x98",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001394 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001395 .key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1396 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1397 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1398 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1399 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1400 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1401 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1402 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1403 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1404 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1405 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1406 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1407 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1408 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1409 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1410 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1411 "\xaa\xaa\xaa",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001412 .ksize = 131,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001413 .plaintext =
1414 "This is a test u"
1415 "sing a larger th"
1416 "an block-size ke"
1417 "y and a larger t"
1418 "han block-size d"
1419 "ata. The key nee"
1420 "ds to be hashed "
1421 "before being use"
1422 "d by the HMAC al"
1423 "gorithm.",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001424 .psize = 152,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001425 .digest = "\xe3\x7b\x6a\x77\x5d\xc8\x7d\xba"
1426 "\xa4\xdf\xa9\xf9\x6e\x5e\x3f\xfd"
1427 "\xde\xbd\x71\xf8\x86\x72\x89\x86"
1428 "\x5d\xf5\xa3\x2d\x20\xcd\xc9\x44"
1429 "\xb6\x02\x2c\xac\x3c\x49\x82\xb1"
1430 "\x0d\x5e\xeb\x55\xc3\xe4\xde\x15"
1431 "\x13\x46\x76\xfb\x6d\xe0\x44\x60"
1432 "\x65\xc9\x74\x40\xfa\x8c\x6a\x58",
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001433 },
1434};
1435
1436/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07001437 * DES test vectors.
1438 */
1439#define DES_ENC_TEST_VECTORS 10
1440#define DES_DEC_TEST_VECTORS 4
1441#define DES_CBC_ENC_TEST_VECTORS 5
1442#define DES_CBC_DEC_TEST_VECTORS 4
1443#define DES3_EDE_ENC_TEST_VECTORS 3
1444#define DES3_EDE_DEC_TEST_VECTORS 3
1445
1446static struct cipher_testvec des_enc_tv_template[] = {
1447 { /* From Applied Cryptography */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001448 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001449 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001450 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001451 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001452 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001453 .rlen = 8,
1454 }, { /* Same key, different plaintext block */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001455 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001456 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001457 .input = "\x22\x33\x44\x55\x66\x77\x88\x99",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001458 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001459 .result = "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001460 .rlen = 8,
1461 }, { /* Sbox test from NBS */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001462 .key = "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001463 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001464 .input = "\x01\xa1\xd6\xd0\x39\x77\x67\x42",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001465 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001466 .result = "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001467 .rlen = 8,
1468 }, { /* Three blocks */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001469 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001470 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001471 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1472 "\x22\x33\x44\x55\x66\x77\x88\x99"
1473 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001474 .ilen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001475 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1476 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1477 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001478 .rlen = 24,
1479 }, { /* Weak key */
1480 .fail = 1,
1481 .wk = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001482 .key = "\x01\x01\x01\x01\x01\x01\x01\x01",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001483 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001484 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001485 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001486 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001487 .rlen = 8,
1488 }, { /* Two blocks -- for testing encryption across pages */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001489 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001490 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001491 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1492 "\x22\x33\x44\x55\x66\x77\x88\x99",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001493 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001494 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1495 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001496 .rlen = 16,
1497 .np = 2,
1498 .tap = { 8, 8 }
1499 }, { /* Four blocks -- for testing encryption with chunking */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001500 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001501 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001502 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1503 "\x22\x33\x44\x55\x66\x77\x88\x99"
1504 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef"
1505 "\x22\x33\x44\x55\x66\x77\x88\x99",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001506 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001507 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1508 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1509 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90"
1510 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001511 .rlen = 32,
1512 .np = 3,
Herbert Xuef2736f2005-06-22 13:26:03 -07001513 .tap = { 14, 10, 8 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001514 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001515 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001516 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001517 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1518 "\x22\x33\x44\x55\x66\x77\x88\x99"
1519 "\xca\xfe\xba\xbe\xfe\xed\xbe\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001520 .ilen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001521 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1522 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
1523 "\xb4\x99\x26\xf7\x1f\xe1\xd4\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001524 .rlen = 24,
1525 .np = 4,
Herbert Xuef2736f2005-06-22 13:26:03 -07001526 .tap = { 2, 1, 3, 18 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001527 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001528 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001529 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001530 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1531 "\x22\x33\x44\x55\x66\x77\x88\x99",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001532 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001533 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1534 "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001535 .rlen = 16,
1536 .np = 5,
Herbert Xuef2736f2005-06-22 13:26:03 -07001537 .tap = { 2, 2, 2, 2, 8 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001538 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001539 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001540 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001541 .input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001542 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001543 .result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001544 .rlen = 8,
1545 .np = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001546 .tap = { 1, 1, 1, 1, 1, 1, 1, 1 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001547 },
1548};
1549
1550static struct cipher_testvec des_dec_tv_template[] = {
1551 { /* From Applied Cryptography */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001552 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001553 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001554 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001555 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001556 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001557 .rlen = 8,
1558 }, { /* Sbox test from NBS */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001559 .key = "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001560 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001561 .input = "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001562 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001563 .result = "\x01\xa1\xd6\xd0\x39\x77\x67\x42",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001564 .rlen = 8,
1565 }, { /* Two blocks, for chunking test */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001566 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001567 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001568 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1569 "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001570 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001571 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1572 "\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001573 .rlen = 16,
1574 .np = 2,
1575 .tap = { 8, 8 }
1576 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001577 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001578 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001579 .input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
1580 "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001581 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001582 .result = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
1583 "\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001584 .rlen = 16,
1585 .np = 3,
1586 .tap = { 3, 12, 1 }
1587 },
1588};
1589
1590static struct cipher_testvec des_cbc_enc_tv_template[] = {
1591 { /* From OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001592 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001593 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001594 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1595 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
1596 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
1597 "\x68\x65\x20\x74\x69\x6d\x65\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001598 .ilen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001599 .result = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
1600 "\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb"
1601 "\x46\x8e\x91\x15\x78\x88\xba\x68",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001602 .rlen = 24,
1603 }, { /* FIPS Pub 81 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001604 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001605 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001606 .iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
1607 .input = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001608 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001609 .result = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001610 .rlen = 8,
1611 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001612 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001613 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001614 .iv = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
1615 .input = "\x68\x65\x20\x74\x69\x6d\x65\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001616 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001617 .result = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001618 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001619 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001620 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001621 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001622 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1623 .input = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001624 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001625 .result = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001626 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001627 }, { /* Copy of openssl vector for chunk testing */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001628 /* From OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001629 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001630 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001631 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1632 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
1633 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
1634 "\x68\x65\x20\x74\x69\x6d\x65\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001635 .ilen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001636 .result = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
1637 "\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb"
1638 "\x46\x8e\x91\x15\x78\x88\xba\x68",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001639 .rlen = 24,
1640 .np = 2,
1641 .tap = { 13, 11 }
1642 },
1643};
1644
1645static struct cipher_testvec des_cbc_dec_tv_template[] = {
1646 { /* FIPS Pub 81 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001647 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001648 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001649 .iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
1650 .input = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001651 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001652 .result = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001653 .rlen = 8,
1654 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001655 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001656 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001657 .iv = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
1658 .input = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001659 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001660 .result = "\x68\x65\x20\x74\x69\x6d\x65\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001661 .rlen = 8,
1662 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001663 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001664 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001665 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1666 .input = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001667 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001668 .result = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001669 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001670 }, { /* Copy of above, for chunk testing */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001671 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001672 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001673 .iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
1674 .input = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001675 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001676 .result = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001677 .rlen = 8,
1678 .np = 2,
1679 .tap = { 4, 4 }
1680 },
1681};
1682
1683/*
1684 * We really need some more test vectors, especially for DES3 CBC.
1685 */
1686static struct cipher_testvec des3_ede_enc_tv_template[] = {
1687 { /* These are from openssl */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001688 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1689 "\x55\x55\x55\x55\x55\x55\x55\x55"
1690 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001691 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001692 .input = "\x73\x6f\x6d\x65\x64\x61\x74\x61",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001693 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001694 .result = "\x18\xd7\x48\xe5\x63\x62\x05\x72",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001695 .rlen = 8,
1696 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001697 .key = "\x03\x52\x02\x07\x67\x20\x82\x17"
1698 "\x86\x02\x87\x66\x59\x08\x21\x98"
1699 "\x64\x05\x6a\xbd\xfe\xa9\x34\x57",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001700 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001701 .input = "\x73\x71\x75\x69\x67\x67\x6c\x65",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001702 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001703 .result = "\xc0\x7d\x2a\x0f\xa5\x66\xfa\x30",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001704 .rlen = 8,
1705 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001706 .key = "\x10\x46\x10\x34\x89\x98\x80\x20"
1707 "\x91\x07\xd0\x15\x89\x19\x01\x01"
1708 "\x19\x07\x92\x10\x98\x1a\x01\x01",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001709 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001710 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001711 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001712 .result = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001713 .rlen = 8,
1714 },
1715};
1716
1717static struct cipher_testvec des3_ede_dec_tv_template[] = {
1718 { /* These are from openssl */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001719 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1720 "\x55\x55\x55\x55\x55\x55\x55\x55"
1721 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001722 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001723 .input = "\x18\xd7\x48\xe5\x63\x62\x05\x72",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001724 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001725 .result = "\x73\x6f\x6d\x65\x64\x61\x74\x61",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001726 .rlen = 8,
1727 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001728 .key = "\x03\x52\x02\x07\x67\x20\x82\x17"
1729 "\x86\x02\x87\x66\x59\x08\x21\x98"
1730 "\x64\x05\x6a\xbd\xfe\xa9\x34\x57",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001731 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001732 .input = "\xc0\x7d\x2a\x0f\xa5\x66\xfa\x30",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001733 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001734 .result = "\x73\x71\x75\x69\x67\x67\x6c\x65",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001735 .rlen = 8,
1736 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001737 .key = "\x10\x46\x10\x34\x89\x98\x80\x20"
1738 "\x91\x07\xd0\x15\x89\x19\x01\x01"
1739 "\x19\x07\x92\x10\x98\x1a\x01\x01",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001740 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001741 .input = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001742 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001743 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001744 .rlen = 8,
1745 },
1746};
1747
1748/*
1749 * Blowfish test vectors.
1750 */
1751#define BF_ENC_TEST_VECTORS 6
1752#define BF_DEC_TEST_VECTORS 6
1753#define BF_CBC_ENC_TEST_VECTORS 1
1754#define BF_CBC_DEC_TEST_VECTORS 1
1755
1756static struct cipher_testvec bf_enc_tv_template[] = {
1757 { /* DES test vectors from OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001758 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001759 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001760 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001761 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001762 .result = "\x4e\xf9\x97\x45\x61\x98\xdd\x78",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001763 .rlen = 8,
1764 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001765 .key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001766 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001767 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001768 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001769 .result = "\xa7\x90\x79\x51\x08\xea\x3c\xae",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001770 .rlen = 8,
1771 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001772 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001773 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001774 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001775 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001776 .result = "\xe8\x7a\x24\x4e\x2c\xc8\x5e\x82",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001777 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001778 }, { /* Vary the keylength... */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001779 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1780 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001781 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001782 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001783 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001784 .result = "\x93\x14\x28\x87\xee\x3b\xe1\x5c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001785 .rlen = 8,
1786 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001787 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1788 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
1789 "\x00\x11\x22\x33\x44",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001790 .klen = 21,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001791 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001792 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001793 .result = "\xe6\xf5\x1e\xd7\x9b\x9d\xb2\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001794 .rlen = 8,
1795 }, { /* Generated with bf488 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001796 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1797 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
1798 "\x00\x11\x22\x33\x44\x55\x66\x77"
1799 "\x04\x68\x91\x04\xc2\xfd\x3b\x2f"
1800 "\x58\x40\x23\x64\x1a\xba\x61\x76"
1801 "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e"
1802 "\xff\xff\xff\xff\xff\xff\xff\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001803 .klen = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001804 .input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001805 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001806 .result = "\xc0\x45\x04\x01\x2e\x4e\x1f\x53",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001807 .rlen = 8,
1808 },
1809};
1810
1811static struct cipher_testvec bf_dec_tv_template[] = {
1812 { /* DES test vectors from OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001813 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001814 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001815 .input = "\x4e\xf9\x97\x45\x61\x98\xdd\x78",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001816 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001817 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001818 .rlen = 8,
1819 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001820 .key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001821 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001822 .input = "\xa7\x90\x79\x51\x08\xea\x3c\xae",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001823 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001824 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001825 .rlen = 8,
1826 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001827 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001828 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001829 .input = "\xe8\x7a\x24\x4e\x2c\xc8\x5e\x82",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001830 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001831 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001832 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001833 }, { /* Vary the keylength... */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001834 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1835 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001836 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001837 .input = "\x93\x14\x28\x87\xee\x3b\xe1\x5c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001838 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001839 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001840 .rlen = 8,
1841 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001842 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1843 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
1844 "\x00\x11\x22\x33\x44",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001845 .klen = 21,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001846 .input = "\xe6\xf5\x1e\xd7\x9b\x9d\xb2\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001847 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001848 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001849 .rlen = 8,
1850 }, { /* Generated with bf488, using OpenSSL, Libgcrypt and Nettle */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001851 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
1852 "\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
1853 "\x00\x11\x22\x33\x44\x55\x66\x77"
1854 "\x04\x68\x91\x04\xc2\xfd\x3b\x2f"
1855 "\x58\x40\x23\x64\x1a\xba\x61\x76"
1856 "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e"
1857 "\xff\xff\xff\xff\xff\xff\xff\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001858 .klen = 56,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001859 .input = "\xc0\x45\x04\x01\x2e\x4e\x1f\x53",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001860 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001861 .result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001862 .rlen = 8,
1863 },
1864};
1865
1866static struct cipher_testvec bf_cbc_enc_tv_template[] = {
1867 { /* From OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001868 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1869 "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001870 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001871 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1872 .input = "\x37\x36\x35\x34\x33\x32\x31\x20"
1873 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
1874 "\x68\x65\x20\x74\x69\x6d\x65\x20"
1875 "\x66\x6f\x72\x20\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001876 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001877 .result = "\x6b\x77\xb4\xd6\x30\x06\xde\xe6"
1878 "\x05\xb1\x56\xe2\x74\x03\x97\x93"
1879 "\x58\xde\xb9\xe7\x15\x46\x16\xd9"
1880 "\x59\xf1\x65\x2b\xd5\xff\x92\xcc",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001881 .rlen = 32,
1882 },
1883};
1884
1885static struct cipher_testvec bf_cbc_dec_tv_template[] = {
1886 { /* From OpenSSL */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001887 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1888 "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001889 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001890 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
1891 .input = "\x6b\x77\xb4\xd6\x30\x06\xde\xe6"
1892 "\x05\xb1\x56\xe2\x74\x03\x97\x93"
1893 "\x58\xde\xb9\xe7\x15\x46\x16\xd9"
1894 "\x59\xf1\x65\x2b\xd5\xff\x92\xcc",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001895 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001896 .result = "\x37\x36\x35\x34\x33\x32\x31\x20"
1897 "\x4e\x6f\x77\x20\x69\x73\x20\x74"
1898 "\x68\x65\x20\x74\x69\x6d\x65\x20"
1899 "\x66\x6f\x72\x20\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001900 .rlen = 32,
1901 },
1902};
1903
1904/*
1905 * Twofish test vectors.
1906 */
1907#define TF_ENC_TEST_VECTORS 3
1908#define TF_DEC_TEST_VECTORS 3
1909#define TF_CBC_ENC_TEST_VECTORS 4
1910#define TF_CBC_DEC_TEST_VECTORS 4
1911
1912static struct cipher_testvec tf_enc_tv_template[] = {
1913 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001914 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001915 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001916 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001917 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001918 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
1919 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001920 .rlen = 16,
1921 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001922 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1923 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
1924 "\x00\x11\x22\x33\x44\x55\x66\x77",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001925 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001926 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001927 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001928 .result = "\xcf\xd1\xd2\xe5\xa9\xbe\x9c\xdf"
1929 "\x50\x1f\x13\xb8\x92\xbd\x22\x48",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001930 .rlen = 16,
1931 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001932 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1933 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
1934 "\x00\x11\x22\x33\x44\x55\x66\x77"
1935 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001936 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001937 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001938 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001939 .result = "\x37\x52\x7b\xe0\x05\x23\x34\xb8"
1940 "\x9f\x0c\xfc\xca\xe8\x7c\xfa\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001941 .rlen = 16,
1942 },
1943};
1944
1945static struct cipher_testvec tf_dec_tv_template[] = {
1946 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001947 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001948 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001949 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
1950 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001951 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001952 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001953 .rlen = 16,
1954 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001955 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1956 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
1957 "\x00\x11\x22\x33\x44\x55\x66\x77",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001958 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001959 .input = "\xcf\xd1\xd2\xe5\xa9\xbe\x9c\xdf"
1960 "\x50\x1f\x13\xb8\x92\xbd\x22\x48",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001961 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001962 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001963 .rlen = 16,
1964 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001965 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
1966 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
1967 "\x00\x11\x22\x33\x44\x55\x66\x77"
1968 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001969 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001970 .input = "\x37\x52\x7b\xe0\x05\x23\x34\xb8"
1971 "\x9f\x0c\xfc\xca\xe8\x7c\xfa\x20",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001972 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001973 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001974 .rlen = 16,
1975 },
1976};
1977
1978static struct cipher_testvec tf_cbc_enc_tv_template[] = {
1979 { /* Generated with Nettle */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001980 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001981 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001982 .iv = zeroed_string,
1983 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001984 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001985 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
1986 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001987 .rlen = 16,
1988 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001989 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001990 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001991 .iv = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
1992 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
1993 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001994 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001995 .result = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
1996 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001997 .rlen = 16,
1998 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08001999 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002000 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002001 .iv = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2002 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
2003 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002004 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002005 .result = "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2006 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002007 .rlen = 16,
2008 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002009 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002010 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002011 .iv = zeroed_string,
2012 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002013 .ilen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002014 .result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2015 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a"
2016 "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2017 "\x86\xcb\x08\x6b\x78\x9f\x54\x19"
2018 "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2019 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002020 .rlen = 48,
2021 },
2022};
2023
2024static struct cipher_testvec tf_cbc_dec_tv_template[] = {
2025 { /* Reverse of the first four above */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002026 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002027 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002028 .iv = zeroed_string,
2029 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2030 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002031 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002032 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002033 .rlen = 16,
2034 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002035 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002036 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002037 .iv = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2038 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
2039 .input = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2040 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002041 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002042 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002043 .rlen = 16,
2044 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002045 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002046 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002047 .iv = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2048 "\x86\xcb\x08\x6b\x78\x9f\x54\x19",
2049 .input = "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2050 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002051 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002052 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002053 .rlen = 16,
2054 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002055 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002056 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002057 .iv = zeroed_string,
2058 .input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
2059 "\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a"
2060 "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
2061 "\x86\xcb\x08\x6b\x78\x9f\x54\x19"
2062 "\x05\xef\x8c\x61\xa8\x11\x58\x26"
2063 "\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002064 .ilen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002065 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002066 .rlen = 48,
2067 },
2068};
2069
2070/*
2071 * Serpent test vectors. These are backwards because Serpent writes
2072 * octet sequences in right-to-left mode.
2073 */
2074#define SERPENT_ENC_TEST_VECTORS 4
2075#define SERPENT_DEC_TEST_VECTORS 4
2076
2077#define TNEPRES_ENC_TEST_VECTORS 4
2078#define TNEPRES_DEC_TEST_VECTORS 4
2079
Herbert Xuef2736f2005-06-22 13:26:03 -07002080static struct cipher_testvec serpent_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002081 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002082 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2083 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002084 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002085 .result = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
2086 "\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002087 .rlen = 16,
2088 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002089 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2090 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002091 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002092 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2093 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002094 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002095 .result = "\x4c\x7d\x8a\x32\x80\x72\xa2\x2c"
2096 "\x82\x3e\x4a\x1f\x3a\xcd\xa1\x6d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002097 .rlen = 16,
2098 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002099 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2100 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2101 "\x10\x11\x12\x13\x14\x15\x16\x17"
2102 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002103 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002104 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2105 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002106 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002107 .result = "\xde\x26\x9f\xf8\x33\xe4\x32\xb8"
2108 "\x5b\x2e\x88\xd2\x70\x1c\xe7\x5c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002109 .rlen = 16,
2110 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002111 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002112 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002113 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002114 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002115 .result = "\xdd\xd2\x6b\x98\xa5\xff\xd8\x2c"
2116 "\x05\x34\x5a\x9d\xad\xbf\xaf\x49",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002117 .rlen = 16,
2118 },
2119};
2120
Herbert Xuef2736f2005-06-22 13:26:03 -07002121static struct cipher_testvec tnepres_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002122 { /* KeySize=128, PT=0, I=1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002123 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2124 "\x00\x00\x00\x00\x00\x00\x00\x00",
2125 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2126 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002127 .klen = 16,
2128 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002129 .result = "\x49\xaf\xbf\xad\x9d\x5a\x34\x05"
2130 "\x2c\xd8\xff\xa5\x98\x6b\xd2\xdd",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002131 .rlen = 16,
2132 }, { /* KeySize=192, PT=0, I=1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002133 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2134 "\x00\x00\x00\x00\x00\x00\x00\x00"
2135 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002136 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002137 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2138 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002139 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002140 .result = "\xe7\x8e\x54\x02\xc7\x19\x55\x68"
2141 "\xac\x36\x78\xf7\xa3\xf6\x0c\x66",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002142 .rlen = 16,
2143 }, { /* KeySize=256, PT=0, I=1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002144 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
2145 "\x00\x00\x00\x00\x00\x00\x00\x00"
2146 "\x00\x00\x00\x00\x00\x00\x00\x00"
2147 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002148 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002149 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
2150 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002151 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002152 .result = "\xab\xed\x96\xe7\x66\xbf\x28\xcb"
2153 "\xc0\xeb\xd2\x1a\x82\xef\x08\x19",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002154 .rlen = 16,
2155 }, { /* KeySize=256, I=257 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002156 .key = "\x1f\x1e\x1d\x1c\x1b\x1a\x19\x18"
2157 "\x17\x16\x15\x14\x13\x12\x11\x10"
2158 "\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08"
2159 "\x07\x06\x05\x04\x03\x02\x01\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002160 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002161 .input = "\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08"
2162 "\x07\x06\x05\x04\x03\x02\x01\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002163 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002164 .result = "\x5c\xe7\x1c\x70\xd2\x88\x2e\x5b"
2165 "\xb8\x32\xe4\x33\xf8\x9f\x26\xde",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002166 .rlen = 16,
2167 },
2168};
2169
2170
Herbert Xuef2736f2005-06-22 13:26:03 -07002171static struct cipher_testvec serpent_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002172 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002173 .input = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
2174 "\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002175 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002176 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2177 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002178 .rlen = 16,
2179 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002180 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2181 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002182 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002183 .input = "\x4c\x7d\x8a\x32\x80\x72\xa2\x2c"
2184 "\x82\x3e\x4a\x1f\x3a\xcd\xa1\x6d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002185 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002186 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2187 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002188 .rlen = 16,
2189 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002190 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2191 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2192 "\x10\x11\x12\x13\x14\x15\x16\x17"
2193 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002194 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002195 .input = "\xde\x26\x9f\xf8\x33\xe4\x32\xb8"
2196 "\x5b\x2e\x88\xd2\x70\x1c\xe7\x5c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002197 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002198 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2199 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002200 .rlen = 16,
2201 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002202 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002203 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002204 .input = "\xdd\xd2\x6b\x98\xa5\xff\xd8\x2c"
2205 "\x05\x34\x5a\x9d\xad\xbf\xaf\x49",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002206 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002207 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002208 .rlen = 16,
2209 },
2210};
2211
Herbert Xuef2736f2005-06-22 13:26:03 -07002212static struct cipher_testvec tnepres_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002213 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002214 .input = "\x41\xcc\x6b\x31\x59\x31\x45\x97"
2215 "\x6d\x6f\xbb\x38\x4b\x37\x21\x28",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002216 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002217 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2218 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002219 .rlen = 16,
2220 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002221 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2222 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002223 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002224 .input = "\xea\xf4\xd7\xfc\xd8\x01\x34\x47"
2225 "\x81\x45\x0b\xfa\x0c\xd6\xad\x6e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002226 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002227 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2228 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002229 .rlen = 16,
2230 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002231 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2232 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2233 "\x10\x11\x12\x13\x14\x15\x16\x17"
2234 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002235 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002236 .input = "\x64\xa9\x1a\x37\xed\x9f\xe7\x49"
2237 "\xa8\x4e\x76\xd6\xf5\x0d\x78\xee",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002238 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002239 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2240 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002241 .rlen = 16,
2242 }, { /* KeySize=128, I=121 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002243 .key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002244 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002245 .input = "\x3d\xda\xbf\xc0\x06\xda\xab\x06"
2246 "\x46\x2a\xf4\xef\x81\x54\x4e\x26",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002247 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002248 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002249 .rlen = 16,
2250 },
2251};
2252
2253
2254/* Cast6 test vectors from RFC 2612 */
2255#define CAST6_ENC_TEST_VECTORS 3
2256#define CAST6_DEC_TEST_VECTORS 3
2257
Herbert Xuef2736f2005-06-22 13:26:03 -07002258static struct cipher_testvec cast6_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002259 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002260 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2261 "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002262 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002263 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002264 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002265 .result = "\xc8\x42\xa0\x89\x72\xb4\x3d\x20"
2266 "\x83\x6c\x91\xd1\xb7\x53\x0f\x6b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002267 .rlen = 16,
2268 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002269 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2270 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2271 "\xba\xc7\x7a\x77\x17\x94\x28\x63",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002272 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002273 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002274 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002275 .result = "\x1b\x38\x6c\x02\x10\xdc\xad\xcb"
2276 "\xdd\x0e\x41\xaa\x08\xa7\xa7\xe8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002277 .rlen = 16,
2278 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002279 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2280 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2281 "\x8d\x7c\x47\xce\x26\x49\x08\x46"
2282 "\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002283 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002284 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002285 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002286 .result = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
2287 "\xc9\x87\x01\x36\x55\x33\x17\xfa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002288 .rlen = 16,
2289 },
2290};
2291
Herbert Xuef2736f2005-06-22 13:26:03 -07002292static struct cipher_testvec cast6_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002293 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002294 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2295 "\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002296 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002297 .input = "\xc8\x42\xa0\x89\x72\xb4\x3d\x20"
2298 "\x83\x6c\x91\xd1\xb7\x53\x0f\x6b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002299 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002300 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002301 .rlen = 16,
2302 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002303 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2304 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2305 "\xba\xc7\x7a\x77\x17\x94\x28\x63",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002306 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002307 .input = "\x1b\x38\x6c\x02\x10\xdc\xad\xcb"
2308 "\xdd\x0e\x41\xaa\x08\xa7\xa7\xe8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002309 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002310 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002311 .rlen = 16,
2312 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002313 .key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
2314 "\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
2315 "\x8d\x7c\x47\xce\x26\x49\x08\x46"
2316 "\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002317 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002318 .input = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
2319 "\xc9\x87\x01\x36\x55\x33\x17\xfa",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002320 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002321 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002322 .rlen = 16,
2323 },
2324};
2325
2326
2327/*
2328 * AES test vectors.
2329 */
2330#define AES_ENC_TEST_VECTORS 3
2331#define AES_DEC_TEST_VECTORS 3
Jan Glauber9617d6e2007-11-30 15:57:05 +11002332#define AES_CBC_ENC_TEST_VECTORS 4
2333#define AES_CBC_DEC_TEST_VECTORS 4
Rik Snelf3d10442006-11-29 19:01:41 +11002334#define AES_LRW_ENC_TEST_VECTORS 8
2335#define AES_LRW_DEC_TEST_VECTORS 8
Rik Snelf19f5112007-09-19 20:23:13 +08002336#define AES_XTS_ENC_TEST_VECTORS 4
2337#define AES_XTS_DEC_TEST_VECTORS 4
Tan Swee Henga773edb2007-11-30 00:36:07 +11002338#define AES_CTR_ENC_TEST_VECTORS 7
Joy Latten23e353c2007-10-23 08:50:32 +08002339#define AES_CTR_DEC_TEST_VECTORS 6
Mikko Herranen28db8e32007-11-26 22:24:11 +08002340#define AES_GCM_ENC_TEST_VECTORS 9
2341#define AES_GCM_DEC_TEST_VECTORS 8
Joy Latten93cc74e2007-12-12 20:24:22 +08002342#define AES_CCM_ENC_TEST_VECTORS 7
2343#define AES_CCM_DEC_TEST_VECTORS 7
Linus Torvalds1da177e2005-04-16 15:20:36 -07002344
Herbert Xuef2736f2005-06-22 13:26:03 -07002345static struct cipher_testvec aes_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002346 { /* From FIPS-197 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002347 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2348 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002349 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002350 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2351 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002352 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002353 .result = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
2354 "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002355 .rlen = 16,
2356 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002357 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2358 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2359 "\x10\x11\x12\x13\x14\x15\x16\x17",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002360 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002361 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2362 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002363 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002364 .result = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
2365 "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002366 .rlen = 16,
2367 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002368 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2369 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2370 "\x10\x11\x12\x13\x14\x15\x16\x17"
2371 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002372 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002373 .input = "\x00\x11\x22\x33\x44\x55\x66\x77"
2374 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002375 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002376 .result = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
2377 "\xea\xfc\x49\x90\x4b\x49\x60\x89",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002378 .rlen = 16,
2379 },
2380};
2381
Herbert Xuef2736f2005-06-22 13:26:03 -07002382static struct cipher_testvec aes_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002383 { /* From FIPS-197 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002384 .key = "\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 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002387 .input = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
2388 "\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002389 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002390 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2391 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002392 .rlen = 16,
2393 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002394 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2395 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2396 "\x10\x11\x12\x13\x14\x15\x16\x17",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002397 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002398 .input = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
2399 "\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002400 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002401 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2402 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002403 .rlen = 16,
2404 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002405 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
2406 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2407 "\x10\x11\x12\x13\x14\x15\x16\x17"
2408 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002409 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002410 .input = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
2411 "\xea\xfc\x49\x90\x4b\x49\x60\x89",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002412 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002413 .result = "\x00\x11\x22\x33\x44\x55\x66\x77"
2414 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Linus Torvalds1da177e2005-04-16 15:20:36 -07002415 .rlen = 16,
2416 },
2417};
2418
Jan Glauber05f29fc2006-01-06 00:19:19 -08002419static struct cipher_testvec aes_cbc_enc_tv_template[] = {
2420 { /* From RFC 3602 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002421 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
2422 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002423 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002424 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
2425 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
2426 .input = "Single block msg",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002427 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002428 .result = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
2429 "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002430 .rlen = 16,
2431 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002432 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
2433 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002434 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002435 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
2436 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
2437 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
2438 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2439 "\x10\x11\x12\x13\x14\x15\x16\x17"
2440 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002441 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002442 .result = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
2443 "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
2444 "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
2445 "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002446 .rlen = 32,
Jan Glauber9617d6e2007-11-30 15:57:05 +11002447 }, { /* From NIST SP800-38A */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002448 .key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
2449 "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
2450 "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002451 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002452 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2453 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2454 .input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2455 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2456 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2457 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2458 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2459 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2460 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2461 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002462 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002463 .result = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
2464 "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
2465 "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
2466 "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
2467 "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
2468 "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
2469 "\x08\xb0\xe2\x79\x88\x59\x88\x81"
2470 "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002471 .rlen = 64,
2472 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002473 .key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
2474 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
2475 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
2476 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002477 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002478 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2479 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2480 .input = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2481 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2482 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2483 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2484 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2485 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2486 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2487 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002488 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002489 .result = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
2490 "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
2491 "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
2492 "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
2493 "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
2494 "\xa5\x30\xe2\x63\x04\x23\x14\x61"
2495 "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
2496 "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002497 .rlen = 64,
Jan Glauber05f29fc2006-01-06 00:19:19 -08002498 },
2499};
2500
2501static struct cipher_testvec aes_cbc_dec_tv_template[] = {
2502 { /* From RFC 3602 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002503 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
2504 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002505 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002506 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
2507 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
2508 .input = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
2509 "\x27\x08\x94\x2d\xbe\x77\x18\x1a",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002510 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002511 .result = "Single block msg",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002512 .rlen = 16,
2513 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002514 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
2515 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002516 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002517 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
2518 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
2519 .input = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
2520 "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
2521 "\x75\x86\x60\x2d\x25\x3c\xff\xf9"
2522 "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002523 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002524 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
2525 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
2526 "\x10\x11\x12\x13\x14\x15\x16\x17"
2527 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Jan Glauber05f29fc2006-01-06 00:19:19 -08002528 .rlen = 32,
Jan Glauber9617d6e2007-11-30 15:57:05 +11002529 }, { /* From NIST SP800-38A */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002530 .key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
2531 "\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
2532 "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002533 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002534 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2535 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2536 .input = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
2537 "\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
2538 "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
2539 "\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
2540 "\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
2541 "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
2542 "\x08\xb0\xe2\x79\x88\x59\x88\x81"
2543 "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002544 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002545 .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2546 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2547 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2548 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2549 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2550 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2551 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2552 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002553 .rlen = 64,
2554 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002555 .key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
2556 "\x2b\x73\xae\xf0\x85\x7d\x77\x81"
2557 "\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
2558 "\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002559 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002560 .iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
2561 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
2562 .input = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
2563 "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
2564 "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
2565 "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
2566 "\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
2567 "\xa5\x30\xe2\x63\x04\x23\x14\x61"
2568 "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
2569 "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002570 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002571 .result = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
2572 "\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
2573 "\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
2574 "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
2575 "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
2576 "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
2577 "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
2578 "\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
Jan Glauber9617d6e2007-11-30 15:57:05 +11002579 .rlen = 64,
Jan Glauber05f29fc2006-01-06 00:19:19 -08002580 },
2581};
2582
Rik Snelf3d10442006-11-29 19:01:41 +11002583static struct cipher_testvec aes_lrw_enc_tv_template[] = {
2584 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
2585 { /* LRW-32-AES 1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002586 .key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
2587 "\x4c\x26\x84\x14\xb5\x68\x01\x85"
2588 "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
2589 "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
Rik Snelf3d10442006-11-29 19:01:41 +11002590 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002591 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2592 "\x00\x00\x00\x00\x00\x00\x00\x01",
2593 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2594 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002595 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002596 .result = "\xf1\xb2\x73\xcd\x65\xa3\xdf\x5f"
2597 "\xe9\x5d\x48\x92\x54\x63\x4e\xb8",
Rik Snelf3d10442006-11-29 19:01:41 +11002598 .rlen = 16,
2599 }, { /* LRW-32-AES 2 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002600 .key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
2601 "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
2602 "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
2603 "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
Rik Snelf3d10442006-11-29 19:01:41 +11002604 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002605 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2606 "\x00\x00\x00\x00\x00\x00\x00\x02",
2607 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2608 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002609 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002610 .result = "\x00\xc8\x2b\xae\x95\xbb\xcd\xe5"
2611 "\x27\x4f\x07\x69\xb2\x60\xe1\x36",
Rik Snelf3d10442006-11-29 19:01:41 +11002612 .rlen = 16,
2613 }, { /* LRW-32-AES 3 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002614 .key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
2615 "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
2616 "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
2617 "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
Rik Snelf3d10442006-11-29 19:01:41 +11002618 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002619 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2620 "\x00\x00\x00\x02\x00\x00\x00\x00",
2621 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2622 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002623 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002624 .result = "\x76\x32\x21\x83\xed\x8f\xf1\x82"
2625 "\xf9\x59\x62\x03\x69\x0e\x5e\x01",
Rik Snelf3d10442006-11-29 19:01:41 +11002626 .rlen = 16,
2627 }, { /* LRW-32-AES 4 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002628 .key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
2629 "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
2630 "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
2631 "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
2632 "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
Rik Snelf3d10442006-11-29 19:01:41 +11002633 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002634 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2635 "\x00\x00\x00\x00\x00\x00\x00\x01",
2636 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2637 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002638 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002639 .result = "\x9c\x0f\x15\x2f\x55\xa2\xd8\xf0"
2640 "\xd6\x7b\x8f\x9e\x28\x22\xbc\x41",
Rik Snelf3d10442006-11-29 19:01:41 +11002641 .rlen = 16,
2642 }, { /* LRW-32-AES 5 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002643 .key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
2644 "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
2645 "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
2646 "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
2647 "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
Rik Snelf3d10442006-11-29 19:01:41 +11002648 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002649 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2650 "\x00\x00\x00\x02\x00\x00\x00\x00",
2651 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2652 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002653 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002654 .result = "\xd4\x27\x6a\x7f\x14\x91\x3d\x65"
2655 "\xc8\x60\x48\x02\x87\xe3\x34\x06",
Rik Snelf3d10442006-11-29 19:01:41 +11002656 .rlen = 16,
2657 }, { /* LRW-32-AES 6 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002658 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
2659 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
2660 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
2661 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
2662 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
2663 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
Rik Snelf3d10442006-11-29 19:01:41 +11002664 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002665 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2666 "\x00\x00\x00\x00\x00\x00\x00\x01",
2667 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2668 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002669 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002670 .result = "\xbd\x06\xb8\xe1\xdb\x98\x89\x9e"
2671 "\xc4\x98\xe4\x91\xcf\x1c\x70\x2b",
Rik Snelf3d10442006-11-29 19:01:41 +11002672 .rlen = 16,
2673 }, { /* LRW-32-AES 7 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002674 .key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
2675 "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
2676 "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
2677 "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
2678 "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
2679 "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
Rik Snelf3d10442006-11-29 19:01:41 +11002680 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002681 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2682 "\x00\x00\x00\x02\x00\x00\x00\x00",
2683 .input = "\x30\x31\x32\x33\x34\x35\x36\x37"
2684 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002685 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002686 .result = "\x5b\x90\x8e\xc1\xab\xdd\x67\x5f"
2687 "\x3d\x69\x8a\x95\x53\xc8\x9c\xe5",
Rik Snelf3d10442006-11-29 19:01:41 +11002688 .rlen = 16,
2689 }, {
2690/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002691 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
2692 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
2693 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
2694 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
2695 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
2696 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
Rik Snelf3d10442006-11-29 19:01:41 +11002697 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002698 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2699 "\x00\x00\x00\x00\x00\x00\x00\x01",
2700 .input = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
2701 "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
2702 "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
2703 "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
2704 "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
2705 "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
2706 "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
2707 "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
2708 "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
2709 "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
2710 "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
2711 "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
2712 "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
2713 "\x4c\x96\x12\xed\x7c\x92\x03\x01"
2714 "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
2715 "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
2716 "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
2717 "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
2718 "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
2719 "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
2720 "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
2721 "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
2722 "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
2723 "\x76\x12\x73\x44\x1a\x56\xd7\x72"
2724 "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
2725 "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
2726 "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
2727 "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
2728 "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
2729 "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
2730 "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
2731 "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
2732 "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
2733 "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
2734 "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
2735 "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
2736 "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
2737 "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
2738 "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
2739 "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
2740 "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
2741 "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
2742 "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
2743 "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
2744 "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
2745 "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
2746 "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
2747 "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
2748 "\x62\x73\x65\xfd\x46\x63\x25\x3d"
2749 "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
2750 "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
2751 "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
2752 "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
2753 "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
2754 "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
2755 "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
2756 "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
2757 "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
2758 "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
2759 "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
2760 "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
2761 "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
2762 "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
2763 "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
Rik Snelf3d10442006-11-29 19:01:41 +11002764 .ilen = 512,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002765 .result = "\x1a\x1d\xa9\x30\xad\xf9\x2f\x9b"
2766 "\xb6\x1d\xae\xef\xf0\x2f\xf8\x5a"
2767 "\x39\x3c\xbf\x2a\xb2\x45\xb2\x23"
2768 "\x1b\x63\x3c\xcf\xaa\xbe\xcf\x4e"
2769 "\xfa\xe8\x29\xc2\x20\x68\x2b\x3c"
2770 "\x2e\x8b\xf7\x6e\x25\xbd\xe3\x3d"
2771 "\x66\x27\xd6\xaf\xd6\x64\x3e\xe3"
2772 "\xe8\x58\x46\x97\x39\x51\x07\xde"
2773 "\xcb\x37\xbc\xa9\xc0\x5f\x75\xc3"
2774 "\x0e\x84\x23\x1d\x16\xd4\x1c\x59"
2775 "\x9c\x1a\x02\x55\xab\x3a\x97\x1d"
2776 "\xdf\xdd\xc7\x06\x51\xd7\x70\xae"
2777 "\x23\xc6\x8c\xf5\x1e\xa0\xe5\x82"
2778 "\xb8\xb2\xbf\x04\xa0\x32\x8e\x68"
2779 "\xeb\xaf\x6e\x2d\x94\x22\x2f\xce"
2780 "\x4c\xb5\x59\xe2\xa2\x2f\xa0\x98"
2781 "\x1a\x97\xc6\xd4\xb5\x00\x59\xf2"
2782 "\x84\x14\x72\xb1\x9a\x6e\xa3\x7f"
2783 "\xea\x20\xe7\xcb\x65\x77\x3a\xdf"
2784 "\xc8\x97\x67\x15\xc2\x2a\x27\xcc"
2785 "\x18\x55\xa1\x24\x0b\x24\x24\xaf"
2786 "\x5b\xec\x68\xb8\xc8\xf5\xba\x63"
2787 "\xff\xed\x89\xce\xd5\x3d\x88\xf3"
2788 "\x25\xef\x05\x7c\x3a\xef\xeb\xd8"
2789 "\x7a\x32\x0d\xd1\x1e\x58\x59\x99"
2790 "\x90\x25\xb5\x26\xb0\xe3\x2b\x6c"
2791 "\x4c\xa9\x8b\x84\x4f\x5e\x01\x50"
2792 "\x41\x30\x58\xc5\x62\x74\x52\x1d"
2793 "\x45\x24\x6a\x42\x64\x4f\x97\x1c"
2794 "\xa8\x66\xb5\x6d\x79\xd4\x0d\x48"
2795 "\xc5\x5f\xf3\x90\x32\xdd\xdd\xe1"
2796 "\xe4\xa9\x9f\xfc\xc3\x52\x5a\x46"
2797 "\xe4\x81\x84\x95\x36\x59\x7a\x6b"
2798 "\xaa\xb3\x60\xad\xce\x9f\x9f\x28"
2799 "\xe0\x01\x75\x22\xc4\x4e\xa9\x62"
2800 "\x5c\x62\x0d\x00\xcb\x13\xe8\x43"
2801 "\x72\xd4\x2d\x53\x46\xb5\xd1\x16"
2802 "\x22\x18\xdf\x34\x33\xf5\xd6\x1c"
2803 "\xb8\x79\x78\x97\x94\xff\x72\x13"
2804 "\x4c\x27\xfc\xcb\xbf\x01\x53\xa6"
2805 "\xb4\x50\x6e\xde\xdf\xb5\x43\xa4"
2806 "\x59\xdf\x52\xf9\x7c\xe0\x11\x6f"
2807 "\x2d\x14\x8e\x24\x61\x2c\xe1\x17"
2808 "\xcc\xce\x51\x0c\x19\x8a\x82\x30"
2809 "\x94\xd5\x3d\x6a\x53\x06\x5e\xbd"
2810 "\xb7\xeb\xfa\xfd\x27\x51\xde\x85"
2811 "\x1e\x86\x53\x11\x53\x94\x00\xee"
2812 "\x2b\x8c\x08\x2a\xbf\xdd\xae\x11"
2813 "\xcb\x1e\xa2\x07\x9a\x80\xcf\x62"
2814 "\x9b\x09\xdc\x95\x3c\x96\x8e\xb1"
2815 "\x09\xbd\xe4\xeb\xdb\xca\x70\x7a"
2816 "\x9e\xfa\x31\x18\x45\x3c\x21\x33"
2817 "\xb0\xb3\x2b\xea\xf3\x71\x2d\xe1"
2818 "\x03\xad\x1b\x48\xd4\x67\x27\xf0"
2819 "\x62\xe4\x3d\xfb\x9b\x08\x76\xe7"
2820 "\xdd\x2b\x01\x39\x04\x5a\x58\x7a"
2821 "\xf7\x11\x90\xec\xbd\x51\x5c\x32"
2822 "\x6b\xd7\x35\x39\x02\x6b\xf2\xa6"
2823 "\xd0\x0d\x07\xe1\x06\xc4\x5b\x7d"
2824 "\xe4\x6a\xd7\xee\x15\x1f\x83\xb4"
2825 "\xa3\xa7\x5e\xc3\x90\xb7\xef\xd3"
2826 "\xb7\x4f\xf8\x92\x4c\xb7\x3c\x29"
2827 "\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
2828 "\x74\x3f\x7d\x58\x88\x75\xde\x3e",
Rik Snelf3d10442006-11-29 19:01:41 +11002829 .rlen = 512,
2830 }
2831};
2832
2833static struct cipher_testvec aes_lrw_dec_tv_template[] = {
2834 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
2835 /* same as enc vectors with input and result reversed */
2836 { /* LRW-32-AES 1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002837 .key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
2838 "\x4c\x26\x84\x14\xb5\x68\x01\x85"
2839 "\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
2840 "\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
Rik Snelf3d10442006-11-29 19:01:41 +11002841 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002842 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2843 "\x00\x00\x00\x00\x00\x00\x00\x01",
2844 .input = "\xf1\xb2\x73\xcd\x65\xa3\xdf\x5f"
2845 "\xe9\x5d\x48\x92\x54\x63\x4e\xb8",
Rik Snelf3d10442006-11-29 19:01:41 +11002846 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002847 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2848 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002849 .rlen = 16,
2850 }, { /* LRW-32-AES 2 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002851 .key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
2852 "\xd7\x79\xe8\x0f\x54\x88\x79\x44"
2853 "\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
2854 "\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
Rik Snelf3d10442006-11-29 19:01:41 +11002855 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002856 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2857 "\x00\x00\x00\x00\x00\x00\x00\x02",
2858 .input = "\x00\xc8\x2b\xae\x95\xbb\xcd\xe5"
2859 "\x27\x4f\x07\x69\xb2\x60\xe1\x36",
Rik Snelf3d10442006-11-29 19:01:41 +11002860 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002861 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2862 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002863 .rlen = 16,
2864 }, { /* LRW-32-AES 3 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002865 .key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
2866 "\x30\xfe\x69\xe2\x37\x7f\x98\x47"
2867 "\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
2868 "\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
Rik Snelf3d10442006-11-29 19:01:41 +11002869 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002870 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2871 "\x00\x00\x00\x02\x00\x00\x00\x00",
2872 .input = "\x76\x32\x21\x83\xed\x8f\xf1\x82"
2873 "\xf9\x59\x62\x03\x69\x0e\x5e\x01",
Rik Snelf3d10442006-11-29 19:01:41 +11002874 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002875 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2876 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002877 .rlen = 16,
2878 }, { /* LRW-32-AES 4 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002879 .key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
2880 "\x25\x83\xf7\x3c\x1f\x01\x28\x74"
2881 "\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
2882 "\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
2883 "\xad\xe4\x94\xc5\x4a\x29\xae\x70",
Rik Snelf3d10442006-11-29 19:01:41 +11002884 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002885 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2886 "\x00\x00\x00\x00\x00\x00\x00\x01",
2887 .input = "\x9c\x0f\x15\x2f\x55\xa2\xd8\xf0"
2888 "\xd6\x7b\x8f\x9e\x28\x22\xbc\x41",
Rik Snelf3d10442006-11-29 19:01:41 +11002889 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002890 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2891 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002892 .rlen = 16,
2893 }, { /* LRW-32-AES 5 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002894 .key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
2895 "\xf8\x86\xce\xac\x93\xc5\xad\xc6"
2896 "\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
2897 "\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
2898 "\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
Rik Snelf3d10442006-11-29 19:01:41 +11002899 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002900 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2901 "\x00\x00\x00\x02\x00\x00\x00\x00",
2902 .input = "\xd4\x27\x6a\x7f\x14\x91\x3d\x65"
2903 "\xc8\x60\x48\x02\x87\xe3\x34\x06",
Rik Snelf3d10442006-11-29 19:01:41 +11002904 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002905 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2906 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002907 .rlen = 16,
2908 }, { /* LRW-32-AES 6 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002909 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
2910 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
2911 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
2912 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
2913 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
2914 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
Rik Snelf3d10442006-11-29 19:01:41 +11002915 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002916 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2917 "\x00\x00\x00\x00\x00\x00\x00\x01",
2918 .input = "\xbd\x06\xb8\xe1\xdb\x98\x89\x9e"
2919 "\xc4\x98\xe4\x91\xcf\x1c\x70\x2b",
Rik Snelf3d10442006-11-29 19:01:41 +11002920 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002921 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2922 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002923 .rlen = 16,
2924 }, { /* LRW-32-AES 7 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002925 .key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
2926 "\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
2927 "\xb2\xfb\x64\xce\x60\x97\x87\x8d"
2928 "\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
2929 "\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
2930 "\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
Rik Snelf3d10442006-11-29 19:01:41 +11002931 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002932 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2933 "\x00\x00\x00\x02\x00\x00\x00\x00",
2934 .input = "\x5b\x90\x8e\xc1\xab\xdd\x67\x5f"
2935 "\x3d\x69\x8a\x95\x53\xc8\x9c\xe5",
Rik Snelf3d10442006-11-29 19:01:41 +11002936 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002937 .result = "\x30\x31\x32\x33\x34\x35\x36\x37"
2938 "\x38\x39\x41\x42\x43\x44\x45\x46",
Rik Snelf3d10442006-11-29 19:01:41 +11002939 .rlen = 16,
2940 }, {
2941/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002942 .key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
2943 "\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
2944 "\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
2945 "\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
2946 "\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
2947 "\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
Rik Snelf3d10442006-11-29 19:01:41 +11002948 .klen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08002949 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
2950 "\x00\x00\x00\x00\x00\x00\x00\x01",
2951 .input = "\x1a\x1d\xa9\x30\xad\xf9\x2f\x9b"
2952 "\xb6\x1d\xae\xef\xf0\x2f\xf8\x5a"
2953 "\x39\x3c\xbf\x2a\xb2\x45\xb2\x23"
2954 "\x1b\x63\x3c\xcf\xaa\xbe\xcf\x4e"
2955 "\xfa\xe8\x29\xc2\x20\x68\x2b\x3c"
2956 "\x2e\x8b\xf7\x6e\x25\xbd\xe3\x3d"
2957 "\x66\x27\xd6\xaf\xd6\x64\x3e\xe3"
2958 "\xe8\x58\x46\x97\x39\x51\x07\xde"
2959 "\xcb\x37\xbc\xa9\xc0\x5f\x75\xc3"
2960 "\x0e\x84\x23\x1d\x16\xd4\x1c\x59"
2961 "\x9c\x1a\x02\x55\xab\x3a\x97\x1d"
2962 "\xdf\xdd\xc7\x06\x51\xd7\x70\xae"
2963 "\x23\xc6\x8c\xf5\x1e\xa0\xe5\x82"
2964 "\xb8\xb2\xbf\x04\xa0\x32\x8e\x68"
2965 "\xeb\xaf\x6e\x2d\x94\x22\x2f\xce"
2966 "\x4c\xb5\x59\xe2\xa2\x2f\xa0\x98"
2967 "\x1a\x97\xc6\xd4\xb5\x00\x59\xf2"
2968 "\x84\x14\x72\xb1\x9a\x6e\xa3\x7f"
2969 "\xea\x20\xe7\xcb\x65\x77\x3a\xdf"
2970 "\xc8\x97\x67\x15\xc2\x2a\x27\xcc"
2971 "\x18\x55\xa1\x24\x0b\x24\x24\xaf"
2972 "\x5b\xec\x68\xb8\xc8\xf5\xba\x63"
2973 "\xff\xed\x89\xce\xd5\x3d\x88\xf3"
2974 "\x25\xef\x05\x7c\x3a\xef\xeb\xd8"
2975 "\x7a\x32\x0d\xd1\x1e\x58\x59\x99"
2976 "\x90\x25\xb5\x26\xb0\xe3\x2b\x6c"
2977 "\x4c\xa9\x8b\x84\x4f\x5e\x01\x50"
2978 "\x41\x30\x58\xc5\x62\x74\x52\x1d"
2979 "\x45\x24\x6a\x42\x64\x4f\x97\x1c"
2980 "\xa8\x66\xb5\x6d\x79\xd4\x0d\x48"
2981 "\xc5\x5f\xf3\x90\x32\xdd\xdd\xe1"
2982 "\xe4\xa9\x9f\xfc\xc3\x52\x5a\x46"
2983 "\xe4\x81\x84\x95\x36\x59\x7a\x6b"
2984 "\xaa\xb3\x60\xad\xce\x9f\x9f\x28"
2985 "\xe0\x01\x75\x22\xc4\x4e\xa9\x62"
2986 "\x5c\x62\x0d\x00\xcb\x13\xe8\x43"
2987 "\x72\xd4\x2d\x53\x46\xb5\xd1\x16"
2988 "\x22\x18\xdf\x34\x33\xf5\xd6\x1c"
2989 "\xb8\x79\x78\x97\x94\xff\x72\x13"
2990 "\x4c\x27\xfc\xcb\xbf\x01\x53\xa6"
2991 "\xb4\x50\x6e\xde\xdf\xb5\x43\xa4"
2992 "\x59\xdf\x52\xf9\x7c\xe0\x11\x6f"
2993 "\x2d\x14\x8e\x24\x61\x2c\xe1\x17"
2994 "\xcc\xce\x51\x0c\x19\x8a\x82\x30"
2995 "\x94\xd5\x3d\x6a\x53\x06\x5e\xbd"
2996 "\xb7\xeb\xfa\xfd\x27\x51\xde\x85"
2997 "\x1e\x86\x53\x11\x53\x94\x00\xee"
2998 "\x2b\x8c\x08\x2a\xbf\xdd\xae\x11"
2999 "\xcb\x1e\xa2\x07\x9a\x80\xcf\x62"
3000 "\x9b\x09\xdc\x95\x3c\x96\x8e\xb1"
3001 "\x09\xbd\xe4\xeb\xdb\xca\x70\x7a"
3002 "\x9e\xfa\x31\x18\x45\x3c\x21\x33"
3003 "\xb0\xb3\x2b\xea\xf3\x71\x2d\xe1"
3004 "\x03\xad\x1b\x48\xd4\x67\x27\xf0"
3005 "\x62\xe4\x3d\xfb\x9b\x08\x76\xe7"
3006 "\xdd\x2b\x01\x39\x04\x5a\x58\x7a"
3007 "\xf7\x11\x90\xec\xbd\x51\x5c\x32"
3008 "\x6b\xd7\x35\x39\x02\x6b\xf2\xa6"
3009 "\xd0\x0d\x07\xe1\x06\xc4\x5b\x7d"
3010 "\xe4\x6a\xd7\xee\x15\x1f\x83\xb4"
3011 "\xa3\xa7\x5e\xc3\x90\xb7\xef\xd3"
3012 "\xb7\x4f\xf8\x92\x4c\xb7\x3c\x29"
3013 "\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
3014 "\x74\x3f\x7d\x58\x88\x75\xde\x3e",
Rik Snelf3d10442006-11-29 19:01:41 +11003015 .ilen = 512,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003016 .result = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
3017 "\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
3018 "\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
3019 "\x50\x38\x1f\x71\x49\xb6\x57\xd6"
3020 "\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
3021 "\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
3022 "\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
3023 "\xda\x10\x8e\xed\xa2\xa4\x87\xab"
3024 "\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
3025 "\xc9\xac\x42\x31\x95\x7c\xc9\x04"
3026 "\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
3027 "\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
3028 "\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
3029 "\x4c\x96\x12\xed\x7c\x92\x03\x01"
3030 "\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
3031 "\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
3032 "\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
3033 "\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
3034 "\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
3035 "\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
3036 "\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
3037 "\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
3038 "\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
3039 "\x76\x12\x73\x44\x1a\x56\xd7\x72"
3040 "\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
3041 "\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
3042 "\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
3043 "\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
3044 "\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
3045 "\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
3046 "\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
3047 "\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
3048 "\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
3049 "\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
3050 "\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
3051 "\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
3052 "\x8d\x23\x31\x74\x84\xeb\x88\x6e"
3053 "\xcc\xb9\xbc\x22\x83\x19\x07\x22"
3054 "\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
3055 "\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
3056 "\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
3057 "\x3c\xce\x8f\x42\x60\x71\xa7\x75"
3058 "\x08\x40\x65\x8a\x82\xbf\xf5\x43"
3059 "\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
3060 "\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
3061 "\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
3062 "\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
3063 "\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
3064 "\x62\x73\x65\xfd\x46\x63\x25\x3d"
3065 "\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
3066 "\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
3067 "\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
3068 "\xc5\x68\x77\x84\x32\x2b\xcc\x85"
3069 "\x74\x96\xf0\x12\x77\x61\xb9\xeb"
3070 "\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
3071 "\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
3072 "\xda\x39\x87\x45\xc0\x2b\xbb\x01"
3073 "\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
3074 "\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
3075 "\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
3076 "\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
3077 "\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
3078 "\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
3079 "\x21\xc4\xc2\x75\x67\x89\x37\x0a",
Rik Snelf3d10442006-11-29 19:01:41 +11003080 .rlen = 512,
3081 }
3082};
3083
Rik Snelf19f5112007-09-19 20:23:13 +08003084static struct cipher_testvec aes_xts_enc_tv_template[] = {
3085 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
3086 { /* XTS-AES 1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003087 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
3088 "\x00\x00\x00\x00\x00\x00\x00\x00"
3089 "\x00\x00\x00\x00\x00\x00\x00\x00"
3090 "\x00\x00\x00\x00\x00\x00\x00\x00",
Rik Snelf19f5112007-09-19 20:23:13 +08003091 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003092 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3093 "\x00\x00\x00\x00\x00\x00\x00\x00",
3094 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
3095 "\x00\x00\x00\x00\x00\x00\x00\x00"
3096 "\x00\x00\x00\x00\x00\x00\x00\x00"
3097 "\x00\x00\x00\x00\x00\x00\x00\x00",
Rik Snelf19f5112007-09-19 20:23:13 +08003098 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003099 .result = "\x91\x7c\xf6\x9e\xbd\x68\xb2\xec"
3100 "\x9b\x9f\xe9\xa3\xea\xdd\xa6\x92"
3101 "\xcd\x43\xd2\xf5\x95\x98\xed\x85"
3102 "\x8c\x02\xc2\x65\x2f\xbf\x92\x2e",
Rik Snelf19f5112007-09-19 20:23:13 +08003103 .rlen = 32,
3104 }, { /* XTS-AES 2 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003105 .key = "\x11\x11\x11\x11\x11\x11\x11\x11"
3106 "\x11\x11\x11\x11\x11\x11\x11\x11"
3107 "\x22\x22\x22\x22\x22\x22\x22\x22"
3108 "\x22\x22\x22\x22\x22\x22\x22\x22",
Rik Snelf19f5112007-09-19 20:23:13 +08003109 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003110 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3111 "\x00\x00\x00\x00\x00\x00\x00\x00",
3112 .input = "\x44\x44\x44\x44\x44\x44\x44\x44"
3113 "\x44\x44\x44\x44\x44\x44\x44\x44"
3114 "\x44\x44\x44\x44\x44\x44\x44\x44"
3115 "\x44\x44\x44\x44\x44\x44\x44\x44",
Rik Snelf19f5112007-09-19 20:23:13 +08003116 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003117 .result = "\xc4\x54\x18\x5e\x6a\x16\x93\x6e"
3118 "\x39\x33\x40\x38\xac\xef\x83\x8b"
3119 "\xfb\x18\x6f\xff\x74\x80\xad\xc4"
3120 "\x28\x93\x82\xec\xd6\xd3\x94\xf0",
Rik Snelf19f5112007-09-19 20:23:13 +08003121 .rlen = 32,
3122 }, { /* XTS-AES 3 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003123 .key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
3124 "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
3125 "\x22\x22\x22\x22\x22\x22\x22\x22"
3126 "\x22\x22\x22\x22\x22\x22\x22\x22",
Rik Snelf19f5112007-09-19 20:23:13 +08003127 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003128 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3129 "\x00\x00\x00\x00\x00\x00\x00\x00",
3130 .input = "\x44\x44\x44\x44\x44\x44\x44\x44"
3131 "\x44\x44\x44\x44\x44\x44\x44\x44"
3132 "\x44\x44\x44\x44\x44\x44\x44\x44"
3133 "\x44\x44\x44\x44\x44\x44\x44\x44",
Rik Snelf19f5112007-09-19 20:23:13 +08003134 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003135 .result = "\xaf\x85\x33\x6b\x59\x7a\xfc\x1a"
3136 "\x90\x0b\x2e\xb2\x1e\xc9\x49\xd2"
3137 "\x92\xdf\x4c\x04\x7e\x0b\x21\x53"
3138 "\x21\x86\xa5\x97\x1a\x22\x7a\x89",
Rik Snelf19f5112007-09-19 20:23:13 +08003139 .rlen = 32,
3140 }, { /* XTS-AES 4 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003141 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
3142 "\x23\x53\x60\x28\x74\x71\x35\x26"
3143 "\x31\x41\x59\x26\x53\x58\x97\x93"
3144 "\x23\x84\x62\x64\x33\x83\x27\x95",
Rik Snelf19f5112007-09-19 20:23:13 +08003145 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003146 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3147 "\x00\x00\x00\x00\x00\x00\x00\x00",
3148 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3149 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3150 "\x10\x11\x12\x13\x14\x15\x16\x17"
3151 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3152 "\x20\x21\x22\x23\x24\x25\x26\x27"
3153 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3154 "\x30\x31\x32\x33\x34\x35\x36\x37"
3155 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3156 "\x40\x41\x42\x43\x44\x45\x46\x47"
3157 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3158 "\x50\x51\x52\x53\x54\x55\x56\x57"
3159 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3160 "\x60\x61\x62\x63\x64\x65\x66\x67"
3161 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3162 "\x70\x71\x72\x73\x74\x75\x76\x77"
3163 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3164 "\x80\x81\x82\x83\x84\x85\x86\x87"
3165 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3166 "\x90\x91\x92\x93\x94\x95\x96\x97"
3167 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3168 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3169 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3170 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3171 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3172 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3173 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3174 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3175 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3176 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3177 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3178 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3179 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3180 "\x00\x01\x02\x03\x04\x05\x06\x07"
3181 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3182 "\x10\x11\x12\x13\x14\x15\x16\x17"
3183 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3184 "\x20\x21\x22\x23\x24\x25\x26\x27"
3185 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3186 "\x30\x31\x32\x33\x34\x35\x36\x37"
3187 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3188 "\x40\x41\x42\x43\x44\x45\x46\x47"
3189 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3190 "\x50\x51\x52\x53\x54\x55\x56\x57"
3191 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3192 "\x60\x61\x62\x63\x64\x65\x66\x67"
3193 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3194 "\x70\x71\x72\x73\x74\x75\x76\x77"
3195 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3196 "\x80\x81\x82\x83\x84\x85\x86\x87"
3197 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3198 "\x90\x91\x92\x93\x94\x95\x96\x97"
3199 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3200 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3201 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3202 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3203 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3204 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3205 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3206 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3207 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3208 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3209 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3210 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3211 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
Rik Snelf19f5112007-09-19 20:23:13 +08003212 .ilen = 512,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003213 .result = "\x27\xa7\x47\x9b\xef\xa1\xd4\x76"
3214 "\x48\x9f\x30\x8c\xd4\xcf\xa6\xe2"
3215 "\xa9\x6e\x4b\xbe\x32\x08\xff\x25"
3216 "\x28\x7d\xd3\x81\x96\x16\xe8\x9c"
3217 "\xc7\x8c\xf7\xf5\xe5\x43\x44\x5f"
3218 "\x83\x33\xd8\xfa\x7f\x56\x00\x00"
3219 "\x05\x27\x9f\xa5\xd8\xb5\xe4\xad"
3220 "\x40\xe7\x36\xdd\xb4\xd3\x54\x12"
3221 "\x32\x80\x63\xfd\x2a\xab\x53\xe5"
3222 "\xea\x1e\x0a\x9f\x33\x25\x00\xa5"
3223 "\xdf\x94\x87\xd0\x7a\x5c\x92\xcc"
3224 "\x51\x2c\x88\x66\xc7\xe8\x60\xce"
3225 "\x93\xfd\xf1\x66\xa2\x49\x12\xb4"
3226 "\x22\x97\x61\x46\xae\x20\xce\x84"
3227 "\x6b\xb7\xdc\x9b\xa9\x4a\x76\x7a"
3228 "\xae\xf2\x0c\x0d\x61\xad\x02\x65"
3229 "\x5e\xa9\x2d\xc4\xc4\xe4\x1a\x89"
3230 "\x52\xc6\x51\xd3\x31\x74\xbe\x51"
3231 "\xa1\x0c\x42\x11\x10\xe6\xd8\x15"
3232 "\x88\xed\xe8\x21\x03\xa2\x52\xd8"
3233 "\xa7\x50\xe8\x76\x8d\xef\xff\xed"
3234 "\x91\x22\x81\x0a\xae\xb9\x9f\x91"
3235 "\x72\xaf\x82\xb6\x04\xdc\x4b\x8e"
3236 "\x51\xbc\xb0\x82\x35\xa6\xf4\x34"
3237 "\x13\x32\xe4\xca\x60\x48\x2a\x4b"
3238 "\xa1\xa0\x3b\x3e\x65\x00\x8f\xc5"
3239 "\xda\x76\xb7\x0b\xf1\x69\x0d\xb4"
3240 "\xea\xe2\x9c\x5f\x1b\xad\xd0\x3c"
3241 "\x5c\xcf\x2a\x55\xd7\x05\xdd\xcd"
3242 "\x86\xd4\x49\x51\x1c\xeb\x7e\xc3"
3243 "\x0b\xf1\x2b\x1f\xa3\x5b\x91\x3f"
3244 "\x9f\x74\x7a\x8a\xfd\x1b\x13\x0e"
3245 "\x94\xbf\xf9\x4e\xff\xd0\x1a\x91"
3246 "\x73\x5c\xa1\x72\x6a\xcd\x0b\x19"
3247 "\x7c\x4e\x5b\x03\x39\x36\x97\xe1"
3248 "\x26\x82\x6f\xb6\xbb\xde\x8e\xcc"
3249 "\x1e\x08\x29\x85\x16\xe2\xc9\xed"
3250 "\x03\xff\x3c\x1b\x78\x60\xf6\xde"
3251 "\x76\xd4\xce\xcd\x94\xc8\x11\x98"
3252 "\x55\xef\x52\x97\xca\x67\xe9\xf3"
3253 "\xe7\xff\x72\xb1\xe9\x97\x85\xca"
3254 "\x0a\x7e\x77\x20\xc5\xb3\x6d\xc6"
3255 "\xd7\x2c\xac\x95\x74\xc8\xcb\xbc"
3256 "\x2f\x80\x1e\x23\xe5\x6f\xd3\x44"
3257 "\xb0\x7f\x22\x15\x4b\xeb\xa0\xf0"
3258 "\x8c\xe8\x89\x1e\x64\x3e\xd9\x95"
3259 "\xc9\x4d\x9a\x69\xc9\xf1\xb5\xf4"
3260 "\x99\x02\x7a\x78\x57\x2a\xee\xbd"
3261 "\x74\xd2\x0c\xc3\x98\x81\xc2\x13"
3262 "\xee\x77\x0b\x10\x10\xe4\xbe\xa7"
3263 "\x18\x84\x69\x77\xae\x11\x9f\x7a"
3264 "\x02\x3a\xb5\x8c\xca\x0a\xd7\x52"
3265 "\xaf\xe6\x56\xbb\x3c\x17\x25\x6a"
3266 "\x9f\x6e\x9b\xf1\x9f\xdd\x5a\x38"
3267 "\xfc\x82\xbb\xe8\x72\xc5\x53\x9e"
3268 "\xdb\x60\x9e\xf4\xf7\x9c\x20\x3e"
3269 "\xbb\x14\x0f\x2e\x58\x3c\xb2\xad"
3270 "\x15\xb4\xaa\x5b\x65\x50\x16\xa8"
3271 "\x44\x92\x77\xdb\xd4\x77\xef\x2c"
3272 "\x8d\x6c\x01\x7d\xb7\x38\xb1\x8d"
3273 "\xeb\x4a\x42\x7d\x19\x23\xce\x3f"
3274 "\xf2\x62\x73\x57\x79\xa4\x18\xf2"
3275 "\x0a\x28\x2d\xf9\x20\x14\x7b\xea"
3276 "\xbe\x42\x1e\xe5\x31\x9d\x05\x68",
Rik Snelf19f5112007-09-19 20:23:13 +08003277 .rlen = 512,
3278 }
3279};
3280
3281static struct cipher_testvec aes_xts_dec_tv_template[] = {
3282 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
3283 { /* XTS-AES 1 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003284 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
3285 "\x00\x00\x00\x00\x00\x00\x00\x00"
3286 "\x00\x00\x00\x00\x00\x00\x00\x00"
3287 "\x00\x00\x00\x00\x00\x00\x00\x00",
Rik Snelf19f5112007-09-19 20:23:13 +08003288 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003289 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3290 "\x00\x00\x00\x00\x00\x00\x00\x00",
3291 .input = "\x91\x7c\xf6\x9e\xbd\x68\xb2\xec"
3292 "\x9b\x9f\xe9\xa3\xea\xdd\xa6\x92"
3293 "\xcd\x43\xd2\xf5\x95\x98\xed\x85"
3294 "\x8c\x02\xc2\x65\x2f\xbf\x92\x2e",
Rik Snelf19f5112007-09-19 20:23:13 +08003295 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003296 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
3297 "\x00\x00\x00\x00\x00\x00\x00\x00"
3298 "\x00\x00\x00\x00\x00\x00\x00\x00"
3299 "\x00\x00\x00\x00\x00\x00\x00\x00",
Rik Snelf19f5112007-09-19 20:23:13 +08003300 .rlen = 32,
3301 }, { /* XTS-AES 2 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003302 .key = "\x11\x11\x11\x11\x11\x11\x11\x11"
3303 "\x11\x11\x11\x11\x11\x11\x11\x11"
3304 "\x22\x22\x22\x22\x22\x22\x22\x22"
3305 "\x22\x22\x22\x22\x22\x22\x22\x22",
Rik Snelf19f5112007-09-19 20:23:13 +08003306 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003307 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3308 "\x00\x00\x00\x00\x00\x00\x00\x00",
3309 .input = "\xc4\x54\x18\x5e\x6a\x16\x93\x6e"
3310 "\x39\x33\x40\x38\xac\xef\x83\x8b"
3311 "\xfb\x18\x6f\xff\x74\x80\xad\xc4"
3312 "\x28\x93\x82\xec\xd6\xd3\x94\xf0",
Rik Snelf19f5112007-09-19 20:23:13 +08003313 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003314 .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
3315 "\x44\x44\x44\x44\x44\x44\x44\x44"
3316 "\x44\x44\x44\x44\x44\x44\x44\x44"
3317 "\x44\x44\x44\x44\x44\x44\x44\x44",
Rik Snelf19f5112007-09-19 20:23:13 +08003318 .rlen = 32,
3319 }, { /* XTS-AES 3 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003320 .key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
3321 "\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
3322 "\x22\x22\x22\x22\x22\x22\x22\x22"
3323 "\x22\x22\x22\x22\x22\x22\x22\x22",
Rik Snelf19f5112007-09-19 20:23:13 +08003324 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003325 .iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
3326 "\x00\x00\x00\x00\x00\x00\x00\x00",
3327 .input = "\xaf\x85\x33\x6b\x59\x7a\xfc\x1a"
3328 "\x90\x0b\x2e\xb2\x1e\xc9\x49\xd2"
3329 "\x92\xdf\x4c\x04\x7e\x0b\x21\x53"
3330 "\x21\x86\xa5\x97\x1a\x22\x7a\x89",
Rik Snelf19f5112007-09-19 20:23:13 +08003331 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003332 .result = "\x44\x44\x44\x44\x44\x44\x44\x44"
3333 "\x44\x44\x44\x44\x44\x44\x44\x44"
3334 "\x44\x44\x44\x44\x44\x44\x44\x44"
3335 "\x44\x44\x44\x44\x44\x44\x44\x44",
Rik Snelf19f5112007-09-19 20:23:13 +08003336 .rlen = 32,
3337 }, { /* XTS-AES 4 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003338 .key = "\x27\x18\x28\x18\x28\x45\x90\x45"
3339 "\x23\x53\x60\x28\x74\x71\x35\x26"
3340 "\x31\x41\x59\x26\x53\x58\x97\x93"
3341 "\x23\x84\x62\x64\x33\x83\x27\x95",
Rik Snelf19f5112007-09-19 20:23:13 +08003342 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003343 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
3344 "\x00\x00\x00\x00\x00\x00\x00\x00",
3345 .input = "\x27\xa7\x47\x9b\xef\xa1\xd4\x76"
3346 "\x48\x9f\x30\x8c\xd4\xcf\xa6\xe2"
3347 "\xa9\x6e\x4b\xbe\x32\x08\xff\x25"
3348 "\x28\x7d\xd3\x81\x96\x16\xe8\x9c"
3349 "\xc7\x8c\xf7\xf5\xe5\x43\x44\x5f"
3350 "\x83\x33\xd8\xfa\x7f\x56\x00\x00"
3351 "\x05\x27\x9f\xa5\xd8\xb5\xe4\xad"
3352 "\x40\xe7\x36\xdd\xb4\xd3\x54\x12"
3353 "\x32\x80\x63\xfd\x2a\xab\x53\xe5"
3354 "\xea\x1e\x0a\x9f\x33\x25\x00\xa5"
3355 "\xdf\x94\x87\xd0\x7a\x5c\x92\xcc"
3356 "\x51\x2c\x88\x66\xc7\xe8\x60\xce"
3357 "\x93\xfd\xf1\x66\xa2\x49\x12\xb4"
3358 "\x22\x97\x61\x46\xae\x20\xce\x84"
3359 "\x6b\xb7\xdc\x9b\xa9\x4a\x76\x7a"
3360 "\xae\xf2\x0c\x0d\x61\xad\x02\x65"
3361 "\x5e\xa9\x2d\xc4\xc4\xe4\x1a\x89"
3362 "\x52\xc6\x51\xd3\x31\x74\xbe\x51"
3363 "\xa1\x0c\x42\x11\x10\xe6\xd8\x15"
3364 "\x88\xed\xe8\x21\x03\xa2\x52\xd8"
3365 "\xa7\x50\xe8\x76\x8d\xef\xff\xed"
3366 "\x91\x22\x81\x0a\xae\xb9\x9f\x91"
3367 "\x72\xaf\x82\xb6\x04\xdc\x4b\x8e"
3368 "\x51\xbc\xb0\x82\x35\xa6\xf4\x34"
3369 "\x13\x32\xe4\xca\x60\x48\x2a\x4b"
3370 "\xa1\xa0\x3b\x3e\x65\x00\x8f\xc5"
3371 "\xda\x76\xb7\x0b\xf1\x69\x0d\xb4"
3372 "\xea\xe2\x9c\x5f\x1b\xad\xd0\x3c"
3373 "\x5c\xcf\x2a\x55\xd7\x05\xdd\xcd"
3374 "\x86\xd4\x49\x51\x1c\xeb\x7e\xc3"
3375 "\x0b\xf1\x2b\x1f\xa3\x5b\x91\x3f"
3376 "\x9f\x74\x7a\x8a\xfd\x1b\x13\x0e"
3377 "\x94\xbf\xf9\x4e\xff\xd0\x1a\x91"
3378 "\x73\x5c\xa1\x72\x6a\xcd\x0b\x19"
3379 "\x7c\x4e\x5b\x03\x39\x36\x97\xe1"
3380 "\x26\x82\x6f\xb6\xbb\xde\x8e\xcc"
3381 "\x1e\x08\x29\x85\x16\xe2\xc9\xed"
3382 "\x03\xff\x3c\x1b\x78\x60\xf6\xde"
3383 "\x76\xd4\xce\xcd\x94\xc8\x11\x98"
3384 "\x55\xef\x52\x97\xca\x67\xe9\xf3"
3385 "\xe7\xff\x72\xb1\xe9\x97\x85\xca"
3386 "\x0a\x7e\x77\x20\xc5\xb3\x6d\xc6"
3387 "\xd7\x2c\xac\x95\x74\xc8\xcb\xbc"
3388 "\x2f\x80\x1e\x23\xe5\x6f\xd3\x44"
3389 "\xb0\x7f\x22\x15\x4b\xeb\xa0\xf0"
3390 "\x8c\xe8\x89\x1e\x64\x3e\xd9\x95"
3391 "\xc9\x4d\x9a\x69\xc9\xf1\xb5\xf4"
3392 "\x99\x02\x7a\x78\x57\x2a\xee\xbd"
3393 "\x74\xd2\x0c\xc3\x98\x81\xc2\x13"
3394 "\xee\x77\x0b\x10\x10\xe4\xbe\xa7"
3395 "\x18\x84\x69\x77\xae\x11\x9f\x7a"
3396 "\x02\x3a\xb5\x8c\xca\x0a\xd7\x52"
3397 "\xaf\xe6\x56\xbb\x3c\x17\x25\x6a"
3398 "\x9f\x6e\x9b\xf1\x9f\xdd\x5a\x38"
3399 "\xfc\x82\xbb\xe8\x72\xc5\x53\x9e"
3400 "\xdb\x60\x9e\xf4\xf7\x9c\x20\x3e"
3401 "\xbb\x14\x0f\x2e\x58\x3c\xb2\xad"
3402 "\x15\xb4\xaa\x5b\x65\x50\x16\xa8"
3403 "\x44\x92\x77\xdb\xd4\x77\xef\x2c"
3404 "\x8d\x6c\x01\x7d\xb7\x38\xb1\x8d"
3405 "\xeb\x4a\x42\x7d\x19\x23\xce\x3f"
3406 "\xf2\x62\x73\x57\x79\xa4\x18\xf2"
3407 "\x0a\x28\x2d\xf9\x20\x14\x7b\xea"
3408 "\xbe\x42\x1e\xe5\x31\x9d\x05\x68",
Rik Snelf19f5112007-09-19 20:23:13 +08003409 .ilen = 512,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003410 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
3411 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3412 "\x10\x11\x12\x13\x14\x15\x16\x17"
3413 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3414 "\x20\x21\x22\x23\x24\x25\x26\x27"
3415 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3416 "\x30\x31\x32\x33\x34\x35\x36\x37"
3417 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3418 "\x40\x41\x42\x43\x44\x45\x46\x47"
3419 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3420 "\x50\x51\x52\x53\x54\x55\x56\x57"
3421 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3422 "\x60\x61\x62\x63\x64\x65\x66\x67"
3423 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3424 "\x70\x71\x72\x73\x74\x75\x76\x77"
3425 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3426 "\x80\x81\x82\x83\x84\x85\x86\x87"
3427 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3428 "\x90\x91\x92\x93\x94\x95\x96\x97"
3429 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3430 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3431 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3432 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3433 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3434 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3435 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3436 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3437 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3438 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3439 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3440 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3441 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3442 "\x00\x01\x02\x03\x04\x05\x06\x07"
3443 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3444 "\x10\x11\x12\x13\x14\x15\x16\x17"
3445 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3446 "\x20\x21\x22\x23\x24\x25\x26\x27"
3447 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3448 "\x30\x31\x32\x33\x34\x35\x36\x37"
3449 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3450 "\x40\x41\x42\x43\x44\x45\x46\x47"
3451 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3452 "\x50\x51\x52\x53\x54\x55\x56\x57"
3453 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3454 "\x60\x61\x62\x63\x64\x65\x66\x67"
3455 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3456 "\x70\x71\x72\x73\x74\x75\x76\x77"
3457 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3458 "\x80\x81\x82\x83\x84\x85\x86\x87"
3459 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3460 "\x90\x91\x92\x93\x94\x95\x96\x97"
3461 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3462 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3463 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3464 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3465 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3466 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3467 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3468 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3469 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3470 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3471 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3472 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3473 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
Rik Snelf19f5112007-09-19 20:23:13 +08003474 .rlen = 512,
3475 }
3476};
3477
Joy Latten23e353c2007-10-23 08:50:32 +08003478
3479static struct cipher_testvec aes_ctr_enc_tv_template[] = {
3480 { /* From RFC 3686 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003481 .key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
3482 "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
3483 "\x00\x00\x00\x30",
Joy Latten23e353c2007-10-23 08:50:32 +08003484 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003485 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
3486 .input = "Single block msg",
Joy Latten23e353c2007-10-23 08:50:32 +08003487 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003488 .result = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
3489 "\x2d\x61\x75\xa3\x26\x13\x11\xb8",
Joy Latten23e353c2007-10-23 08:50:32 +08003490 .rlen = 16,
3491 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003492 .key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
3493 "\x43\xd6\xce\x1f\x32\x53\x91\x63"
3494 "\x00\x6c\xb6\xdb",
Joy Latten23e353c2007-10-23 08:50:32 +08003495 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003496 .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
3497 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3498 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3499 "\x10\x11\x12\x13\x14\x15\x16\x17"
3500 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
3501 .ilen = 32,
3502 .result = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
3503 "\x79\x0d\x41\xee\x8e\xda\xd3\x88"
3504 "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
3505 "\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
Joy Latten23e353c2007-10-23 08:50:32 +08003506 .rlen = 32,
3507 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003508 .key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
3509 "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
3510 "\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
3511 "\x00\x00\x00\x48",
3512 .klen = 28,
3513 .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
3514 .input = "Single block msg",
3515 .ilen = 16,
3516 .result = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
3517 "\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
Joy Latten23e353c2007-10-23 08:50:32 +08003518 .rlen = 16,
3519 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003520 .key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
3521 "\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
3522 "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
3523 "\x00\x96\xb0\x3b",
Joy Latten23e353c2007-10-23 08:50:32 +08003524 .klen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003525 .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
3526 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3527 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3528 "\x10\x11\x12\x13\x14\x15\x16\x17"
3529 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Joy Latten23e353c2007-10-23 08:50:32 +08003530 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003531 .result = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
3532 "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
3533 "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
3534 "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
3535 .rlen = 32,
Joy Latten23e353c2007-10-23 08:50:32 +08003536 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003537 .key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
3538 "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
3539 "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
3540 "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
3541 "\x00\x00\x00\x60",
Joy Latten23e353c2007-10-23 08:50:32 +08003542 .klen = 36,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003543 .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
3544 .input = "Single block msg",
Joy Latten23e353c2007-10-23 08:50:32 +08003545 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003546 .result = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
3547 "\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
3548 .rlen = 16,
Joy Latten23e353c2007-10-23 08:50:32 +08003549 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003550 .key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
3551 "\x07\x96\x36\x58\x79\xef\xf8\x86"
3552 "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
3553 "\x4b\x50\x59\x0c\x87\xa2\x38\x84"
3554 "\x00\xfa\xac\x24",
3555 .klen = 36,
3556 .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
3557 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
3558 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3559 "\x10\x11\x12\x13\x14\x15\x16\x17"
3560 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Joy Latten23e353c2007-10-23 08:50:32 +08003561 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003562 .result = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
3563 "\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
3564 "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
3565 "\x55\x30\x83\x1d\x93\x44\xaf\x1c",
Joy Latten23e353c2007-10-23 08:50:32 +08003566 .rlen = 32,
Tan Swee Henga773edb2007-11-30 00:36:07 +11003567 }, {
3568 // generated using Crypto++
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003569 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
3570 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3571 "\x10\x11\x12\x13\x14\x15\x16\x17"
3572 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3573 "\x00\x00\x00\x00",
Tan Swee Henga773edb2007-11-30 00:36:07 +11003574 .klen = 32 + 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08003575 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
3576 .input =
3577 "\x00\x01\x02\x03\x04\x05\x06\x07"
3578 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
3579 "\x10\x11\x12\x13\x14\x15\x16\x17"
3580 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
3581 "\x20\x21\x22\x23\x24\x25\x26\x27"
3582 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
3583 "\x30\x31\x32\x33\x34\x35\x36\x37"
3584 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
3585 "\x40\x41\x42\x43\x44\x45\x46\x47"
3586 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
3587 "\x50\x51\x52\x53\x54\x55\x56\x57"
3588 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
3589 "\x60\x61\x62\x63\x64\x65\x66\x67"
3590 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
3591 "\x70\x71\x72\x73\x74\x75\x76\x77"
3592 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
3593 "\x80\x81\x82\x83\x84\x85\x86\x87"
3594 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
3595 "\x90\x91\x92\x93\x94\x95\x96\x97"
3596 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
3597 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
3598 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
3599 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
3600 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
3601 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
3602 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
3603 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
3604 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
3605 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
3606 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
3607 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
3608 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
3609 "\x00\x03\x06\x09\x0c\x0f\x12\x15"
3610 "\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
3611 "\x30\x33\x36\x39\x3c\x3f\x42\x45"
3612 "\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
3613 "\x60\x63\x66\x69\x6c\x6f\x72\x75"
3614 "\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
3615 "\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
3616 "\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
3617 "\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
3618 "\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
3619 "\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
3620 "\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
3621 "\x20\x23\x26\x29\x2c\x2f\x32\x35"
3622 "\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
3623 "\x50\x53\x56\x59\x5c\x5f\x62\x65"
3624 "\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
3625 "\x80\x83\x86\x89\x8c\x8f\x92\x95"
3626 "\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
3627 "\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
3628 "\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
3629 "\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
3630 "\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
3631 "\x10\x13\x16\x19\x1c\x1f\x22\x25"
3632 "\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
3633 "\x40\x43\x46\x49\x4c\x4f\x52\x55"
3634 "\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
3635 "\x70\x73\x76\x79\x7c\x7f\x82\x85"
3636 "\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
3637 "\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
3638 "\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
3639 "\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
3640 "\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
3641 "\x00\x05\x0a\x0f\x14\x19\x1e\x23"
3642 "\x28\x2d\x32\x37\x3c\x41\x46\x4b"
3643 "\x50\x55\x5a\x5f\x64\x69\x6e\x73"
3644 "\x78\x7d\x82\x87\x8c\x91\x96\x9b"
3645 "\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
3646 "\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
3647 "\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
3648 "\x18\x1d\x22\x27\x2c\x31\x36\x3b"
3649 "\x40\x45\x4a\x4f\x54\x59\x5e\x63"
3650 "\x68\x6d\x72\x77\x7c\x81\x86\x8b"
3651 "\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
3652 "\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
3653 "\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
3654 "\x08\x0d\x12\x17\x1c\x21\x26\x2b"
3655 "\x30\x35\x3a\x3f\x44\x49\x4e\x53"
3656 "\x58\x5d\x62\x67\x6c\x71\x76\x7b"
3657 "\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
3658 "\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
3659 "\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
3660 "\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
3661 "\x20\x25\x2a\x2f\x34\x39\x3e\x43"
3662 "\x48\x4d\x52\x57\x5c\x61\x66\x6b"
3663 "\x70\x75\x7a\x7f\x84\x89\x8e\x93"
3664 "\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
3665 "\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
3666 "\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
3667 "\x10\x15\x1a\x1f\x24\x29\x2e\x33"
3668 "\x38\x3d\x42\x47\x4c\x51\x56\x5b"
3669 "\x60\x65\x6a\x6f\x74\x79\x7e\x83"
3670 "\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
3671 "\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
3672 "\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
3673 "\x00\x07\x0e\x15\x1c\x23\x2a\x31"
3674 "\x38\x3f\x46\x4d\x54\x5b\x62\x69"
3675 "\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
3676 "\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
3677 "\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
3678 "\x18\x1f\x26\x2d\x34\x3b\x42\x49"
3679 "\x50\x57\x5e\x65\x6c\x73\x7a\x81"
3680 "\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
3681 "\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
3682 "\xf8\xff\x06\x0d\x14\x1b\x22\x29"
3683 "\x30\x37\x3e\x45\x4c\x53\x5a\x61"
3684 "\x68\x6f\x76\x7d\x84\x8b\x92\x99"
3685 "\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
3686 "\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
3687 "\x10\x17\x1e\x25\x2c\x33\x3a\x41"
3688 "\x48\x4f\x56\x5d\x64\x6b\x72\x79"
3689 "\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
3690 "\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
3691 "\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
3692 "\x28\x2f\x36\x3d\x44\x4b\x52\x59"
3693 "\x60\x67\x6e\x75\x7c\x83\x8a\x91"
3694 "\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
3695 "\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
3696 "\x08\x0f\x16\x1d\x24\x2b\x32\x39"
3697 "\x40\x47\x4e\x55\x5c\x63\x6a\x71"
3698 "\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
3699 "\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
3700 "\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
3701 "\x20\x27\x2e\x35\x3c\x43\x4a\x51"
3702 "\x58\x5f\x66\x6d\x74\x7b\x82\x89"
3703 "\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
3704 "\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
3705 "\x00\x09\x12\x1b\x24\x2d\x36\x3f"
3706 "\x48\x51\x5a\x63\x6c\x75\x7e\x87"
3707 "\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
3708 "\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
3709 "\x20\x29\x32\x3b\x44\x4d\x56\x5f"
3710 "\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
3711 "\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
3712 "\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
3713 "\x40\x49\x52\x5b\x64\x6d\x76\x7f"
3714 "\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
3715 "\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
3716 "\x18\x21\x2a\x33\x3c\x45\x4e\x57"
3717 "\x60\x69\x72\x7b\x84\x8d\x96\x9f"
3718 "\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
3719 "\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
3720 "\x38\x41\x4a\x53\x5c\x65\x6e\x77"
3721 "\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
3722 "\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
3723 "\x10\x19\x22\x2b\x34\x3d\x46\x4f"
3724 "\x58\x61\x6a\x73\x7c\x85\x8e\x97"
3725 "\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
3726 "\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
3727 "\x30\x39\x42\x4b\x54\x5d\x66\x6f"
3728 "\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
3729 "\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
3730 "\x08\x11\x1a\x23\x2c\x35\x3e\x47"
3731 "\x50\x59\x62\x6b\x74\x7d\x86\x8f"
3732 "\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
3733 "\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
3734 "\x28\x31\x3a\x43\x4c\x55\x5e\x67"
3735 "\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
3736 "\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
3737 "\x00\x0b\x16\x21\x2c\x37\x42\x4d"
3738 "\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
3739 "\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
3740 "\x08\x13\x1e\x29\x34\x3f\x4a\x55"
3741 "\x60\x6b\x76\x81\x8c\x97\xa2\xad"
3742 "\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
3743 "\x10\x1b\x26\x31\x3c\x47\x52\x5d"
3744 "\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
3745 "\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
3746 "\x18\x23\x2e\x39\x44\x4f\x5a\x65"
3747 "\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
3748 "\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
3749 "\x20\x2b\x36\x41\x4c\x57\x62\x6d"
3750 "\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
3751 "\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
3752 "\x28\x33\x3e\x49\x54\x5f\x6a\x75"
3753 "\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
3754 "\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
3755 "\x30\x3b\x46\x51\x5c\x67\x72\x7d"
3756 "\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
3757 "\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
3758 "\x38\x43\x4e\x59\x64\x6f\x7a\x85"
3759 "\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
3760 "\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
3761 "\x40\x4b\x56\x61\x6c\x77\x82\x8d"
3762 "\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
3763 "\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
3764 "\x48\x53\x5e\x69\x74\x7f\x8a\x95"
3765 "\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
3766 "\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
3767 "\x50\x5b\x66\x71\x7c\x87\x92\x9d"
3768 "\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
3769 "\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
3770 "\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
3771 "\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
3772 "\x38\x45\x52\x5f\x6c\x79\x86\x93"
3773 "\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
3774 "\x08\x15\x22\x2f\x3c\x49\x56\x63"
3775 "\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
3776 "\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
3777 "\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
3778 "\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
3779 "\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
3780 "\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
3781 "\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
3782 "\x48\x55\x62\x6f\x7c\x89\x96\xa3"
3783 "\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
3784 "\x18\x25\x32\x3f\x4c\x59\x66\x73"
3785 "\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
3786 "\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
3787 "\x50\x5d\x6a\x77\x84\x91\x9e\xab"
3788 "\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
3789 "\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
3790 "\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
3791 "\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
3792 "\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
3793 "\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
3794 "\x28\x35\x42\x4f\x5c\x69\x76\x83"
3795 "\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
3796 "\xf8\x05\x12\x1f\x2c\x39\x46\x53"
3797 "\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
3798 "\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
3799 "\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
3800 "\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
3801 "\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
3802 "\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
3803 "\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
3804 "\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
3805 "\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
3806 "\x58\x67\x76\x85\x94\xa3\xb2\xc1"
3807 "\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
3808 "\x48\x57\x66\x75\x84\x93\xa2\xb1"
3809 "\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
3810 "\x38\x47\x56\x65\x74\x83\x92\xa1"
3811 "\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
3812 "\x28\x37\x46\x55\x64\x73\x82\x91"
3813 "\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
3814 "\x18\x27\x36\x45\x54\x63\x72\x81"
3815 "\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
3816 "\x08\x17\x26\x35\x44\x53\x62\x71"
3817 "\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
3818 "\xf8\x07\x16\x25\x34\x43\x52\x61"
3819 "\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
3820 "\xe8\xf7\x06\x15\x24\x33\x42\x51"
3821 "\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
3822 "\xd8\xe7\xf6\x05\x14\x23\x32\x41"
3823 "\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
3824 "\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
3825 "\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
3826 "\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
3827 "\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
3828 "\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
3829 "\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
3830 "\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
3831 "\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
3832 "\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
3833 "\x00\x11\x22\x33\x44\x55\x66\x77"
3834 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
3835 "\x10\x21\x32\x43\x54\x65\x76\x87"
3836 "\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
3837 "\x20\x31\x42\x53\x64\x75\x86\x97"
3838 "\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
3839 "\x30\x41\x52\x63\x74\x85\x96\xa7"
3840 "\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
3841 "\x40\x51\x62\x73\x84\x95\xa6\xb7"
3842 "\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
3843 "\x50\x61\x72\x83\x94\xa5\xb6\xc7"
3844 "\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
3845 "\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
3846 "\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
3847 "\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
3848 "\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
3849 "\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
3850 "\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
3851 "\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
3852 "\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
3853 "\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
3854 "\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
3855 "\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
3856 "\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
3857 "\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
3858 "\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
3859 "\xd0\xe1\xf2\x03\x14\x25\x36\x47"
3860 "\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
3861 "\xe0\xf1\x02\x13\x24\x35\x46\x57"
3862 "\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
3863 "\xf0\x01\x12\x23\x34\x45\x56\x67"
3864 "\x78\x89\x9a\xab\xbc\xcd\xde\xef"
3865 "\x00\x13\x26\x39\x4c\x5f\x72\x85"
3866 "\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
3867 "\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
3868 "\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
3869 "\x60\x73\x86\x99\xac\xbf\xd2\xe5"
3870 "\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
3871 "\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
3872 "\x28\x3b\x4e\x61\x74\x87\x9a\xad"
3873 "\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
3874 "\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
3875 "\xf0\x03\x16\x29\x3c\x4f\x62\x75"
3876 "\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
3877 "\x20\x33\x46\x59\x6c\x7f\x92\xa5"
3878 "\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
3879 "\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
3880 "\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
3881 "\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
3882 "\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
3883 "\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
3884 "\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
3885 "\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
3886 "\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
3887 "\x10\x23\x36\x49\x5c\x6f\x82\x95"
3888 "\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
3889 "\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
3890 "\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
3891 "\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
3892 "\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
3893 "\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
3894 "\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
3895 "\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
3896 "\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
3897 "\x00\x15\x2a\x3f\x54\x69\x7e\x93"
3898 "\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
3899 "\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
3900 "\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
3901 "\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
3902 "\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
3903 "\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
3904 "\x98\xad\xc2\xd7\xec\x01\x16\x2b"
3905 "\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
3906 "\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
3907 "\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
3908 "\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
3909 "\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
3910 "\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
3911 "\x30\x45\x5a\x6f\x84\x99\xae\xc3"
3912 "\xd8\xed\x02\x17\x2c\x41\x56\x6b"
3913 "\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
3914 "\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
3915 "\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
3916 "\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
3917 "\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
3918 "\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
3919 "\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
3920 "\x18\x2d\x42\x57\x6c\x81\x96\xab"
3921 "\xc0\xd5\xea\xff\x14\x29\x3e\x53"
3922 "\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
3923 "\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
3924 "\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
3925 "\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
3926 "\x08\x1d\x32\x47\x5c\x71\x86\x9b"
3927 "\xb0\xc5\xda\xef\x04\x19\x2e\x43"
3928 "\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
3929 "\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
3930 "\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
3931 "\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
3932 "\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
3933 "\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
3934 "\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
3935 "\x50\x67\x7e\x95\xac\xc3\xda\xf1"
3936 "\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
3937 "\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
3938 "\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
3939 "\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
3940 "\xe8\xff\x16\x2d\x44\x5b\x72\x89"
3941 "\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
3942 "\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
3943 "\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
3944 "\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
3945 "\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
3946 "\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
3947 "\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
3948 "\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
3949 "\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
3950 "\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
3951 "\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
3952 "\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
3953 "\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
3954 "\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
3955 "\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
3956 "\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
3957 "\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
3958 "\xd8\xef\x06\x1d\x34\x4b\x62\x79"
3959 "\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
3960 "\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
3961 "\x00\x19\x32\x4b\x64\x7d\x96\xaf"
3962 "\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
3963 "\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
3964 "\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
3965 "\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
3966 "\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
3967 "\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
3968 "\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
3969 "\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
3970 "\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
3971 "\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
3972 "\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
3973 "\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
3974 "\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
3975 "\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
3976 "\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
3977 "\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
3978 "\x48\x61\x7a\x93\xac\xc5\xde\xf7"
3979 "\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
3980 "\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
3981 "\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
3982 "\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
3983 "\x30\x49\x62\x7b\x94\xad\xc6\xdf"
3984 "\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
3985 "\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
3986 "\x88\xa1\xba\xd3\xec\x05\x1e\x37"
3987 "\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
3988 "\x18\x31\x4a\x63\x7c\x95\xae\xc7"
3989 "\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
3990 "\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
3991 "\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
3992 "\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
3993 "\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
3994 "\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
3995 "\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
3996 "\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
3997 "\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
3998 "\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
3999 "\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
4000 "\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
4001 "\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
4002 "\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
4003 "\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
4004 "\x48\x63\x7e\x99\xb4\xcf\xea\x05"
4005 "\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
4006 "\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
4007 "\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
4008 "\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
4009 "\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
4010 "\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
4011 "\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
4012 "\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
4013 "\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
4014 "\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
4015 "\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
4016 "\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
4017 "\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
4018 "\x18\x33\x4e\x69\x84\x9f\xba\xd5"
4019 "\xf0\x0b\x26\x41\x5c\x77\x92\xad"
4020 "\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
4021 "\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
4022 "\x78\x93\xae\xc9\xe4\xff\x1a\x35"
4023 "\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
4024 "\x28\x43\x5e\x79\x94\xaf\xca\xe5"
4025 "\x00\x1d\x3a\x57\x74\x91\xae\xcb"
4026 "\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
4027 "\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
4028 "\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
4029 "\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
4030 "\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
4031 "\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
4032 "\x58\x75\x92\xaf\xcc\xe9\x06\x23"
4033 "\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
4034 "\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
4035 "\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
4036 "\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
4037 "\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
4038 "\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
4039 "\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
4040 "\x98\xb5\xd2\xef\x0c\x29\x46\x63"
4041 "\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
4042 "\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
4043 "\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
4044 "\x38\x55\x72\x8f\xac\xc9\xe6\x03"
4045 "\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
4046 "\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
4047 "\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
4048 "\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
4049 "\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
4050 "\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
4051 "\x90\xad\xca\xe7\x04\x21\x3e\x5b"
4052 "\x78\x95\xb2\xcf\xec\x09\x26\x43"
4053 "\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
4054 "\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
4055 "\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
4056 "\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
4057 "\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
4058 "\xf8\x17\x36\x55\x74\x93\xb2\xd1"
4059 "\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
4060 "\xe8\x07\x26\x45\x64\x83\xa2\xc1"
4061 "\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
4062 "\xd8\xf7\x16\x35\x54\x73\x92\xb1"
4063 "\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
4064 "\xc8\xe7\x06\x25\x44\x63\x82\xa1"
4065 "\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
4066 "\xb8\xd7\xf6\x15\x34\x53\x72\x91"
4067 "\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
4068 "\xa8\xc7\xe6\x05\x24\x43\x62\x81"
4069 "\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
4070 "\x98\xb7\xd6\xf5\x14\x33\x52\x71"
4071 "\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
4072 "\x88\xa7\xc6\xe5\x04\x23\x42\x61"
4073 "\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
4074 "\x78\x97\xb6\xd5\xf4\x13\x32\x51"
4075 "\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
4076 "\x68\x87\xa6\xc5\xe4\x03\x22\x41"
4077 "\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
4078 "\x58\x77\x96\xb5\xd4\xf3\x12\x31"
4079 "\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
4080 "\x48\x67\x86\xa5\xc4\xe3\x02\x21"
4081 "\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
4082 "\x38\x57\x76\x95\xb4\xd3\xf2\x11"
4083 "\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
4084 "\x28\x47\x66\x85\xa4\xc3\xe2\x01"
4085 "\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
4086 "\x18\x37\x56\x75\x94\xb3\xd2\xf1"
4087 "\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
4088 "\x08\x27\x46\x65\x84\xa3\xc2\xe1"
4089 "\x00\x21\x42\x63",
Tan Swee Henga773edb2007-11-30 00:36:07 +11004090 .ilen = 4100,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004091 .result =
4092 "\xf0\x5c\x74\xad\x4e\xbc\x99\xe2"
4093 "\xae\xff\x91\x3a\x44\xcf\x38\x32"
4094 "\x1e\xad\xa7\xcd\xa1\x39\x95\xaa"
4095 "\x10\xb1\xb3\x2e\x04\x31\x8f\x86"
4096 "\xf2\x62\x74\x70\x0c\xa4\x46\x08"
4097 "\xa8\xb7\x99\xa8\xe9\xd2\x73\x79"
4098 "\x7e\x6e\xd4\x8f\x1e\xc7\x8e\x31"
4099 "\x0b\xfa\x4b\xce\xfd\xf3\x57\x71"
4100 "\xe9\x46\x03\xa5\x3d\x34\x00\xe2"
4101 "\x18\xff\x75\x6d\x06\x2d\x00\xab"
4102 "\xb9\x3e\x6c\x59\xc5\x84\x06\xb5"
4103 "\x8b\xd0\x89\x9c\x4a\x79\x16\xc6"
4104 "\x3d\x74\x54\xfa\x44\xcd\x23\x26"
4105 "\x5c\xcf\x7e\x28\x92\x32\xbf\xdf"
4106 "\xa7\x20\x3c\x74\x58\x2a\x9a\xde"
4107 "\x61\x00\x1c\x4f\xff\x59\xc4\x22"
4108 "\xac\x3c\xd0\xe8\x6c\xf9\x97\x1b"
4109 "\x58\x9b\xad\x71\xe8\xa9\xb5\x0d"
4110 "\xee\x2f\x04\x1f\x7f\xbc\x99\xee"
4111 "\x84\xff\x42\x60\xdc\x3a\x18\xa5"
4112 "\x81\xf9\xef\xdc\x7a\x0f\x65\x41"
4113 "\x2f\xa3\xd3\xf9\xc2\xcb\xc0\x4d"
4114 "\x8f\xd3\x76\x96\xad\x49\x6d\x38"
4115 "\x3d\x39\x0b\x6c\x80\xb7\x54\x69"
4116 "\xf0\x2c\x90\x02\x29\x0d\x1c\x12"
4117 "\xad\x55\xc3\x8b\x68\xd9\xcc\xb3"
4118 "\xb2\x64\x33\x90\x5e\xca\x4b\xe2"
4119 "\xfb\x75\xdc\x63\xf7\x9f\x82\x74"
4120 "\xf0\xc9\xaa\x7f\xe9\x2a\x9b\x33"
4121 "\xbc\x88\x00\x7f\xca\xb2\x1f\x14"
4122 "\xdb\xc5\x8e\x7b\x11\x3c\x3e\x08"
4123 "\xf3\x83\xe8\xe0\x94\x86\x2e\x92"
4124 "\x78\x6b\x01\xc9\xc7\x83\xba\x21"
4125 "\x6a\x25\x15\x33\x4e\x45\x08\xec"
4126 "\x35\xdb\xe0\x6e\x31\x51\x79\xa9"
4127 "\x42\x44\x65\xc1\xa0\xf1\xf9\x2a"
4128 "\x70\xd5\xb6\xc6\xc1\x8c\x39\xfc"
4129 "\x25\xa6\x55\xd9\xdd\x2d\x4c\xec"
4130 "\x49\xc6\xeb\x0e\xa8\x25\x2a\x16"
4131 "\x1b\x66\x84\xda\xe2\x92\xe5\xc0"
4132 "\xc8\x53\x07\xaf\x80\x84\xec\xfd"
4133 "\xcd\xd1\x6e\xcd\x6f\x6a\xf5\x36"
4134 "\xc5\x15\xe5\x25\x7d\x77\xd1\x1a"
4135 "\x93\x36\xa9\xcf\x7c\xa4\x54\x4a"
4136 "\x06\x51\x48\x4e\xf6\x59\x87\xd2"
4137 "\x04\x02\xef\xd3\x44\xde\x76\x31"
4138 "\xb3\x34\x17\x1b\x9d\x66\x11\x9f"
4139 "\x1e\xcc\x17\xe9\xc7\x3c\x1b\xe7"
4140 "\xcb\x50\x08\xfc\xdc\x2b\x24\xdb"
4141 "\x65\x83\xd0\x3b\xe3\x30\xea\x94"
4142 "\x6c\xe7\xe8\x35\x32\xc7\xdb\x64"
4143 "\xb4\x01\xab\x36\x2c\x77\x13\xaf"
4144 "\xf8\x2b\x88\x3f\x54\x39\xc4\x44"
4145 "\xfe\xef\x6f\x68\x34\xbe\x0f\x05"
4146 "\x16\x6d\xf6\x0a\x30\xe7\xe3\xed"
4147 "\xc4\xde\x3c\x1b\x13\xd8\xdb\xfe"
4148 "\x41\x62\xe5\x28\xd4\x8d\xa3\xc7"
4149 "\x93\x97\xc6\x48\x45\x1d\x9f\x83"
4150 "\xdf\x4b\x40\x3e\x42\x25\x87\x80"
4151 "\x4c\x7d\xa8\xd4\x98\x23\x95\x75"
4152 "\x41\x8c\xda\x41\x9b\xd4\xa7\x06"
4153 "\xb5\xf1\x71\x09\x53\xbe\xca\xbf"
4154 "\x32\x03\xed\xf0\x50\x1c\x56\x39"
4155 "\x5b\xa4\x75\x18\xf7\x9b\x58\xef"
4156 "\x53\xfc\x2a\x38\x23\x15\x75\xcd"
4157 "\x45\xe5\x5a\x82\x55\xba\x21\xfa"
4158 "\xd4\xbd\xc6\x94\x7c\xc5\x80\x12"
4159 "\xf7\x4b\x32\xc4\x9a\x82\xd8\x28"
4160 "\x8f\xd9\xc2\x0f\x60\x03\xbe\x5e"
4161 "\x21\xd6\x5f\x58\xbf\x5c\xb1\x32"
4162 "\x82\x8d\xa9\xe5\xf2\x66\x1a\xc0"
4163 "\xa0\xbc\x58\x2f\x71\xf5\x2f\xed"
4164 "\xd1\x26\xb9\xd8\x49\x5a\x07\x19"
4165 "\x01\x7c\x59\xb0\xf8\xa4\xb7\xd3"
4166 "\x7b\x1a\x8c\x38\xf4\x50\xa4\x59"
4167 "\xb0\xcc\x41\x0b\x88\x7f\xe5\x31"
4168 "\xb3\x42\xba\xa2\x7e\xd4\x32\x71"
4169 "\x45\x87\x48\xa9\xc2\xf2\x89\xb3"
4170 "\xe4\xa7\x7e\x52\x15\x61\xfa\xfe"
4171 "\xc9\xdd\x81\xeb\x13\xab\xab\xc3"
4172 "\x98\x59\xd8\x16\x3d\x14\x7a\x1c"
4173 "\x3c\x41\x9a\x16\x16\x9b\xd2\xd2"
4174 "\x69\x3a\x29\x23\xac\x86\x32\xa5"
4175 "\x48\x9c\x9e\xf3\x47\x77\x81\x70"
4176 "\x24\xe8\x85\xd2\xf5\xb5\xfa\xff"
4177 "\x59\x6a\xd3\x50\x59\x43\x59\xde"
4178 "\xd9\xf1\x55\xa5\x0c\xc3\x1a\x1a"
4179 "\x18\x34\x0d\x1a\x63\x33\xed\x10"
4180 "\xe0\x1d\x2a\x18\xd2\xc0\x54\xa8"
4181 "\xca\xb5\x9a\xd3\xdd\xca\x45\x84"
4182 "\x50\xe7\x0f\xfe\xa4\x99\x5a\xbe"
4183 "\x43\x2d\x9a\xcb\x92\x3f\x5a\x1d"
4184 "\x85\xd8\xc9\xdf\x68\xc9\x12\x80"
4185 "\x56\x0c\xdc\x00\xdc\x3a\x7d\x9d"
4186 "\xa3\xa2\xe8\x4d\xbf\xf9\x70\xa0"
4187 "\xa4\x13\x4f\x6b\xaf\x0a\x89\x7f"
4188 "\xda\xf0\xbf\x9b\xc8\x1d\xe5\xf8"
4189 "\x2e\x8b\x07\xb5\x73\x1b\xcc\xa2"
4190 "\xa6\xad\x30\xbc\x78\x3c\x5b\x10"
4191 "\xfa\x5e\x62\x2d\x9e\x64\xb3\x33"
4192 "\xce\xf9\x1f\x86\xe7\x8b\xa2\xb8"
4193 "\xe8\x99\x57\x8c\x11\xed\x66\xd9"
4194 "\x3c\x72\xb9\xc3\xe6\x4e\x17\x3a"
4195 "\x6a\xcb\x42\x24\x06\xed\x3e\x4e"
4196 "\xa3\xe8\x6a\x94\xda\x0d\x4e\xd5"
4197 "\x14\x19\xcf\xb6\x26\xd8\x2e\xcc"
4198 "\x64\x76\x38\x49\x4d\xfe\x30\x6d"
4199 "\xe4\xc8\x8c\x7b\xc4\xe0\x35\xba"
4200 "\x22\x6e\x76\xe1\x1a\xf2\x53\xc3"
4201 "\x28\xa2\x82\x1f\x61\x69\xad\xc1"
4202 "\x7b\x28\x4b\x1e\x6c\x85\x95\x9b"
4203 "\x51\xb5\x17\x7f\x12\x69\x8c\x24"
4204 "\xd5\xc7\x5a\x5a\x11\x54\xff\x5a"
4205 "\xf7\x16\xc3\x91\xa6\xf0\xdc\x0a"
4206 "\xb6\xa7\x4a\x0d\x7a\x58\xfe\xa5"
4207 "\xf5\xcb\x8f\x7b\x0e\xea\x57\xe7"
4208 "\xbd\x79\xd6\x1c\x88\x23\x6c\xf2"
4209 "\x4d\x29\x77\x53\x35\x6a\x00\x8d"
4210 "\xcd\xa3\x58\xbe\x77\x99\x18\xf8"
4211 "\xe6\xe1\x8f\xe9\x37\x8f\xe3\xe2"
4212 "\x5a\x8a\x93\x25\xaf\xf3\x78\x80"
4213 "\xbe\xa6\x1b\xc6\xac\x8b\x1c\x91"
4214 "\x58\xe1\x9f\x89\x35\x9d\x1d\x21"
4215 "\x29\x9f\xf4\x99\x02\x27\x0f\xa8"
4216 "\x4f\x79\x94\x2b\x33\x2c\xda\xa2"
4217 "\x26\x39\x83\x94\xef\x27\xd8\x53"
4218 "\x8f\x66\x0d\xe4\x41\x7d\x34\xcd"
4219 "\x43\x7c\x95\x0a\x53\xef\x66\xda"
4220 "\x7e\x9b\xf3\x93\xaf\xd0\x73\x71"
4221 "\xba\x40\x9b\x74\xf8\xd7\xd7\x41"
4222 "\x6d\xaf\x72\x9c\x8d\x21\x87\x3c"
4223 "\xfd\x0a\x90\xa9\x47\x96\x9e\xd3"
4224 "\x88\xee\x73\xcf\x66\x2f\x52\x56"
4225 "\x6d\xa9\x80\x4c\xe2\x6f\x62\x88"
4226 "\x3f\x0e\x54\x17\x48\x80\x5d\xd3"
4227 "\xc3\xda\x25\x3d\xa1\xc8\xcb\x9f"
4228 "\x9b\x70\xb3\xa1\xeb\x04\x52\xa1"
4229 "\xf2\x22\x0f\xfc\xc8\x18\xfa\xf9"
4230 "\x85\x9c\xf1\xac\xeb\x0c\x02\x46"
4231 "\x75\xd2\xf5\x2c\xe3\xd2\x59\x94"
4232 "\x12\xf3\x3c\xfc\xd7\x92\xfa\x36"
4233 "\xba\x61\x34\x38\x7c\xda\x48\x3e"
4234 "\x08\xc9\x39\x23\x5e\x02\x2c\x1a"
4235 "\x18\x7e\xb4\xd9\xfd\x9e\x40\x02"
4236 "\xb1\x33\x37\x32\xe7\xde\xd6\xd0"
4237 "\x7c\x58\x65\x4b\xf8\x34\x27\x9c"
4238 "\x44\xb4\xbd\xe9\xe9\x4c\x78\x7d"
4239 "\x4b\x9f\xce\xb1\xcd\x47\xa5\x37"
4240 "\xe5\x6d\xbd\xb9\x43\x94\x0a\xd4"
4241 "\xd6\xf9\x04\x5f\xb5\x66\x6c\x1a"
4242 "\x35\x12\xe3\x36\x28\x27\x36\x58"
4243 "\x01\x2b\x79\xe4\xba\x6d\x10\x7d"
4244 "\x65\xdf\x84\x95\xf4\xd5\xb6\x8f"
4245 "\x2b\x9f\x96\x00\x86\x60\xf0\x21"
4246 "\x76\xa8\x6a\x8c\x28\x1c\xb3\x6b"
4247 "\x97\xd7\xb6\x53\x2a\xcc\xab\x40"
4248 "\x9d\x62\x79\x58\x52\xe6\x65\xb7"
4249 "\xab\x55\x67\x9c\x89\x7c\x03\xb0"
4250 "\x73\x59\xc5\x81\xf5\x18\x17\x5c"
4251 "\x89\xf3\x78\x35\x44\x62\x78\x72"
4252 "\xd0\x96\xeb\x31\xe7\x87\x77\x14"
4253 "\x99\x51\xf2\x59\x26\x9e\xb5\xa6"
4254 "\x45\xfe\x6e\xbd\x07\x4c\x94\x5a"
4255 "\xa5\x7d\xfc\xf1\x2b\x77\xe2\xfe"
4256 "\x17\xd4\x84\xa0\xac\xb5\xc7\xda"
4257 "\xa9\x1a\xb6\xf3\x74\x11\xb4\x9d"
4258 "\xfb\x79\x2e\x04\x2d\x50\x28\x83"
4259 "\xbf\xc6\x52\xd3\x34\xd6\xe8\x7a"
4260 "\xb6\xea\xe7\xa8\x6c\x15\x1e\x2c"
4261 "\x57\xbc\x48\x4e\x5f\x5c\xb6\x92"
4262 "\xd2\x49\x77\x81\x6d\x90\x70\xae"
4263 "\x98\xa1\x03\x0d\x6b\xb9\x77\x14"
4264 "\xf1\x4e\x23\xd3\xf8\x68\xbd\xc2"
4265 "\xfe\x04\xb7\x5c\xc5\x17\x60\x8f"
4266 "\x65\x54\xa4\x7a\x42\xdc\x18\x0d"
4267 "\xb5\xcf\x0f\xd3\xc7\x91\x66\x1b"
4268 "\x45\x42\x27\x75\x50\xe5\xee\xb8"
4269 "\x7f\x33\x2c\xba\x4a\x92\x4d\x2c"
4270 "\x3c\xe3\x0d\x80\x01\xba\x0d\x29"
4271 "\xd8\x3c\xe9\x13\x16\x57\xe6\xea"
4272 "\x94\x52\xe7\x00\x4d\x30\xb0\x0f"
4273 "\x35\xb8\xb8\xa7\xb1\xb5\x3b\x44"
4274 "\xe1\x2f\xfd\x88\xed\x43\xe7\x52"
4275 "\x10\x93\xb3\x8a\x30\x6b\x0a\xf7"
4276 "\x23\xc6\x50\x9d\x4a\xb0\xde\xc3"
4277 "\xdc\x9b\x2f\x01\x56\x36\x09\xc5"
4278 "\x2f\x6b\xfe\xf1\xd8\x27\x45\x03"
4279 "\x30\x5e\x5c\x5b\xb4\x62\x0e\x1a"
4280 "\xa9\x21\x2b\x92\x94\x87\x62\x57"
4281 "\x4c\x10\x74\x1a\xf1\x0a\xc5\x84"
4282 "\x3b\x9e\x72\x02\xd7\xcc\x09\x56"
4283 "\xbd\x54\xc1\xf0\xc3\xe3\xb3\xf8"
4284 "\xd2\x0d\x61\xcb\xef\xce\x0d\x05"
4285 "\xb0\x98\xd9\x8e\x4f\xf9\xbc\x93"
4286 "\xa6\xea\xc8\xcf\x10\x53\x4b\xf1"
4287 "\xec\xfc\x89\xf9\x64\xb0\x22\xbf"
4288 "\x9e\x55\x46\x9f\x7c\x50\x8e\x84"
4289 "\x54\x20\x98\xd7\x6c\x40\x1e\xdb"
4290 "\x69\x34\x78\x61\x24\x21\x9c\x8a"
4291 "\xb3\x62\x31\x8b\x6e\xf5\x2a\x35"
4292 "\x86\x13\xb1\x6c\x64\x2e\x41\xa5"
4293 "\x05\xf2\x42\xba\xd2\x3a\x0d\x8e"
4294 "\x8a\x59\x94\x3c\xcf\x36\x27\x82"
4295 "\xc2\x45\xee\x58\xcd\x88\xb4\xec"
4296 "\xde\xb2\x96\x0a\xaf\x38\x6f\x88"
4297 "\xd7\xd8\xe1\xdf\xb9\x96\xa9\x0a"
4298 "\xb1\x95\x28\x86\x20\xe9\x17\x49"
4299 "\xa2\x29\x38\xaa\xa5\xe9\x6e\xf1"
4300 "\x19\x27\xc0\xd5\x2a\x22\xc3\x0b"
4301 "\xdb\x7c\x73\x10\xb9\xba\x89\x76"
4302 "\x54\xae\x7d\x71\xb3\x93\xf6\x32"
4303 "\xe6\x47\x43\x55\xac\xa0\x0d\xc2"
4304 "\x93\x27\x4a\x8e\x0e\x74\x15\xc7"
4305 "\x0b\x85\xd9\x0c\xa9\x30\x7a\x3e"
4306 "\xea\x8f\x85\x6d\x3a\x12\x4f\x72"
4307 "\x69\x58\x7a\x80\xbb\xb5\x97\xf3"
4308 "\xcf\x70\xd2\x5d\xdd\x4d\x21\x79"
4309 "\x54\x4d\xe4\x05\xe8\xbd\xc2\x62"
4310 "\xb1\x3b\x77\x1c\xd6\x5c\xf3\xa0"
4311 "\x79\x00\xa8\x6c\x29\xd9\x18\x24"
4312 "\x36\xa2\x46\xc0\x96\x65\x7f\xbd"
4313 "\x2a\xed\x36\x16\x0c\xaa\x9f\xf4"
4314 "\xc5\xb4\xe2\x12\xed\x69\xed\x4f"
4315 "\x26\x2c\x39\x52\x89\x98\xe7\x2c"
4316 "\x99\xa4\x9e\xa3\x9b\x99\x46\x7a"
4317 "\x3a\xdc\xa8\x59\xa3\xdb\xc3\x3b"
4318 "\x95\x0d\x3b\x09\x6e\xee\x83\x5d"
4319 "\x32\x4d\xed\xab\xfa\x98\x14\x4e"
4320 "\xc3\x15\x45\x53\x61\xc4\x93\xbd"
4321 "\x90\xf4\x99\x95\x4c\xe6\x76\x92"
4322 "\x29\x90\x46\x30\x92\x69\x7d\x13"
4323 "\xf2\xa5\xcd\x69\x49\x44\xb2\x0f"
4324 "\x63\x40\x36\x5f\x09\xe2\x78\xf8"
4325 "\x91\xe3\xe2\xfa\x10\xf7\xc8\x24"
4326 "\xa8\x89\x32\x5c\x37\x25\x1d\xb2"
4327 "\xea\x17\x8a\x0a\xa9\x64\xc3\x7c"
4328 "\x3c\x7c\xbd\xc6\x79\x34\xe7\xe2"
4329 "\x85\x8e\xbf\xf8\xde\x92\xa0\xae"
4330 "\x20\xc4\xf6\xbb\x1f\x38\x19\x0e"
4331 "\xe8\x79\x9c\xa1\x23\xe9\x54\x7e"
4332 "\x37\x2f\xe2\x94\x32\xaf\xa0\x23"
4333 "\x49\xe4\xc0\xb3\xac\x00\x8f\x36"
4334 "\x05\xc4\xa6\x96\xec\x05\x98\x4f"
4335 "\x96\x67\x57\x1f\x20\x86\x1b\x2d"
4336 "\x69\xe4\x29\x93\x66\x5f\xaf\x6b"
4337 "\x88\x26\x2c\x67\x02\x4b\x52\xd0"
4338 "\x83\x7a\x43\x1f\xc0\x71\x15\x25"
4339 "\x77\x65\x08\x60\x11\x76\x4c\x8d"
4340 "\xed\xa9\x27\xc6\xb1\x2a\x2c\x6a"
4341 "\x4a\x97\xf5\xc6\xb7\x70\x42\xd3"
4342 "\x03\xd1\x24\x95\xec\x6d\xab\x38"
4343 "\x72\xce\xe2\x8b\x33\xd7\x51\x09"
4344 "\xdc\x45\xe0\x09\x96\x32\xf3\xc4"
4345 "\x84\xdc\x73\x73\x2d\x1b\x11\x98"
4346 "\xc5\x0e\x69\x28\x94\xc7\xb5\x4d"
4347 "\xc8\x8a\xd0\xaa\x13\x2e\x18\x74"
4348 "\xdd\xd1\x1e\xf3\x90\xe8\xfc\x9a"
4349 "\x72\x4a\x0e\xd1\xe4\xfb\x0d\x96"
4350 "\xd1\x0c\x79\x85\x1b\x1c\xfe\xe1"
4351 "\x62\x8f\x7a\x73\x32\xab\xc8\x18"
4352 "\x69\xe3\x34\x30\xdf\x13\xa6\xe5"
4353 "\xe8\x0e\x67\x7f\x81\x11\xb4\x60"
4354 "\xc7\xbd\x79\x65\x50\xdc\xc4\x5b"
4355 "\xde\x39\xa4\x01\x72\x63\xf3\xd1"
4356 "\x64\x4e\xdf\xfc\x27\x92\x37\x0d"
4357 "\x57\xcd\x11\x4f\x11\x04\x8e\x1d"
4358 "\x16\xf7\xcd\x92\x9a\x99\x30\x14"
4359 "\xf1\x7c\x67\x1b\x1f\x41\x0b\xe8"
4360 "\x32\xe8\xb8\xc1\x4f\x54\x86\x4f"
4361 "\xe5\x79\x81\x73\xcd\x43\x59\x68"
4362 "\x73\x02\x3b\x78\x21\x72\x43\x00"
4363 "\x49\x17\xf7\x00\xaf\x68\x24\x53"
4364 "\x05\x0a\xc3\x33\xe0\x33\x3f\x69"
4365 "\xd2\x84\x2f\x0b\xed\xde\x04\xf4"
4366 "\x11\x94\x13\x69\x51\x09\x28\xde"
4367 "\x57\x5c\xef\xdc\x9a\x49\x1c\x17"
4368 "\x97\xf3\x96\xc1\x7f\x5d\x2e\x7d"
4369 "\x55\xb8\xb3\x02\x09\xb3\x1f\xe7"
4370 "\xc9\x8d\xa3\x36\x34\x8a\x77\x13"
4371 "\x30\x63\x4c\xa5\xcd\xc3\xe0\x7e"
4372 "\x05\xa1\x7b\x0c\xcb\x74\x47\x31"
4373 "\x62\x03\x43\xf1\x87\xb4\xb0\x85"
4374 "\x87\x8e\x4b\x25\xc7\xcf\xae\x4b"
4375 "\x36\x46\x3e\x62\xbc\x6f\xeb\x5f"
4376 "\x73\xac\xe6\x07\xee\xc1\xa1\xd6"
4377 "\xc4\xab\xc9\xd6\x89\x45\xe1\xf1"
4378 "\x04\x4e\x1a\x6f\xbb\x4f\x3a\xa3"
4379 "\xa0\xcb\xa3\x0a\xd8\x71\x35\x55"
4380 "\xe4\xbc\x2e\x04\x06\xe6\xff\x5b"
4381 "\x1c\xc0\x11\x7c\xc5\x17\xf3\x38"
4382 "\xcf\xe9\xba\x0f\x0e\xef\x02\xc2"
4383 "\x8d\xc6\xbc\x4b\x67\x20\x95\xd7"
4384 "\x2c\x45\x5b\x86\x44\x8c\x6f\x2e"
4385 "\x7e\x9f\x1c\x77\xba\x6b\x0e\xa3"
4386 "\x69\xdc\xab\x24\x57\x60\x47\xc1"
4387 "\xd1\xa5\x9d\x23\xe6\xb1\x37\xfe"
4388 "\x93\xd2\x4c\x46\xf9\x0c\xc6\xfb"
4389 "\xd6\x9d\x99\x69\xab\x7a\x07\x0c"
4390 "\x65\xe7\xc4\x08\x96\xe2\xa5\x01"
4391 "\x3f\x46\x07\x05\x7e\xe8\x9a\x90"
4392 "\x50\xdc\xe9\x7a\xea\xa1\x39\x6e"
4393 "\x66\xe4\x6f\xa5\x5f\xb2\xd9\x5b"
4394 "\xf5\xdb\x2a\x32\xf0\x11\x6f\x7c"
4395 "\x26\x10\x8f\x3d\x80\xe9\x58\xf7"
4396 "\xe0\xa8\x57\xf8\xdb\x0e\xce\x99"
4397 "\x63\x19\x3d\xd5\xec\x1b\x77\x69"
4398 "\x98\xf6\xe4\x5f\x67\x17\x4b\x09"
4399 "\x85\x62\x82\x70\x18\xe2\x9a\x78"
4400 "\xe2\x62\xbd\xb4\xf1\x42\xc6\xfb"
4401 "\x08\xd0\xbd\xeb\x4e\x09\xf2\xc8"
4402 "\x1e\xdc\x3d\x32\x21\x56\x9c\x4f"
4403 "\x35\xf3\x61\x06\x72\x84\xc4\x32"
4404 "\xf2\xf1\xfa\x0b\x2f\xc3\xdb\x02"
4405 "\x04\xc2\xde\x57\x64\x60\x8d\xcf"
4406 "\xcb\x86\x5d\x97\x3e\xb1\x9c\x01"
4407 "\xd6\x28\x8f\x99\xbc\x46\xeb\x05"
4408 "\xaf\x7e\xb8\x21\x2a\x56\x85\x1c"
4409 "\xb3\x71\xa0\xde\xca\x96\xf1\x78"
4410 "\x49\xa2\x99\x81\x80\x5c\x01\xf5"
4411 "\xa0\xa2\x56\x63\xe2\x70\x07\xa5"
4412 "\x95\xd6\x85\xeb\x36\x9e\xa9\x51"
4413 "\x66\x56\x5f\x1d\x02\x19\xe2\xf6"
4414 "\x4f\x73\x38\x09\x75\x64\x48\xe0"
4415 "\xf1\x7e\x0e\xe8\x9d\xf9\xed\x94"
4416 "\xfe\x16\x26\x62\x49\x74\xf4\xb0"
4417 "\xd4\xa9\x6c\xb0\xfd\x53\xe9\x81"
4418 "\xe0\x7a\xbf\xcf\xb5\xc4\x01\x81"
4419 "\x79\x99\x77\x01\x3b\xe9\xa2\xb6"
4420 "\xe6\x6a\x8a\x9e\x56\x1c\x8d\x1e"
4421 "\x8f\x06\x55\x2c\x6c\xdc\x92\x87"
4422 "\x64\x3b\x4b\x19\xa1\x13\x64\x1d"
4423 "\x4a\xe9\xc0\x00\xb8\x95\xef\x6b"
4424 "\x1a\x86\x6d\x37\x52\x02\xc2\xe0"
4425 "\xc8\xbb\x42\x0c\x02\x21\x4a\xc9"
4426 "\xef\xa0\x54\xe4\x5e\x16\x53\x81"
4427 "\x70\x62\x10\xaf\xde\xb8\xb5\xd3"
4428 "\xe8\x5e\x6c\xc3\x8a\x3e\x18\x07"
4429 "\xf2\x2f\x7d\xa7\xe1\x3d\x4e\xb4"
4430 "\x26\xa7\xa3\x93\x86\xb2\x04\x1e"
4431 "\x53\x5d\x86\xd6\xde\x65\xca\xe3"
4432 "\x4e\xc1\xcf\xef\xc8\x70\x1b\x83"
4433 "\x13\xdd\x18\x8b\x0d\x76\xd2\xf6"
4434 "\x37\x7a\x93\x7a\x50\x11\x9f\x96"
4435 "\x86\x25\xfd\xac\xdc\xbe\x18\x93"
4436 "\x19\x6b\xec\x58\x4f\xb9\x75\xa7"
4437 "\xdd\x3f\x2f\xec\xc8\x5a\x84\xab"
4438 "\xd5\xe4\x8a\x07\xf6\x4d\x23\xd6"
4439 "\x03\xfb\x03\x6a\xea\x66\xbf\xd4"
4440 "\xb1\x34\xfb\x78\xe9\x55\xdc\x7c"
4441 "\x3d\x9c\xe5\x9a\xac\xc3\x7a\x80"
4442 "\x24\x6d\xa0\xef\x25\x7c\xb7\xea"
4443 "\xce\x4d\x5f\x18\x60\xce\x87\x22"
4444 "\x66\x2f\xd5\xdd\xdd\x02\x21\x75"
4445 "\x82\xa0\x1f\x58\xc6\xd3\x62\xf7"
4446 "\x32\xd8\xaf\x1e\x07\x77\x51\x96"
4447 "\xd5\x6b\x1e\x7e\x80\x02\xe8\x67"
4448 "\xea\x17\x0b\x10\xd2\x3f\x28\x25"
4449 "\x4f\x05\x77\x02\x14\x69\xf0\x2c"
4450 "\xbe\x0c\xf1\x74\x30\xd1\xb9\x9b"
4451 "\xfc\x8c\xbb\x04\x16\xd9\xba\xc3"
4452 "\xbc\x91\x8a\xc4\x30\xa4\xb0\x12"
4453 "\x4c\x21\x87\xcb\xc9\x1d\x16\x96"
4454 "\x07\x6f\x23\x54\xb9\x6f\x79\xe5"
4455 "\x64\xc0\x64\xda\xb1\xae\xdd\x60"
4456 "\x6c\x1a\x9d\xd3\x04\x8e\x45\xb0"
4457 "\x92\x61\xd0\x48\x81\xed\x5e\x1d"
4458 "\xa0\xc9\xa4\x33\xc7\x13\x51\x5d"
4459 "\x7f\x83\x73\xb6\x70\x18\x65\x3e"
4460 "\x2f\x0e\x7a\x12\x39\x98\xab\xd8"
4461 "\x7e\x6f\xa3\xd1\xba\x56\xad\xbd"
4462 "\xf0\x03\x01\x1c\x85\x35\x9f\xeb"
4463 "\x19\x63\xa1\xaf\xfe\x2d\x35\x50"
4464 "\x39\xa0\x65\x7c\x95\x7e\x6b\xfe"
4465 "\xc1\xac\x07\x7c\x98\x4f\xbe\x57"
4466 "\xa7\x22\xec\xe2\x7e\x29\x09\x53"
4467 "\xe8\xbf\xb4\x7e\x3f\x8f\xfc\x14"
4468 "\xce\x54\xf9\x18\x58\xb5\xff\x44"
4469 "\x05\x9d\xce\x1b\xb6\x82\x23\xc8"
4470 "\x2e\xbc\x69\xbb\x4a\x29\x0f\x65"
4471 "\x94\xf0\x63\x06\x0e\xef\x8c\xbd"
4472 "\xff\xfd\xb0\x21\x6e\x57\x05\x75"
4473 "\xda\xd5\xc4\xeb\x8d\x32\xf7\x50"
4474 "\xd3\x6f\x22\xed\x5f\x8e\xa2\x5b"
4475 "\x80\x8c\xc8\x78\x40\x24\x4b\x89"
4476 "\x30\xce\x7a\x97\x0e\xc4\xaf\xef"
4477 "\x9b\xb4\xcd\x66\x74\x14\x04\x2b"
4478 "\xf7\xce\x0b\x1c\x6e\xc2\x78\x8c"
4479 "\xca\xc5\xd0\x1c\x95\x4a\x91\x2d"
4480 "\xa7\x20\xeb\x86\x52\xb7\x67\xd8"
4481 "\x0c\xd6\x04\x14\xde\x51\x74\x75"
4482 "\xe7\x11\xb4\x87\xa3\x3d\x2d\xad"
4483 "\x4f\xef\xa0\x0f\x70\x00\x6d\x13"
4484 "\x19\x1d\x41\x50\xe9\xd8\xf0\x32"
4485 "\x71\xbc\xd3\x11\xf2\xac\xbe\xaf"
4486 "\x75\x46\x65\x4e\x07\x34\x37\xa3"
4487 "\x89\xfe\x75\xd4\x70\x4c\xc6\x3f"
4488 "\x69\x24\x0e\x38\x67\x43\x8c\xde"
4489 "\x06\xb5\xb8\xe7\xc4\xf0\x41\x8f"
4490 "\xf0\xbd\x2f\x0b\xb9\x18\xf8\xde"
4491 "\x64\xb1\xdb\xee\x00\x50\x77\xe1"
4492 "\xc7\xff\xa6\xfa\xdd\x70\xf4\xe3"
4493 "\x93\xe9\x77\x35\x3d\x4b\x2f\x2b"
4494 "\x6d\x55\xf0\xfc\x88\x54\x4e\x89"
4495 "\xc1\x8a\x23\x31\x2d\x14\x2a\xb8"
4496 "\x1b\x15\xdd\x9e\x6e\x7b\xda\x05"
4497 "\x91\x7d\x62\x64\x96\x72\xde\xfc"
4498 "\xc1\xec\xf0\x23\x51\x6f\xdb\x5b"
4499 "\x1d\x08\x57\xce\x09\xb8\xf6\xcd"
4500 "\x8d\x95\xf2\x20\xbf\x0f\x20\x57"
4501 "\x98\x81\x84\x4f\x15\x5c\x76\xe7"
4502 "\x3e\x0a\x3a\x6c\xc4\x8a\xbe\x78"
4503 "\x74\x77\xc3\x09\x4b\x5d\x48\xe4"
4504 "\xc8\xcb\x0b\xea\x17\x28\xcf\xcf"
4505 "\x31\x32\x44\xa4\xe5\x0e\x1a\x98"
4506 "\x94\xc4\xf0\xff\xae\x3e\x44\xe8"
4507 "\xa5\xb3\xb5\x37\x2f\xe8\xaf\x6f"
4508 "\x28\xc1\x37\x5f\x31\xd2\xb9\x33"
4509 "\xb1\xb2\x52\x94\x75\x2c\x29\x59"
4510 "\x06\xc2\x25\xe8\x71\x65\x4e\xed"
4511 "\xc0\x9c\xb1\xbb\x25\xdc\x6c\xe7"
4512 "\x4b\xa5\x7a\x54\x7a\x60\xff\x7a"
4513 "\xe0\x50\x40\x96\x35\x63\xe4\x0b"
4514 "\x76\xbd\xa4\x65\x00\x1b\x57\x88"
4515 "\xae\xed\x39\x88\x42\x11\x3c\xed"
4516 "\x85\x67\x7d\xb9\x68\x82\xe9\x43"
4517 "\x3c\x47\x53\xfa\xe8\xf8\x9f\x1f"
4518 "\x9f\xef\x0f\xf7\x30\xd9\x30\x0e"
4519 "\xb9\x9f\x69\x18\x2f\x7e\xf8\xf8"
4520 "\xf8\x8c\x0f\xd4\x02\x4d\xea\xcd"
4521 "\x0a\x9c\x6f\x71\x6d\x5a\x4c\x60"
4522 "\xce\x20\x56\x32\xc6\xc5\x99\x1f"
4523 "\x09\xe6\x4e\x18\x1a\x15\x13\xa8"
4524 "\x7d\xb1\x6b\xc0\xb2\x6d\xf8\x26"
4525 "\x66\xf8\x3d\x18\x74\x70\x66\x7a"
4526 "\x34\x17\xde\xba\x47\xf1\x06\x18"
4527 "\xcb\xaf\xeb\x4a\x1e\x8f\xa7\x77"
4528 "\xe0\x3b\x78\x62\x66\xc9\x10\xea"
4529 "\x1f\xb7\x29\x0a\x45\xa1\x1d\x1e"
4530 "\x1d\xe2\x65\x61\x50\x9c\xd7\x05"
4531 "\xf2\x0b\x5b\x12\x61\x02\xc8\xe5"
4532 "\x63\x4f\x20\x0c\x07\x17\x33\x5e"
4533 "\x03\x9a\x53\x0f\x2e\x55\xfe\x50"
4534 "\x43\x7d\xd0\xb6\x7e\x5a\xda\xae"
4535 "\x58\xef\x15\xa9\x83\xd9\x46\xb1"
4536 "\x42\xaa\xf5\x02\x6c\xce\x92\x06"
4537 "\x1b\xdb\x66\x45\x91\x79\xc2\x2d"
4538 "\xe6\x53\xd3\x14\xfd\xbb\x44\x63"
4539 "\xc6\xd7\x3d\x7a\x0c\x75\x78\x9d"
4540 "\x5c\xa6\x39\xb3\xe5\x63\xca\x8b"
4541 "\xfe\xd3\xef\x60\x83\xf6\x8e\x70"
4542 "\xb6\x67\xc7\x77\xed\x23\xef\x4c"
4543 "\xf0\xed\x2d\x07\x59\x6f\xc1\x01"
4544 "\x34\x37\x08\xab\xd9\x1f\x09\xb1"
4545 "\xce\x5b\x17\xff\x74\xf8\x9c\xd5"
4546 "\x2c\x56\x39\x79\x0f\x69\x44\x75"
4547 "\x58\x27\x01\xc4\xbf\xa7\xa1\x1d"
4548 "\x90\x17\x77\x86\x5a\x3f\xd9\xd1"
4549 "\x0e\xa0\x10\xf8\xec\x1e\xa5\x7f"
4550 "\x5e\x36\xd1\xe3\x04\x2c\x70\xf7"
4551 "\x8e\xc0\x98\x2f\x6c\x94\x2b\x41"
4552 "\xb7\x60\x00\xb7\x2e\xb8\x02\x8d"
4553 "\xb8\xb0\xd3\x86\xba\x1d\xd7\x90"
4554 "\xd6\xb6\xe1\xfc\xd7\xd8\x28\x06"
4555 "\x63\x9b\xce\x61\x24\x79\xc0\x70"
4556 "\x52\xd0\xb6\xd4\x28\x95\x24\x87"
4557 "\x03\x1f\xb7\x9a\xda\xa3\xfb\x52"
4558 "\x5b\x68\xe7\x4c\x8c\x24\xe1\x42"
4559 "\xf7\xd5\xfd\xad\x06\x32\x9f\xba"
4560 "\xc1\xfc\xdd\xc6\xfc\xfc\xb3\x38"
4561 "\x74\x56\x58\x40\x02\x37\x52\x2c"
4562 "\x55\xcc\xb3\x9e\x7a\xe9\xd4\x38"
4563 "\x41\x5e\x0c\x35\xe2\x11\xd1\x13"
4564 "\xf8\xb7\x8d\x72\x6b\x22\x2a\xb0"
4565 "\xdb\x08\xba\x35\xb9\x3f\xc8\xd3"
4566 "\x24\x90\xec\x58\xd2\x09\xc7\x2d"
4567 "\xed\x38\x80\x36\x72\x43\x27\x49"
4568 "\x4a\x80\x8a\xa2\xe8\xd3\xda\x30"
4569 "\x7d\xb6\x82\x37\x86\x92\x86\x3e"
4570 "\x08\xb2\x28\x5a\x55\x44\x24\x7d"
4571 "\x40\x48\x8a\xb6\x89\x58\x08\xa0"
4572 "\xd6\x6d\x3a\x17\xbf\xf6\x54\xa2"
4573 "\xf5\xd3\x8c\x0f\x78\x12\x57\x8b"
4574 "\xd5\xc2\xfd\x58\x5b\x7f\x38\xe3"
4575 "\xcc\xb7\x7c\x48\xb3\x20\xe8\x81"
4576 "\x14\x32\x45\x05\xe0\xdb\x9f\x75"
4577 "\x85\xb4\x6a\xfc\x95\xe3\x54\x22"
4578 "\x12\xee\x30\xfe\xd8\x30\xef\x34"
4579 "\x50\xab\x46\x30\x98\x2f\xb7\xc0"
4580 "\x15\xa2\x83\xb6\xf2\x06\x21\xa2"
4581 "\xc3\x26\x37\x14\xd1\x4d\xb5\x10"
4582 "\x52\x76\x4d\x6a\xee\xb5\x2b\x15"
4583 "\xb7\xf9\x51\xe8\x2a\xaf\xc7\xfa"
4584 "\x77\xaf\xb0\x05\x4d\xd1\x68\x8e"
4585 "\x74\x05\x9f\x9d\x93\xa5\x3e\x7f"
4586 "\x4e\x5f\x9d\xcb\x09\xc7\x83\xe3"
4587 "\x02\x9d\x27\x1f\xef\x85\x05\x8d"
4588 "\xec\x55\x88\x0f\x0d\x7c\x4c\xe8"
4589 "\xa1\x75\xa0\xd8\x06\x47\x14\xef"
4590 "\xaa\x61\xcf\x26\x15\xad\xd8\xa3"
4591 "\xaa\x75\xf2\x78\x4a\x5a\x61\xdf"
4592 "\x8b\xc7\x04\xbc\xb2\x32\xd2\x7e"
4593 "\x42\xee\xb4\x2f\x51\xff\x7b\x2e"
4594 "\xd3\x02\xe8\xdc\x5d\x0d\x50\xdc"
4595 "\xae\xb7\x46\xf9\xa8\xe6\xd0\x16"
4596 "\xcc\xe6\x2c\x81\xc7\xad\xe9\xf0"
4597 "\x05\x72\x6d\x3d\x0a\x7a\xa9\x02"
4598 "\xac\x82\x93\x6e\xb6\x1c\x28\xfc"
4599 "\x44\x12\xfb\x73\x77\xd4\x13\x39"
4600 "\x29\x88\x8a\xf3\x5c\xa6\x36\xa0"
4601 "\x2a\xed\x7e\xb1\x1d\xd6\x4c\x6b"
4602 "\x41\x01\x18\x5d\x5d\x07\x97\xa6"
4603 "\x4b\xef\x31\x18\xea\xac\xb1\x84"
4604 "\x21\xed\xda\x86",
Tan Swee Henga773edb2007-11-30 00:36:07 +11004605 .rlen = 4100,
Joy Latten23e353c2007-10-23 08:50:32 +08004606 },
4607};
4608
4609static struct cipher_testvec aes_ctr_dec_tv_template[] = {
4610 { /* From RFC 3686 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004611 .key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
4612 "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
4613 "\x00\x00\x00\x30",
Joy Latten23e353c2007-10-23 08:50:32 +08004614 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004615 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
4616 .input = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
4617 "\x2d\x61\x75\xa3\x26\x13\x11\xb8",
Joy Latten23e353c2007-10-23 08:50:32 +08004618 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004619 .result = "Single block msg",
Joy Latten23e353c2007-10-23 08:50:32 +08004620 .rlen = 16,
4621 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004622 .key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
4623 "\x43\xd6\xce\x1f\x32\x53\x91\x63"
4624 "\x00\x6c\xb6\xdb",
Joy Latten23e353c2007-10-23 08:50:32 +08004625 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004626 .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
4627 .input = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
4628 "\x79\x0d\x41\xee\x8e\xda\xd3\x88"
4629 "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
4630 "\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
4631 .ilen = 32,
4632 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
4633 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4634 "\x10\x11\x12\x13\x14\x15\x16\x17"
4635 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Joy Latten23e353c2007-10-23 08:50:32 +08004636 .rlen = 32,
4637 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004638 .key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
4639 "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
4640 "\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
4641 "\x00\x00\x00\x48",
4642 .klen = 28,
4643 .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
4644 .input = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
4645 "\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
4646 .ilen = 16,
4647 .result = "Single block msg",
Joy Latten23e353c2007-10-23 08:50:32 +08004648 .rlen = 16,
4649 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004650 .key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
4651 "\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
4652 "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
4653 "\x00\x96\xb0\x3b",
Joy Latten23e353c2007-10-23 08:50:32 +08004654 .klen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004655 .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
4656 .input = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
4657 "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
4658 "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
4659 "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
Joy Latten23e353c2007-10-23 08:50:32 +08004660 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004661 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
4662 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4663 "\x10\x11\x12\x13\x14\x15\x16\x17"
4664 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
4665 .rlen = 32,
Joy Latten23e353c2007-10-23 08:50:32 +08004666 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004667 .key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
4668 "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
4669 "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
4670 "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
4671 "\x00\x00\x00\x60",
Joy Latten23e353c2007-10-23 08:50:32 +08004672 .klen = 36,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004673 .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
4674 .input = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
4675 "\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
Joy Latten23e353c2007-10-23 08:50:32 +08004676 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004677 .result = "Single block msg",
4678 .rlen = 16,
Joy Latten23e353c2007-10-23 08:50:32 +08004679 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004680 .key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
4681 "\x07\x96\x36\x58\x79\xef\xf8\x86"
4682 "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
4683 "\x4b\x50\x59\x0c\x87\xa2\x38\x84"
4684 "\x00\xfa\xac\x24",
4685 .klen = 36,
4686 .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
4687 .input = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
4688 "\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
4689 "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
4690 "\x55\x30\x83\x1d\x93\x44\xaf\x1c",
Joy Latten23e353c2007-10-23 08:50:32 +08004691 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004692 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
4693 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
4694 "\x10\x11\x12\x13\x14\x15\x16\x17"
4695 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Joy Latten23e353c2007-10-23 08:50:32 +08004696 .rlen = 32,
4697 },
4698};
4699
Mikko Herranen28db8e32007-11-26 22:24:11 +08004700static struct aead_testvec aes_gcm_enc_tv_template[] = {
4701 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004702 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004703 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004704 .result = "\x58\xe2\xfc\xce\xfa\x7e\x30\x61"
4705 "\x36\x7f\x1d\x57\xa4\xe7\x45\x5a",
Herbert Xu6160b282007-12-04 19:17:50 +11004706 .rlen = 16,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004707 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004708 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004709 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004710 .input = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004711 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004712 .result = "\x03\x88\xda\xce\x60\xb6\xa3\x92"
4713 "\xf3\x28\xc2\xb9\x71\xb2\xfe\x78"
4714 "\xab\x6e\x47\xd4\x2c\xec\x13\xbd"
4715 "\xf5\x3a\x67\xb2\x12\x57\xbd\xdf",
Herbert Xu6160b282007-12-04 19:17:50 +11004716 .rlen = 32,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004717 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004718 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4719 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004720 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004721 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4722 "\xde\xca\xf8\x88",
4723 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4724 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4725 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4726 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4727 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4728 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4729 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4730 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004731 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004732 .result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
4733 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
4734 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
4735 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
4736 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
4737 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
4738 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
4739 "\x3d\x58\xe0\x91\x47\x3f\x59\x85"
4740 "\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
4741 "\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
Herbert Xu6160b282007-12-04 19:17:50 +11004742 .rlen = 80,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004743 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004744 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4745 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004746 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004747 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4748 "\xde\xca\xf8\x88",
4749 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4750 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4751 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4752 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4753 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4754 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4755 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4756 "\xba\x63\x7b\x39",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004757 .ilen = 60,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004758 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4759 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4760 "\xab\xad\xda\xd2",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004761 .alen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004762 .result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
4763 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
4764 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
4765 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
4766 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
4767 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
4768 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
4769 "\x3d\x58\xe0\x91"
4770 "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
4771 "\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
Herbert Xu6160b282007-12-04 19:17:50 +11004772 .rlen = 76,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004773 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004774 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004775 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004776 .result = "\xcd\x33\xb2\x8a\xc7\x73\xf7\x4b"
4777 "\xa0\x0e\xd1\xf3\x12\x57\x24\x35",
Herbert Xu6160b282007-12-04 19:17:50 +11004778 .rlen = 16,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004779 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004780 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004781 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004782 .input = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004783 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004784 .result = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
4785 "\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
4786 "\x2f\xf5\x8d\x80\x03\x39\x27\xab"
4787 "\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
Herbert Xu6160b282007-12-04 19:17:50 +11004788 .rlen = 32,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004789 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004790 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4791 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
4792 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004793 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004794 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4795 "\xde\xca\xf8\x88",
4796 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4797 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4798 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4799 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4800 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4801 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4802 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4803 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004804 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004805 .result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
4806 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
4807 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
4808 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
4809 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
4810 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
4811 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
4812 "\xcc\xda\x27\x10\xac\xad\xe2\x56"
4813 "\x99\x24\xa7\xc8\x58\x73\x36\xbf"
4814 "\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
Herbert Xu6160b282007-12-04 19:17:50 +11004815 .rlen = 80,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004816 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004817 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4818 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
4819 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004820 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004821 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4822 "\xde\xca\xf8\x88",
4823 .input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4824 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4825 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4826 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4827 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4828 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4829 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4830 "\xba\x63\x7b\x39",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004831 .ilen = 60,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004832 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4833 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4834 "\xab\xad\xda\xd2",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004835 .alen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004836 .result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
4837 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
4838 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
4839 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
4840 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
4841 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
4842 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
4843 "\xcc\xda\x27\x10"
4844 "\x25\x19\x49\x8e\x80\xf1\x47\x8f"
4845 "\x37\xba\x55\xbd\x6d\x27\x61\x8c",
Herbert Xu6160b282007-12-04 19:17:50 +11004846 .rlen = 76,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004847 .np = 2,
4848 .tap = { 32, 28 },
4849 .anp = 2,
4850 .atap = { 8, 12 }
4851 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004852 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004853 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004854 .result = "\x53\x0f\x8a\xfb\xc7\x45\x36\xb9"
4855 "\xa9\x63\xb4\xf1\xc4\xcb\x73\x8b",
Herbert Xu6160b282007-12-04 19:17:50 +11004856 .rlen = 16,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004857 }
4858};
4859
4860static struct aead_testvec aes_gcm_dec_tv_template[] = {
4861 { /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004862 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004863 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004864 .input = "\xce\xa7\x40\x3d\x4d\x60\x6b\x6e"
4865 "\x07\x4e\xc5\xd3\xba\xf3\x9d\x18"
4866 "\xd0\xd1\xc8\xa7\x99\x99\x6b\xf0"
4867 "\x26\x5b\x98\xb5\xd4\x8a\xb9\x19",
Herbert Xu6160b282007-12-04 19:17:50 +11004868 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004869 .result = zeroed_string,
Herbert Xu6160b282007-12-04 19:17:50 +11004870 .rlen = 16,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004871 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004872 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4873 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
4874 "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4875 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004876 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004877 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4878 "\xde\xca\xf8\x88",
4879 .input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
4880 "\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
4881 "\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
4882 "\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
4883 "\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
4884 "\xa7\xb0\x8b\x10\x56\x82\x88\x38"
4885 "\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
4886 "\xbc\xc9\xf6\x62\x89\x80\x15\xad"
4887 "\xb0\x94\xda\xc5\xd9\x34\x71\xbd"
4888 "\xec\x1a\x50\x22\x70\xe3\xcc\x6c",
Herbert Xu6160b282007-12-04 19:17:50 +11004889 .ilen = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004890 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4891 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4892 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4893 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4894 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4895 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4896 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4897 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004898 .rlen = 64,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004899 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004900 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4901 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
4902 "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4903 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004904 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004905 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4906 "\xde\xca\xf8\x88",
4907 .input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
4908 "\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
4909 "\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
4910 "\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
4911 "\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
4912 "\xa7\xb0\x8b\x10\x56\x82\x88\x38"
4913 "\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
4914 "\xbc\xc9\xf6\x62"
4915 "\x76\xfc\x6e\xce\x0f\x4e\x17\x68"
4916 "\xcd\xdf\x88\x53\xbb\x2d\x55\x1b",
Herbert Xu6160b282007-12-04 19:17:50 +11004917 .ilen = 76,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004918 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4919 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4920 "\xab\xad\xda\xd2",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004921 .alen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004922 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4923 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4924 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4925 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4926 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4927 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4928 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4929 "\xba\x63\x7b\x39",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004930 .rlen = 60,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004931 .np = 2,
Herbert Xu6160b282007-12-04 19:17:50 +11004932 .tap = { 48, 28 },
Mikko Herranen28db8e32007-11-26 22:24:11 +08004933 .anp = 3,
4934 .atap = { 8, 8, 4 }
4935 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004936 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4937 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004938 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004939 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4940 "\xde\xca\xf8\x88",
4941 .input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
4942 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
4943 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
4944 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
4945 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
4946 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
4947 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
4948 "\x3d\x58\xe0\x91\x47\x3f\x59\x85"
4949 "\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
4950 "\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
Herbert Xu6160b282007-12-04 19:17:50 +11004951 .ilen = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004952 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4953 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4954 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4955 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4956 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4957 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4958 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4959 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004960 .rlen = 64,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004961 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004962 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
4963 "\x6d\x6a\x8f\x94\x67\x30\x83\x08",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004964 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004965 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
4966 "\xde\xca\xf8\x88",
4967 .input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
4968 "\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
4969 "\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
4970 "\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
4971 "\x21\xd5\x14\xb2\x54\x66\x93\x1c"
4972 "\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
4973 "\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
4974 "\x3d\x58\xe0\x91"
4975 "\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
4976 "\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
Herbert Xu6160b282007-12-04 19:17:50 +11004977 .ilen = 76,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004978 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4979 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
4980 "\xab\xad\xda\xd2",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004981 .alen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004982 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
4983 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
4984 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
4985 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
4986 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
4987 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
4988 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
4989 "\xba\x63\x7b\x39",
Mikko Herranen28db8e32007-11-26 22:24:11 +08004990 .rlen = 60,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004991 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004992 .key = zeroed_string,
Mikko Herranen28db8e32007-11-26 22:24:11 +08004993 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004994 .input = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
4995 "\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
4996 "\x2f\xf5\x8d\x80\x03\x39\x27\xab"
4997 "\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
Herbert Xu6160b282007-12-04 19:17:50 +11004998 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08004999 .result = zeroed_string,
Herbert Xu6160b282007-12-04 19:17:50 +11005000 .rlen = 16,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005001 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005002 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5003 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5004 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005005 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005006 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5007 "\xde\xca\xf8\x88",
5008 .input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5009 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5010 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5011 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5012 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5013 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5014 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5015 "\xcc\xda\x27\x10\xac\xad\xe2\x56"
5016 "\x99\x24\xa7\xc8\x58\x73\x36\xbf"
5017 "\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
Herbert Xu6160b282007-12-04 19:17:50 +11005018 .ilen = 80,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005019 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5020 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5021 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5022 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5023 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5024 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5025 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5026 "\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005027 .rlen = 64,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005028 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005029 .key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
5030 "\x6d\x6a\x8f\x94\x67\x30\x83\x08"
5031 "\xfe\xff\xe9\x92\x86\x65\x73\x1c",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005032 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005033 .iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
5034 "\xde\xca\xf8\x88",
5035 .input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
5036 "\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
5037 "\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
5038 "\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
5039 "\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
5040 "\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
5041 "\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
5042 "\xcc\xda\x27\x10"
5043 "\x25\x19\x49\x8e\x80\xf1\x47\x8f"
5044 "\x37\xba\x55\xbd\x6d\x27\x61\x8c",
Herbert Xu6160b282007-12-04 19:17:50 +11005045 .ilen = 76,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005046 .assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5047 "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
5048 "\xab\xad\xda\xd2",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005049 .alen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005050 .result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
5051 "\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
5052 "\x86\xa7\xa9\x53\x15\x34\xf7\xda"
5053 "\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
5054 "\x1c\x3c\x0c\x95\x95\x68\x09\x53"
5055 "\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
5056 "\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
5057 "\xba\x63\x7b\x39",
Mikko Herranen28db8e32007-11-26 22:24:11 +08005058 .rlen = 60,
Mikko Herranen28db8e32007-11-26 22:24:11 +08005059 }
5060};
5061
Joy Latten93cc74e2007-12-12 20:24:22 +08005062static struct aead_testvec aes_ccm_enc_tv_template[] = {
5063 { /* From RFC 3610 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005064 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5065 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005066 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005067 .iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
5068 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5069 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
Joy Latten93cc74e2007-12-12 20:24:22 +08005070 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005071 .input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5072 "\x10\x11\x12\x13\x14\x15\x16\x17"
5073 "\x18\x19\x1a\x1b\x1c\x1d\x1e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005074 .ilen = 23,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005075 .result = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
5076 "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
5077 "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
5078 "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
Joy Latten93cc74e2007-12-12 20:24:22 +08005079 .rlen = 31,
5080 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005081 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5082 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005083 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005084 .iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
5085 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5086 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5087 "\x08\x09\x0a\x0b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005088 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005089 .input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5090 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5091 "\x1c\x1d\x1e\x1f",
Joy Latten93cc74e2007-12-12 20:24:22 +08005092 .ilen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005093 .result = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
5094 "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
5095 "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
5096 "\x7d\x9c\x2d\x93",
Joy Latten93cc74e2007-12-12 20:24:22 +08005097 .rlen = 28,
5098 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005099 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5100 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005101 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005102 .iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
5103 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5104 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
Joy Latten93cc74e2007-12-12 20:24:22 +08005105 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005106 .input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5107 "\x10\x11\x12\x13\x14\x15\x16\x17"
5108 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
5109 "\x20",
Joy Latten93cc74e2007-12-12 20:24:22 +08005110 .ilen = 25,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005111 .result = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
5112 "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
5113 "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
5114 "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
5115 "\x7e\x5f\x4e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005116 .rlen = 35,
5117 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005118 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5119 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005120 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005121 .iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
5122 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5123 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5124 "\x08\x09\x0a\x0b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005125 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005126 .input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5127 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5128 "\x1c\x1d\x1e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005129 .ilen = 19,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005130 .result = "\x07\x34\x25\x94\x15\x77\x85\x15"
5131 "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
5132 "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
5133 "\x4d\x99\x99\x88\xdd",
Joy Latten93cc74e2007-12-12 20:24:22 +08005134 .rlen = 29,
5135 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005136 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5137 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005138 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005139 .iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
5140 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5141 .assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
Joy Latten93cc74e2007-12-12 20:24:22 +08005142 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005143 .input = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
5144 "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
5145 "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
Joy Latten93cc74e2007-12-12 20:24:22 +08005146 .ilen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005147 .result = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
5148 "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
5149 "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
5150 "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
Joy Latten93cc74e2007-12-12 20:24:22 +08005151 .rlen = 32,
5152 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005153 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5154 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005155 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005156 .iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
5157 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5158 .assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
5159 "\x20\xea\x60\xc0",
Joy Latten93cc74e2007-12-12 20:24:22 +08005160 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005161 .input = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
5162 "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
5163 "\x3a\x80\x3b\xa8\x7f",
Joy Latten93cc74e2007-12-12 20:24:22 +08005164 .ilen = 21,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005165 .result = "\x00\x97\x69\xec\xab\xdf\x48\x62"
5166 "\x55\x94\xc5\x92\x51\xe6\x03\x57"
5167 "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
5168 "\x5a\xe0\x70\x45\x51",
Joy Latten93cc74e2007-12-12 20:24:22 +08005169 .rlen = 29,
5170 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005171 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5172 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005173 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005174 .iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
5175 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5176 .assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
Joy Latten93cc74e2007-12-12 20:24:22 +08005177 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005178 .input = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
5179 "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
5180 "\x98\x09\xd6\x7d\xbe\xdd\x18",
Joy Latten93cc74e2007-12-12 20:24:22 +08005181 .ilen = 23,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005182 .result = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
5183 "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
5184 "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
5185 "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
5186 "\xba",
Joy Latten93cc74e2007-12-12 20:24:22 +08005187 .rlen = 33,
5188 },
5189};
5190
5191static struct aead_testvec aes_ccm_dec_tv_template[] = {
5192 { /* From RFC 3610 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005193 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5194 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005195 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005196 .iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
5197 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5198 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
Joy Latten93cc74e2007-12-12 20:24:22 +08005199 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005200 .input = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
5201 "\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
5202 "\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
5203 "\xe8\xd1\x2c\xfd\xf9\x26\xe0",
Joy Latten93cc74e2007-12-12 20:24:22 +08005204 .ilen = 31,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005205 .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5206 "\x10\x11\x12\x13\x14\x15\x16\x17"
5207 "\x18\x19\x1a\x1b\x1c\x1d\x1e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005208 .rlen = 23,
5209 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005210 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5211 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005212 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005213 .iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
5214 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5215 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5216 "\x08\x09\x0a\x0b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005217 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005218 .input = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
5219 "\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
5220 "\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
5221 "\x7d\x9c\x2d\x93",
Joy Latten93cc74e2007-12-12 20:24:22 +08005222 .ilen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005223 .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5224 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5225 "\x1c\x1d\x1e\x1f",
Joy Latten93cc74e2007-12-12 20:24:22 +08005226 .rlen = 20,
5227 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005228 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5229 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005230 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005231 .iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
5232 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5233 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
Joy Latten93cc74e2007-12-12 20:24:22 +08005234 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005235 .input = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
5236 "\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
5237 "\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
5238 "\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
5239 "\x7e\x5f\x4e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005240 .ilen = 35,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005241 .result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
5242 "\x10\x11\x12\x13\x14\x15\x16\x17"
5243 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
5244 "\x20",
Joy Latten93cc74e2007-12-12 20:24:22 +08005245 .rlen = 25,
5246 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005247 .key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
5248 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
Joy Latten93cc74e2007-12-12 20:24:22 +08005249 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005250 .iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
5251 "\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
5252 .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
5253 "\x08\x09\x0a\x0b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005254 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005255 .input = "\x07\x34\x25\x94\x15\x77\x85\x15"
5256 "\x2b\x07\x40\x98\x33\x0a\xbb\x14"
5257 "\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
5258 "\x4d\x99\x99\x88\xdd",
Joy Latten93cc74e2007-12-12 20:24:22 +08005259 .ilen = 29,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005260 .result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
5261 "\x14\x15\x16\x17\x18\x19\x1a\x1b"
5262 "\x1c\x1d\x1e",
Joy Latten93cc74e2007-12-12 20:24:22 +08005263 .rlen = 19,
5264 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005265 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5266 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005267 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005268 .iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
5269 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5270 .assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
Joy Latten93cc74e2007-12-12 20:24:22 +08005271 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005272 .input = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
5273 "\xa0\x72\x6c\x55\xd3\x78\x06\x12"
5274 "\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
5275 "\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
Joy Latten93cc74e2007-12-12 20:24:22 +08005276 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005277 .result = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
5278 "\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
5279 "\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
Joy Latten93cc74e2007-12-12 20:24:22 +08005280 .rlen = 24,
5281 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005282 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5283 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005284 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005285 .iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
5286 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5287 .assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
5288 "\x20\xea\x60\xc0",
Joy Latten93cc74e2007-12-12 20:24:22 +08005289 .alen = 12,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005290 .input = "\x00\x97\x69\xec\xab\xdf\x48\x62"
5291 "\x55\x94\xc5\x92\x51\xe6\x03\x57"
5292 "\x22\x67\x5e\x04\xc8\x47\x09\x9e"
5293 "\x5a\xe0\x70\x45\x51",
Joy Latten93cc74e2007-12-12 20:24:22 +08005294 .ilen = 29,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005295 .result = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
5296 "\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
5297 "\x3a\x80\x3b\xa8\x7f",
Joy Latten93cc74e2007-12-12 20:24:22 +08005298 .rlen = 21,
5299 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005300 .key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
5301 "\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
Joy Latten93cc74e2007-12-12 20:24:22 +08005302 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005303 .iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
5304 "\x3c\x96\x96\x76\x6c\xfa\x00\x00",
5305 .assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
Joy Latten93cc74e2007-12-12 20:24:22 +08005306 .alen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005307 .input = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
5308 "\xdb\x38\x6a\x99\xac\x1a\xef\x23"
5309 "\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
5310 "\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
5311 "\xba",
Joy Latten93cc74e2007-12-12 20:24:22 +08005312 .ilen = 33,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005313 .result = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
5314 "\x8e\x5e\x67\x01\xc9\x17\x87\x65"
5315 "\x98\x09\xd6\x7d\xbe\xdd\x18",
Joy Latten93cc74e2007-12-12 20:24:22 +08005316 .rlen = 23,
5317 },
5318};
5319
Linus Torvalds1da177e2005-04-16 15:20:36 -07005320/* Cast5 test vectors from RFC 2144 */
5321#define CAST5_ENC_TEST_VECTORS 3
5322#define CAST5_DEC_TEST_VECTORS 3
5323
Herbert Xuef2736f2005-06-22 13:26:03 -07005324static struct cipher_testvec cast5_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005325 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005326 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5327 "\x23\x45\x67\x89\x34\x56\x78\x9a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005328 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005329 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005330 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005331 .result = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005332 .rlen = 8,
5333 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005334 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5335 "\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005336 .klen = 10,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005337 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005338 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005339 .result = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005340 .rlen = 8,
5341 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005342 .key = "\x01\x23\x45\x67\x12",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005343 .klen = 5,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005344 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005345 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005346 .result = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005347 .rlen = 8,
5348 },
5349};
5350
Herbert Xuef2736f2005-06-22 13:26:03 -07005351static struct cipher_testvec cast5_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005352 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005353 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5354 "\x23\x45\x67\x89\x34\x56\x78\x9a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005355 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005356 .input = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005357 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005358 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005359 .rlen = 8,
5360 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005361 .key = "\x01\x23\x45\x67\x12\x34\x56\x78"
5362 "\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005363 .klen = 10,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005364 .input = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005365 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005366 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005367 .rlen = 8,
5368 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005369 .key = "\x01\x23\x45\x67\x12",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005370 .klen = 5,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005371 .input = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005372 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005373 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005374 .rlen = 8,
5375 },
5376};
5377
Herbert Xuef2736f2005-06-22 13:26:03 -07005378/*
5379 * ARC4 test vectors from OpenSSL
Linus Torvalds1da177e2005-04-16 15:20:36 -07005380 */
5381#define ARC4_ENC_TEST_VECTORS 7
5382#define ARC4_DEC_TEST_VECTORS 7
5383
Herbert Xuef2736f2005-06-22 13:26:03 -07005384static struct cipher_testvec arc4_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005385 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005386 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005387 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005388 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005389 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005390 .result = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005391 .rlen = 8,
5392 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005393 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005394 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005395 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005396 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005397 .result = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005398 .rlen = 8,
5399 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005400 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005401 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005402 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005403 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005404 .result = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005405 .rlen = 8,
5406 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005407 .key = "\xef\x01\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005408 .klen = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005409 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
5410 "\x00\x00\x00\x00\x00\x00\x00\x00"
5411 "\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005412 .ilen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005413 .result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5414 "\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
5415 "\x36\xb6\x78\x58",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005416 .rlen = 20,
5417 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005418 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005419 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005420 .input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5421 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5422 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5423 "\x12\x34\x56\x78",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005424 .ilen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005425 .result = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
5426 "\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
5427 "\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
5428 "\x40\x01\x1e\xcf",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005429 .rlen = 28,
5430 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005431 .key = "\xef\x01\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005432 .klen = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005433 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
5434 "\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005435 .ilen = 10,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005436 .result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5437 "\xbd\x61",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005438 .rlen = 10,
5439 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005440 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
5441 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005442 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005443 .input = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005444 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005445 .result = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005446 .rlen = 8,
5447 },
5448};
5449
Herbert Xuef2736f2005-06-22 13:26:03 -07005450static struct cipher_testvec arc4_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005451 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005452 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005453 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005454 .input = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005455 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005456 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005457 .rlen = 8,
5458 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005459 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005460 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005461 .input = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005462 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005463 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005464 .rlen = 8,
5465 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005466 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005467 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005468 .input = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005469 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005470 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005471 .rlen = 8,
5472 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005473 .key = "\xef\x01\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005474 .klen = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005475 .input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5476 "\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
5477 "\x36\xb6\x78\x58",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005478 .ilen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005479 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
5480 "\x00\x00\x00\x00\x00\x00\x00\x00"
5481 "\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005482 .rlen = 20,
5483 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005484 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005485 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005486 .input = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
5487 "\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
5488 "\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
5489 "\x40\x01\x1e\xcf",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005490 .ilen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005491 .result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5492 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5493 "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
5494 "\x12\x34\x56\x78",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005495 .rlen = 28,
5496 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005497 .key = "\xef\x01\x23\x45",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005498 .klen = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005499 .input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
5500 "\xbd\x61",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005501 .ilen = 10,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005502 .result = "\x00\x00\x00\x00\x00\x00\x00\x00"
5503 "\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005504 .rlen = 10,
5505 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005506 .key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
5507 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005508 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005509 .input = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005510 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005511 .result = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005512 .rlen = 8,
5513 },
5514};
5515
Herbert Xuef2736f2005-06-22 13:26:03 -07005516/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07005517 * TEA test vectors
5518 */
5519#define TEA_ENC_TEST_VECTORS 4
5520#define TEA_DEC_TEST_VECTORS 4
5521
Herbert Xuef2736f2005-06-22 13:26:03 -07005522static struct cipher_testvec tea_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005523 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005524 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07005525 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005526 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07005527 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005528 .result = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005529 .rlen = 8,
5530 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005531 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5532 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005533 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005534 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005535 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005536 .result = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005537 .rlen = 8,
5538 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005539 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5540 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005541 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005542 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
5543 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005544 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005545 .result = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
5546 "\xdd\x89\xa1\x25\x04\x21\xdf\x95",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005547 .rlen = 16,
5548 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005549 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5550 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005551 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005552 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
5553 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5554 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5555 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005556 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005557 .result = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
5558 "\x94\x18\x95\x91\xa9\xfc\x49\xf8"
5559 "\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
5560 "\x07\x89\x73\xc2\x45\x92\xc6\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005561 .rlen = 32,
5562 }
5563};
5564
Herbert Xuef2736f2005-06-22 13:26:03 -07005565static struct cipher_testvec tea_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005566 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005567 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07005568 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005569 .input = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005570 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005571 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07005572 .rlen = 8,
5573 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005574 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5575 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005576 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005577 .input = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005578 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005579 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005580 .rlen = 8,
5581 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005582 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5583 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005584 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005585 .input = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
5586 "\xdd\x89\xa1\x25\x04\x21\xdf\x95",
Herbert Xuef2736f2005-06-22 13:26:03 -07005587 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005588 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
5589 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005590 .rlen = 16,
5591 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005592 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5593 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005594 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005595 .input = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
5596 "\x94\x18\x95\x91\xa9\xfc\x49\xf8"
5597 "\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
5598 "\x07\x89\x73\xc2\x45\x92\xc6\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005599 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005600 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
5601 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5602 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5603 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005604 .rlen = 32,
5605 }
5606};
5607
Herbert Xuef2736f2005-06-22 13:26:03 -07005608/*
5609 * XTEA test vectors
Linus Torvalds1da177e2005-04-16 15:20:36 -07005610 */
5611#define XTEA_ENC_TEST_VECTORS 4
5612#define XTEA_DEC_TEST_VECTORS 4
5613
Herbert Xuef2736f2005-06-22 13:26:03 -07005614static struct cipher_testvec xtea_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005615 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005616 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07005617 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005618 .input = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07005619 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005620 .result = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005621 .rlen = 8,
5622 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005623 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5624 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005625 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005626 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005627 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005628 .result = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005629 .rlen = 8,
5630 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005631 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5632 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005633 .klen = 16,
Sebastian Siewiorf0df30b2008-03-13 20:29:07 +08005634 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005635 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005636 .ilen = 16,
Sebastian Siewiorf0df30b2008-03-13 20:29:07 +08005637 .result = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
5638 "\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005639 .rlen = 16,
5640 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005641 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5642 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005643 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005644 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
5645 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5646 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5647 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005648 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005649 .result = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
5650 "\x86\xff\x6f\xd0\xe3\x87\x70\x07"
5651 "\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
5652 "\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005653 .rlen = 32,
5654 }
5655};
5656
Herbert Xuef2736f2005-06-22 13:26:03 -07005657static struct cipher_testvec xtea_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005658 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005659 .key = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07005660 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005661 .input = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005662 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005663 .result = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07005664 .rlen = 8,
5665 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005666 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
5667 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005668 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005669 .input = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005670 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005671 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005672 .rlen = 8,
5673 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005674 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
5675 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005676 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005677 .input = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
5678 "\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005679 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005680 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
5681 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005682 .rlen = 16,
5683 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005684 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
5685 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005686 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005687 .input = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
5688 "\x86\xff\x6f\xd0\xe3\x87\x70\x07"
5689 "\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
5690 "\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005691 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005692 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
5693 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
5694 "\x79\x6f\x75\x21\x21\x21\x20\x72"
5695 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005696 .rlen = 32,
5697 }
5698};
5699
5700/*
5701 * KHAZAD test vectors.
5702 */
5703#define KHAZAD_ENC_TEST_VECTORS 5
5704#define KHAZAD_DEC_TEST_VECTORS 5
5705
Herbert Xuef2736f2005-06-22 13:26:03 -07005706static struct cipher_testvec khazad_enc_tv_template[] = {
5707 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005708 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
5709 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005710 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005711 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005712 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005713 .result = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005714 .rlen = 8,
5715 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005716 .key = "\x38\x38\x38\x38\x38\x38\x38\x38"
5717 "\x38\x38\x38\x38\x38\x38\x38\x38",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005718 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005719 .input = "\x38\x38\x38\x38\x38\x38\x38\x38",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005720 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005721 .result = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005722 .rlen = 8,
5723 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005724 .key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
5725 "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005726 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005727 .input = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005728 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005729 .result = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005730 .rlen = 8,
5731 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005732 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5733 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005734 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005735 .input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005736 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005737 .result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005738 .rlen = 8,
5739 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005740 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5741 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005742 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005743 .input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5744 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005745 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005746 .result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
5747 "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005748 .rlen = 16,
5749 },
5750};
5751
Herbert Xuef2736f2005-06-22 13:26:03 -07005752static struct cipher_testvec khazad_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07005753 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005754 .key = "\x80\x00\x00\x00\x00\x00\x00\x00"
5755 "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005756 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005757 .input = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005758 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005759 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005760 .rlen = 8,
5761 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005762 .key = "\x38\x38\x38\x38\x38\x38\x38\x38"
5763 "\x38\x38\x38\x38\x38\x38\x38\x38",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005764 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005765 .input = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005766 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005767 .result = "\x38\x38\x38\x38\x38\x38\x38\x38",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005768 .rlen = 8,
5769 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005770 .key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
5771 "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005772 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005773 .input = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005774 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005775 .result = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005776 .rlen = 8,
5777 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005778 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5779 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005780 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005781 .input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005782 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005783 .result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005784 .rlen = 8,
5785 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005786 .key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5787 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005788 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005789 .input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
5790 "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005791 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005792 .result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
5793 "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005794 .rlen = 16,
5795 },
5796};
5797
5798/*
5799 * Anubis test vectors.
5800 */
5801
5802#define ANUBIS_ENC_TEST_VECTORS 5
5803#define ANUBIS_DEC_TEST_VECTORS 5
5804#define ANUBIS_CBC_ENC_TEST_VECTORS 2
5805#define ANUBIS_CBC_DEC_TEST_VECTORS 2
5806
5807static struct cipher_testvec anubis_enc_tv_template[] = {
5808 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005809 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5810 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005811 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005812 .input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5813 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005814 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005815 .result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
5816 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005817 .rlen = 16,
5818 }, {
5819
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005820 .key = "\x03\x03\x03\x03\x03\x03\x03\x03"
5821 "\x03\x03\x03\x03\x03\x03\x03\x03"
5822 "\x03\x03\x03\x03",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005823 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005824 .input = "\x03\x03\x03\x03\x03\x03\x03\x03"
5825 "\x03\x03\x03\x03\x03\x03\x03\x03",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005826 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005827 .result = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
5828 "\x87\x41\x6f\x82\x0a\x98\x64\xae",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005829 .rlen = 16,
5830 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005831 .key = "\x24\x24\x24\x24\x24\x24\x24\x24"
5832 "\x24\x24\x24\x24\x24\x24\x24\x24"
5833 "\x24\x24\x24\x24\x24\x24\x24\x24"
5834 "\x24\x24\x24\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005835 .klen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005836 .input = "\x24\x24\x24\x24\x24\x24\x24\x24"
5837 "\x24\x24\x24\x24\x24\x24\x24\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005838 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005839 .result = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
5840 "\x06\xd3\x61\x27\xfd\x13\x9e\xde",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005841 .rlen = 16,
5842 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005843 .key = "\x25\x25\x25\x25\x25\x25\x25\x25"
5844 "\x25\x25\x25\x25\x25\x25\x25\x25"
5845 "\x25\x25\x25\x25\x25\x25\x25\x25"
5846 "\x25\x25\x25\x25\x25\x25\x25\x25",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005847 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005848 .input = "\x25\x25\x25\x25\x25\x25\x25\x25"
5849 "\x25\x25\x25\x25\x25\x25\x25\x25",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005850 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005851 .result = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
5852 "\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005853 .rlen = 16,
5854 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005855 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
5856 "\x35\x35\x35\x35\x35\x35\x35\x35"
5857 "\x35\x35\x35\x35\x35\x35\x35\x35"
5858 "\x35\x35\x35\x35\x35\x35\x35\x35"
5859 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005860 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005861 .input = "\x35\x35\x35\x35\x35\x35\x35\x35"
5862 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005863 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005864 .result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
5865 "\x9e\xc6\x84\x0f\x17\x21\x07\xee",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005866 .rlen = 16,
5867 },
5868};
5869
5870static struct cipher_testvec anubis_dec_tv_template[] = {
5871 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005872 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5873 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005874 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005875 .input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
5876 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005877 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005878 .result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5879 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005880 .rlen = 16,
5881 }, {
5882
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005883 .key = "\x03\x03\x03\x03\x03\x03\x03\x03"
5884 "\x03\x03\x03\x03\x03\x03\x03\x03"
5885 "\x03\x03\x03\x03",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005886 .klen = 20,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005887 .input = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
5888 "\x87\x41\x6f\x82\x0a\x98\x64\xae",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005889 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005890 .result = "\x03\x03\x03\x03\x03\x03\x03\x03"
5891 "\x03\x03\x03\x03\x03\x03\x03\x03",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005892 .rlen = 16,
5893 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005894 .key = "\x24\x24\x24\x24\x24\x24\x24\x24"
5895 "\x24\x24\x24\x24\x24\x24\x24\x24"
5896 "\x24\x24\x24\x24\x24\x24\x24\x24"
5897 "\x24\x24\x24\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005898 .klen = 28,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005899 .input = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
5900 "\x06\xd3\x61\x27\xfd\x13\x9e\xde",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005901 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005902 .result = "\x24\x24\x24\x24\x24\x24\x24\x24"
5903 "\x24\x24\x24\x24\x24\x24\x24\x24",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005904 .rlen = 16,
5905 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005906 .key = "\x25\x25\x25\x25\x25\x25\x25\x25"
5907 "\x25\x25\x25\x25\x25\x25\x25\x25"
5908 "\x25\x25\x25\x25\x25\x25\x25\x25"
5909 "\x25\x25\x25\x25\x25\x25\x25\x25",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005910 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005911 .input = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
5912 "\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005913 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005914 .result = "\x25\x25\x25\x25\x25\x25\x25\x25"
5915 "\x25\x25\x25\x25\x25\x25\x25\x25",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005916 .rlen = 16,
5917 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005918 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
5919 "\x35\x35\x35\x35\x35\x35\x35\x35"
5920 "\x35\x35\x35\x35\x35\x35\x35\x35"
5921 "\x35\x35\x35\x35\x35\x35\x35\x35"
5922 "\x35\x35\x35\x35\x35\x35\x35\x35",
5923 .input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
5924 "\x9e\xc6\x84\x0f\x17\x21\x07\xee",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005925 .klen = 40,
5926 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005927 .result = "\x35\x35\x35\x35\x35\x35\x35\x35"
5928 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005929 .rlen = 16,
5930 },
5931};
5932
5933static struct cipher_testvec anubis_cbc_enc_tv_template[] = {
5934 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005935 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5936 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005937 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005938 .input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5939 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5940 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5941 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005942 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005943 .result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
5944 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
5945 "\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
5946 "\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005947 .rlen = 32,
5948 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005949 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
5950 "\x35\x35\x35\x35\x35\x35\x35\x35"
5951 "\x35\x35\x35\x35\x35\x35\x35\x35"
5952 "\x35\x35\x35\x35\x35\x35\x35\x35"
5953 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005954 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005955 .input = "\x35\x35\x35\x35\x35\x35\x35\x35"
5956 "\x35\x35\x35\x35\x35\x35\x35\x35"
5957 "\x35\x35\x35\x35\x35\x35\x35\x35"
5958 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005959 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005960 .result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
5961 "\x9e\xc6\x84\x0f\x17\x21\x07\xee"
5962 "\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
5963 "\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005964 .rlen = 32,
5965 },
5966};
5967
5968static struct cipher_testvec anubis_cbc_dec_tv_template[] = {
5969 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005970 .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5971 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005972 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005973 .input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
5974 "\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
5975 "\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
5976 "\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005977 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005978 .result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5979 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5980 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
5981 "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005982 .rlen = 32,
5983 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005984 .key = "\x35\x35\x35\x35\x35\x35\x35\x35"
5985 "\x35\x35\x35\x35\x35\x35\x35\x35"
5986 "\x35\x35\x35\x35\x35\x35\x35\x35"
5987 "\x35\x35\x35\x35\x35\x35\x35\x35"
5988 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005989 .klen = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005990 .input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
5991 "\x9e\xc6\x84\x0f\x17\x21\x07\xee"
5992 "\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
5993 "\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005994 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08005995 .result = "\x35\x35\x35\x35\x35\x35\x35\x35"
5996 "\x35\x35\x35\x35\x35\x35\x35\x35"
5997 "\x35\x35\x35\x35\x35\x35\x35\x35"
5998 "\x35\x35\x35\x35\x35\x35\x35\x35",
Linus Torvalds1da177e2005-04-16 15:20:36 -07005999 .rlen = 32,
6000 },
6001};
6002
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006003/*
6004 * XETA test vectors
6005 */
6006#define XETA_ENC_TEST_VECTORS 4
6007#define XETA_DEC_TEST_VECTORS 4
6008
6009static struct cipher_testvec xeta_enc_tv_template[] = {
6010 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006011 .key = zeroed_string,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006012 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006013 .input = zeroed_string,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006014 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006015 .result = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006016 .rlen = 8,
6017 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006018 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6019 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006020 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006021 .input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006022 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006023 .result = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006024 .rlen = 8,
6025 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006026 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6027 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006028 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006029 .input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6030 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006031 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006032 .result = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
6033 "\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006034 .rlen = 16,
6035 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006036 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6037 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006038 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006039 .input = "\x54\x65\x61\x20\x69\x73\x20\x67"
6040 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6041 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6042 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006043 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006044 .result = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
6045 "\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
6046 "\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
6047 "\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006048 .rlen = 32,
6049 }
6050};
6051
6052static struct cipher_testvec xeta_dec_tv_template[] = {
6053 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006054 .key = zeroed_string,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006055 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006056 .input = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006057 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006058 .result = zeroed_string,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006059 .rlen = 8,
6060 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006061 .key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
6062 "\x77\x5d\x0e\x26\x6c\x28\x78\x43",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006063 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006064 .input = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006065 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006066 .result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006067 .rlen = 8,
6068 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006069 .key = "\x09\x65\x43\x11\x66\x44\x39\x25"
6070 "\x51\x3a\x16\x10\x0a\x08\x12\x6e",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006071 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006072 .input = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
6073 "\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006074 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006075 .result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
6076 "\x65\x73\x74\x5f\x76\x65\x63\x74",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006077 .rlen = 16,
6078 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006079 .key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
6080 "\x5d\x04\x16\x36\x15\x72\x63\x2f",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006081 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006082 .input = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
6083 "\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
6084 "\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
6085 "\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006086 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006087 .result = "\x54\x65\x61\x20\x69\x73\x20\x67"
6088 "\x6f\x6f\x64\x20\x66\x6f\x72\x20"
6089 "\x79\x6f\x75\x21\x21\x21\x20\x72"
6090 "\x65\x61\x6c\x6c\x79\x21\x21\x21",
Aaron Grothefb4f10e2005-09-01 17:42:46 -07006091 .rlen = 32,
6092 }
6093};
6094
David Howells90831632006-12-16 12:13:14 +11006095/*
6096 * FCrypt test vectors
6097 */
6098#define FCRYPT_ENC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_enc_tv_template)
6099#define FCRYPT_DEC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_dec_tv_template)
6100
6101static struct cipher_testvec fcrypt_pcbc_enc_tv_template[] = {
6102 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006103 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
David Howells90831632006-12-16 12:13:14 +11006104 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006105 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6106 .input = "\x00\x00\x00\x00\x00\x00\x00\x00",
David Howells90831632006-12-16 12:13:14 +11006107 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006108 .result = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
David Howells90831632006-12-16 12:13:14 +11006109 .rlen = 8,
6110 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006111 .key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
David Howells90831632006-12-16 12:13:14 +11006112 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006113 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6114 .input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
David Howells90831632006-12-16 12:13:14 +11006115 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006116 .result = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
David Howells90831632006-12-16 12:13:14 +11006117 .rlen = 8,
6118 }, { /* From Arla */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006119 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
David Howells90831632006-12-16 12:13:14 +11006120 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006121 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
David Howells90831632006-12-16 12:13:14 +11006122 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6123 .ilen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006124 .result = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
6125 "\xee\xac\x98\x62\x44\x51\xe4\x84"
6126 "\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
6127 "\xd2\xd9\x13\x79\x72\xa3\x45\x03"
6128 "\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
6129 "\xf8\x91\x3c\xac\x44\x22\x92\xef",
David Howells90831632006-12-16 12:13:14 +11006130 .rlen = 48,
6131 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006132 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
David Howells90831632006-12-16 12:13:14 +11006133 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006134 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
David Howells90831632006-12-16 12:13:14 +11006135 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6136 .ilen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006137 .result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6138 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6139 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6140 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6141 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6142 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
David Howells90831632006-12-16 12:13:14 +11006143 .rlen = 48,
6144 }, { /* split-page version */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006145 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
David Howells90831632006-12-16 12:13:14 +11006146 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006147 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
David Howells90831632006-12-16 12:13:14 +11006148 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
6149 .ilen = 48,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006150 .result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6151 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6152 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6153 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6154 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6155 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
David Howells90831632006-12-16 12:13:14 +11006156 .rlen = 48,
6157 .np = 2,
6158 .tap = { 20, 28 },
6159 }
6160};
6161
6162static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
6163 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006164 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
David Howells90831632006-12-16 12:13:14 +11006165 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006166 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6167 .input = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
David Howells90831632006-12-16 12:13:14 +11006168 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006169 .result = "\x00\x00\x00\x00\x00\x00\x00\x00",
David Howells90831632006-12-16 12:13:14 +11006170 .rlen = 8,
6171 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006172 .key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
David Howells90831632006-12-16 12:13:14 +11006173 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006174 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6175 .input = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
David Howells90831632006-12-16 12:13:14 +11006176 .ilen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006177 .result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
David Howells90831632006-12-16 12:13:14 +11006178 .rlen = 8,
6179 }, { /* From Arla */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006180 .key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
David Howells90831632006-12-16 12:13:14 +11006181 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006182 .iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
6183 .input = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
6184 "\xee\xac\x98\x62\x44\x51\xe4\x84"
6185 "\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
6186 "\xd2\xd9\x13\x79\x72\xa3\x45\x03"
6187 "\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
6188 "\xf8\x91\x3c\xac\x44\x22\x92\xef",
David Howells90831632006-12-16 12:13:14 +11006189 .ilen = 48,
6190 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6191 .rlen = 48,
6192 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006193 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
David Howells90831632006-12-16 12:13:14 +11006194 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006195 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6196 .input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6197 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6198 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6199 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6200 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6201 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
David Howells90831632006-12-16 12:13:14 +11006202 .ilen = 48,
6203 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6204 .rlen = 48,
6205 }, { /* split-page version */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006206 .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
David Howells90831632006-12-16 12:13:14 +11006207 .klen = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006208 .iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
6209 .input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
6210 "\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
6211 "\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
6212 "\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
6213 "\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
6214 "\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
David Howells90831632006-12-16 12:13:14 +11006215 .ilen = 48,
6216 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
6217 .rlen = 48,
6218 .np = 2,
6219 .tap = { 20, 28 },
6220 }
6221};
6222
Linus Torvalds1da177e2005-04-16 15:20:36 -07006223/*
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006224 * CAMELLIA test vectors.
6225 */
6226#define CAMELLIA_ENC_TEST_VECTORS 3
6227#define CAMELLIA_DEC_TEST_VECTORS 3
6228#define CAMELLIA_CBC_ENC_TEST_VECTORS 2
6229#define CAMELLIA_CBC_DEC_TEST_VECTORS 2
6230
6231static struct cipher_testvec camellia_enc_tv_template[] = {
6232 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006233 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6234 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006235 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006236 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6237 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006238 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006239 .result = "\x67\x67\x31\x38\x54\x96\x69\x73"
6240 "\x08\x57\x06\x56\x48\xea\xbe\x43",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006241 .rlen = 16,
6242 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006243 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6244 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6245 "\x00\x11\x22\x33\x44\x55\x66\x77",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006246 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006247 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6248 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006249 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006250 .result = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
6251 "\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006252 .rlen = 16,
6253 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006254 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6255 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6256 "\x00\x11\x22\x33\x44\x55\x66\x77"
6257 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006258 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006259 .input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6260 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006261 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006262 .result = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
6263 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006264 .rlen = 16,
6265 },
6266};
6267
6268static struct cipher_testvec camellia_dec_tv_template[] = {
6269 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006270 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6271 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006272 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006273 .input = "\x67\x67\x31\x38\x54\x96\x69\x73"
6274 "\x08\x57\x06\x56\x48\xea\xbe\x43",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006275 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006276 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6277 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006278 .rlen = 16,
6279 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006280 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6281 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6282 "\x00\x11\x22\x33\x44\x55\x66\x77",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006283 .klen = 24,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006284 .input = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
6285 "\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006286 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006287 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6288 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006289 .rlen = 16,
6290 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006291 .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6292 "\xfe\xdc\xba\x98\x76\x54\x32\x10"
6293 "\x00\x11\x22\x33\x44\x55\x66\x77"
6294 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006295 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006296 .input = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
6297 "\x20\xef\x7c\x91\x9e\x3a\x75\x09",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006298 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006299 .result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
6300 "\xfe\xdc\xba\x98\x76\x54\x32\x10",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006301 .rlen = 16,
6302 },
6303};
6304
6305static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
6306 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006307 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
6308 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006309 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006310 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
6311 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
6312 .input = "Single block msg",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006313 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006314 .result = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
6315 "\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006316 .rlen = 16,
6317 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006318 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
6319 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006320 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006321 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
6322 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
6323 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
6324 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6325 "\x10\x11\x12\x13\x14\x15\x16\x17"
6326 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006327 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006328 .result = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
6329 "\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
6330 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
6331 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006332 .rlen = 32,
6333 },
6334};
6335
6336static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
6337 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006338 .key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
6339 "\x51\x2e\x03\xd5\x34\x12\x00\x06",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006340 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006341 .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
6342 "\xb4\x22\xda\x80\x2c\x9f\xac\x41",
6343 .input = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
6344 "\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006345 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006346 .result = "Single block msg",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006347 .rlen = 16,
6348 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006349 .key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
6350 "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006351 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006352 .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
6353 "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
6354 .input = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
6355 "\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
6356 "\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
6357 "\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006358 .ilen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006359 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
6360 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6361 "\x10\x11\x12\x13\x14\x15\x16\x17"
6362 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11006363 .rlen = 32,
6364 },
6365};
6366
6367/*
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006368 * SEED test vectors
6369 */
6370#define SEED_ENC_TEST_VECTORS 4
6371#define SEED_DEC_TEST_VECTORS 4
6372
6373static struct cipher_testvec seed_enc_tv_template[] = {
6374 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006375 .key = zeroed_string,
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006376 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006377 .input = "\x00\x01\x02\x03\x04\x05\x06\x07"
6378 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006379 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006380 .result = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
6381 "\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006382 .rlen = 16,
6383 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006384 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6385 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006386 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006387 .input = zeroed_string,
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006388 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006389 .result = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
6390 "\x84\x48\x35\x97\xe4\x37\x0f\x43",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006391 .rlen = 16,
6392 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006393 .key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
6394 "\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006395 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006396 .input = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
6397 "\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006398 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006399 .result = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
6400 "\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006401 .rlen = 16,
6402 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006403 .key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
6404 "\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006405 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006406 .input = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
6407 "\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006408 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006409 .result = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
6410 "\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006411 .rlen = 16,
6412 }
6413};
6414
6415static struct cipher_testvec seed_dec_tv_template[] = {
6416 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006417 .key = zeroed_string,
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006418 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006419 .input = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
6420 "\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006421 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006422 .result = "\x00\x01\x02\x03\x04\x05\x06\x07"
6423 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006424 .rlen = 16,
6425 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006426 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6427 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006428 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006429 .input = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
6430 "\x84\x48\x35\x97\xe4\x37\x0f\x43",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006431 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006432 .result = zeroed_string,
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006433 .rlen = 16,
6434 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006435 .key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
6436 "\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006437 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006438 .input = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
6439 "\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006440 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006441 .result = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
6442 "\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006443 .rlen = 16,
6444 }, {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006445 .key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
6446 "\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006447 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006448 .input = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
6449 "\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006450 .ilen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006451 .result = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
6452 "\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08006453 .rlen = 16,
6454 }
6455};
6456
Tan Swee Heng8bff664c2007-12-07 16:41:29 +08006457#define SALSA20_STREAM_ENC_TEST_VECTORS 5
Tan Swee Heng2407d602007-11-23 19:45:00 +08006458static struct cipher_testvec salsa20_stream_enc_tv_template[] = {
6459 /*
6460 * Testvectors from verified.test-vectors submitted to ECRYPT.
6461 * They are truncated to size 39, 64, 111, 129 to test a variety
6462 * of input length.
6463 */
6464 { /* Set 3, vector 0 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006465 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6466 "\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006467 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006468 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6469 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6470 "\x00\x00\x00\x00\x00\x00\x00\x00"
6471 "\x00\x00\x00\x00\x00\x00\x00\x00"
6472 "\x00\x00\x00\x00\x00\x00\x00\x00"
6473 "\x00\x00\x00\x00\x00\x00\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006474 .ilen = 39,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006475 .result = "\x2D\xD5\xC3\xF7\xBA\x2B\x20\xF7"
6476 "\x68\x02\x41\x0C\x68\x86\x88\x89"
6477 "\x5A\xD8\xC1\xBD\x4E\xA6\xC9\xB1"
6478 "\x40\xFB\x9B\x90\xE2\x10\x49\xBF"
6479 "\x58\x3F\x52\x79\x70\xEB\xC1",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006480 .rlen = 39,
6481 }, { /* Set 5, vector 0 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006482 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
6483 "\x00\x00\x00\x00\x00\x00\x00\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006484 .klen = 16,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006485 .iv = "\x80\x00\x00\x00\x00\x00\x00\x00",
6486 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6487 "\x00\x00\x00\x00\x00\x00\x00\x00"
6488 "\x00\x00\x00\x00\x00\x00\x00\x00"
6489 "\x00\x00\x00\x00\x00\x00\x00\x00"
6490 "\x00\x00\x00\x00\x00\x00\x00\x00"
6491 "\x00\x00\x00\x00\x00\x00\x00\x00"
6492 "\x00\x00\x00\x00\x00\x00\x00\x00"
6493 "\x00\x00\x00\x00\x00\x00\x00\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006494 .ilen = 64,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006495 .result = "\xB6\x6C\x1E\x44\x46\xDD\x95\x57"
6496 "\xE5\x78\xE2\x23\xB0\xB7\x68\x01"
6497 "\x7B\x23\xB2\x67\xBB\x02\x34\xAE"
6498 "\x46\x26\xBF\x44\x3F\x21\x97\x76"
6499 "\x43\x6F\xB1\x9F\xD0\xE8\x86\x6F"
6500 "\xCD\x0D\xE9\xA9\x53\x8F\x4A\x09"
6501 "\xCA\x9A\xC0\x73\x2E\x30\xBC\xF9"
6502 "\x8E\x4F\x13\xE4\xB9\xE2\x01\xD9",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006503 .rlen = 64,
6504 }, { /* Set 3, vector 27 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006505 .key = "\x1B\x1C\x1D\x1E\x1F\x20\x21\x22"
6506 "\x23\x24\x25\x26\x27\x28\x29\x2A"
6507 "\x2B\x2C\x2D\x2E\x2F\x30\x31\x32"
6508 "\x33\x34\x35\x36\x37\x38\x39\x3A",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006509 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006510 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
6511 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6512 "\x00\x00\x00\x00\x00\x00\x00\x00"
6513 "\x00\x00\x00\x00\x00\x00\x00\x00"
6514 "\x00\x00\x00\x00\x00\x00\x00\x00"
6515 "\x00\x00\x00\x00\x00\x00\x00\x00"
6516 "\x00\x00\x00\x00\x00\x00\x00\x00"
6517 "\x00\x00\x00\x00\x00\x00\x00\x00"
6518 "\x00\x00\x00\x00\x00\x00\x00\x00"
6519 "\x00\x00\x00\x00\x00\x00\x00\x00"
6520 "\x00\x00\x00\x00\x00\x00\x00\x00"
6521 "\x00\x00\x00\x00\x00\x00\x00\x00"
6522 "\x00\x00\x00\x00\x00\x00\x00\x00"
6523 "\x00\x00\x00\x00\x00\x00\x00\x00"
6524 "\x00\x00\x00\x00\x00\x00\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006525 .ilen = 111,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006526 .result = "\xAE\x39\x50\x8E\xAC\x9A\xEC\xE7"
6527 "\xBF\x97\xBB\x20\xB9\xDE\xE4\x1F"
6528 "\x87\xD9\x47\xF8\x28\x91\x35\x98"
6529 "\xDB\x72\xCC\x23\x29\x48\x56\x5E"
6530 "\x83\x7E\x0B\xF3\x7D\x5D\x38\x7B"
6531 "\x2D\x71\x02\xB4\x3B\xB5\xD8\x23"
6532 "\xB0\x4A\xDF\x3C\xEC\xB6\xD9\x3B"
6533 "\x9B\xA7\x52\xBE\xC5\xD4\x50\x59"
6534 "\x15\x14\xB4\x0E\x40\xE6\x53\xD1"
6535 "\x83\x9C\x5B\xA0\x92\x29\x6B\x5E"
6536 "\x96\x5B\x1E\x2F\xD3\xAC\xC1\x92"
6537 "\xB1\x41\x3F\x19\x2F\xC4\x3B\xC6"
6538 "\x95\x46\x45\x54\xE9\x75\x03\x08"
6539 "\x44\xAF\xE5\x8A\x81\x12\x09",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006540 .rlen = 111,
Tan Swee Heng2407d602007-11-23 19:45:00 +08006541 }, { /* Set 5, vector 27 */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006542 .key = "\x00\x00\x00\x00\x00\x00\x00\x00"
6543 "\x00\x00\x00\x00\x00\x00\x00\x00"
6544 "\x00\x00\x00\x00\x00\x00\x00\x00"
6545 "\x00\x00\x00\x00\x00\x00\x00\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006546 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006547 .iv = "\x00\x00\x00\x10\x00\x00\x00\x00",
6548 .input = "\x00\x00\x00\x00\x00\x00\x00\x00"
6549 "\x00\x00\x00\x00\x00\x00\x00\x00"
6550 "\x00\x00\x00\x00\x00\x00\x00\x00"
6551 "\x00\x00\x00\x00\x00\x00\x00\x00"
6552 "\x00\x00\x00\x00\x00\x00\x00\x00"
6553 "\x00\x00\x00\x00\x00\x00\x00\x00"
6554 "\x00\x00\x00\x00\x00\x00\x00\x00"
6555 "\x00\x00\x00\x00\x00\x00\x00\x00"
6556 "\x00\x00\x00\x00\x00\x00\x00\x00"
6557 "\x00\x00\x00\x00\x00\x00\x00\x00"
6558 "\x00\x00\x00\x00\x00\x00\x00\x00"
6559 "\x00\x00\x00\x00\x00\x00\x00\x00"
6560 "\x00\x00\x00\x00\x00\x00\x00\x00"
6561 "\x00\x00\x00\x00\x00\x00\x00\x00"
6562 "\x00\x00\x00\x00\x00\x00\x00\x00"
6563 "\x00\x00\x00\x00\x00\x00\x00\x00"
6564 "\x00",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006565 .ilen = 129,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006566 .result = "\xD2\xDB\x1A\x5C\xF1\xC1\xAC\xDB"
6567 "\xE8\x1A\x7A\x43\x40\xEF\x53\x43"
6568 "\x5E\x7F\x4B\x1A\x50\x52\x3F\x8D"
6569 "\x28\x3D\xCF\x85\x1D\x69\x6E\x60"
6570 "\xF2\xDE\x74\x56\x18\x1B\x84\x10"
6571 "\xD4\x62\xBA\x60\x50\xF0\x61\xF2"
6572 "\x1C\x78\x7F\xC1\x24\x34\xAF\x58"
6573 "\xBF\x2C\x59\xCA\x90\x77\xF3\xB0"
6574 "\x5B\x4A\xDF\x89\xCE\x2C\x2F\xFC"
6575 "\x67\xF0\xE3\x45\xE8\xB3\xB3\x75"
6576 "\xA0\x95\x71\xA1\x29\x39\x94\xCA"
6577 "\x45\x2F\xBD\xCB\x10\xB6\xBE\x9F"
6578 "\x8E\xF9\xB2\x01\x0A\x5A\x0A\xB7"
6579 "\x6B\x9D\x70\x8E\x4B\xD6\x2F\xCD"
6580 "\x2E\x40\x48\x75\xE9\xE2\x21\x45"
6581 "\x0B\xC9\xB6\xB5\x66\xBC\x9A\x59"
6582 "\x5A",
Tan Swee Heng2407d602007-11-23 19:45:00 +08006583 .rlen = 129,
Tan Swee Heng8bff664c2007-12-07 16:41:29 +08006584 }, { /* large test vector generated using Crypto++ */
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006585 .key = "\x00\x01\x02\x03\x04\x05\x06\x07"
6586 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6587 "\x10\x11\x12\x13\x14\x15\x16\x17"
6588 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
Tan Swee Heng8bff664c2007-12-07 16:41:29 +08006589 .klen = 32,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08006590 .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
6591 "\x00\x00\x00\x00\x00\x00\x00\x00",
6592 .input =
6593 "\x00\x01\x02\x03\x04\x05\x06\x07"
6594 "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
6595 "\x10\x11\x12\x13\x14\x15\x16\x17"
6596 "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
6597 "\x20\x21\x22\x23\x24\x25\x26\x27"
6598 "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
6599 "\x30\x31\x32\x33\x34\x35\x36\x37"
6600 "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
6601 "\x40\x41\x42\x43\x44\x45\x46\x47"
6602 "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
6603 "\x50\x51\x52\x53\x54\x55\x56\x57"
6604 "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
6605 "\x60\x61\x62\x63\x64\x65\x66\x67"
6606 "\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
6607 "\x70\x71\x72\x73\x74\x75\x76\x77"
6608 "\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
6609 "\x80\x81\x82\x83\x84\x85\x86\x87"
6610 "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
6611 "\x90\x91\x92\x93\x94\x95\x96\x97"
6612 "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
6613 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
6614 "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
6615 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
6616 "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
6617 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
6618 "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
6619 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
6620 "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
6621 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
6622 "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
6623 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
6624 "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
6625 "\x00\x03\x06\x09\x0c\x0f\x12\x15"
6626 "\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
6627 "\x30\x33\x36\x39\x3c\x3f\x42\x45"
6628 "\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
6629 "\x60\x63\x66\x69\x6c\x6f\x72\x75"
6630 "\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
6631 "\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
6632 "\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
6633 "\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
6634 "\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
6635 "\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
6636 "\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
6637 "\x20\x23\x26\x29\x2c\x2f\x32\x35"
6638 "\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
6639 "\x50\x53\x56\x59\x5c\x5f\x62\x65"
6640 "\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
6641 "\x80\x83\x86\x89\x8c\x8f\x92\x95"
6642 "\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
6643 "\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
6644 "\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
6645 "\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
6646 "\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
6647 "\x10\x13\x16\x19\x1c\x1f\x22\x25"
6648 "\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
6649 "\x40\x43\x46\x49\x4c\x4f\x52\x55"
6650 "\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
6651 "\x70\x73\x76\x79\x7c\x7f\x82\x85"
6652 "\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
6653 "\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
6654 "\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
6655 "\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
6656 "\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
6657 "\x00\x05\x0a\x0f\x14\x19\x1e\x23"
6658 "\x28\x2d\x32\x37\x3c\x41\x46\x4b"
6659 "\x50\x55\x5a\x5f\x64\x69\x6e\x73"
6660 "\x78\x7d\x82\x87\x8c\x91\x96\x9b"
6661 "\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
6662 "\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
6663 "\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
6664 "\x18\x1d\x22\x27\x2c\x31\x36\x3b"
6665 "\x40\x45\x4a\x4f\x54\x59\x5e\x63"
6666 "\x68\x6d\x72\x77\x7c\x81\x86\x8b"
6667 "\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
6668 "\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
6669 "\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
6670 "\x08\x0d\x12\x17\x1c\x21\x26\x2b"
6671 "\x30\x35\x3a\x3f\x44\x49\x4e\x53"
6672 "\x58\x5d\x62\x67\x6c\x71\x76\x7b"
6673 "\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
6674 "\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
6675 "\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
6676 "\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
6677 "\x20\x25\x2a\x2f\x34\x39\x3e\x43"
6678 "\x48\x4d\x52\x57\x5c\x61\x66\x6b"
6679 "\x70\x75\x7a\x7f\x84\x89\x8e\x93"
6680 "\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
6681 "\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
6682 "\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
6683 "\x10\x15\x1a\x1f\x24\x29\x2e\x33"
6684 "\x38\x3d\x42\x47\x4c\x51\x56\x5b"
6685 "\x60\x65\x6a\x6f\x74\x79\x7e\x83"
6686 "\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
6687 "\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
6688 "\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
6689 "\x00\x07\x0e\x15\x1c\x23\x2a\x31"
6690 "\x38\x3f\x46\x4d\x54\x5b\x62\x69"
6691 "\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
6692 "\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
6693 "\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
6694 "\x18\x1f\x26\x2d\x34\x3b\x42\x49"
6695 "\x50\x57\x5e\x65\x6c\x73\x7a\x81"
6696 "\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
6697 "\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
6698 "\xf8\xff\x06\x0d\x14\x1b\x22\x29"
6699 "\x30\x37\x3e\x45\x4c\x53\x5a\x61"
6700 "\x68\x6f\x76\x7d\x84\x8b\x92\x99"
6701 "\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
6702 "\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
6703 "\x10\x17\x1e\x25\x2c\x33\x3a\x41"
6704 "\x48\x4f\x56\x5d\x64\x6b\x72\x79"
6705 "\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
6706 "\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
6707 "\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
6708 "\x28\x2f\x36\x3d\x44\x4b\x52\x59"
6709 "\x60\x67\x6e\x75\x7c\x83\x8a\x91"
6710 "\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
6711 "\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
6712 "\x08\x0f\x16\x1d\x24\x2b\x32\x39"
6713 "\x40\x47\x4e\x55\x5c\x63\x6a\x71"
6714 "\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
6715 "\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
6716 "\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
6717 "\x20\x27\x2e\x35\x3c\x43\x4a\x51"
6718 "\x58\x5f\x66\x6d\x74\x7b\x82\x89"
6719 "\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
6720 "\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
6721 "\x00\x09\x12\x1b\x24\x2d\x36\x3f"
6722 "\x48\x51\x5a\x63\x6c\x75\x7e\x87"
6723 "\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
6724 "\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
6725 "\x20\x29\x32\x3b\x44\x4d\x56\x5f"
6726 "\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
6727 "\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
6728 "\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
6729 "\x40\x49\x52\x5b\x64\x6d\x76\x7f"
6730 "\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
6731 "\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
6732 "\x18\x21\x2a\x33\x3c\x45\x4e\x57"
6733 "\x60\x69\x72\x7b\x84\x8d\x96\x9f"
6734 "\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
6735 "\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
6736 "\x38\x41\x4a\x53\x5c\x65\x6e\x77"
6737 "\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
6738 "\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
6739 "\x10\x19\x22\x2b\x34\x3d\x46\x4f"
6740 "\x58\x61\x6a\x73\x7c\x85\x8e\x97"
6741 "\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
6742 "\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
6743 "\x30\x39\x42\x4b\x54\x5d\x66\x6f"
6744 "\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
6745 "\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
6746 "\x08\x11\x1a\x23\x2c\x35\x3e\x47"
6747 "\x50\x59\x62\x6b\x74\x7d\x86\x8f"
6748 "\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
6749 "\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
6750 "\x28\x31\x3a\x43\x4c\x55\x5e\x67"
6751 "\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
6752 "\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
6753 "\x00\x0b\x16\x21\x2c\x37\x42\x4d"
6754 "\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
6755 "\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
6756 "\x08\x13\x1e\x29\x34\x3f\x4a\x55"
6757 "\x60\x6b\x76\x81\x8c\x97\xa2\xad"
6758 "\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
6759 "\x10\x1b\x26\x31\x3c\x47\x52\x5d"
6760 "\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
6761 "\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
6762 "\x18\x23\x2e\x39\x44\x4f\x5a\x65"
6763 "\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
6764 "\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
6765 "\x20\x2b\x36\x41\x4c\x57\x62\x6d"
6766 "\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
6767 "\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
6768 "\x28\x33\x3e\x49\x54\x5f\x6a\x75"
6769 "\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
6770 "\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
6771 "\x30\x3b\x46\x51\x5c\x67\x72\x7d"
6772 "\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
6773 "\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
6774 "\x38\x43\x4e\x59\x64\x6f\x7a\x85"
6775 "\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
6776 "\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
6777 "\x40\x4b\x56\x61\x6c\x77\x82\x8d"
6778 "\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
6779 "\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
6780 "\x48\x53\x5e\x69\x74\x7f\x8a\x95"
6781 "\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
6782 "\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
6783 "\x50\x5b\x66\x71\x7c\x87\x92\x9d"
6784 "\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
6785 "\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
6786 "\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
6787 "\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
6788 "\x38\x45\x52\x5f\x6c\x79\x86\x93"
6789 "\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
6790 "\x08\x15\x22\x2f\x3c\x49\x56\x63"
6791 "\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
6792 "\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
6793 "\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
6794 "\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
6795 "\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
6796 "\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
6797 "\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
6798 "\x48\x55\x62\x6f\x7c\x89\x96\xa3"
6799 "\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
6800 "\x18\x25\x32\x3f\x4c\x59\x66\x73"
6801 "\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
6802 "\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
6803 "\x50\x5d\x6a\x77\x84\x91\x9e\xab"
6804 "\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
6805 "\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
6806 "\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
6807 "\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
6808 "\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
6809 "\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
6810 "\x28\x35\x42\x4f\x5c\x69\x76\x83"
6811 "\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
6812 "\xf8\x05\x12\x1f\x2c\x39\x46\x53"
6813 "\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
6814 "\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
6815 "\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
6816 "\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
6817 "\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
6818 "\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
6819 "\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
6820 "\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
6821 "\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
6822 "\x58\x67\x76\x85\x94\xa3\xb2\xc1"
6823 "\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
6824 "\x48\x57\x66\x75\x84\x93\xa2\xb1"
6825 "\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
6826 "\x38\x47\x56\x65\x74\x83\x92\xa1"
6827 "\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
6828 "\x28\x37\x46\x55\x64\x73\x82\x91"
6829 "\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
6830 "\x18\x27\x36\x45\x54\x63\x72\x81"
6831 "\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
6832 "\x08\x17\x26\x35\x44\x53\x62\x71"
6833 "\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
6834 "\xf8\x07\x16\x25\x34\x43\x52\x61"
6835 "\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
6836 "\xe8\xf7\x06\x15\x24\x33\x42\x51"
6837 "\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
6838 "\xd8\xe7\xf6\x05\x14\x23\x32\x41"
6839 "\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
6840 "\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
6841 "\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
6842 "\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
6843 "\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
6844 "\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
6845 "\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
6846 "\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
6847 "\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
6848 "\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
6849 "\x00\x11\x22\x33\x44\x55\x66\x77"
6850 "\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
6851 "\x10\x21\x32\x43\x54\x65\x76\x87"
6852 "\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
6853 "\x20\x31\x42\x53\x64\x75\x86\x97"
6854 "\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
6855 "\x30\x41\x52\x63\x74\x85\x96\xa7"
6856 "\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
6857 "\x40\x51\x62\x73\x84\x95\xa6\xb7"
6858 "\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
6859 "\x50\x61\x72\x83\x94\xa5\xb6\xc7"
6860 "\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
6861 "\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
6862 "\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
6863 "\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
6864 "\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
6865 "\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
6866 "\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
6867 "\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
6868 "\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
6869 "\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
6870 "\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
6871 "\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
6872 "\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
6873 "\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
6874 "\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
6875 "\xd0\xe1\xf2\x03\x14\x25\x36\x47"
6876 "\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
6877 "\xe0\xf1\x02\x13\x24\x35\x46\x57"
6878 "\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
6879 "\xf0\x01\x12\x23\x34\x45\x56\x67"
6880 "\x78\x89\x9a\xab\xbc\xcd\xde\xef"
6881 "\x00\x13\x26\x39\x4c\x5f\x72\x85"
6882 "\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
6883 "\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
6884 "\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
6885 "\x60\x73\x86\x99\xac\xbf\xd2\xe5"
6886 "\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
6887 "\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
6888 "\x28\x3b\x4e\x61\x74\x87\x9a\xad"
6889 "\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
6890 "\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
6891 "\xf0\x03\x16\x29\x3c\x4f\x62\x75"
6892 "\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
6893 "\x20\x33\x46\x59\x6c\x7f\x92\xa5"
6894 "\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
6895 "\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
6896 "\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
6897 "\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
6898 "\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
6899 "\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
6900 "\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
6901 "\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
6902 "\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
6903 "\x10\x23\x36\x49\x5c\x6f\x82\x95"
6904 "\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
6905 "\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
6906 "\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
6907 "\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
6908 "\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
6909 "\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
6910 "\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
6911 "\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
6912 "\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
6913 "\x00\x15\x2a\x3f\x54\x69\x7e\x93"
6914 "\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
6915 "\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
6916 "\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
6917 "\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
6918 "\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
6919 "\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
6920 "\x98\xad\xc2\xd7\xec\x01\x16\x2b"
6921 "\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
6922 "\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
6923 "\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
6924 "\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
6925 "\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
6926 "\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
6927 "\x30\x45\x5a\x6f\x84\x99\xae\xc3"
6928 "\xd8\xed\x02\x17\x2c\x41\x56\x6b"
6929 "\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
6930 "\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
6931 "\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
6932 "\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
6933 "\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
6934 "\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
6935 "\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
6936 "\x18\x2d\x42\x57\x6c\x81\x96\xab"
6937 "\xc0\xd5\xea\xff\x14\x29\x3e\x53"
6938 "\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
6939 "\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
6940 "\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
6941 "\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
6942 "\x08\x1d\x32\x47\x5c\x71\x86\x9b"
6943 "\xb0\xc5\xda\xef\x04\x19\x2e\x43"
6944 "\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
6945 "\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
6946 "\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
6947 "\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
6948 "\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
6949 "\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
6950 "\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
6951 "\x50\x67\x7e\x95\xac\xc3\xda\xf1"
6952 "\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
6953 "\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
6954 "\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
6955 "\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
6956 "\xe8\xff\x16\x2d\x44\x5b\x72\x89"
6957 "\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
6958 "\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
6959 "\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
6960 "\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
6961 "\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
6962 "\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
6963 "\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
6964 "\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
6965 "\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
6966 "\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
6967 "\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
6968 "\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
6969 "\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
6970 "\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
6971 "\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
6972 "\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
6973 "\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
6974 "\xd8\xef\x06\x1d\x34\x4b\x62\x79"
6975 "\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
6976 "\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
6977 "\x00\x19\x32\x4b\x64\x7d\x96\xaf"
6978 "\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
6979 "\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
6980 "\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
6981 "\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
6982 "\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
6983 "\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
6984 "\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
6985 "\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
6986 "\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
6987 "\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
6988 "\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
6989 "\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
6990 "\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
6991 "\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
6992 "\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
6993 "\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
6994 "\x48\x61\x7a\x93\xac\xc5\xde\xf7"
6995 "\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
6996 "\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
6997 "\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
6998 "\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
6999 "\x30\x49\x62\x7b\x94\xad\xc6\xdf"
7000 "\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
7001 "\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
7002 "\x88\xa1\xba\xd3\xec\x05\x1e\x37"
7003 "\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
7004 "\x18\x31\x4a\x63\x7c\x95\xae\xc7"
7005 "\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
7006 "\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
7007 "\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
7008 "\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
7009 "\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
7010 "\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
7011 "\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
7012 "\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
7013 "\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
7014 "\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
7015 "\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
7016 "\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
7017 "\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
7018 "\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
7019 "\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
7020 "\x48\x63\x7e\x99\xb4\xcf\xea\x05"
7021 "\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
7022 "\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
7023 "\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
7024 "\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
7025 "\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
7026 "\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
7027 "\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
7028 "\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
7029 "\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
7030 "\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
7031 "\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
7032 "\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
7033 "\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
7034 "\x18\x33\x4e\x69\x84\x9f\xba\xd5"
7035 "\xf0\x0b\x26\x41\x5c\x77\x92\xad"
7036 "\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
7037 "\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
7038 "\x78\x93\xae\xc9\xe4\xff\x1a\x35"
7039 "\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
7040 "\x28\x43\x5e\x79\x94\xaf\xca\xe5"
7041 "\x00\x1d\x3a\x57\x74\x91\xae\xcb"
7042 "\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
7043 "\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
7044 "\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
7045 "\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
7046 "\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
7047 "\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
7048 "\x58\x75\x92\xaf\xcc\xe9\x06\x23"
7049 "\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
7050 "\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
7051 "\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
7052 "\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
7053 "\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
7054 "\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
7055 "\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
7056 "\x98\xb5\xd2\xef\x0c\x29\x46\x63"
7057 "\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
7058 "\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
7059 "\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
7060 "\x38\x55\x72\x8f\xac\xc9\xe6\x03"
7061 "\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
7062 "\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
7063 "\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
7064 "\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
7065 "\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
7066 "\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
7067 "\x90\xad\xca\xe7\x04\x21\x3e\x5b"
7068 "\x78\x95\xb2\xcf\xec\x09\x26\x43"
7069 "\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
7070 "\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
7071 "\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
7072 "\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
7073 "\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
7074 "\xf8\x17\x36\x55\x74\x93\xb2\xd1"
7075 "\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
7076 "\xe8\x07\x26\x45\x64\x83\xa2\xc1"
7077 "\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
7078 "\xd8\xf7\x16\x35\x54\x73\x92\xb1"
7079 "\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
7080 "\xc8\xe7\x06\x25\x44\x63\x82\xa1"
7081 "\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
7082 "\xb8\xd7\xf6\x15\x34\x53\x72\x91"
7083 "\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
7084 "\xa8\xc7\xe6\x05\x24\x43\x62\x81"
7085 "\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
7086 "\x98\xb7\xd6\xf5\x14\x33\x52\x71"
7087 "\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
7088 "\x88\xa7\xc6\xe5\x04\x23\x42\x61"
7089 "\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
7090 "\x78\x97\xb6\xd5\xf4\x13\x32\x51"
7091 "\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
7092 "\x68\x87\xa6\xc5\xe4\x03\x22\x41"
7093 "\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
7094 "\x58\x77\x96\xb5\xd4\xf3\x12\x31"
7095 "\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
7096 "\x48\x67\x86\xa5\xc4\xe3\x02\x21"
7097 "\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
7098 "\x38\x57\x76\x95\xb4\xd3\xf2\x11"
7099 "\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
7100 "\x28\x47\x66\x85\xa4\xc3\xe2\x01"
7101 "\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
7102 "\x18\x37\x56\x75\x94\xb3\xd2\xf1"
7103 "\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
7104 "\x08\x27\x46\x65\x84\xa3\xc2\xe1"
7105 "\x00\x21\x42\x63",
Tan Swee Heng8bff664c2007-12-07 16:41:29 +08007106 .ilen = 4100,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007107 .result =
7108 "\xb5\x81\xf5\x64\x18\x73\xe3\xf0"
7109 "\x4c\x13\xf2\x77\x18\x60\x65\x5e"
7110 "\x29\x01\xce\x98\x55\x53\xf9\x0c"
7111 "\x2a\x08\xd5\x09\xb3\x57\x55\x56"
7112 "\xc5\xe9\x56\x90\xcb\x6a\xa3\xc0"
7113 "\xff\xc4\x79\xb4\xd2\x97\x5d\xc4"
7114 "\x43\xd1\xfe\x94\x7b\x88\x06\x5a"
7115 "\xb2\x9e\x2c\xfc\x44\x03\xb7\x90"
7116 "\xa0\xc1\xba\x6a\x33\xb8\xc7\xb2"
7117 "\x9d\xe1\x12\x4f\xc0\x64\xd4\x01"
7118 "\xfe\x8c\x7a\x66\xf7\xe6\x5a\x91"
7119 "\xbb\xde\x56\x86\xab\x65\x21\x30"
7120 "\x00\x84\x65\x24\xa5\x7d\x85\xb4"
7121 "\xe3\x17\xed\x3a\xb7\x6f\xb4\x0b"
7122 "\x0b\xaf\x15\xae\x5a\x8f\xf2\x0c"
7123 "\x2f\x27\xf4\x09\xd8\xd2\x96\xb7"
7124 "\x71\xf2\xc5\x99\x4d\x7e\x7f\x75"
7125 "\x77\x89\x30\x8b\x59\xdb\xa2\xb2"
7126 "\xa0\xf3\x19\x39\x2b\xc5\x7e\x3f"
7127 "\x4f\xd9\xd3\x56\x28\x97\x44\xdc"
7128 "\xc0\x8b\x77\x24\xd9\x52\xe7\xc5"
7129 "\xaf\xf6\x7d\x59\xb2\x44\x05\x1d"
7130 "\xb1\xb0\x11\xa5\x0f\xec\x33\xe1"
7131 "\x6d\x1b\x4e\x1f\xff\x57\x91\xb4"
7132 "\x5b\x9a\x96\xc5\x53\xbc\xae\x20"
7133 "\x3c\xbb\x14\xe2\xe8\x22\x33\xc1"
7134 "\x5e\x76\x9e\x46\x99\xf6\x2a\x15"
7135 "\xc6\x97\x02\xa0\x66\x43\xd1\xa6"
7136 "\x31\xa6\x9f\xfb\xf4\xd3\x69\xe5"
7137 "\xcd\x76\x95\xb8\x7a\x82\x7f\x21"
7138 "\x45\xff\x3f\xce\x55\xf6\x95\x10"
7139 "\x08\x77\x10\x43\xc6\xf3\x09\xe5"
7140 "\x68\xe7\x3c\xad\x00\x52\x45\x0d"
7141 "\xfe\x2d\xc6\xc2\x94\x8c\x12\x1d"
7142 "\xe6\x25\xae\x98\x12\x8e\x19\x9c"
7143 "\x81\x68\xb1\x11\xf6\x69\xda\xe3"
7144 "\x62\x08\x18\x7a\x25\x49\x28\xac"
7145 "\xba\x71\x12\x0b\xe4\xa2\xe5\xc7"
7146 "\x5d\x8e\xec\x49\x40\x21\xbf\x5a"
7147 "\x98\xf3\x02\x68\x55\x03\x7f\x8a"
7148 "\xe5\x94\x0c\x32\x5c\x07\x82\x63"
7149 "\xaf\x6f\x91\x40\x84\x8e\x52\x25"
7150 "\xd0\xb0\x29\x53\x05\xe2\x50\x7a"
7151 "\x34\xeb\xc9\x46\x20\xa8\x3d\xde"
7152 "\x7f\x16\x5f\x36\xc5\x2e\xdc\xd1"
7153 "\x15\x47\xc7\x50\x40\x6d\x91\xc5"
7154 "\xe7\x93\x95\x1a\xd3\x57\xbc\x52"
7155 "\x33\xee\x14\x19\x22\x52\x89\xa7"
7156 "\x4a\x25\x56\x77\x4b\xca\xcf\x0a"
7157 "\xe1\xf5\x35\x85\x30\x7e\x59\x4a"
7158 "\xbd\x14\x5b\xdf\xe3\x46\xcb\xac"
7159 "\x1f\x6c\x96\x0e\xf4\x81\xd1\x99"
7160 "\xca\x88\x63\x3d\x02\x58\x6b\xa9"
7161 "\xe5\x9f\xb3\x00\xb2\x54\xc6\x74"
7162 "\x1c\xbf\x46\xab\x97\xcc\xf8\x54"
7163 "\x04\x07\x08\x52\xe6\xc0\xda\x93"
7164 "\x74\x7d\x93\x99\x5d\x78\x68\xa6"
7165 "\x2e\x6b\xd3\x6a\x69\xcc\x12\x6b"
7166 "\xd4\xc7\xa5\xc6\xe7\xf6\x03\x04"
7167 "\x5d\xcd\x61\x5e\x17\x40\xdc\xd1"
7168 "\x5c\xf5\x08\xdf\x5c\x90\x85\xa4"
7169 "\xaf\xf6\x78\xbb\x0d\xf1\xf4\xa4"
7170 "\x54\x26\x72\x9e\x61\xfa\x86\xcf"
7171 "\xe8\x9e\xa1\xe0\xc7\x48\x23\xae"
7172 "\x5a\x90\xae\x75\x0a\x74\x18\x89"
7173 "\x05\xb1\x92\xb2\x7f\xd0\x1b\xa6"
7174 "\x62\x07\x25\x01\xc7\xc2\x4f\xf9"
7175 "\xe8\xfe\x63\x95\x80\x07\xb4\x26"
7176 "\xcc\xd1\x26\xb6\xc4\x3f\x9e\xcb"
7177 "\x8e\x3b\x2e\x44\x16\xd3\x10\x9a"
7178 "\x95\x08\xeb\xc8\xcb\xeb\xbf\x6f"
7179 "\x0b\xcd\x1f\xc8\xca\x86\xaa\xec"
7180 "\x33\xe6\x69\xf4\x45\x25\x86\x3a"
7181 "\x22\x94\x4f\x00\x23\x6a\x44\xc2"
7182 "\x49\x97\x33\xab\x36\x14\x0a\x70"
7183 "\x24\xc3\xbe\x04\x3b\x79\xa0\xf9"
7184 "\xb8\xe7\x76\x29\x22\x83\xd7\xf2"
7185 "\x94\xf4\x41\x49\xba\x5f\x7b\x07"
7186 "\xb5\xfb\xdb\x03\x1a\x9f\xb6\x4c"
7187 "\xc2\x2e\x37\x40\x49\xc3\x38\x16"
7188 "\xe2\x4f\x77\x82\xb0\x68\x4c\x71"
7189 "\x1d\x57\x61\x9c\xd9\x4e\x54\x99"
7190 "\x47\x13\x28\x73\x3c\xbb\x00\x90"
7191 "\xf3\x4d\xc9\x0e\xfd\xe7\xb1\x71"
7192 "\xd3\x15\x79\xbf\xcc\x26\x2f\xbd"
7193 "\xad\x6c\x50\x69\x6c\x3e\x6d\x80"
7194 "\x9a\xea\x78\xaf\x19\xb2\x0d\x4d"
7195 "\xad\x04\x07\xae\x22\x90\x4a\x93"
7196 "\x32\x0e\x36\x9b\x1b\x46\xba\x3b"
7197 "\xb4\xac\xc6\xd1\xa2\x31\x53\x3b"
7198 "\x2a\x3d\x45\xfe\x03\x61\x10\x85"
7199 "\x17\x69\xa6\x78\xcc\x6c\x87\x49"
7200 "\x53\xf9\x80\x10\xde\x80\xa2\x41"
7201 "\x6a\xc3\x32\x02\xad\x6d\x3c\x56"
7202 "\x00\x71\x51\x06\xa7\xbd\xfb\xef"
7203 "\x3c\xb5\x9f\xfc\x48\x7d\x53\x7c"
7204 "\x66\xb0\x49\x23\xc4\x47\x10\x0e"
7205 "\xe5\x6c\x74\x13\xe6\xc5\x3f\xaa"
7206 "\xde\xff\x07\x44\xdd\x56\x1b\xad"
7207 "\x09\x77\xfb\x5b\x12\xb8\x0d\x38"
7208 "\x17\x37\x35\x7b\x9b\xbc\xfe\xd4"
7209 "\x7e\x8b\xda\x7e\x5b\x04\xa7\x22"
7210 "\xa7\x31\xa1\x20\x86\xc7\x1b\x99"
7211 "\xdb\xd1\x89\xf4\x94\xa3\x53\x69"
7212 "\x8d\xe7\xe8\x74\x11\x8d\x74\xd6"
7213 "\x07\x37\x91\x9f\xfd\x67\x50\x3a"
7214 "\xc9\xe1\xf4\x36\xd5\xa0\x47\xd1"
7215 "\xf9\xe5\x39\xa3\x31\xac\x07\x36"
7216 "\x23\xf8\x66\x18\x14\x28\x34\x0f"
7217 "\xb8\xd0\xe7\x29\xb3\x04\x4b\x55"
7218 "\x01\x41\xb2\x75\x8d\xcb\x96\x85"
7219 "\x3a\xfb\xab\x2b\x9e\xfa\x58\x20"
7220 "\x44\x1f\xc0\x14\x22\x75\x61\xe8"
7221 "\xaa\x19\xcf\xf1\x82\x56\xf4\xd7"
7222 "\x78\x7b\x3d\x5f\xb3\x9e\x0b\x8a"
7223 "\x57\x50\xdb\x17\x41\x65\x4d\xa3"
7224 "\x02\xc9\x9c\x9c\x53\xfb\x39\x39"
7225 "\x9b\x1d\x72\x24\xda\xb7\x39\xbe"
7226 "\x13\x3b\xfa\x29\xda\x9e\x54\x64"
7227 "\x6e\xba\xd8\xa1\xcb\xb3\x36\xfa"
7228 "\xcb\x47\x85\xe9\x61\x38\xbc\xbe"
7229 "\xc5\x00\x38\x2a\x54\xf7\xc4\xb9"
7230 "\xb3\xd3\x7b\xa0\xa0\xf8\x72\x7f"
7231 "\x8c\x8e\x82\x0e\xc6\x1c\x75\x9d"
7232 "\xca\x8e\x61\x87\xde\xad\x80\xd2"
7233 "\xf5\xf9\x80\xef\x15\x75\xaf\xf5"
7234 "\x80\xfb\xff\x6d\x1e\x25\xb7\x40"
7235 "\x61\x6a\x39\x5a\x6a\xb5\x31\xab"
7236 "\x97\x8a\x19\x89\x44\x40\xc0\xa6"
7237 "\xb4\x4e\x30\x32\x7b\x13\xe7\x67"
7238 "\xa9\x8b\x57\x04\xc2\x01\xa6\xf4"
7239 "\x28\x99\xad\x2c\x76\xa3\x78\xc2"
7240 "\x4a\xe6\xca\x5c\x50\x6a\xc1\xb0"
7241 "\x62\x4b\x10\x8e\x7c\x17\x43\xb3"
7242 "\x17\x66\x1c\x3e\x8d\x69\xf0\x5a"
7243 "\x71\xf5\x97\xdc\xd1\x45\xdd\x28"
7244 "\xf3\x5d\xdf\x53\x7b\x11\xe5\xbc"
7245 "\x4c\xdb\x1b\x51\x6b\xe9\xfb\x3d"
7246 "\xc1\xc3\x2c\xb9\x71\xf5\xb6\xb2"
7247 "\x13\x36\x79\x80\x53\xe8\xd3\xa6"
7248 "\x0a\xaf\xfd\x56\x97\xf7\x40\x8e"
7249 "\x45\xce\xf8\xb0\x9e\x5c\x33\x82"
7250 "\xb0\x44\x56\xfc\x05\x09\xe9\x2a"
7251 "\xac\x26\x80\x14\x1d\xc8\x3a\x35"
7252 "\x4c\x82\x97\xfd\x76\xb7\xa9\x0a"
7253 "\x35\x58\x79\x8e\x0f\x66\xea\xaf"
7254 "\x51\x6c\x09\xa9\x6e\x9b\xcb\x9a"
7255 "\x31\x47\xa0\x2f\x7c\x71\xb4\x4a"
7256 "\x11\xaa\x8c\x66\xc5\x64\xe6\x3a"
7257 "\x54\xda\x24\x6a\xc4\x41\x65\x46"
7258 "\x82\xa0\x0a\x0f\x5f\xfb\x25\xd0"
7259 "\x2c\x91\xa7\xee\xc4\x81\x07\x86"
7260 "\x75\x5e\x33\x69\x97\xe4\x2c\xa8"
7261 "\x9d\x9f\x0b\x6a\xbe\xad\x98\xda"
7262 "\x6d\x94\x41\xda\x2c\x1e\x89\xc4"
7263 "\xc2\xaf\x1e\x00\x05\x0b\x83\x60"
7264 "\xbd\x43\xea\x15\x23\x7f\xb9\xac"
7265 "\xee\x4f\x2c\xaf\x2a\xf3\xdf\xd0"
7266 "\xf3\x19\x31\xbb\x4a\x74\x84\x17"
7267 "\x52\x32\x2c\x7d\x61\xe4\xcb\xeb"
7268 "\x80\x38\x15\x52\xcb\x6f\xea\xe5"
7269 "\x73\x9c\xd9\x24\x69\xc6\x95\x32"
7270 "\x21\xc8\x11\xe4\xdc\x36\xd7\x93"
7271 "\x38\x66\xfb\xb2\x7f\x3a\xb9\xaf"
7272 "\x31\xdd\x93\x75\x78\x8a\x2c\x94"
7273 "\x87\x1a\x58\xec\x9e\x7d\x4d\xba"
7274 "\xe1\xe5\x4d\xfc\xbc\xa4\x2a\x14"
7275 "\xef\xcc\xa7\xec\xab\x43\x09\x18"
7276 "\xd3\xab\x68\xd1\x07\x99\x44\x47"
7277 "\xd6\x83\x85\x3b\x30\xea\xa9\x6b"
7278 "\x63\xea\xc4\x07\xfb\x43\x2f\xa4"
7279 "\xaa\xb0\xab\x03\x89\xce\x3f\x8c"
7280 "\x02\x7c\x86\x54\xbc\x88\xaf\x75"
7281 "\xd2\xdc\x63\x17\xd3\x26\xf6\x96"
7282 "\xa9\x3c\xf1\x61\x8c\x11\x18\xcc"
7283 "\xd6\xea\x5b\xe2\xcd\xf0\xf1\xb2"
7284 "\xe5\x35\x90\x1f\x85\x4c\x76\x5b"
7285 "\x66\xce\x44\xa4\x32\x9f\xe6\x7b"
7286 "\x71\x6e\x9f\x58\x15\x67\x72\x87"
7287 "\x64\x8e\x3a\x44\x45\xd4\x76\xfa"
7288 "\xc2\xf6\xef\x85\x05\x18\x7a\x9b"
7289 "\xba\x41\x54\xac\xf0\xfc\x59\x12"
7290 "\x3f\xdf\xa0\xe5\x8a\x65\xfd\x3a"
7291 "\x62\x8d\x83\x2c\x03\xbe\x05\x76"
7292 "\x2e\x53\x49\x97\x94\x33\xae\x40"
7293 "\x81\x15\xdb\x6e\xad\xaa\xf5\x4b"
7294 "\xe3\x98\x70\xdf\xe0\x7c\xcd\xdb"
7295 "\x02\xd4\x7d\x2f\xc1\xe6\xb4\xf3"
7296 "\xd7\x0d\x7a\xd9\x23\x9e\x87\x2d"
7297 "\xce\x87\xad\xcc\x72\x05\x00\x29"
7298 "\xdc\x73\x7f\x64\xc1\x15\x0e\xc2"
7299 "\xdf\xa7\x5f\xeb\x41\xa1\xcd\xef"
7300 "\x5c\x50\x79\x2a\x56\x56\x71\x8c"
7301 "\xac\xc0\x79\x50\x69\xca\x59\x32"
7302 "\x65\xf2\x54\xe4\x52\x38\x76\xd1"
7303 "\x5e\xde\x26\x9e\xfb\x75\x2e\x11"
7304 "\xb5\x10\xf4\x17\x73\xf5\x89\xc7"
7305 "\x4f\x43\x5c\x8e\x7c\xb9\x05\x52"
7306 "\x24\x40\x99\xfe\x9b\x85\x0b\x6c"
7307 "\x22\x3e\x8b\xae\x86\xa1\xd2\x79"
7308 "\x05\x68\x6b\xab\xe3\x41\x49\xed"
7309 "\x15\xa1\x8d\x40\x2d\x61\xdf\x1a"
7310 "\x59\xc9\x26\x8b\xef\x30\x4c\x88"
7311 "\x4b\x10\xf8\x8d\xa6\x92\x9f\x4b"
7312 "\xf3\xc4\x53\x0b\x89\x5d\x28\x92"
7313 "\xcf\x78\xb2\xc0\x5d\xed\x7e\xfc"
7314 "\xc0\x12\x23\x5f\x5a\x78\x86\x43"
7315 "\x6e\x27\xf7\x5a\xa7\x6a\xed\x19"
7316 "\x04\xf0\xb3\x12\xd1\xbd\x0e\x89"
7317 "\x6e\xbc\x96\xa8\xd8\x49\x39\x9f"
7318 "\x7e\x67\xf0\x2e\x3e\x01\xa9\xba"
7319 "\xec\x8b\x62\x8e\xcb\x4a\x70\x43"
7320 "\xc7\xc2\xc4\xca\x82\x03\x73\xe9"
7321 "\x11\xdf\xcf\x54\xea\xc9\xb0\x95"
7322 "\x51\xc0\x13\x3d\x92\x05\xfa\xf4"
7323 "\xa9\x34\xc8\xce\x6c\x3d\x54\xcc"
7324 "\xc4\xaf\xf1\xdc\x11\x44\x26\xa2"
7325 "\xaf\xf1\x85\x75\x7d\x03\x61\x68"
7326 "\x4e\x78\xc6\x92\x7d\x86\x7d\x77"
7327 "\xdc\x71\x72\xdb\xc6\xae\xa1\xcb"
7328 "\x70\x9a\x0b\x19\xbe\x4a\x6c\x2a"
7329 "\xe2\xba\x6c\x64\x9a\x13\x28\xdf"
7330 "\x85\x75\xe6\x43\xf6\x87\x08\x68"
7331 "\x6e\xba\x6e\x79\x9f\x04\xbc\x23"
7332 "\x50\xf6\x33\x5c\x1f\x24\x25\xbe"
7333 "\x33\x47\x80\x45\x56\xa3\xa7\xd7"
7334 "\x7a\xb1\x34\x0b\x90\x3c\x9c\xad"
7335 "\x44\x5f\x9e\x0e\x9d\xd4\xbd\x93"
7336 "\x5e\xfa\x3c\xe0\xb0\xd9\xed\xf3"
7337 "\xd6\x2e\xff\x24\xd8\x71\x6c\xed"
7338 "\xaf\x55\xeb\x22\xac\x93\x68\x32"
7339 "\x05\x5b\x47\xdd\xc6\x4a\xcb\xc7"
7340 "\x10\xe1\x3c\x92\x1a\xf3\x23\x78"
7341 "\x2b\xa1\xd2\x80\xf4\x12\xb1\x20"
7342 "\x8f\xff\x26\x35\xdd\xfb\xc7\x4e"
7343 "\x78\xf1\x2d\x50\x12\x77\xa8\x60"
7344 "\x7c\x0f\xf5\x16\x2f\x63\x70\x2a"
7345 "\xc0\x96\x80\x4e\x0a\xb4\x93\x35"
7346 "\x5d\x1d\x3f\x56\xf7\x2f\xbb\x90"
7347 "\x11\x16\x8f\xa2\xec\x47\xbe\xac"
7348 "\x56\x01\x26\x56\xb1\x8c\xb2\x10"
7349 "\xf9\x1a\xca\xf5\xd1\xb7\x39\x20"
7350 "\x63\xf1\x69\x20\x4f\x13\x12\x1f"
7351 "\x5b\x65\xfc\x98\xf7\xc4\x7a\xbe"
7352 "\xf7\x26\x4d\x2b\x84\x7b\x42\xad"
7353 "\xd8\x7a\x0a\xb4\xd8\x74\xbf\xc1"
7354 "\xf0\x6e\xb4\x29\xa3\xbb\xca\x46"
7355 "\x67\x70\x6a\x2d\xce\x0e\xa2\x8a"
7356 "\xa9\x87\xbf\x05\xc4\xc1\x04\xa3"
7357 "\xab\xd4\x45\x43\x8c\xb6\x02\xb0"
7358 "\x41\xc8\xfc\x44\x3d\x59\xaa\x2e"
7359 "\x44\x21\x2a\x8d\x88\x9d\x57\xf4"
7360 "\xa0\x02\x77\xb8\xa6\xa0\xe6\x75"
7361 "\x5c\x82\x65\x3e\x03\x5c\x29\x8f"
7362 "\x38\x55\xab\x33\x26\xef\x9f\x43"
7363 "\x52\xfd\x68\xaf\x36\xb4\xbb\x9a"
7364 "\x58\x09\x09\x1b\xc3\x65\x46\x46"
7365 "\x1d\xa7\x94\x18\x23\x50\x2c\xca"
7366 "\x2c\x55\x19\x97\x01\x9d\x93\x3b"
7367 "\x63\x86\xf2\x03\x67\x45\xd2\x72"
7368 "\x28\x52\x6c\xf4\xe3\x1c\xb5\x11"
7369 "\x13\xf1\xeb\x21\xc7\xd9\x56\x82"
7370 "\x2b\x82\x39\xbd\x69\x54\xed\x62"
7371 "\xc3\xe2\xde\x73\xd4\x6a\x12\xae"
7372 "\x13\x21\x7f\x4b\x5b\xfc\xbf\xe8"
7373 "\x2b\xbe\x56\xba\x68\x8b\x9a\xb1"
7374 "\x6e\xfa\xbf\x7e\x5a\x4b\xf1\xac"
7375 "\x98\x65\x85\xd1\x93\x53\xd3\x7b"
7376 "\x09\xdd\x4b\x10\x6d\x84\xb0\x13"
7377 "\x65\xbd\xcf\x52\x09\xc4\x85\xe2"
7378 "\x84\x74\x15\x65\xb7\xf7\x51\xaf"
7379 "\x55\xad\xa4\xd1\x22\x54\x70\x94"
7380 "\xa0\x1c\x90\x41\xfd\x99\xd7\x5a"
7381 "\x31\xef\xaa\x25\xd0\x7f\x4f\xea"
7382 "\x1d\x55\x42\xe5\x49\xb0\xd0\x46"
7383 "\x62\x36\x43\xb2\x82\x15\x75\x50"
7384 "\xa4\x72\xeb\x54\x27\x1f\x8a\xe4"
7385 "\x7d\xe9\x66\xc5\xf1\x53\xa4\xd1"
7386 "\x0c\xeb\xb8\xf8\xbc\xd4\xe2\xe7"
7387 "\xe1\xf8\x4b\xcb\xa9\xa1\xaf\x15"
7388 "\x83\xcb\x72\xd0\x33\x79\x00\x2d"
7389 "\x9f\xd7\xf1\x2e\x1e\x10\xe4\x45"
7390 "\xc0\x75\x3a\x39\xea\x68\xf7\x5d"
7391 "\x1b\x73\x8f\xe9\x8e\x0f\x72\x47"
7392 "\xae\x35\x0a\x31\x7a\x14\x4d\x4a"
7393 "\x6f\x47\xf7\x7e\x91\x6e\x74\x8b"
7394 "\x26\x47\xf9\xc3\xf9\xde\x70\xf5"
7395 "\x61\xab\xa9\x27\x9f\x82\xe4\x9c"
7396 "\x89\x91\x3f\x2e\x6a\xfd\xb5\x49"
7397 "\xe9\xfd\x59\x14\x36\x49\x40\x6d"
7398 "\x32\xd8\x85\x42\xf3\xa5\xdf\x0c"
7399 "\xa8\x27\xd7\x54\xe2\x63\x2f\xf2"
7400 "\x7e\x8b\x8b\xe7\xf1\x9a\x95\x35"
7401 "\x43\xdc\x3a\xe4\xb6\xf4\xd0\xdf"
7402 "\x9c\xcb\x94\xf3\x21\xa0\x77\x50"
7403 "\xe2\xc6\xc4\xc6\x5f\x09\x64\x5b"
7404 "\x92\x90\xd8\xe1\xd1\xed\x4b\x42"
7405 "\xd7\x37\xaf\x65\x3d\x11\x39\xb6"
7406 "\x24\x8a\x60\xae\xd6\x1e\xbf\x0e"
7407 "\x0d\xd7\xdc\x96\x0e\x65\x75\x4e"
7408 "\x29\x06\x9d\xa4\x51\x3a\x10\x63"
7409 "\x8f\x17\x07\xd5\x8e\x3c\xf4\x28"
7410 "\x00\x5a\x5b\x05\x19\xd8\xc0\x6c"
7411 "\xe5\x15\xe4\x9c\x9d\x71\x9d\x5e"
7412 "\x94\x29\x1a\xa7\x80\xfa\x0e\x33"
7413 "\x03\xdd\xb7\x3e\x9a\xa9\x26\x18"
7414 "\x37\xa9\x64\x08\x4d\x94\x5a\x88"
7415 "\xca\x35\xce\x81\x02\xe3\x1f\x1b"
7416 "\x89\x1a\x77\x85\xe3\x41\x6d\x32"
7417 "\x42\x19\x23\x7d\xc8\x73\xee\x25"
7418 "\x85\x0d\xf8\x31\x25\x79\x1b\x6f"
7419 "\x79\x25\xd2\xd8\xd4\x23\xfd\xf7"
7420 "\x82\x36\x6a\x0c\x46\x22\x15\xe9"
7421 "\xff\x72\x41\x91\x91\x7d\x3a\xb7"
7422 "\xdd\x65\x99\x70\xf6\x8d\x84\xf8"
7423 "\x67\x15\x20\x11\xd6\xb2\x55\x7b"
7424 "\xdb\x87\xee\xef\x55\x89\x2a\x59"
7425 "\x2b\x07\x8f\x43\x8a\x59\x3c\x01"
7426 "\x8b\x65\x54\xa1\x66\xd5\x38\xbd"
7427 "\xc6\x30\xa9\xcc\x49\xb6\xa8\x1b"
7428 "\xb8\xc0\x0e\xe3\x45\x28\xe2\xff"
7429 "\x41\x9f\x7e\x7c\xd1\xae\x9e\x25"
7430 "\x3f\x4c\x7c\x7c\xf4\xa8\x26\x4d"
7431 "\x5c\xfd\x4b\x27\x18\xf9\x61\x76"
7432 "\x48\xba\x0c\x6b\xa9\x4d\xfc\xf5"
7433 "\x3b\x35\x7e\x2f\x4a\xa9\xc2\x9a"
7434 "\xae\xab\x86\x09\x89\xc9\xc2\x40"
7435 "\x39\x2c\x81\xb3\xb8\x17\x67\xc2"
7436 "\x0d\x32\x4a\x3a\x67\x81\xd7\x1a"
7437 "\x34\x52\xc5\xdb\x0a\xf5\x63\x39"
7438 "\xea\x1f\xe1\x7c\xa1\x9e\xc1\x35"
7439 "\xe3\xb1\x18\x45\x67\xf9\x22\x38"
7440 "\x95\xd9\x34\x34\x86\xc6\x41\x94"
7441 "\x15\xf9\x5b\x41\xa6\x87\x8b\xf8"
7442 "\xd5\xe1\x1b\xe2\x5b\xf3\x86\x10"
7443 "\xff\xe6\xae\x69\x76\xbc\x0d\xb4"
7444 "\x09\x90\x0c\xa2\x65\x0c\xad\x74"
7445 "\xf5\xd7\xff\xda\xc1\xce\x85\xbe"
7446 "\x00\xa7\xff\x4d\x2f\x65\xd3\x8c"
7447 "\x86\x2d\x05\xe8\xed\x3e\x6b\x8b"
7448 "\x0f\x3d\x83\x8c\xf1\x1d\x5b\x96"
7449 "\x2e\xb1\x9c\xc2\x98\xe1\x70\xb9"
7450 "\xba\x5c\x8a\x43\xd6\x34\xa7\x2d"
7451 "\xc9\x92\xae\xf2\xa5\x7b\x05\x49"
7452 "\xa7\x33\x34\x86\xca\xe4\x96\x23"
7453 "\x76\x5b\xf2\xc6\xf1\x51\x28\x42"
7454 "\x7b\xcc\x76\x8f\xfa\xa2\xad\x31"
7455 "\xd4\xd6\x7a\x6d\x25\x25\x54\xe4"
7456 "\x3f\x50\x59\xe1\x5c\x05\xb7\x27"
7457 "\x48\xbf\x07\xec\x1b\x13\xbe\x2b"
7458 "\xa1\x57\x2b\xd5\xab\xd7\xd0\x4c"
7459 "\x1e\xcb\x71\x9b\xc5\x90\x85\xd3"
7460 "\xde\x59\xec\x71\xeb\x89\xbb\xd0"
7461 "\x09\x50\xe1\x16\x3f\xfd\x1c\x34"
7462 "\xc3\x1c\xa1\x10\x77\x53\x98\xef"
7463 "\xf2\xfd\xa5\x01\x59\xc2\x9b\x26"
7464 "\xc7\x42\xd9\x49\xda\x58\x2b\x6e"
7465 "\x9f\x53\x19\x76\x7e\xd9\xc9\x0e"
7466 "\x68\xc8\x7f\x51\x22\x42\xef\x49"
7467 "\xa4\x55\xb6\x36\xac\x09\xc7\x31"
7468 "\x88\x15\x4b\x2e\x8f\x3a\x08\xf7"
7469 "\xd8\xf7\xa8\xc5\xa9\x33\xa6\x45"
7470 "\xe4\xc4\x94\x76\xf3\x0d\x8f\x7e"
7471 "\xc8\xf6\xbc\x23\x0a\xb6\x4c\xd3"
7472 "\x6a\xcd\x36\xc2\x90\x5c\x5c\x3c"
7473 "\x65\x7b\xc2\xd6\xcc\xe6\x0d\x87"
7474 "\x73\x2e\x71\x79\x16\x06\x63\x28"
7475 "\x09\x15\xd8\x89\x38\x38\x3d\xb5"
7476 "\x42\x1c\x08\x24\xf7\x2a\xd2\x9d"
7477 "\xc8\xca\xef\xf9\x27\xd8\x07\x86"
7478 "\xf7\x43\x0b\x55\x15\x3f\x9f\x83"
7479 "\xef\xdc\x49\x9d\x2a\xc1\x54\x62"
7480 "\xbd\x9b\x66\x55\x9f\xb7\x12\xf3"
7481 "\x1b\x4d\x9d\x2a\x5c\xed\x87\x75"
7482 "\x87\x26\xec\x61\x2c\xb4\x0f\x89"
7483 "\xb0\xfb\x2e\x68\x5d\x15\xc7\x8d"
7484 "\x2e\xc0\xd9\xec\xaf\x4f\xd2\x25"
7485 "\x29\xe8\xd2\x26\x2b\x67\xe9\xfc"
7486 "\x2b\xa8\x67\x96\x12\x1f\x5b\x96"
7487 "\xc6\x14\x53\xaf\x44\xea\xd6\xe2"
7488 "\x94\x98\xe4\x12\x93\x4c\x92\xe0"
7489 "\x18\xa5\x8d\x2d\xe4\x71\x3c\x47"
7490 "\x4c\xf7\xe6\x47\x9e\xc0\x68\xdf"
7491 "\xd4\xf5\x5a\x74\xb1\x2b\x29\x03"
7492 "\x19\x07\xaf\x90\x62\x5c\x68\x98"
7493 "\x48\x16\x11\x02\x9d\xee\xb4\x9b"
7494 "\xe5\x42\x7f\x08\xfd\x16\x32\x0b"
7495 "\xd0\xb3\xfa\x2b\xb7\x99\xf9\x29"
7496 "\xcd\x20\x45\x9f\xb3\x1a\x5d\xa2"
7497 "\xaf\x4d\xe0\xbd\x42\x0d\xbc\x74"
7498 "\x99\x9c\x8e\x53\x1a\xb4\x3e\xbd"
7499 "\xa2\x9a\x2d\xf7\xf8\x39\x0f\x67"
7500 "\x63\xfc\x6b\xc0\xaf\xb3\x4b\x4f"
7501 "\x55\xc4\xcf\xa7\xc8\x04\x11\x3e"
7502 "\x14\x32\xbb\x1b\x38\x77\xd6\x7f"
7503 "\x54\x4c\xdf\x75\xf3\x07\x2d\x33"
7504 "\x9b\xa8\x20\xe1\x7b\x12\xb5\xf3"
7505 "\xef\x2f\xce\x72\xe5\x24\x60\xc1"
7506 "\x30\xe2\xab\xa1\x8e\x11\x09\xa8"
7507 "\x21\x33\x44\xfe\x7f\x35\x32\x93"
7508 "\x39\xa7\xad\x8b\x79\x06\xb2\xcb"
7509 "\x4e\xa9\x5f\xc7\xba\x74\x29\xec"
7510 "\x93\xa0\x4e\x54\x93\xc0\xbc\x55"
7511 "\x64\xf0\x48\xe5\x57\x99\xee\x75"
7512 "\xd6\x79\x0f\x66\xb7\xc6\x57\x76"
7513 "\xf7\xb7\xf3\x9c\xc5\x60\xe8\x7f"
7514 "\x83\x76\xd6\x0e\xaa\xe6\x90\x39"
7515 "\x1d\xa6\x32\x6a\x34\xe3\x55\xf8"
7516 "\x58\xa0\x58\x7d\x33\xe0\x22\x39"
7517 "\x44\x64\x87\x86\x5a\x2f\xa7\x7e"
7518 "\x0f\x38\xea\xb0\x30\xcc\x61\xa5"
7519 "\x6a\x32\xae\x1e\xf7\xe9\xd0\xa9"
7520 "\x0c\x32\x4b\xb5\x49\x28\xab\x85"
7521 "\x2f\x8e\x01\x36\x38\x52\xd0\xba"
7522 "\xd6\x02\x78\xf8\x0e\x3e\x9c\x8b"
7523 "\x6b\x45\x99\x3f\x5c\xfe\x58\xf1"
7524 "\x5c\x94\x04\xe1\xf5\x18\x6d\x51"
7525 "\xb2\x5d\x18\x20\xb6\xc2\x9a\x42"
7526 "\x1d\xb3\xab\x3c\xb6\x3a\x13\x03"
7527 "\xb2\x46\x82\x4f\xfc\x64\xbc\x4f"
7528 "\xca\xfa\x9c\xc0\xd5\xa7\xbd\x11"
7529 "\xb7\xe4\x5a\xf6\x6f\x4d\x4d\x54"
7530 "\xea\xa4\x98\x66\xd4\x22\x3b\xd3"
7531 "\x8f\x34\x47\xd9\x7c\xf4\x72\x3b"
7532 "\x4d\x02\x77\xf6\xd6\xdd\x08\x0a"
7533 "\x81\xe1\x86\x89\x3e\x56\x10\x3c"
7534 "\xba\xd7\x81\x8c\x08\xbc\x8b\xe2"
7535 "\x53\xec\xa7\x89\xee\xc8\x56\xb5"
7536 "\x36\x2c\xb2\x03\xba\x99\xdd\x7c"
7537 "\x48\xa0\xb0\xbc\x91\x33\xe9\xa8"
7538 "\xcb\xcd\xcf\x59\x5f\x1f\x15\xe2"
7539 "\x56\xf5\x4e\x01\x35\x27\x45\x77"
7540 "\x47\xc8\xbc\xcb\x7e\x39\xc1\x97"
7541 "\x28\xd3\x84\xfc\x2c\x3e\xc8\xad"
7542 "\x9c\xf8\x8a\x61\x9c\x28\xaa\xc5"
7543 "\x99\x20\x43\x85\x9d\xa5\xe2\x8b"
7544 "\xb8\xae\xeb\xd0\x32\x0d\x52\x78"
7545 "\x09\x56\x3f\xc7\xd8\x7e\x26\xfc"
7546 "\x37\xfb\x6f\x04\xfc\xfa\x92\x10"
7547 "\xac\xf8\x3e\x21\xdc\x8c\x21\x16"
7548 "\x7d\x67\x6e\xf6\xcd\xda\xb6\x98"
7549 "\x23\xab\x23\x3c\xb2\x10\xa0\x53"
7550 "\x5a\x56\x9f\xc5\xd0\xff\xbb\xe4"
7551 "\x98\x3c\x69\x1e\xdb\x38\x8f\x7e"
7552 "\x0f\xd2\x98\x88\x81\x8b\x45\x67"
7553 "\xea\x33\xf1\xeb\xe9\x97\x55\x2e"
7554 "\xd9\xaa\xeb\x5a\xec\xda\xe1\x68"
7555 "\xa8\x9d\x3c\x84\x7c\x05\x3d\x62"
7556 "\x87\x8f\x03\x21\x28\x95\x0c\x89"
7557 "\x25\x22\x4a\xb0\x93\xa9\x50\xa2"
7558 "\x2f\x57\x6e\x18\x42\x19\x54\x0c"
7559 "\x55\x67\xc6\x11\x49\xf4\x5c\xd2"
7560 "\xe9\x3d\xdd\x8b\x48\x71\x21\x00"
7561 "\xc3\x9a\x6c\x85\x74\x28\x83\x4a"
7562 "\x1b\x31\x05\xe1\x06\x92\xe7\xda"
7563 "\x85\x73\x78\x45\x20\x7f\xae\x13"
7564 "\x7c\x33\x06\x22\xf4\x83\xf9\x35"
7565 "\x3f\x6c\x71\xa8\x4e\x48\xbe\x9b"
7566 "\xce\x8a\xba\xda\xbe\x28\x08\xf7"
7567 "\xe2\x14\x8c\x71\xea\x72\xf9\x33"
7568 "\xf2\x88\x3f\xd7\xbb\x69\x6c\x29"
7569 "\x19\xdc\x84\xce\x1f\x12\x4f\xc8"
7570 "\xaf\xa5\x04\xba\x5a\xab\xb0\xd9"
7571 "\x14\x1f\x6c\x68\x98\x39\x89\x7a"
7572 "\xd9\xd8\x2f\xdf\xa8\x47\x4a\x25"
7573 "\xe2\xfb\x33\xf4\x59\x78\xe1\x68"
7574 "\x85\xcf\xfe\x59\x20\xd4\x05\x1d"
7575 "\x80\x99\xae\xbc\xca\xae\x0f\x2f"
7576 "\x65\x43\x34\x8e\x7e\xac\xd3\x93"
7577 "\x2f\xac\x6d\x14\x3d\x02\x07\x70"
7578 "\x9d\xa4\xf3\x1b\x5c\x36\xfc\x01"
7579 "\x73\x34\x85\x0c\x6c\xd6\xf1\xbd"
7580 "\x3f\xdf\xee\xf5\xd9\xba\x56\xef"
7581 "\xf4\x9b\x6b\xee\x9f\x5a\x78\x6d"
7582 "\x32\x19\xf4\xf7\xf8\x4c\x69\x0b"
7583 "\x4b\xbc\xbb\xb7\xf2\x85\xaf\x70"
7584 "\x75\x24\x6c\x54\xa7\x0e\x4d\x1d"
7585 "\x01\xbf\x08\xac\xcf\x7f\x2c\xe3"
7586 "\x14\x89\x5e\x70\x5a\x99\x92\xcd"
7587 "\x01\x84\xc8\xd2\xab\xe5\x4f\x58"
7588 "\xe7\x0f\x2f\x0e\xff\x68\xea\xfd"
7589 "\x15\xb3\x17\xe6\xb0\xe7\x85\xd8"
7590 "\x23\x2e\x05\xc7\xc9\xc4\x46\x1f"
7591 "\xe1\x9e\x49\x20\x23\x24\x4d\x7e"
7592 "\x29\x65\xff\xf4\xb6\xfd\x1a\x85"
7593 "\xc4\x16\xec\xfc\xea\x7b\xd6\x2c"
7594 "\x43\xf8\xb7\xbf\x79\xc0\x85\xcd"
7595 "\xef\xe1\x98\xd3\xa5\xf7\x90\x8c"
7596 "\xe9\x7f\x80\x6b\xd2\xac\x4c\x30"
7597 "\xa7\xc6\x61\x6c\xd2\xf9\x2c\xff"
7598 "\x30\xbc\x22\x81\x7d\x93\x12\xe4"
7599 "\x0a\xcd\xaf\xdd\xe8\xab\x0a\x1e"
7600 "\x13\xa4\x27\xc3\x5f\xf7\x4b\xbb"
7601 "\x37\x09\x4b\x91\x6f\x92\x4f\xaf"
7602 "\x52\xee\xdf\xef\x09\x6f\xf7\x5c"
7603 "\x6e\x12\x17\x72\x63\x57\xc7\xba"
7604 "\x3b\x6b\x38\x32\x73\x1b\x9c\x80"
7605 "\xc1\x7a\xc6\xcf\xcd\x35\xc0\x6b"
7606 "\x31\x1a\x6b\xe9\xd8\x2c\x29\x3f"
7607 "\x96\xfb\xb6\xcd\x13\x91\x3b\xc2"
7608 "\xd2\xa3\x31\x8d\xa4\xcd\x57\xcd"
7609 "\x13\x3d\x64\xfd\x06\xce\xe6\xdc"
7610 "\x0c\x24\x43\x31\x40\x57\xf1\x72"
7611 "\x17\xe3\x3a\x63\x6d\x35\xcf\x5d"
7612 "\x97\x40\x59\xdd\xf7\x3c\x02\xf7"
7613 "\x1c\x7e\x05\xbb\xa9\x0d\x01\xb1"
7614 "\x8e\xc0\x30\xa9\x53\x24\xc9\x89"
7615 "\x84\x6d\xaa\xd0\xcd\x91\xc2\x4d"
7616 "\x91\xb0\x89\xe2\xbf\x83\x44\xaa"
7617 "\x28\x72\x23\xa0\xc2\xad\xad\x1c"
7618 "\xfc\x3f\x09\x7a\x0b\xdc\xc5\x1b"
7619 "\x87\x13\xc6\x5b\x59\x8d\xf2\xc8"
7620 "\xaf\xdf\x11\x95",
Tan Swee Heng8bff664c2007-12-07 16:41:29 +08007621 .rlen = 4100,
7622 },
Tan Swee Heng2407d602007-11-23 19:45:00 +08007623};
7624
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08007625/*
Kevin Coffman76cb9522008-03-24 21:26:16 +08007626 * CTS (Cipher Text Stealing) mode tests
7627 */
7628#define CTS_MODE_ENC_TEST_VECTORS 6
7629#define CTS_MODE_DEC_TEST_VECTORS 6
7630static struct cipher_testvec cts_mode_enc_tv_template[] = {
7631 { /* from rfc3962 */
7632 .klen = 16,
7633 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7634 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7635 .ilen = 17,
7636 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7637 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7638 "\x20",
7639 .rlen = 17,
7640 .result = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
7641 "\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
7642 "\x97",
7643 }, {
7644 .klen = 16,
7645 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7646 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7647 .ilen = 31,
7648 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7649 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7650 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7651 "\x20\x47\x61\x75\x27\x73\x20",
7652 .rlen = 31,
7653 .result = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
7654 "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
7655 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7656 "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
7657 }, {
7658 .klen = 16,
7659 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7660 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7661 .ilen = 32,
7662 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7663 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7664 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7665 "\x20\x47\x61\x75\x27\x73\x20\x43",
7666 .rlen = 32,
7667 .result = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7668 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
7669 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7670 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
7671 }, {
7672 .klen = 16,
7673 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7674 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7675 .ilen = 47,
7676 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7677 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7678 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7679 "\x20\x47\x61\x75\x27\x73\x20\x43"
7680 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7681 "\x70\x6c\x65\x61\x73\x65\x2c",
7682 .rlen = 47,
7683 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7684 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7685 "\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
7686 "\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
7687 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7688 "\xbe\x7f\xcb\xcc\x98\xeb\xf5",
7689 }, {
7690 .klen = 16,
7691 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7692 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7693 .ilen = 48,
7694 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7695 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7696 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7697 "\x20\x47\x61\x75\x27\x73\x20\x43"
7698 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7699 "\x70\x6c\x65\x61\x73\x65\x2c\x20",
7700 .rlen = 48,
7701 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7702 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7703 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
7704 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
7705 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7706 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
7707 }, {
7708 .klen = 16,
7709 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7710 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7711 .ilen = 64,
7712 .input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7713 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7714 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7715 "\x20\x47\x61\x75\x27\x73\x20\x43"
7716 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7717 "\x70\x6c\x65\x61\x73\x65\x2c\x20"
7718 "\x61\x6e\x64\x20\x77\x6f\x6e\x74"
7719 "\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
7720 .rlen = 64,
7721 .result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7722 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7723 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7724 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
7725 "\x48\x07\xef\xe8\x36\xee\x89\xa5"
7726 "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
7727 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
7728 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
7729 }
7730};
7731
7732static struct cipher_testvec cts_mode_dec_tv_template[] = {
7733 { /* from rfc3962 */
7734 .klen = 16,
7735 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7736 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7737 .rlen = 17,
7738 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7739 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7740 "\x20",
7741 .ilen = 17,
7742 .input = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
7743 "\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
7744 "\x97",
7745 }, {
7746 .klen = 16,
7747 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7748 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7749 .rlen = 31,
7750 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7751 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7752 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7753 "\x20\x47\x61\x75\x27\x73\x20",
7754 .ilen = 31,
7755 .input = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
7756 "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
7757 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7758 "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
7759 }, {
7760 .klen = 16,
7761 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7762 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7763 .rlen = 32,
7764 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7765 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7766 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7767 "\x20\x47\x61\x75\x27\x73\x20\x43",
7768 .ilen = 32,
7769 .input = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7770 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
7771 "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7772 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
7773 }, {
7774 .klen = 16,
7775 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7776 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7777 .rlen = 47,
7778 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7779 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7780 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7781 "\x20\x47\x61\x75\x27\x73\x20\x43"
7782 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7783 "\x70\x6c\x65\x61\x73\x65\x2c",
7784 .ilen = 47,
7785 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7786 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7787 "\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
7788 "\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
7789 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7790 "\xbe\x7f\xcb\xcc\x98\xeb\xf5",
7791 }, {
7792 .klen = 16,
7793 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7794 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7795 .rlen = 48,
7796 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7797 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7798 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7799 "\x20\x47\x61\x75\x27\x73\x20\x43"
7800 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7801 "\x70\x6c\x65\x61\x73\x65\x2c\x20",
7802 .ilen = 48,
7803 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7804 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7805 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
7806 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
7807 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7808 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
7809 }, {
7810 .klen = 16,
7811 .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
7812 "\x74\x65\x72\x69\x79\x61\x6b\x69",
7813 .rlen = 64,
7814 .result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
7815 "\x6c\x69\x6b\x65\x20\x74\x68\x65"
7816 "\x20\x47\x65\x6e\x65\x72\x61\x6c"
7817 "\x20\x47\x61\x75\x27\x73\x20\x43"
7818 "\x68\x69\x63\x6b\x65\x6e\x2c\x20"
7819 "\x70\x6c\x65\x61\x73\x65\x2c\x20"
7820 "\x61\x6e\x64\x20\x77\x6f\x6e\x74"
7821 "\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
7822 .ilen = 64,
7823 .input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
7824 "\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
7825 "\x39\x31\x25\x23\xa7\x86\x62\xd5"
7826 "\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
7827 "\x48\x07\xef\xe8\x36\xee\x89\xa5"
7828 "\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
7829 "\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
7830 "\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
7831 }
7832};
7833
7834/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07007835 * Compression stuff.
7836 */
7837#define COMP_BUF_SIZE 512
7838
7839struct comp_testvec {
7840 int inlen, outlen;
7841 char input[COMP_BUF_SIZE];
7842 char output[COMP_BUF_SIZE];
7843};
7844
7845/*
7846 * Deflate test vectors (null-terminated strings).
7847 * Params: winbits=11, Z_DEFAULT_COMPRESSION, MAX_MEM_LEVEL.
7848 */
7849#define DEFLATE_COMP_TEST_VECTORS 2
7850#define DEFLATE_DECOMP_TEST_VECTORS 2
7851
7852static struct comp_testvec deflate_comp_tv_template[] = {
7853 {
7854 .inlen = 70,
7855 .outlen = 38,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007856 .input = "Join us now and share the software "
7857 "Join us now and share the software ",
7858 .output = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
7859 "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
7860 "\x28\xce\x48\x2c\x4a\x55\x28\xc9"
7861 "\x48\x55\x28\xce\x4f\x2b\x29\x07"
7862 "\x71\xbc\x08\x2b\x01\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07007863 }, {
7864 .inlen = 191,
7865 .outlen = 122,
7866 .input = "This document describes a compression method based on the DEFLATE"
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007867 "compression algorithm. This document defines the application of "
7868 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
7869 .output = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
7870 "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
7871 "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
7872 "\x24\xdb\x67\xd9\x47\xc1\xef\x49"
7873 "\x68\x12\x51\xae\x76\x67\xd6\x27"
7874 "\x19\x88\x1a\xde\x85\xab\x21\xf2"
7875 "\x08\x5d\x16\x1e\x20\x04\x2d\xad"
7876 "\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
7877 "\x42\x83\x23\xb6\x6c\x89\x71\x9b"
7878 "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
7879 "\xed\x62\xa9\x4c\x80\xff\x13\xaf"
7880 "\x52\x37\xed\x0e\x52\x6b\x59\x02"
7881 "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
7882 "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
7883 "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
7884 "\xfa\x02",
Linus Torvalds1da177e2005-04-16 15:20:36 -07007885 },
7886};
7887
7888static struct comp_testvec deflate_decomp_tv_template[] = {
7889 {
7890 .inlen = 122,
7891 .outlen = 191,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007892 .input = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
7893 "\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
7894 "\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
7895 "\x24\xdb\x67\xd9\x47\xc1\xef\x49"
7896 "\x68\x12\x51\xae\x76\x67\xd6\x27"
7897 "\x19\x88\x1a\xde\x85\xab\x21\xf2"
7898 "\x08\x5d\x16\x1e\x20\x04\x2d\xad"
7899 "\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
7900 "\x42\x83\x23\xb6\x6c\x89\x71\x9b"
7901 "\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
7902 "\xed\x62\xa9\x4c\x80\xff\x13\xaf"
7903 "\x52\x37\xed\x0e\x52\x6b\x59\x02"
7904 "\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
7905 "\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
7906 "\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
7907 "\xfa\x02",
Linus Torvalds1da177e2005-04-16 15:20:36 -07007908 .output = "This document describes a compression method based on the DEFLATE"
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007909 "compression algorithm. This document defines the application of "
7910 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
Linus Torvalds1da177e2005-04-16 15:20:36 -07007911 }, {
7912 .inlen = 38,
7913 .outlen = 70,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007914 .input = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
7915 "\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
7916 "\x28\xce\x48\x2c\x4a\x55\x28\xc9"
7917 "\x48\x55\x28\xce\x4f\x2b\x29\x07"
7918 "\x71\xbc\x08\x2b\x01\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07007919 .output = "Join us now and share the software "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007920 "Join us now and share the software ",
Linus Torvalds1da177e2005-04-16 15:20:36 -07007921 },
7922};
7923
7924/*
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08007925 * LZO test vectors (null-terminated strings).
7926 */
7927#define LZO_COMP_TEST_VECTORS 2
7928#define LZO_DECOMP_TEST_VECTORS 2
7929
7930static struct comp_testvec lzo_comp_tv_template[] = {
7931 {
7932 .inlen = 70,
7933 .outlen = 46,
7934 .input = "Join us now and share the software "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007935 "Join us now and share the software ",
7936 .output = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
7937 "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
7938 "\x64\x20\x73\x68\x61\x72\x65\x20"
7939 "\x74\x68\x65\x20\x73\x6f\x66\x74"
7940 "\x77\x70\x01\x01\x4a\x6f\x69\x6e"
7941 "\x3d\x88\x00\x11\x00\x00",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08007942 }, {
7943 .inlen = 159,
7944 .outlen = 133,
7945 .input = "This document describes a compression method based on the LZO "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007946 "compression algorithm. This document defines the application of "
7947 "the LZO algorithm used in UBIFS.",
7948 .output = "\x00\x2b\x54\x68\x69\x73\x20\x64"
7949 "\x6f\x63\x75\x6d\x65\x6e\x74\x20"
7950 "\x64\x65\x73\x63\x72\x69\x62\x65"
7951 "\x73\x20\x61\x20\x63\x6f\x6d\x70"
7952 "\x72\x65\x73\x73\x69\x6f\x6e\x20"
7953 "\x6d\x65\x74\x68\x6f\x64\x20\x62"
7954 "\x61\x73\x65\x64\x20\x6f\x6e\x20"
7955 "\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
7956 "\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
7957 "\x69\x74\x68\x6d\x2e\x20\x20\x54"
7958 "\x68\x69\x73\x2a\x54\x01\x02\x66"
7959 "\x69\x6e\x65\x73\x94\x06\x05\x61"
7960 "\x70\x70\x6c\x69\x63\x61\x74\x76"
7961 "\x0a\x6f\x66\x88\x02\x60\x09\x27"
7962 "\xf0\x00\x0c\x20\x75\x73\x65\x64"
7963 "\x20\x69\x6e\x20\x55\x42\x49\x46"
7964 "\x53\x2e\x11\x00\x00",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08007965 },
7966};
7967
7968static struct comp_testvec lzo_decomp_tv_template[] = {
7969 {
7970 .inlen = 133,
7971 .outlen = 159,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007972 .input = "\x00\x2b\x54\x68\x69\x73\x20\x64"
7973 "\x6f\x63\x75\x6d\x65\x6e\x74\x20"
7974 "\x64\x65\x73\x63\x72\x69\x62\x65"
7975 "\x73\x20\x61\x20\x63\x6f\x6d\x70"
7976 "\x72\x65\x73\x73\x69\x6f\x6e\x20"
7977 "\x6d\x65\x74\x68\x6f\x64\x20\x62"
7978 "\x61\x73\x65\x64\x20\x6f\x6e\x20"
7979 "\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
7980 "\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
7981 "\x69\x74\x68\x6d\x2e\x20\x20\x54"
7982 "\x68\x69\x73\x2a\x54\x01\x02\x66"
7983 "\x69\x6e\x65\x73\x94\x06\x05\x61"
7984 "\x70\x70\x6c\x69\x63\x61\x74\x76"
7985 "\x0a\x6f\x66\x88\x02\x60\x09\x27"
7986 "\xf0\x00\x0c\x20\x75\x73\x65\x64"
7987 "\x20\x69\x6e\x20\x55\x42\x49\x46"
7988 "\x53\x2e\x11\x00\x00",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08007989 .output = "This document describes a compression method based on the LZO "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007990 "compression algorithm. This document defines the application of "
7991 "the LZO algorithm used in UBIFS.",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08007992 }, {
7993 .inlen = 46,
7994 .outlen = 70,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08007995 .input = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
7996 "\x73\x20\x6e\x6f\x77\x20\x61\x6e"
7997 "\x64\x20\x73\x68\x61\x72\x65\x20"
7998 "\x74\x68\x65\x20\x73\x6f\x66\x74"
7999 "\x77\x70\x01\x01\x4a\x6f\x69\x6e"
8000 "\x3d\x88\x00\x11\x00\x00",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08008001 .output = "Join us now and share the software "
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008002 "Join us now and share the software ",
Zoltan Sogor0b77abb2007-12-07 16:53:23 +08008003 },
8004};
8005
8006/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07008007 * Michael MIC test vectors from IEEE 802.11i
8008 */
8009#define MICHAEL_MIC_TEST_VECTORS 6
8010
Herbert Xuef2736f2005-06-22 13:26:03 -07008011static struct hash_testvec michael_mic_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07008012 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008013 .key = "\x00\x00\x00\x00\x00\x00\x00\x00",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008014 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008015 .plaintext = zeroed_string,
Linus Torvalds1da177e2005-04-16 15:20:36 -07008016 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008017 .digest = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008018 },
8019 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008020 .key = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008021 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008022 .plaintext = "M",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008023 .psize = 1,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008024 .digest = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008025 },
8026 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008027 .key = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008028 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008029 .plaintext = "Mi",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008030 .psize = 2,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008031 .digest = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008032 },
8033 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008034 .key = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008035 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008036 .plaintext = "Mic",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008037 .psize = 3,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008038 .digest = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008039 },
8040 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008041 .key = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008042 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008043 .plaintext = "Mich",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008044 .psize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008045 .digest = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008046 },
8047 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008048 .key = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008049 .ksize = 8,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008050 .plaintext = "Michael",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008051 .psize = 7,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008052 .digest = "\x0a\x94\x2b\x12\x4e\xca\xa5\x46",
Linus Torvalds1da177e2005-04-16 15:20:36 -07008053 }
8054};
8055
Harald Welteebfd9bc2005-06-22 13:27:23 -07008056/*
Herbert Xuc907ee72006-08-21 22:04:03 +10008057 * CRC32C test vectors
8058 */
8059#define CRC32C_TEST_VECTORS 14
8060
8061static struct hash_testvec crc32c_tv_template[] = {
8062 {
8063 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008064 .digest = "\x00\x00\x00\x00",
Herbert Xuc907ee72006-08-21 22:04:03 +10008065 },
8066 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008067 .key = "\x87\xa9\xcb\xed",
Herbert Xuc907ee72006-08-21 22:04:03 +10008068 .ksize = 4,
8069 .psize = 0,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008070 .digest = "\x78\x56\x34\x12",
Herbert Xuc907ee72006-08-21 22:04:03 +10008071 },
8072 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008073 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008074 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008075 .plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08"
8076 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
8077 "\x11\x12\x13\x14\x15\x16\x17\x18"
8078 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
8079 "\x21\x22\x23\x24\x25\x26\x27\x28",
Herbert Xuc907ee72006-08-21 22:04:03 +10008080 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008081 .digest = "\x7f\x15\x2c\x0e",
Herbert Xuc907ee72006-08-21 22:04:03 +10008082 },
8083 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008084 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008085 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008086 .plaintext = "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8087 "\x31\x32\x33\x34\x35\x36\x37\x38"
8088 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8089 "\x41\x42\x43\x44\x45\x46\x47\x48"
8090 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50",
Herbert Xuc907ee72006-08-21 22:04:03 +10008091 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008092 .digest = "\xf6\xeb\x80\xe9",
Herbert Xuc907ee72006-08-21 22:04:03 +10008093 },
8094 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008095 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008096 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008097 .plaintext = "\x51\x52\x53\x54\x55\x56\x57\x58"
8098 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8099 "\x61\x62\x63\x64\x65\x66\x67\x68"
8100 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8101 "\x71\x72\x73\x74\x75\x76\x77\x78",
Herbert Xuc907ee72006-08-21 22:04:03 +10008102 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008103 .digest = "\xed\xbd\x74\xde",
Herbert Xuc907ee72006-08-21 22:04:03 +10008104 },
8105 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008106 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008107 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008108 .plaintext = "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8109 "\x81\x82\x83\x84\x85\x86\x87\x88"
8110 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8111 "\x91\x92\x93\x94\x95\x96\x97\x98"
8112 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0",
Herbert Xuc907ee72006-08-21 22:04:03 +10008113 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008114 .digest = "\x62\xc8\x79\xd5",
Herbert Xuc907ee72006-08-21 22:04:03 +10008115 },
8116 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008117 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008118 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008119 .plaintext = "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8120 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8121 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8122 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8123 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8",
Herbert Xuc907ee72006-08-21 22:04:03 +10008124 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008125 .digest = "\xd0\x9a\x97\xba",
Herbert Xuc907ee72006-08-21 22:04:03 +10008126 },
8127 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008128 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008129 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008130 .plaintext = "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8131 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8132 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8133 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8134 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
Herbert Xuc907ee72006-08-21 22:04:03 +10008135 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008136 .digest = "\x13\xd9\x29\x2b",
Herbert Xuc907ee72006-08-21 22:04:03 +10008137 },
8138 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008139 .key = "\x80\xea\xd3\xf1",
Herbert Xuc907ee72006-08-21 22:04:03 +10008140 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008141 .plaintext = "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8142 "\x31\x32\x33\x34\x35\x36\x37\x38"
8143 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8144 "\x41\x42\x43\x44\x45\x46\x47\x48"
8145 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50",
Herbert Xuc907ee72006-08-21 22:04:03 +10008146 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008147 .digest = "\x0c\xb5\xe2\xa2",
Herbert Xuc907ee72006-08-21 22:04:03 +10008148 },
8149 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008150 .key = "\xf3\x4a\x1d\x5d",
Herbert Xuc907ee72006-08-21 22:04:03 +10008151 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008152 .plaintext = "\x51\x52\x53\x54\x55\x56\x57\x58"
8153 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8154 "\x61\x62\x63\x64\x65\x66\x67\x68"
8155 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8156 "\x71\x72\x73\x74\x75\x76\x77\x78",
Herbert Xuc907ee72006-08-21 22:04:03 +10008157 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008158 .digest = "\xd1\x7f\xfb\xa6",
Herbert Xuc907ee72006-08-21 22:04:03 +10008159 },
8160 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008161 .key = "\x2e\x80\x04\x59",
Herbert Xuc907ee72006-08-21 22:04:03 +10008162 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008163 .plaintext = "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8164 "\x81\x82\x83\x84\x85\x86\x87\x88"
8165 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8166 "\x91\x92\x93\x94\x95\x96\x97\x98"
8167 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0",
Herbert Xuc907ee72006-08-21 22:04:03 +10008168 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008169 .digest = "\x59\x33\xe6\x7a",
Herbert Xuc907ee72006-08-21 22:04:03 +10008170 },
8171 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008172 .key = "\xa6\xcc\x19\x85",
Herbert Xuc907ee72006-08-21 22:04:03 +10008173 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008174 .plaintext = "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8175 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8176 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8177 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8178 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8",
Herbert Xuc907ee72006-08-21 22:04:03 +10008179 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008180 .digest = "\xbe\x03\x01\xd2",
Herbert Xuc907ee72006-08-21 22:04:03 +10008181 },
8182 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008183 .key = "\x41\xfc\xfe\x2d",
Herbert Xuc907ee72006-08-21 22:04:03 +10008184 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008185 .plaintext = "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8186 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8187 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8188 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8189 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
Herbert Xuc907ee72006-08-21 22:04:03 +10008190 .psize = 40,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008191 .digest = "\x75\xd3\xc5\x24",
Herbert Xuc907ee72006-08-21 22:04:03 +10008192 },
8193 {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008194 .key = "\xff\xff\xff\xff",
Herbert Xuc907ee72006-08-21 22:04:03 +10008195 .ksize = 4,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008196 .plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08"
8197 "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
8198 "\x11\x12\x13\x14\x15\x16\x17\x18"
8199 "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
8200 "\x21\x22\x23\x24\x25\x26\x27\x28"
8201 "\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
8202 "\x31\x32\x33\x34\x35\x36\x37\x38"
8203 "\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
8204 "\x41\x42\x43\x44\x45\x46\x47\x48"
8205 "\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50"
8206 "\x51\x52\x53\x54\x55\x56\x57\x58"
8207 "\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
8208 "\x61\x62\x63\x64\x65\x66\x67\x68"
8209 "\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
8210 "\x71\x72\x73\x74\x75\x76\x77\x78"
8211 "\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
8212 "\x81\x82\x83\x84\x85\x86\x87\x88"
8213 "\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
8214 "\x91\x92\x93\x94\x95\x96\x97\x98"
8215 "\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0"
8216 "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8"
8217 "\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
8218 "\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8"
8219 "\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
8220 "\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8"
8221 "\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
8222 "\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8"
8223 "\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
8224 "\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8"
8225 "\xe9\xea\xeb\xec\xed\xee\xef\xf0",
Herbert Xuc907ee72006-08-21 22:04:03 +10008226 .psize = 240,
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008227 .digest = "\x75\xd3\xc5\x24",
Herbert Xuc907ee72006-08-21 22:04:03 +10008228 .np = 2,
8229 .tap = { 31, 209 }
8230 },
8231};
8232
8233/*
Harald Welteebfd9bc2005-06-22 13:27:23 -07008234 * Cipher speed tests
8235 */
Sebastian Siewiord5dc3922008-03-11 21:27:11 +08008236static u8 speed_template_8[] = {8, 0};
8237static u8 speed_template_24[] = {24, 0};
8238static u8 speed_template_8_32[] = {8, 32, 0};
8239static u8 speed_template_16_32[] = {16, 32, 0};
8240static u8 speed_template_16_24_32[] = {16, 24, 32, 0};
8241static u8 speed_template_32_40_48[] = {32, 40, 48, 0};
8242static u8 speed_template_32_48_64[] = {32, 48, 64, 0};
Rik Snelf19f5112007-09-19 20:23:13 +08008243
Michal Ludvige8057922006-05-30 22:04:19 +10008244/*
8245 * Digest speed tests
8246 */
Herbert Xue9d41162006-08-19 21:38:49 +10008247static struct hash_speed generic_hash_speed_template[] = {
Sebastian Siewiorde224c32008-03-13 20:21:51 +08008248 { .blen = 16, .plen = 16, },
Michal Ludvige8057922006-05-30 22:04:19 +10008249 { .blen = 64, .plen = 16, },
8250 { .blen = 64, .plen = 64, },
8251 { .blen = 256, .plen = 16, },
8252 { .blen = 256, .plen = 64, },
8253 { .blen = 256, .plen = 256, },
8254 { .blen = 1024, .plen = 16, },
8255 { .blen = 1024, .plen = 256, },
8256 { .blen = 1024, .plen = 1024, },
8257 { .blen = 2048, .plen = 16, },
8258 { .blen = 2048, .plen = 256, },
8259 { .blen = 2048, .plen = 1024, },
8260 { .blen = 2048, .plen = 2048, },
8261 { .blen = 4096, .plen = 16, },
8262 { .blen = 4096, .plen = 256, },
8263 { .blen = 4096, .plen = 1024, },
8264 { .blen = 4096, .plen = 4096, },
8265 { .blen = 8192, .plen = 16, },
8266 { .blen = 8192, .plen = 256, },
8267 { .blen = 8192, .plen = 1024, },
8268 { .blen = 8192, .plen = 4096, },
8269 { .blen = 8192, .plen = 8192, },
8270
8271 /* End marker */
8272 { .blen = 0, .plen = 0, }
8273};
8274
Linus Torvalds1da177e2005-04-16 15:20:36 -07008275#endif /* _CRYPTO_TCRYPT_H */