blob: ec861388d9a0ac7a42e1bdd142a8aaeecc8fe61e [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>
9 *
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License as published by the Free
Herbert Xuef2736f2005-06-22 13:26:03 -070012 * Software Foundation; either version 2 of the License, or (at your option)
Linus Torvalds1da177e2005-04-16 15:20:36 -070013 * any later version.
14 *
Andrew Donofrioa28091a2006-12-10 12:10:20 +110015 * 2006-12-07 Added SHA384 HMAC and SHA512 HMAC tests
Harald Welteebfd9bc2005-06-22 13:27:23 -070016 * 2004-08-09 Cipher speed tests by Reyk Floeter <reyk@vantronix.net>
17 * 2003-09-14 Changes by Kartikey Mahendra Bhatt
Linus Torvalds1da177e2005-04-16 15:20:36 -070018 *
19 */
20#ifndef _CRYPTO_TCRYPT_H
21#define _CRYPTO_TCRYPT_H
22
23#define MAX_DIGEST_SIZE 64
24#define MAX_TAP 8
25
26#define MAX_KEYLEN 56
27#define MAX_IVLEN 32
28
29struct hash_testvec {
Atsushi Nemoto06b42aa2006-03-13 21:39:23 +110030 /* only used with keyed hash algorithms */
Andrew Donofrioa28091a2006-12-10 12:10:20 +110031 char key[132] __attribute__ ((__aligned__(4)));
Herbert Xuc907ee72006-08-21 22:04:03 +100032 char plaintext[240];
Linus Torvalds1da177e2005-04-16 15:20:36 -070033 char digest[MAX_DIGEST_SIZE];
Herbert Xuef2736f2005-06-22 13:26:03 -070034 unsigned char tap[MAX_TAP];
Atsushi Nemoto06b42aa2006-03-13 21:39:23 +110035 unsigned char psize;
36 unsigned char np;
Linus Torvalds1da177e2005-04-16 15:20:36 -070037 unsigned char ksize;
38};
39
Linus Torvalds1da177e2005-04-16 15:20:36 -070040struct cipher_testvec {
Atsushi Nemoto06b42aa2006-03-13 21:39:23 +110041 char key[MAX_KEYLEN] __attribute__ ((__aligned__(4)));
Linus Torvalds1da177e2005-04-16 15:20:36 -070042 char iv[MAX_IVLEN];
Rik Snelf3d10442006-11-29 19:01:41 +110043 char input[512];
44 char result[512];
Herbert Xuef2736f2005-06-22 13:26:03 -070045 unsigned char tap[MAX_TAP];
Atsushi Nemoto06b42aa2006-03-13 21:39:23 +110046 int np;
47 unsigned char fail;
48 unsigned char wk; /* weak key flag */
49 unsigned char klen;
Rik Snelf3d10442006-11-29 19:01:41 +110050 unsigned short ilen;
51 unsigned short rlen;
Linus Torvalds1da177e2005-04-16 15:20:36 -070052};
53
Harald Welteebfd9bc2005-06-22 13:27:23 -070054struct cipher_speed {
55 unsigned char klen;
56 unsigned int blen;
57};
58
Herbert Xue9d41162006-08-19 21:38:49 +100059struct hash_speed {
Michal Ludvige8057922006-05-30 22:04:19 +100060 unsigned int blen; /* buffer length */
61 unsigned int plen; /* per-update length */
62};
63
Linus Torvalds1da177e2005-04-16 15:20:36 -070064/*
65 * MD4 test vectors from RFC1320
66 */
67#define MD4_TEST_VECTORS 7
68
69static struct hash_testvec md4_tv_template [] = {
70 {
71 .plaintext = "",
72 .digest = { 0x31, 0xd6, 0xcf, 0xe0, 0xd1, 0x6a, 0xe9, 0x31,
73 0xb7, 0x3c, 0x59, 0xd7, 0xe0, 0xc0, 0x89, 0xc0 },
74 }, {
75 .plaintext = "a",
76 .psize = 1,
77 .digest = { 0xbd, 0xe5, 0x2c, 0xb3, 0x1d, 0xe3, 0x3e, 0x46,
78 0x24, 0x5e, 0x05, 0xfb, 0xdb, 0xd6, 0xfb, 0x24 },
79 }, {
80 .plaintext = "abc",
81 .psize = 3,
82 .digest = { 0xa4, 0x48, 0x01, 0x7a, 0xaf, 0x21, 0xd8, 0x52,
83 0x5f, 0xc1, 0x0a, 0xe8, 0x7a, 0xa6, 0x72, 0x9d },
84 }, {
85 .plaintext = "message digest",
86 .psize = 14,
87 .digest = { 0xd9, 0x13, 0x0a, 0x81, 0x64, 0x54, 0x9f, 0xe8,
88 0x18, 0x87, 0x48, 0x06, 0xe1, 0xc7, 0x01, 0x4b },
89 }, {
90 .plaintext = "abcdefghijklmnopqrstuvwxyz",
91 .psize = 26,
92 .digest = { 0xd7, 0x9e, 0x1c, 0x30, 0x8a, 0xa5, 0xbb, 0xcd,
93 0xee, 0xa8, 0xed, 0x63, 0xdf, 0x41, 0x2d, 0xa9 },
94 .np = 2,
95 .tap = { 13, 13 },
96 }, {
97 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
98 .psize = 62,
99 .digest = { 0x04, 0x3f, 0x85, 0x82, 0xf2, 0x41, 0xdb, 0x35,
100 0x1c, 0xe6, 0x27, 0xe1, 0x53, 0xe7, 0xf0, 0xe4 },
101 }, {
102 .plaintext = "123456789012345678901234567890123456789012345678901234567890123"
103 "45678901234567890",
104 .psize = 80,
105 .digest = { 0xe3, 0x3b, 0x4d, 0xdc, 0x9c, 0x38, 0xf2, 0x19,
106 0x9c, 0x3e, 0x7b, 0x16, 0x4f, 0xcc, 0x05, 0x36 },
107 },
108};
109
110/*
111 * MD5 test vectors from RFC1321
112 */
113#define MD5_TEST_VECTORS 7
114
115static struct hash_testvec md5_tv_template[] = {
116 {
117 .digest = { 0xd4, 0x1d, 0x8c, 0xd9, 0x8f, 0x00, 0xb2, 0x04,
118 0xe9, 0x80, 0x09, 0x98, 0xec, 0xf8, 0x42, 0x7e },
119 }, {
120 .plaintext = "a",
121 .psize = 1,
122 .digest = { 0x0c, 0xc1, 0x75, 0xb9, 0xc0, 0xf1, 0xb6, 0xa8,
123 0x31, 0xc3, 0x99, 0xe2, 0x69, 0x77, 0x26, 0x61 },
124 }, {
125 .plaintext = "abc",
126 .psize = 3,
127 .digest = { 0x90, 0x01, 0x50, 0x98, 0x3c, 0xd2, 0x4f, 0xb0,
128 0xd6, 0x96, 0x3f, 0x7d, 0x28, 0xe1, 0x7f, 0x72 },
129 }, {
130 .plaintext = "message digest",
131 .psize = 14,
132 .digest = { 0xf9, 0x6b, 0x69, 0x7d, 0x7c, 0xb7, 0x93, 0x8d,
133 0x52, 0x5a, 0x2f, 0x31, 0xaa, 0xf1, 0x61, 0xd0 },
134 }, {
135 .plaintext = "abcdefghijklmnopqrstuvwxyz",
136 .psize = 26,
137 .digest = { 0xc3, 0xfc, 0xd3, 0xd7, 0x61, 0x92, 0xe4, 0x00,
138 0x7d, 0xfb, 0x49, 0x6c, 0xca, 0x67, 0xe1, 0x3b },
139 .np = 2,
140 .tap = {13, 13}
141 }, {
142 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
143 .psize = 62,
144 .digest = { 0xd1, 0x74, 0xab, 0x98, 0xd2, 0x77, 0xd9, 0xf5,
145 0xa5, 0x61, 0x1c, 0x2c, 0x9f, 0x41, 0x9d, 0x9f },
146 }, {
147 .plaintext = "12345678901234567890123456789012345678901234567890123456789012"
148 "345678901234567890",
149 .psize = 80,
150 .digest = { 0x57, 0xed, 0xf4, 0xa2, 0x2b, 0xe3, 0xc9, 0x55,
151 0xac, 0x49, 0xda, 0x2e, 0x21, 0x07, 0xb6, 0x7a },
152 }
153};
154
155/*
156 * SHA1 test vectors from from FIPS PUB 180-1
157 */
158#define SHA1_TEST_VECTORS 2
159
160static struct hash_testvec sha1_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700161 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700162 .plaintext = "abc",
163 .psize = 3,
164 .digest = { 0xa9, 0x99, 0x3e, 0x36, 0x47, 0x06, 0x81, 0x6a, 0xba, 0x3e,
165 0x25, 0x71, 0x78, 0x50, 0xc2, 0x6c, 0x9c, 0xd0, 0xd8, 0x9d },
166 }, {
167 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
168 .psize = 56,
169 .digest = { 0x84, 0x98, 0x3e, 0x44, 0x1c, 0x3b, 0xd2, 0x6e, 0xba, 0xae,
170 0x4a, 0xa1, 0xf9, 0x51, 0x29, 0xe5, 0xe5, 0x46, 0x70, 0xf1 },
171 .np = 2,
172 .tap = { 28, 28 }
173 }
174};
175
176/*
177 * SHA256 test vectors from from NIST
178 */
179#define SHA256_TEST_VECTORS 2
180
Herbert Xuef2736f2005-06-22 13:26:03 -0700181static struct hash_testvec sha256_tv_template[] = {
182 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700183 .plaintext = "abc",
184 .psize = 3,
185 .digest = { 0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea,
186 0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23,
187 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c,
188 0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad },
189 }, {
190 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
191 .psize = 56,
192 .digest = { 0x24, 0x8d, 0x6a, 0x61, 0xd2, 0x06, 0x38, 0xb8,
193 0xe5, 0xc0, 0x26, 0x93, 0x0c, 0x3e, 0x60, 0x39,
194 0xa3, 0x3c, 0xe4, 0x59, 0x64, 0xff, 0x21, 0x67,
195 0xf6, 0xec, 0xed, 0xd4, 0x19, 0xdb, 0x06, 0xc1 },
196 .np = 2,
197 .tap = { 28, 28 }
198 },
199};
200
201/*
202 * SHA384 test vectors from from NIST and kerneli
203 */
204#define SHA384_TEST_VECTORS 4
205
206static struct hash_testvec sha384_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700207 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700208 .plaintext= "abc",
209 .psize = 3,
210 .digest = { 0xcb, 0x00, 0x75, 0x3f, 0x45, 0xa3, 0x5e, 0x8b,
211 0xb5, 0xa0, 0x3d, 0x69, 0x9a, 0xc6, 0x50, 0x07,
212 0x27, 0x2c, 0x32, 0xab, 0x0e, 0xde, 0xd1, 0x63,
213 0x1a, 0x8b, 0x60, 0x5a, 0x43, 0xff, 0x5b, 0xed,
214 0x80, 0x86, 0x07, 0x2b, 0xa1, 0xe7, 0xcc, 0x23,
215 0x58, 0xba, 0xec, 0xa1, 0x34, 0xc8, 0x25, 0xa7 },
216 }, {
217 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
218 .psize = 56,
219 .digest = { 0x33, 0x91, 0xfd, 0xdd, 0xfc, 0x8d, 0xc7, 0x39,
220 0x37, 0x07, 0xa6, 0x5b, 0x1b, 0x47, 0x09, 0x39,
221 0x7c, 0xf8, 0xb1, 0xd1, 0x62, 0xaf, 0x05, 0xab,
222 0xfe, 0x8f, 0x45, 0x0d, 0xe5, 0xf3, 0x6b, 0xc6,
223 0xb0, 0x45, 0x5a, 0x85, 0x20, 0xbc, 0x4e, 0x6f,
224 0x5f, 0xe9, 0x5b, 0x1f, 0xe3, 0xc8, 0x45, 0x2b},
225 }, {
226 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
Herbert Xuef2736f2005-06-22 13:26:03 -0700227 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700228 .psize = 112,
229 .digest = { 0x09, 0x33, 0x0c, 0x33, 0xf7, 0x11, 0x47, 0xe8,
230 0x3d, 0x19, 0x2f, 0xc7, 0x82, 0xcd, 0x1b, 0x47,
231 0x53, 0x11, 0x1b, 0x17, 0x3b, 0x3b, 0x05, 0xd2,
232 0x2f, 0xa0, 0x80, 0x86, 0xe3, 0xb0, 0xf7, 0x12,
233 0xfc, 0xc7, 0xc7, 0x1a, 0x55, 0x7e, 0x2d, 0xb9,
234 0x66, 0xc3, 0xe9, 0xfa, 0x91, 0x74, 0x60, 0x39 },
235 }, {
236 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
237 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
238 .psize = 104,
239 .digest = { 0x3d, 0x20, 0x89, 0x73, 0xab, 0x35, 0x08, 0xdb,
240 0xbd, 0x7e, 0x2c, 0x28, 0x62, 0xba, 0x29, 0x0a,
241 0xd3, 0x01, 0x0e, 0x49, 0x78, 0xc1, 0x98, 0xdc,
242 0x4d, 0x8f, 0xd0, 0x14, 0xe5, 0x82, 0x82, 0x3a,
243 0x89, 0xe1, 0x6f, 0x9b, 0x2a, 0x7b, 0xbc, 0x1a,
244 0xc9, 0x38, 0xe2, 0xd1, 0x99, 0xe8, 0xbe, 0xa4 },
245 .np = 4,
246 .tap = { 26, 26, 26, 26 }
247 },
248};
249
250/*
251 * SHA512 test vectors from from NIST and kerneli
252 */
253#define SHA512_TEST_VECTORS 4
254
255static struct hash_testvec sha512_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700256 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700257 .plaintext = "abc",
258 .psize = 3,
259 .digest = { 0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba,
260 0xcc, 0x41, 0x73, 0x49, 0xae, 0x20, 0x41, 0x31,
261 0x12, 0xe6, 0xfa, 0x4e, 0x89, 0xa9, 0x7e, 0xa2,
262 0x0a, 0x9e, 0xee, 0xe6, 0x4b, 0x55, 0xd3, 0x9a,
263 0x21, 0x92, 0x99, 0x2a, 0x27, 0x4f, 0xc1, 0xa8,
264 0x36, 0xba, 0x3c, 0x23, 0xa3, 0xfe, 0xeb, 0xbd,
265 0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, 0xe8, 0x0e,
266 0x2a, 0x9a, 0xc9, 0x4f, 0xa5, 0x4c, 0xa4, 0x9f },
267 }, {
268 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
269 .psize = 56,
270 .digest = { 0x20, 0x4a, 0x8f, 0xc6, 0xdd, 0xa8, 0x2f, 0x0a,
271 0x0c, 0xed, 0x7b, 0xeb, 0x8e, 0x08, 0xa4, 0x16,
272 0x57, 0xc1, 0x6e, 0xf4, 0x68, 0xb2, 0x28, 0xa8,
273 0x27, 0x9b, 0xe3, 0x31, 0xa7, 0x03, 0xc3, 0x35,
274 0x96, 0xfd, 0x15, 0xc1, 0x3b, 0x1b, 0x07, 0xf9,
275 0xaa, 0x1d, 0x3b, 0xea, 0x57, 0x78, 0x9c, 0xa0,
276 0x31, 0xad, 0x85, 0xc7, 0xa7, 0x1d, 0xd7, 0x03,
277 0x54, 0xec, 0x63, 0x12, 0x38, 0xca, 0x34, 0x45 },
278 }, {
279 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
280 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
281 .psize = 112,
282 .digest = { 0x8e, 0x95, 0x9b, 0x75, 0xda, 0xe3, 0x13, 0xda,
283 0x8c, 0xf4, 0xf7, 0x28, 0x14, 0xfc, 0x14, 0x3f,
284 0x8f, 0x77, 0x79, 0xc6, 0xeb, 0x9f, 0x7f, 0xa1,
285 0x72, 0x99, 0xae, 0xad, 0xb6, 0x88, 0x90, 0x18,
286 0x50, 0x1d, 0x28, 0x9e, 0x49, 0x00, 0xf7, 0xe4,
287 0x33, 0x1b, 0x99, 0xde, 0xc4, 0xb5, 0x43, 0x3a,
288 0xc7, 0xd3, 0x29, 0xee, 0xb6, 0xdd, 0x26, 0x54,
289 0x5e, 0x96, 0xe5, 0x5b, 0x87, 0x4b, 0xe9, 0x09 },
290 }, {
291 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
292 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
293 .psize = 104,
294 .digest = { 0x93, 0x0d, 0x0c, 0xef, 0xcb, 0x30, 0xff, 0x11,
295 0x33, 0xb6, 0x89, 0x81, 0x21, 0xf1, 0xcf, 0x3d,
296 0x27, 0x57, 0x8a, 0xfc, 0xaf, 0xe8, 0x67, 0x7c,
297 0x52, 0x57, 0xcf, 0x06, 0x99, 0x11, 0xf7, 0x5d,
298 0x8f, 0x58, 0x31, 0xb5, 0x6e, 0xbf, 0xda, 0x67,
299 0xb2, 0x78, 0xe6, 0x6d, 0xff, 0x8b, 0x84, 0xfe,
300 0x2b, 0x28, 0x70, 0xf7, 0x42, 0xa5, 0x80, 0xd8,
301 0xed, 0xb4, 0x19, 0x87, 0x23, 0x28, 0x50, 0xc9 },
302 .np = 4,
303 .tap = { 26, 26, 26, 26 }
304 },
305};
306
307
308/*
Herbert Xuef2736f2005-06-22 13:26:03 -0700309 * WHIRLPOOL test vectors from Whirlpool package
Linus Torvalds1da177e2005-04-16 15:20:36 -0700310 * by Vincent Rijmen and Paulo S. L. M. Barreto as part of the NESSIE
311 * submission
312 */
313#define WP512_TEST_VECTORS 8
314
315static struct hash_testvec wp512_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700316 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700317 .plaintext = "",
318 .psize = 0,
319 .digest = { 0x19, 0xFA, 0x61, 0xD7, 0x55, 0x22, 0xA4, 0x66,
320 0x9B, 0x44, 0xE3, 0x9C, 0x1D, 0x2E, 0x17, 0x26,
321 0xC5, 0x30, 0x23, 0x21, 0x30, 0xD4, 0x07, 0xF8,
322 0x9A, 0xFE, 0xE0, 0x96, 0x49, 0x97, 0xF7, 0xA7,
323 0x3E, 0x83, 0xBE, 0x69, 0x8B, 0x28, 0x8F, 0xEB,
324 0xCF, 0x88, 0xE3, 0xE0, 0x3C, 0x4F, 0x07, 0x57,
325 0xEA, 0x89, 0x64, 0xE5, 0x9B, 0x63, 0xD9, 0x37,
326 0x08, 0xB1, 0x38, 0xCC, 0x42, 0xA6, 0x6E, 0xB3 },
327
328
329 }, {
330 .plaintext = "a",
331 .psize = 1,
332 .digest = { 0x8A, 0xCA, 0x26, 0x02, 0x79, 0x2A, 0xEC, 0x6F,
333 0x11, 0xA6, 0x72, 0x06, 0x53, 0x1F, 0xB7, 0xD7,
334 0xF0, 0xDF, 0xF5, 0x94, 0x13, 0x14, 0x5E, 0x69,
335 0x73, 0xC4, 0x50, 0x01, 0xD0, 0x08, 0x7B, 0x42,
336 0xD1, 0x1B, 0xC6, 0x45, 0x41, 0x3A, 0xEF, 0xF6,
337 0x3A, 0x42, 0x39, 0x1A, 0x39, 0x14, 0x5A, 0x59,
338 0x1A, 0x92, 0x20, 0x0D, 0x56, 0x01, 0x95, 0xE5,
339 0x3B, 0x47, 0x85, 0x84, 0xFD, 0xAE, 0x23, 0x1A },
340 }, {
341 .plaintext = "abc",
342 .psize = 3,
343 .digest = { 0x4E, 0x24, 0x48, 0xA4, 0xC6, 0xF4, 0x86, 0xBB,
344 0x16, 0xB6, 0x56, 0x2C, 0x73, 0xB4, 0x02, 0x0B,
345 0xF3, 0x04, 0x3E, 0x3A, 0x73, 0x1B, 0xCE, 0x72,
346 0x1A, 0xE1, 0xB3, 0x03, 0xD9, 0x7E, 0x6D, 0x4C,
347 0x71, 0x81, 0xEE, 0xBD, 0xB6, 0xC5, 0x7E, 0x27,
348 0x7D, 0x0E, 0x34, 0x95, 0x71, 0x14, 0xCB, 0xD6,
349 0xC7, 0x97, 0xFC, 0x9D, 0x95, 0xD8, 0xB5, 0x82,
350 0xD2, 0x25, 0x29, 0x20, 0x76, 0xD4, 0xEE, 0xF5 },
351 }, {
352 .plaintext = "message digest",
353 .psize = 14,
Herbert Xuef2736f2005-06-22 13:26:03 -0700354 .digest = { 0x37, 0x8C, 0x84, 0xA4, 0x12, 0x6E, 0x2D, 0xC6,
355 0xE5, 0x6D, 0xCC, 0x74, 0x58, 0x37, 0x7A, 0xAC,
356 0x83, 0x8D, 0x00, 0x03, 0x22, 0x30, 0xF5, 0x3C,
357 0xE1, 0xF5, 0x70, 0x0C, 0x0F, 0xFB, 0x4D, 0x3B,
358 0x84, 0x21, 0x55, 0x76, 0x59, 0xEF, 0x55, 0xC1,
359 0x06, 0xB4, 0xB5, 0x2A, 0xC5, 0xA4, 0xAA, 0xA6,
360 0x92, 0xED, 0x92, 0x00, 0x52, 0x83, 0x8F, 0x33,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700361 0x62, 0xE8, 0x6D, 0xBD, 0x37, 0xA8, 0x90, 0x3E },
362 }, {
363 .plaintext = "abcdefghijklmnopqrstuvwxyz",
364 .psize = 26,
365 .digest = { 0xF1, 0xD7, 0x54, 0x66, 0x26, 0x36, 0xFF, 0xE9,
366 0x2C, 0x82, 0xEB, 0xB9, 0x21, 0x2A, 0x48, 0x4A,
367 0x8D, 0x38, 0x63, 0x1E, 0xAD, 0x42, 0x38, 0xF5,
368 0x44, 0x2E, 0xE1, 0x3B, 0x80, 0x54, 0xE4, 0x1B,
369 0x08, 0xBF, 0x2A, 0x92, 0x51, 0xC3, 0x0B, 0x6A,
370 0x0B, 0x8A, 0xAE, 0x86, 0x17, 0x7A, 0xB4, 0xA6,
371 0xF6, 0x8F, 0x67, 0x3E, 0x72, 0x07, 0x86, 0x5D,
372 0x5D, 0x98, 0x19, 0xA3, 0xDB, 0xA4, 0xEB, 0x3B },
373 }, {
374 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
375 "abcdefghijklmnopqrstuvwxyz0123456789",
376 .psize = 62,
377 .digest = { 0xDC, 0x37, 0xE0, 0x08, 0xCF, 0x9E, 0xE6, 0x9B,
378 0xF1, 0x1F, 0x00, 0xED, 0x9A, 0xBA, 0x26, 0x90,
379 0x1D, 0xD7, 0xC2, 0x8C, 0xDE, 0xC0, 0x66, 0xCC,
380 0x6A, 0xF4, 0x2E, 0x40, 0xF8, 0x2F, 0x3A, 0x1E,
381 0x08, 0xEB, 0xA2, 0x66, 0x29, 0x12, 0x9D, 0x8F,
382 0xB7, 0xCB, 0x57, 0x21, 0x1B, 0x92, 0x81, 0xA6,
383 0x55, 0x17, 0xCC, 0x87, 0x9D, 0x7B, 0x96, 0x21,
384 0x42, 0xC6, 0x5F, 0x5A, 0x7A, 0xF0, 0x14, 0x67 },
385 }, {
386 .plaintext = "1234567890123456789012345678901234567890"
387 "1234567890123456789012345678901234567890",
388 .psize = 80,
389 .digest = { 0x46, 0x6E, 0xF1, 0x8B, 0xAB, 0xB0, 0x15, 0x4D,
390 0x25, 0xB9, 0xD3, 0x8A, 0x64, 0x14, 0xF5, 0xC0,
391 0x87, 0x84, 0x37, 0x2B, 0xCC, 0xB2, 0x04, 0xD6,
392 0x54, 0x9C, 0x4A, 0xFA, 0xDB, 0x60, 0x14, 0x29,
393 0x4D, 0x5B, 0xD8, 0xDF, 0x2A, 0x6C, 0x44, 0xE5,
394 0x38, 0xCD, 0x04, 0x7B, 0x26, 0x81, 0xA5, 0x1A,
395 0x2C, 0x60, 0x48, 0x1E, 0x88, 0xC5, 0xA2, 0x0B,
396 0x2C, 0x2A, 0x80, 0xCF, 0x3A, 0x9A, 0x08, 0x3B },
397 }, {
398 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
399 .psize = 32,
Herbert Xuef2736f2005-06-22 13:26:03 -0700400 .digest = { 0x2A, 0x98, 0x7E, 0xA4, 0x0F, 0x91, 0x70, 0x61,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700401 0xF5, 0xD6, 0xF0, 0xA0, 0xE4, 0x64, 0x4F, 0x48,
402 0x8A, 0x7A, 0x5A, 0x52, 0xDE, 0xEE, 0x65, 0x62,
403 0x07, 0xC5, 0x62, 0xF9, 0x88, 0xE9, 0x5C, 0x69,
404 0x16, 0xBD, 0xC8, 0x03, 0x1B, 0xC5, 0xBE, 0x1B,
405 0x7B, 0x94, 0x76, 0x39, 0xFE, 0x05, 0x0B, 0x56,
406 0x93, 0x9B, 0xAA, 0xA0, 0xAD, 0xFF, 0x9A, 0xE6,
407 0x74, 0x5B, 0x7B, 0x18, 0x1C, 0x3B, 0xE3, 0xFD },
408 },
409};
410
411#define WP384_TEST_VECTORS 8
412
413static struct hash_testvec wp384_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700414 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700415 .plaintext = "",
416 .psize = 0,
417 .digest = { 0x19, 0xFA, 0x61, 0xD7, 0x55, 0x22, 0xA4, 0x66,
418 0x9B, 0x44, 0xE3, 0x9C, 0x1D, 0x2E, 0x17, 0x26,
419 0xC5, 0x30, 0x23, 0x21, 0x30, 0xD4, 0x07, 0xF8,
420 0x9A, 0xFE, 0xE0, 0x96, 0x49, 0x97, 0xF7, 0xA7,
421 0x3E, 0x83, 0xBE, 0x69, 0x8B, 0x28, 0x8F, 0xEB,
422 0xCF, 0x88, 0xE3, 0xE0, 0x3C, 0x4F, 0x07, 0x57 },
423
424
425 }, {
426 .plaintext = "a",
427 .psize = 1,
428 .digest = { 0x8A, 0xCA, 0x26, 0x02, 0x79, 0x2A, 0xEC, 0x6F,
429 0x11, 0xA6, 0x72, 0x06, 0x53, 0x1F, 0xB7, 0xD7,
430 0xF0, 0xDF, 0xF5, 0x94, 0x13, 0x14, 0x5E, 0x69,
431 0x73, 0xC4, 0x50, 0x01, 0xD0, 0x08, 0x7B, 0x42,
432 0xD1, 0x1B, 0xC6, 0x45, 0x41, 0x3A, 0xEF, 0xF6,
433 0x3A, 0x42, 0x39, 0x1A, 0x39, 0x14, 0x5A, 0x59 },
434 }, {
435 .plaintext = "abc",
436 .psize = 3,
437 .digest = { 0x4E, 0x24, 0x48, 0xA4, 0xC6, 0xF4, 0x86, 0xBB,
438 0x16, 0xB6, 0x56, 0x2C, 0x73, 0xB4, 0x02, 0x0B,
439 0xF3, 0x04, 0x3E, 0x3A, 0x73, 0x1B, 0xCE, 0x72,
440 0x1A, 0xE1, 0xB3, 0x03, 0xD9, 0x7E, 0x6D, 0x4C,
441 0x71, 0x81, 0xEE, 0xBD, 0xB6, 0xC5, 0x7E, 0x27,
442 0x7D, 0x0E, 0x34, 0x95, 0x71, 0x14, 0xCB, 0xD6 },
443 }, {
444 .plaintext = "message digest",
445 .psize = 14,
Herbert Xuef2736f2005-06-22 13:26:03 -0700446 .digest = { 0x37, 0x8C, 0x84, 0xA4, 0x12, 0x6E, 0x2D, 0xC6,
447 0xE5, 0x6D, 0xCC, 0x74, 0x58, 0x37, 0x7A, 0xAC,
448 0x83, 0x8D, 0x00, 0x03, 0x22, 0x30, 0xF5, 0x3C,
449 0xE1, 0xF5, 0x70, 0x0C, 0x0F, 0xFB, 0x4D, 0x3B,
450 0x84, 0x21, 0x55, 0x76, 0x59, 0xEF, 0x55, 0xC1,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700451 0x06, 0xB4, 0xB5, 0x2A, 0xC5, 0xA4, 0xAA, 0xA6 },
452 }, {
453 .plaintext = "abcdefghijklmnopqrstuvwxyz",
454 .psize = 26,
455 .digest = { 0xF1, 0xD7, 0x54, 0x66, 0x26, 0x36, 0xFF, 0xE9,
456 0x2C, 0x82, 0xEB, 0xB9, 0x21, 0x2A, 0x48, 0x4A,
457 0x8D, 0x38, 0x63, 0x1E, 0xAD, 0x42, 0x38, 0xF5,
458 0x44, 0x2E, 0xE1, 0x3B, 0x80, 0x54, 0xE4, 0x1B,
459 0x08, 0xBF, 0x2A, 0x92, 0x51, 0xC3, 0x0B, 0x6A,
460 0x0B, 0x8A, 0xAE, 0x86, 0x17, 0x7A, 0xB4, 0xA6 },
461 }, {
462 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
463 "abcdefghijklmnopqrstuvwxyz0123456789",
464 .psize = 62,
465 .digest = { 0xDC, 0x37, 0xE0, 0x08, 0xCF, 0x9E, 0xE6, 0x9B,
466 0xF1, 0x1F, 0x00, 0xED, 0x9A, 0xBA, 0x26, 0x90,
467 0x1D, 0xD7, 0xC2, 0x8C, 0xDE, 0xC0, 0x66, 0xCC,
468 0x6A, 0xF4, 0x2E, 0x40, 0xF8, 0x2F, 0x3A, 0x1E,
469 0x08, 0xEB, 0xA2, 0x66, 0x29, 0x12, 0x9D, 0x8F,
470 0xB7, 0xCB, 0x57, 0x21, 0x1B, 0x92, 0x81, 0xA6 },
471 }, {
472 .plaintext = "1234567890123456789012345678901234567890"
473 "1234567890123456789012345678901234567890",
474 .psize = 80,
475 .digest = { 0x46, 0x6E, 0xF1, 0x8B, 0xAB, 0xB0, 0x15, 0x4D,
476 0x25, 0xB9, 0xD3, 0x8A, 0x64, 0x14, 0xF5, 0xC0,
477 0x87, 0x84, 0x37, 0x2B, 0xCC, 0xB2, 0x04, 0xD6,
478 0x54, 0x9C, 0x4A, 0xFA, 0xDB, 0x60, 0x14, 0x29,
479 0x4D, 0x5B, 0xD8, 0xDF, 0x2A, 0x6C, 0x44, 0xE5,
480 0x38, 0xCD, 0x04, 0x7B, 0x26, 0x81, 0xA5, 0x1A },
481 }, {
482 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
483 .psize = 32,
Herbert Xuef2736f2005-06-22 13:26:03 -0700484 .digest = { 0x2A, 0x98, 0x7E, 0xA4, 0x0F, 0x91, 0x70, 0x61,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700485 0xF5, 0xD6, 0xF0, 0xA0, 0xE4, 0x64, 0x4F, 0x48,
486 0x8A, 0x7A, 0x5A, 0x52, 0xDE, 0xEE, 0x65, 0x62,
487 0x07, 0xC5, 0x62, 0xF9, 0x88, 0xE9, 0x5C, 0x69,
488 0x16, 0xBD, 0xC8, 0x03, 0x1B, 0xC5, 0xBE, 0x1B,
489 0x7B, 0x94, 0x76, 0x39, 0xFE, 0x05, 0x0B, 0x56 },
490 },
491};
492
493#define WP256_TEST_VECTORS 8
494
495static struct hash_testvec wp256_tv_template[] = {
Herbert Xuef2736f2005-06-22 13:26:03 -0700496 {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700497 .plaintext = "",
498 .psize = 0,
499 .digest = { 0x19, 0xFA, 0x61, 0xD7, 0x55, 0x22, 0xA4, 0x66,
500 0x9B, 0x44, 0xE3, 0x9C, 0x1D, 0x2E, 0x17, 0x26,
501 0xC5, 0x30, 0x23, 0x21, 0x30, 0xD4, 0x07, 0xF8,
502 0x9A, 0xFE, 0xE0, 0x96, 0x49, 0x97, 0xF7, 0xA7 },
503
504
505 }, {
506 .plaintext = "a",
507 .psize = 1,
508 .digest = { 0x8A, 0xCA, 0x26, 0x02, 0x79, 0x2A, 0xEC, 0x6F,
509 0x11, 0xA6, 0x72, 0x06, 0x53, 0x1F, 0xB7, 0xD7,
510 0xF0, 0xDF, 0xF5, 0x94, 0x13, 0x14, 0x5E, 0x69,
511 0x73, 0xC4, 0x50, 0x01, 0xD0, 0x08, 0x7B, 0x42 },
512 }, {
513 .plaintext = "abc",
514 .psize = 3,
515 .digest = { 0x4E, 0x24, 0x48, 0xA4, 0xC6, 0xF4, 0x86, 0xBB,
516 0x16, 0xB6, 0x56, 0x2C, 0x73, 0xB4, 0x02, 0x0B,
517 0xF3, 0x04, 0x3E, 0x3A, 0x73, 0x1B, 0xCE, 0x72,
518 0x1A, 0xE1, 0xB3, 0x03, 0xD9, 0x7E, 0x6D, 0x4C },
519 }, {
520 .plaintext = "message digest",
521 .psize = 14,
Herbert Xuef2736f2005-06-22 13:26:03 -0700522 .digest = { 0x37, 0x8C, 0x84, 0xA4, 0x12, 0x6E, 0x2D, 0xC6,
523 0xE5, 0x6D, 0xCC, 0x74, 0x58, 0x37, 0x7A, 0xAC,
524 0x83, 0x8D, 0x00, 0x03, 0x22, 0x30, 0xF5, 0x3C,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700525 0xE1, 0xF5, 0x70, 0x0C, 0x0F, 0xFB, 0x4D, 0x3B },
526 }, {
527 .plaintext = "abcdefghijklmnopqrstuvwxyz",
528 .psize = 26,
529 .digest = { 0xF1, 0xD7, 0x54, 0x66, 0x26, 0x36, 0xFF, 0xE9,
530 0x2C, 0x82, 0xEB, 0xB9, 0x21, 0x2A, 0x48, 0x4A,
531 0x8D, 0x38, 0x63, 0x1E, 0xAD, 0x42, 0x38, 0xF5,
532 0x44, 0x2E, 0xE1, 0x3B, 0x80, 0x54, 0xE4, 0x1B },
533 }, {
534 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
535 "abcdefghijklmnopqrstuvwxyz0123456789",
536 .psize = 62,
537 .digest = { 0xDC, 0x37, 0xE0, 0x08, 0xCF, 0x9E, 0xE6, 0x9B,
538 0xF1, 0x1F, 0x00, 0xED, 0x9A, 0xBA, 0x26, 0x90,
539 0x1D, 0xD7, 0xC2, 0x8C, 0xDE, 0xC0, 0x66, 0xCC,
540 0x6A, 0xF4, 0x2E, 0x40, 0xF8, 0x2F, 0x3A, 0x1E },
541 }, {
542 .plaintext = "1234567890123456789012345678901234567890"
543 "1234567890123456789012345678901234567890",
544 .psize = 80,
545 .digest = { 0x46, 0x6E, 0xF1, 0x8B, 0xAB, 0xB0, 0x15, 0x4D,
546 0x25, 0xB9, 0xD3, 0x8A, 0x64, 0x14, 0xF5, 0xC0,
547 0x87, 0x84, 0x37, 0x2B, 0xCC, 0xB2, 0x04, 0xD6,
548 0x54, 0x9C, 0x4A, 0xFA, 0xDB, 0x60, 0x14, 0x29 },
549 }, {
550 .plaintext = "abcdbcdecdefdefgefghfghighijhijk",
551 .psize = 32,
Herbert Xuef2736f2005-06-22 13:26:03 -0700552 .digest = { 0x2A, 0x98, 0x7E, 0xA4, 0x0F, 0x91, 0x70, 0x61,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700553 0xF5, 0xD6, 0xF0, 0xA0, 0xE4, 0x64, 0x4F, 0x48,
554 0x8A, 0x7A, 0x5A, 0x52, 0xDE, 0xEE, 0x65, 0x62,
555 0x07, 0xC5, 0x62, 0xF9, 0x88, 0xE9, 0x5C, 0x69 },
556 },
557};
558
559/*
Herbert Xuef2736f2005-06-22 13:26:03 -0700560 * TIGER test vectors from Tiger website
Linus Torvalds1da177e2005-04-16 15:20:36 -0700561 */
562#define TGR192_TEST_VECTORS 6
563
564static struct hash_testvec tgr192_tv_template[] = {
565 {
566 .plaintext = "",
567 .psize = 0,
568 .digest = { 0x24, 0xf0, 0x13, 0x0c, 0x63, 0xac, 0x93, 0x32,
569 0x16, 0x16, 0x6e, 0x76, 0xb1, 0xbb, 0x92, 0x5f,
570 0xf3, 0x73, 0xde, 0x2d, 0x49, 0x58, 0x4e, 0x7a },
571 }, {
572 .plaintext = "abc",
573 .psize = 3,
574 .digest = { 0xf2, 0x58, 0xc1, 0xe8, 0x84, 0x14, 0xab, 0x2a,
575 0x52, 0x7a, 0xb5, 0x41, 0xff, 0xc5, 0xb8, 0xbf,
576 0x93, 0x5f, 0x7b, 0x95, 0x1c, 0x13, 0x29, 0x51 },
577 }, {
578 .plaintext = "Tiger",
579 .psize = 5,
580 .digest = { 0x9f, 0x00, 0xf5, 0x99, 0x07, 0x23, 0x00, 0xdd,
581 0x27, 0x6a, 0xbb, 0x38, 0xc8, 0xeb, 0x6d, 0xec,
582 0x37, 0x79, 0x0c, 0x11, 0x6f, 0x9d, 0x2b, 0xdf },
583 }, {
584 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
585 .psize = 64,
586 .digest = { 0x87, 0xfb, 0x2a, 0x90, 0x83, 0x85, 0x1c, 0xf7,
587 0x47, 0x0d, 0x2c, 0xf8, 0x10, 0xe6, 0xdf, 0x9e,
588 0xb5, 0x86, 0x44, 0x50, 0x34, 0xa5, 0xa3, 0x86 },
589 }, {
590 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
591 .psize = 64,
592 .digest = { 0x46, 0x7d, 0xb8, 0x08, 0x63, 0xeb, 0xce, 0x48,
593 0x8d, 0xf1, 0xcd, 0x12, 0x61, 0x65, 0x5d, 0xe9,
594 0x57, 0x89, 0x65, 0x65, 0x97, 0x5f, 0x91, 0x97 },
595 }, {
596 .plaintext = "Tiger - A Fast New Hash Function, "
597 "by Ross Anderson and Eli Biham, "
598 "proceedings of Fast Software Encryption 3, "
599 "Cambridge, 1996.",
600 .psize = 125,
601 .digest = { 0x3d, 0x9a, 0xeb, 0x03, 0xd1, 0xbd, 0x1a, 0x63,
602 0x57, 0xb2, 0x77, 0x4d, 0xfd, 0x6d, 0x5b, 0x24,
603 0xdd, 0x68, 0x15, 0x1d, 0x50, 0x39, 0x74, 0xfc },
604 },
605};
606
607#define TGR160_TEST_VECTORS 6
608
609static struct hash_testvec tgr160_tv_template[] = {
610 {
611 .plaintext = "",
612 .psize = 0,
613 .digest = { 0x24, 0xf0, 0x13, 0x0c, 0x63, 0xac, 0x93, 0x32,
614 0x16, 0x16, 0x6e, 0x76, 0xb1, 0xbb, 0x92, 0x5f,
615 0xf3, 0x73, 0xde, 0x2d },
616 }, {
617 .plaintext = "abc",
618 .psize = 3,
619 .digest = { 0xf2, 0x58, 0xc1, 0xe8, 0x84, 0x14, 0xab, 0x2a,
620 0x52, 0x7a, 0xb5, 0x41, 0xff, 0xc5, 0xb8, 0xbf,
621 0x93, 0x5f, 0x7b, 0x95 },
622 }, {
623 .plaintext = "Tiger",
624 .psize = 5,
625 .digest = { 0x9f, 0x00, 0xf5, 0x99, 0x07, 0x23, 0x00, 0xdd,
626 0x27, 0x6a, 0xbb, 0x38, 0xc8, 0xeb, 0x6d, 0xec,
627 0x37, 0x79, 0x0c, 0x11 },
628 }, {
629 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
630 .psize = 64,
631 .digest = { 0x87, 0xfb, 0x2a, 0x90, 0x83, 0x85, 0x1c, 0xf7,
632 0x47, 0x0d, 0x2c, 0xf8, 0x10, 0xe6, 0xdf, 0x9e,
633 0xb5, 0x86, 0x44, 0x50 },
634 }, {
635 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
636 .psize = 64,
637 .digest = { 0x46, 0x7d, 0xb8, 0x08, 0x63, 0xeb, 0xce, 0x48,
638 0x8d, 0xf1, 0xcd, 0x12, 0x61, 0x65, 0x5d, 0xe9,
639 0x57, 0x89, 0x65, 0x65 },
640 }, {
641 .plaintext = "Tiger - A Fast New Hash Function, "
642 "by Ross Anderson and Eli Biham, "
643 "proceedings of Fast Software Encryption 3, "
644 "Cambridge, 1996.",
645 .psize = 125,
646 .digest = { 0x3d, 0x9a, 0xeb, 0x03, 0xd1, 0xbd, 0x1a, 0x63,
647 0x57, 0xb2, 0x77, 0x4d, 0xfd, 0x6d, 0x5b, 0x24,
648 0xdd, 0x68, 0x15, 0x1d },
649 },
650};
651
652#define TGR128_TEST_VECTORS 6
653
654static struct hash_testvec tgr128_tv_template[] = {
655 {
656 .plaintext = "",
657 .psize = 0,
658 .digest = { 0x24, 0xf0, 0x13, 0x0c, 0x63, 0xac, 0x93, 0x32,
659 0x16, 0x16, 0x6e, 0x76, 0xb1, 0xbb, 0x92, 0x5f },
660 }, {
661 .plaintext = "abc",
662 .psize = 3,
663 .digest = { 0xf2, 0x58, 0xc1, 0xe8, 0x84, 0x14, 0xab, 0x2a,
664 0x52, 0x7a, 0xb5, 0x41, 0xff, 0xc5, 0xb8, 0xbf },
665 }, {
666 .plaintext = "Tiger",
667 .psize = 5,
668 .digest = { 0x9f, 0x00, 0xf5, 0x99, 0x07, 0x23, 0x00, 0xdd,
669 0x27, 0x6a, 0xbb, 0x38, 0xc8, 0xeb, 0x6d, 0xec },
670 }, {
671 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
672 .psize = 64,
673 .digest = { 0x87, 0xfb, 0x2a, 0x90, 0x83, 0x85, 0x1c, 0xf7,
674 0x47, 0x0d, 0x2c, 0xf8, 0x10, 0xe6, 0xdf, 0x9e },
675 }, {
676 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
677 .psize = 64,
678 .digest = { 0x46, 0x7d, 0xb8, 0x08, 0x63, 0xeb, 0xce, 0x48,
679 0x8d, 0xf1, 0xcd, 0x12, 0x61, 0x65, 0x5d, 0xe9 },
680 }, {
681 .plaintext = "Tiger - A Fast New Hash Function, "
682 "by Ross Anderson and Eli Biham, "
683 "proceedings of Fast Software Encryption 3, "
684 "Cambridge, 1996.",
685 .psize = 125,
686 .digest = { 0x3d, 0x9a, 0xeb, 0x03, 0xd1, 0xbd, 0x1a, 0x63,
687 0x57, 0xb2, 0x77, 0x4d, 0xfd, 0x6d, 0x5b, 0x24 },
688 },
689};
690
Linus Torvalds1da177e2005-04-16 15:20:36 -0700691/*
692 * HMAC-MD5 test vectors from RFC2202
693 * (These need to be fixed to not use strlen).
694 */
695#define HMAC_MD5_TEST_VECTORS 7
696
Herbert Xue9d41162006-08-19 21:38:49 +1000697static struct hash_testvec hmac_md5_tv_template[] =
Herbert Xuef2736f2005-06-22 13:26:03 -0700698{
Linus Torvalds1da177e2005-04-16 15:20:36 -0700699 {
700 .key = { [0 ... 15] = 0x0b },
701 .ksize = 16,
702 .plaintext = "Hi There",
703 .psize = 8,
704 .digest = { 0x92, 0x94, 0x72, 0x7a, 0x36, 0x38, 0xbb, 0x1c,
705 0x13, 0xf4, 0x8e, 0xf8, 0x15, 0x8b, 0xfc, 0x9d },
706 }, {
707 .key = { 'J', 'e', 'f', 'e' },
708 .ksize = 4,
709 .plaintext = "what do ya want for nothing?",
710 .psize = 28,
711 .digest = { 0x75, 0x0c, 0x78, 0x3e, 0x6a, 0xb0, 0xb5, 0x03,
712 0xea, 0xa8, 0x6e, 0x31, 0x0a, 0x5d, 0xb7, 0x38 },
713 .np = 2,
714 .tap = {14, 14}
715 }, {
716 .key = { [0 ... 15] = 0xaa },
717 .ksize = 16,
718 .plaintext = { [0 ... 49] = 0xdd },
719 .psize = 50,
720 .digest = { 0x56, 0xbe, 0x34, 0x52, 0x1d, 0x14, 0x4c, 0x88,
721 0xdb, 0xb8, 0xc7, 0x33, 0xf0, 0xe8, 0xb3, 0xf6 },
722 }, {
723 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
724 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
725 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, },
726 .ksize = 25,
727 .plaintext = { [0 ... 49] = 0xcd },
728 .psize = 50,
729 .digest = { 0x69, 0x7e, 0xaf, 0x0a, 0xca, 0x3a, 0x3a, 0xea,
730 0x3a, 0x75, 0x16, 0x47, 0x46, 0xff, 0xaa, 0x79 },
731 }, {
732 .key = { [0 ... 15] = 0x0c },
733 .ksize = 16,
734 .plaintext = "Test With Truncation",
735 .psize = 20,
736 .digest = { 0x56, 0x46, 0x1e, 0xf2, 0x34, 0x2e, 0xdc, 0x00,
737 0xf9, 0xba, 0xb9, 0x95, 0x69, 0x0e, 0xfd, 0x4c },
738 }, {
739 .key = { [0 ... 79] = 0xaa },
740 .ksize = 80,
741 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
742 .psize = 54,
743 .digest = { 0x6b, 0x1a, 0xb7, 0xfe, 0x4b, 0xd7, 0xbf, 0x8f,
744 0x0b, 0x62, 0xe6, 0xce, 0x61, 0xb9, 0xd0, 0xcd },
745 }, {
746 .key = { [0 ... 79] = 0xaa },
747 .ksize = 80,
748 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
749 "Block-Size Data",
750 .psize = 73,
751 .digest = { 0x6f, 0x63, 0x0f, 0xad, 0x67, 0xcd, 0xa0, 0xee,
752 0x1f, 0xb1, 0xf5, 0x62, 0xdb, 0x3a, 0xa5, 0x3e },
753 },
754};
755
756/*
757 * HMAC-SHA1 test vectors from RFC2202
758 */
759#define HMAC_SHA1_TEST_VECTORS 7
760
Herbert Xue9d41162006-08-19 21:38:49 +1000761static struct hash_testvec hmac_sha1_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700762 {
763 .key = { [0 ... 19] = 0x0b },
764 .ksize = 20,
765 .plaintext = "Hi There",
766 .psize = 8,
767 .digest = { 0xb6, 0x17, 0x31, 0x86, 0x55, 0x05, 0x72, 0x64,
768 0xe2, 0x8b, 0xc0, 0xb6, 0xfb, 0x37, 0x8c, 0x8e, 0xf1,
769 0x46, 0xbe },
770 }, {
Herbert Xuef2736f2005-06-22 13:26:03 -0700771 .key = { 'J', 'e', 'f', 'e' },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700772 .ksize = 4,
773 .plaintext = "what do ya want for nothing?",
774 .psize = 28,
Herbert Xuef2736f2005-06-22 13:26:03 -0700775 .digest = { 0xef, 0xfc, 0xdf, 0x6a, 0xe5, 0xeb, 0x2f, 0xa2, 0xd2, 0x74,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700776 0x16, 0xd5, 0xf1, 0x84, 0xdf, 0x9c, 0x25, 0x9a, 0x7c, 0x79 },
777 .np = 2,
778 .tap = { 14, 14 }
779 }, {
780 .key = { [0 ... 19] = 0xaa },
781 .ksize = 20,
782 .plaintext = { [0 ... 49] = 0xdd },
783 .psize = 50,
Herbert Xuef2736f2005-06-22 13:26:03 -0700784 .digest = { 0x12, 0x5d, 0x73, 0x42, 0xb9, 0xac, 0x11, 0xcd, 0x91, 0xa3,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700785 0x9a, 0xf4, 0x8a, 0xa1, 0x7b, 0x4f, 0x63, 0xf1, 0x75, 0xd3 },
786 }, {
787 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
Herbert Xuef2736f2005-06-22 13:26:03 -0700788 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700789 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19 },
790 .ksize = 25,
791 .plaintext = { [0 ... 49] = 0xcd },
792 .psize = 50,
Herbert Xuef2736f2005-06-22 13:26:03 -0700793 .digest = { 0x4c, 0x90, 0x07, 0xf4, 0x02, 0x62, 0x50, 0xc6, 0xbc, 0x84,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700794 0x14, 0xf9, 0xbf, 0x50, 0xc8, 0x6c, 0x2d, 0x72, 0x35, 0xda },
795 }, {
796 .key = { [0 ... 19] = 0x0c },
797 .ksize = 20,
798 .plaintext = "Test With Truncation",
799 .psize = 20,
Herbert Xuef2736f2005-06-22 13:26:03 -0700800 .digest = { 0x4c, 0x1a, 0x03, 0x42, 0x4b, 0x55, 0xe0, 0x7f, 0xe7, 0xf2,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700801 0x7b, 0xe1, 0xd5, 0x8b, 0xb9, 0x32, 0x4a, 0x9a, 0x5a, 0x04 },
802 }, {
803 .key = { [0 ... 79] = 0xaa },
804 .ksize = 80,
805 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
806 .psize = 54,
Herbert Xuef2736f2005-06-22 13:26:03 -0700807 .digest = { 0xaa, 0x4a, 0xe5, 0xe1, 0x52, 0x72, 0xd0, 0x0e, 0x95, 0x70,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700808 0x56, 0x37, 0xce, 0x8a, 0x3b, 0x55, 0xed, 0x40, 0x21, 0x12 },
809 }, {
810 .key = { [0 ... 79] = 0xaa },
811 .ksize = 80,
812 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
813 "Block-Size Data",
814 .psize = 73,
Herbert Xuef2736f2005-06-22 13:26:03 -0700815 .digest = { 0xe8, 0xe9, 0x9d, 0x0f, 0x45, 0x23, 0x7d, 0x78, 0x6d, 0x6b,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700816 0xba, 0xa7, 0x96, 0x5c, 0x78, 0x08, 0xbb, 0xff, 0x1a, 0x91 },
817 },
818};
819
820/*
821 * HMAC-SHA256 test vectors from
822 * draft-ietf-ipsec-ciph-sha-256-01.txt
823 */
824#define HMAC_SHA256_TEST_VECTORS 10
825
Herbert Xue9d41162006-08-19 21:38:49 +1000826static struct hash_testvec hmac_sha256_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700827 {
828 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
829 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
830 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
831 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20},
832 .ksize = 32,
833 .plaintext = "abc",
834 .psize = 3,
835 .digest = { 0xa2, 0x1b, 0x1f, 0x5d, 0x4c, 0xf4, 0xf7, 0x3a,
836 0x4d, 0xd9, 0x39, 0x75, 0x0f, 0x7a, 0x06, 0x6a,
837 0x7f, 0x98, 0xcc, 0x13, 0x1c, 0xb1, 0x6a, 0x66,
838 0x92, 0x75, 0x90, 0x21, 0xcf, 0xab, 0x81, 0x81 },
839 }, {
840 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
841 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
842 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
843 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20 },
844 .ksize = 32,
845 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
846 .psize = 56,
847 .digest = { 0x10, 0x4f, 0xdc, 0x12, 0x57, 0x32, 0x8f, 0x08,
848 0x18, 0x4b, 0xa7, 0x31, 0x31, 0xc5, 0x3c, 0xae,
849 0xe6, 0x98, 0xe3, 0x61, 0x19, 0x42, 0x11, 0x49,
850 0xea, 0x8c, 0x71, 0x24, 0x56, 0x69, 0x7d, 0x30 },
851 }, {
852 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
853 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
854 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
855 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20 },
856 .ksize = 32,
857 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
858 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
859 .psize = 112,
860 .digest = { 0x47, 0x03, 0x05, 0xfc, 0x7e, 0x40, 0xfe, 0x34,
861 0xd3, 0xee, 0xb3, 0xe7, 0x73, 0xd9, 0x5a, 0xab,
862 0x73, 0xac, 0xf0, 0xfd, 0x06, 0x04, 0x47, 0xa5,
863 0xeb, 0x45, 0x95, 0xbf, 0x33, 0xa9, 0xd1, 0xa3 },
864 }, {
865 .key = { [0 ... 31] = 0x0b },
866 .ksize = 32,
867 .plaintext = "Hi There",
868 .psize = 8,
869 .digest = { 0x19, 0x8a, 0x60, 0x7e, 0xb4, 0x4b, 0xfb, 0xc6,
870 0x99, 0x03, 0xa0, 0xf1, 0xcf, 0x2b, 0xbd, 0xc5,
871 0xba, 0x0a, 0xa3, 0xf3, 0xd9, 0xae, 0x3c, 0x1c,
872 0x7a, 0x3b, 0x16, 0x96, 0xa0, 0xb6, 0x8c, 0xf7 },
873 }, {
874 .key = "Jefe",
875 .ksize = 4,
876 .plaintext = "what do ya want for nothing?",
877 .psize = 28,
878 .digest = { 0x5b, 0xdc, 0xc1, 0x46, 0xbf, 0x60, 0x75, 0x4e,
879 0x6a, 0x04, 0x24, 0x26, 0x08, 0x95, 0x75, 0xc7,
880 0x5a, 0x00, 0x3f, 0x08, 0x9d, 0x27, 0x39, 0x83,
881 0x9d, 0xec, 0x58, 0xb9, 0x64, 0xec, 0x38, 0x43 },
882 .np = 2,
883 .tap = { 14, 14 }
884 }, {
885 .key = { [0 ... 31] = 0xaa },
886 .ksize = 32,
887 .plaintext = { [0 ... 49] = 0xdd },
888 .psize = 50,
889 .digest = { 0xcd, 0xcb, 0x12, 0x20, 0xd1, 0xec, 0xcc, 0xea,
890 0x91, 0xe5, 0x3a, 0xba, 0x30, 0x92, 0xf9, 0x62,
891 0xe5, 0x49, 0xfe, 0x6c, 0xe9, 0xed, 0x7f, 0xdc,
892 0x43, 0x19, 0x1f, 0xbd, 0xe4, 0x5c, 0x30, 0xb0 },
893 }, {
894 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
895 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
896 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
897 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
898 0x21, 0x22, 0x23, 0x24, 0x25 },
899 .ksize = 37,
900 .plaintext = { [0 ... 49] = 0xcd },
901 .psize = 50,
902 .digest = { 0xd4, 0x63, 0x3c, 0x17, 0xf6, 0xfb, 0x8d, 0x74,
903 0x4c, 0x66, 0xde, 0xe0, 0xf8, 0xf0, 0x74, 0x55,
904 0x6e, 0xc4, 0xaf, 0x55, 0xef, 0x07, 0x99, 0x85,
905 0x41, 0x46, 0x8e, 0xb4, 0x9b, 0xd2, 0xe9, 0x17 },
906 }, {
907 .key = { [0 ... 31] = 0x0c },
908 .ksize = 32,
909 .plaintext = "Test With Truncation",
910 .psize = 20,
911 .digest = { 0x75, 0x46, 0xaf, 0x01, 0x84, 0x1f, 0xc0, 0x9b,
912 0x1a, 0xb9, 0xc3, 0x74, 0x9a, 0x5f, 0x1c, 0x17,
913 0xd4, 0xf5, 0x89, 0x66, 0x8a, 0x58, 0x7b, 0x27,
914 0x00, 0xa9, 0xc9, 0x7c, 0x11, 0x93, 0xcf, 0x42 },
915 }, {
916 .key = { [0 ... 79] = 0xaa },
917 .ksize = 80,
918 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
919 .psize = 54,
920 .digest = { 0x69, 0x53, 0x02, 0x5e, 0xd9, 0x6f, 0x0c, 0x09,
921 0xf8, 0x0a, 0x96, 0xf7, 0x8e, 0x65, 0x38, 0xdb,
922 0xe2, 0xe7, 0xb8, 0x20, 0xe3, 0xdd, 0x97, 0x0e,
923 0x7d, 0xdd, 0x39, 0x09, 0x1b, 0x32, 0x35, 0x2f },
924 }, {
925 .key = { [0 ... 79] = 0xaa },
926 .ksize = 80,
927 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than "
928 "One Block-Size Data",
929 .psize = 73,
930 .digest = { 0x63, 0x55, 0xac, 0x22, 0xe8, 0x90, 0xd0, 0xa3,
931 0xc8, 0x48, 0x1a, 0x5c, 0xa4, 0x82, 0x5b, 0xc8,
932 0x84, 0xd3, 0xe7, 0xa1, 0xff, 0x98, 0xa2, 0xfc,
933 0x2a, 0xc7, 0xd8, 0xe0, 0x64, 0xc3, 0xb2, 0xe6 },
934 },
935};
936
Kazunori MIYAZAWA5b2becf2006-10-28 13:18:53 +1000937#define XCBC_AES_TEST_VECTORS 6
938
939static struct hash_testvec aes_xcbc128_tv_template[] = {
940 {
941 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
942 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
943 .plaintext = { [0 ... 15] = 0 },
944 .digest = { 0x75, 0xf0, 0x25, 0x1d, 0x52, 0x8a, 0xc0, 0x1c,
945 0x45, 0x73, 0xdf, 0xd5, 0x84, 0xd7, 0x9f, 0x29 },
946 .psize = 0,
947 .ksize = 16,
948 }, {
949 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
950 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
951 .plaintext = { 0x00, 0x01, 0x02 },
952 .digest = { 0x5b, 0x37, 0x65, 0x80, 0xae, 0x2f, 0x19, 0xaf,
953 0xe7, 0x21, 0x9c, 0xee, 0xf1, 0x72, 0x75, 0x6f },
954 .psize = 3,
955 .ksize = 16,
956 } , {
957 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
958 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
959 .plaintext = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
960 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
961 .digest = { 0xd2, 0xa2, 0x46, 0xfa, 0x34, 0x9b, 0x68, 0xa7,
962 0x99, 0x98, 0xa4, 0x39, 0x4f, 0xf7, 0xa2, 0x63 },
963 .psize = 16,
964 .ksize = 16,
965 }, {
966 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
967 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
968 .plaintext = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
969 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
970 0x10, 0x11, 0x12, 0x13 },
971 .digest = { 0x47, 0xf5, 0x1b, 0x45, 0x64, 0x96, 0x62, 0x15,
972 0xb8, 0x98, 0x5c, 0x63, 0x05, 0x5e, 0xd3, 0x08 },
973 .tap = { 10, 10 },
974 .psize = 20,
975 .np = 2,
976 .ksize = 16,
977 }, {
978 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
979 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
980 .plaintext = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
981 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
982 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
983 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
984 .digest = { 0xf5, 0x4f, 0x0e, 0xc8, 0xd2, 0xb9, 0xf3, 0xd3,
985 0x68, 0x07, 0x73, 0x4b, 0xd5, 0x28, 0x3f, 0xd4 },
986 .psize = 32,
987 .ksize = 16,
988 }, {
989 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
990 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
991 .plaintext = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
992 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
993 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
994 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
995 0x20, 0x21 },
996 .digest = { 0xbe, 0xcb, 0xb3, 0xbc, 0xcd, 0xb5, 0x18, 0xa3,
997 0x06, 0x77, 0xd5, 0x48, 0x1f, 0xb6, 0xb4, 0xd8 },
998 .tap = { 17, 17 },
999 .psize = 34,
1000 .np = 2,
1001 .ksize = 16,
1002 }
1003};
1004
Linus Torvalds1da177e2005-04-16 15:20:36 -07001005/*
Andrew Donofrioa28091a2006-12-10 12:10:20 +11001006 * SHA384 HMAC test vectors from RFC4231
1007 */
1008
1009#define HMAC_SHA384_TEST_VECTORS 4
1010
1011static struct hash_testvec hmac_sha384_tv_template[] = {
1012 {
1013 .key = { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
1014 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
1015 0x0b, 0x0b, 0x0b, 0x0b }, // (20 bytes)
1016 .ksize = 20,
1017 .plaintext = { 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65 }, // ("Hi There")
1018 .psize = 8,
1019 .digest = { 0xaf, 0xd0, 0x39, 0x44, 0xd8, 0x48, 0x95, 0x62,
1020 0x6b, 0x08, 0x25, 0xf4, 0xab, 0x46, 0x90, 0x7f,
1021 0x15, 0xf9, 0xda, 0xdb, 0xe4, 0x10, 0x1e, 0xc6,
1022 0x82, 0xaa, 0x03, 0x4c, 0x7c, 0xeb, 0xc5, 0x9c,
1023 0xfa, 0xea, 0x9e, 0xa9, 0x07, 0x6e, 0xde, 0x7f,
1024 0x4a, 0xf1, 0x52, 0xe8, 0xb2, 0xfa, 0x9c, 0xb6 },
1025 }, {
1026 .key = { 0x4a, 0x65, 0x66, 0x65 }, // ("Jefe")
1027 .ksize = 4,
1028 .plaintext = { 0x77, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6f, 0x20,
1029 0x79, 0x61, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20, // ("what do ya want ")
1030 0x66, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x68,
1031 0x69, 0x6e, 0x67, 0x3f }, // ("for nothing?")
1032 .psize = 28,
1033 .digest = { 0xaf, 0x45, 0xd2, 0xe3, 0x76, 0x48, 0x40, 0x31,
1034 0x61, 0x7f, 0x78, 0xd2, 0xb5, 0x8a, 0x6b, 0x1b,
1035 0x9c, 0x7e, 0xf4, 0x64, 0xf5, 0xa0, 0x1b, 0x47,
1036 0xe4, 0x2e, 0xc3, 0x73, 0x63, 0x22, 0x44, 0x5e,
1037 0x8e, 0x22, 0x40, 0xca, 0x5e, 0x69, 0xe2, 0xc7,
1038 0x8b, 0x32, 0x39, 0xec, 0xfa, 0xb2, 0x16, 0x49 },
1039 .np = 4,
1040 .tap = { 7, 7, 7, 7 }
1041 }, {
1042 .key = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1043 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1044 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1045 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1046 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1047 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1048 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1049 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1050 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1051 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1052 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1053 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1054 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1055 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1056 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1057 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1058 0xaa, 0xaa, 0xaa }, // (131 bytes)
1059 .ksize = 131,
1060 .plaintext = { 0x54, 0x65, 0x73, 0x74, 0x20, 0x55, 0x73, 0x69,
1061 0x6e, 0x67, 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65, // ("Test Using Large")
1062 0x72, 0x20, 0x54, 0x68, 0x61, 0x6e, 0x20, 0x42,
1063 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x53, 0x69, 0x7a, // ("r Than Block-Siz")
1064 0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x2d, 0x20,
1065 0x48, 0x61, 0x73, 0x68, 0x20, 0x4b, 0x65, 0x79, // ("e Key - Hash Key")
1066 0x20, 0x46, 0x69, 0x72, 0x73, 0x74 }, // (" First")
1067 .psize = 54,
1068 .digest = { 0x4e, 0xce, 0x08, 0x44, 0x85, 0x81, 0x3e, 0x90,
1069 0x88, 0xd2, 0xc6, 0x3a, 0x04, 0x1b, 0xc5, 0xb4,
1070 0x4f, 0x9e, 0xf1, 0x01, 0x2a, 0x2b, 0x58, 0x8f,
1071 0x3c, 0xd1, 0x1f, 0x05, 0x03, 0x3a, 0xc4, 0xc6,
1072 0x0c, 0x2e, 0xf6, 0xab, 0x40, 0x30, 0xfe, 0x82,
1073 0x96, 0x24, 0x8d, 0xf1, 0x63, 0xf4, 0x49, 0x52 },
1074 }, {
1075 .key = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1076 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1077 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1078 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1079 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1080 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1081 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1082 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1083 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1084 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1085 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1086 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1087 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1088 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1089 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1090 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1091 0xaa, 0xaa, 0xaa }, // (131 bytes)
1092 .ksize = 131,
1093 .plaintext = { 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
1094 0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x75, // ("This is a test u")
1095 0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x6c,
1096 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, 0x68, // ("sing a larger th")
1097 0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
1098 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6b, 0x65, // ("an block-size ke")
1099 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20,
1100 0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, // ("y and a larger t")
1101 0x68, 0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63,
1102 0x6b, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x64, // ("han block-size d")
1103 0x61, 0x74, 0x61, 0x2e, 0x20, 0x54, 0x68, 0x65,
1104 0x20, 0x6b, 0x65, 0x79, 0x20, 0x6e, 0x65, 0x65, // ("ata. The key nee")
1105 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65,
1106 0x20, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x20, // ("ds to be hashed ")
1107 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x62,
1108 0x65, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65, // ("before being use")
1109 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65,
1110 0x20, 0x48, 0x4d, 0x41, 0x43, 0x20, 0x61, 0x6c, // ("d by the HMAC al")
1111 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x2e }, // ("gorithm.")
1112 .psize = 152,
1113 .digest = { 0x66, 0x17, 0x17, 0x8e, 0x94, 0x1f, 0x02, 0x0d,
1114 0x35, 0x1e, 0x2f, 0x25, 0x4e, 0x8f, 0xd3, 0x2c,
1115 0x60, 0x24, 0x20, 0xfe, 0xb0, 0xb8, 0xfb, 0x9a,
1116 0xdc, 0xce, 0xbb, 0x82, 0x46, 0x1e, 0x99, 0xc5,
1117 0xa6, 0x78, 0xcc, 0x31, 0xe7, 0x99, 0x17, 0x6d,
1118 0x38, 0x60, 0xe6, 0x11, 0x0c, 0x46, 0x52, 0x3e },
1119 },
1120};
1121
1122/*
1123 * SHA512 HMAC test vectors from RFC4231
1124 */
1125
1126#define HMAC_SHA512_TEST_VECTORS 4
1127
1128static struct hash_testvec hmac_sha512_tv_template[] = {
1129 {
1130 .key = { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
1131 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
1132 0x0b, 0x0b, 0x0b, 0x0b }, // (20 bytes)
1133 .ksize = 20,
1134 .plaintext = { 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65 }, // ("Hi There")
1135 .psize = 8,
1136 .digest = { 0x87, 0xaa, 0x7c, 0xde, 0xa5, 0xef, 0x61, 0x9d,
1137 0x4f, 0xf0, 0xb4, 0x24, 0x1a, 0x1d, 0x6c, 0xb0,
1138 0x23, 0x79, 0xf4, 0xe2, 0xce, 0x4e, 0xc2, 0x78,
1139 0x7a, 0xd0, 0xb3, 0x05, 0x45, 0xe1, 0x7c, 0xde,
1140 0xda, 0xa8, 0x33, 0xb7, 0xd6, 0xb8, 0xa7, 0x02,
1141 0x03, 0x8b, 0x27, 0x4e, 0xae, 0xa3, 0xf4, 0xe4,
1142 0xbe, 0x9d, 0x91, 0x4e, 0xeb, 0x61, 0xf1, 0x70,
1143 0x2e, 0x69, 0x6c, 0x20, 0x3a, 0x12, 0x68, 0x54 },
1144 }, {
1145 .key = { 0x4a, 0x65, 0x66, 0x65 }, // ("Jefe")
1146 .ksize = 4,
1147 .plaintext = { 0x77, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6f, 0x20,
1148 0x79, 0x61, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20, // ("what do ya want ")
1149 0x66, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x68,
1150 0x69, 0x6e, 0x67, 0x3f }, // ("for nothing?")
1151 .psize = 28,
1152 .digest = { 0x16, 0x4b, 0x7a, 0x7b, 0xfc, 0xf8, 0x19, 0xe2,
1153 0xe3, 0x95, 0xfb, 0xe7, 0x3b, 0x56, 0xe0, 0xa3,
1154 0x87, 0xbd, 0x64, 0x22, 0x2e, 0x83, 0x1f, 0xd6,
1155 0x10, 0x27, 0x0c, 0xd7, 0xea, 0x25, 0x05, 0x54,
1156 0x97, 0x58, 0xbf, 0x75, 0xc0, 0x5a, 0x99, 0x4a,
1157 0x6d, 0x03, 0x4f, 0x65, 0xf8, 0xf0, 0xe6, 0xfd,
1158 0xca, 0xea, 0xb1, 0xa3, 0x4d, 0x4a, 0x6b, 0x4b,
1159 0x63, 0x6e, 0x07, 0x0a, 0x38, 0xbc, 0xe7, 0x37 },
1160 .np = 4,
1161 .tap = { 7, 7, 7, 7 }
1162 }, {
1163 .key = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1164 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1165 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1166 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1167 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1168 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1169 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1170 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1171 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1172 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1173 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1174 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1175 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1176 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1177 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1178 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1179 0xaa, 0xaa, 0xaa }, // (131 bytes)
1180 .ksize = 131,
1181 .plaintext = { 0x54, 0x65, 0x73, 0x74, 0x20, 0x55, 0x73, 0x69,
1182 0x6e, 0x67, 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65, // ("Test Using Large")
1183 0x72, 0x20, 0x54, 0x68, 0x61, 0x6e, 0x20, 0x42,
1184 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x53, 0x69, 0x7a, // ("r Than Block-Siz")
1185 0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x2d, 0x20,
1186 0x48, 0x61, 0x73, 0x68, 0x20, 0x4b, 0x65, 0x79, // ("e Key - Hash Key")
1187 0x20, 0x46, 0x69, 0x72, 0x73, 0x74 }, // (" First")
1188 .psize = 54,
1189 .digest = { 0x80, 0xb2, 0x42, 0x63, 0xc7, 0xc1, 0xa3, 0xeb,
1190 0xb7, 0x14, 0x93, 0xc1, 0xdd, 0x7b, 0xe8, 0xb4,
1191 0x9b, 0x46, 0xd1, 0xf4, 0x1b, 0x4a, 0xee, 0xc1,
1192 0x12, 0x1b, 0x01, 0x37, 0x83, 0xf8, 0xf3, 0x52,
1193 0x6b, 0x56, 0xd0, 0x37, 0xe0, 0x5f, 0x25, 0x98,
1194 0xbd, 0x0f, 0xd2, 0x21, 0x5d, 0x6a, 0x1e, 0x52,
1195 0x95, 0xe6, 0x4f, 0x73, 0xf6, 0x3f, 0x0a, 0xec,
1196 0x8b, 0x91, 0x5a, 0x98, 0x5d, 0x78, 0x65, 0x98 },
1197 }, {
1198 .key = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1199 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1200 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1201 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1202 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1203 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1204 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1205 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1206 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1207 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1208 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1209 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1210 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1211 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1212 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1213 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
1214 0xaa, 0xaa, 0xaa }, // (131 bytes)
1215 .ksize = 131,
1216 .plaintext = { 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
1217 0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x75, // ("This is a test u")
1218 0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x6c,
1219 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, 0x68, // ("sing a larger th")
1220 0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
1221 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6b, 0x65, // ("an block-size ke")
1222 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20,
1223 0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, // ("y and a larger t")
1224 0x68, 0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63,
1225 0x6b, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x64, // ("han block-size d")
1226 0x61, 0x74, 0x61, 0x2e, 0x20, 0x54, 0x68, 0x65,
1227 0x20, 0x6b, 0x65, 0x79, 0x20, 0x6e, 0x65, 0x65, // ("ata. The key nee")
1228 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65,
1229 0x20, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x20, // ("ds to be hashed ")
1230 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x62,
1231 0x65, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65, // ("before being use")
1232 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65,
1233 0x20, 0x48, 0x4d, 0x41, 0x43, 0x20, 0x61, 0x6c, // ("d by the HMAC al")
1234 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x2e }, // ("gorithm.")
1235 .psize = 152,
1236 .digest = { 0xe3, 0x7b, 0x6a, 0x77, 0x5d, 0xc8, 0x7d, 0xba,
1237 0xa4, 0xdf, 0xa9, 0xf9, 0x6e, 0x5e, 0x3f, 0xfd,
1238 0xde, 0xbd, 0x71, 0xf8, 0x86, 0x72, 0x89, 0x86,
1239 0x5d, 0xf5, 0xa3, 0x2d, 0x20, 0xcd, 0xc9, 0x44,
1240 0xb6, 0x02, 0x2c, 0xac, 0x3c, 0x49, 0x82, 0xb1,
1241 0x0d, 0x5e, 0xeb, 0x55, 0xc3, 0xe4, 0xde, 0x15,
1242 0x13, 0x46, 0x76, 0xfb, 0x6d, 0xe0, 0x44, 0x60,
1243 0x65, 0xc9, 0x74, 0x40, 0xfa, 0x8c, 0x6a, 0x58 },
1244 },
1245};
1246
1247/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07001248 * DES test vectors.
1249 */
1250#define DES_ENC_TEST_VECTORS 10
1251#define DES_DEC_TEST_VECTORS 4
1252#define DES_CBC_ENC_TEST_VECTORS 5
1253#define DES_CBC_DEC_TEST_VECTORS 4
1254#define DES3_EDE_ENC_TEST_VECTORS 3
1255#define DES3_EDE_DEC_TEST_VECTORS 3
1256
1257static struct cipher_testvec des_enc_tv_template[] = {
1258 { /* From Applied Cryptography */
1259 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1260 .klen = 8,
1261 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 },
1262 .ilen = 8,
1263 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d },
1264 .rlen = 8,
1265 }, { /* Same key, different plaintext block */
1266 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1267 .klen = 8,
1268 .input = { 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 },
1269 .ilen = 8,
1270 .result = { 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b },
1271 .rlen = 8,
1272 }, { /* Sbox test from NBS */
1273 .key = { 0x7c, 0xa1, 0x10, 0x45, 0x4a, 0x1a, 0x6e, 0x57 },
1274 .klen = 8,
1275 .input = { 0x01, 0xa1, 0xd6, 0xd0, 0x39, 0x77, 0x67, 0x42 },
1276 .ilen = 8,
1277 .result = { 0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b },
1278 .rlen = 8,
1279 }, { /* Three blocks */
1280 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1281 .klen = 8,
1282 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
1283 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
1284 0xca, 0xfe, 0xba, 0xbe, 0xfe, 0xed, 0xbe, 0xef },
1285 .ilen = 24,
1286 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
1287 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b,
1288 0xb4, 0x99, 0x26, 0xf7, 0x1f, 0xe1, 0xd4, 0x90 },
1289 .rlen = 24,
1290 }, { /* Weak key */
1291 .fail = 1,
1292 .wk = 1,
1293 .key = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 },
1294 .klen = 8,
1295 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 },
1296 .ilen = 8,
1297 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d },
1298 .rlen = 8,
1299 }, { /* Two blocks -- for testing encryption across pages */
1300 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1301 .klen = 8,
1302 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
1303 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 },
1304 .ilen = 16,
1305 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
1306 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b },
1307 .rlen = 16,
1308 .np = 2,
1309 .tap = { 8, 8 }
1310 }, { /* Four blocks -- for testing encryption with chunking */
1311 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1312 .klen = 8,
1313 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
1314 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
1315 0xca, 0xfe, 0xba, 0xbe, 0xfe, 0xed, 0xbe, 0xef,
1316 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 },
1317 .ilen = 32,
1318 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
1319 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b,
1320 0xb4, 0x99, 0x26, 0xf7, 0x1f, 0xe1, 0xd4, 0x90,
1321 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b },
1322 .rlen = 32,
1323 .np = 3,
Herbert Xuef2736f2005-06-22 13:26:03 -07001324 .tap = { 14, 10, 8 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001325 }, {
1326 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1327 .klen = 8,
1328 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
1329 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
1330 0xca, 0xfe, 0xba, 0xbe, 0xfe, 0xed, 0xbe, 0xef },
1331 .ilen = 24,
1332 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
1333 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b,
1334 0xb4, 0x99, 0x26, 0xf7, 0x1f, 0xe1, 0xd4, 0x90 },
1335 .rlen = 24,
1336 .np = 4,
Herbert Xuef2736f2005-06-22 13:26:03 -07001337 .tap = { 2, 1, 3, 18 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001338 }, {
1339 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1340 .klen = 8,
1341 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
1342 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 },
1343 .ilen = 16,
1344 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
1345 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b },
1346 .rlen = 16,
1347 .np = 5,
Herbert Xuef2736f2005-06-22 13:26:03 -07001348 .tap = { 2, 2, 2, 2, 8 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001349 }, {
1350 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1351 .klen = 8,
1352 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 },
1353 .ilen = 8,
1354 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d },
1355 .rlen = 8,
1356 .np = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001357 .tap = { 1, 1, 1, 1, 1, 1, 1, 1 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001358 },
1359};
1360
1361static struct cipher_testvec des_dec_tv_template[] = {
1362 { /* From Applied Cryptography */
1363 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1364 .klen = 8,
1365 .input = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d },
1366 .ilen = 8,
1367 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 },
1368 .rlen = 8,
1369 }, { /* Sbox test from NBS */
Herbert Xuef2736f2005-06-22 13:26:03 -07001370 .key = { 0x7c, 0xa1, 0x10, 0x45, 0x4a, 0x1a, 0x6e, 0x57 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001371 .klen = 8,
1372 .input = { 0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b },
1373 .ilen = 8,
1374 .result = { 0x01, 0xa1, 0xd6, 0xd0, 0x39, 0x77, 0x67, 0x42 },
1375 .rlen = 8,
1376 }, { /* Two blocks, for chunking test */
1377 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1378 .klen = 8,
1379 .input = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
1380 0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b },
1381 .ilen = 16,
1382 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
1383 0xa3, 0x99, 0x7b, 0xca, 0xaf, 0x69, 0xa0, 0xf5 },
1384 .rlen = 16,
1385 .np = 2,
1386 .tap = { 8, 8 }
1387 }, {
1388 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1389 .klen = 8,
1390 .input = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
1391 0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b },
1392 .ilen = 16,
1393 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
1394 0xa3, 0x99, 0x7b, 0xca, 0xaf, 0x69, 0xa0, 0xf5 },
1395 .rlen = 16,
1396 .np = 3,
1397 .tap = { 3, 12, 1 }
1398 },
1399};
1400
1401static struct cipher_testvec des_cbc_enc_tv_template[] = {
1402 { /* From OpenSSL */
1403 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef},
1404 .klen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001405 .iv = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10},
1406 .input = { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20,
1407 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74,
1408 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001409 .ilen = 24,
Herbert Xuef2736f2005-06-22 13:26:03 -07001410 .result = { 0xcc, 0xd1, 0x73, 0xff, 0xab, 0x20, 0x39, 0xf4,
1411 0xac, 0xd8, 0xae, 0xfd, 0xdf, 0xd8, 0xa1, 0xeb,
1412 0x46, 0x8e, 0x91, 0x15, 0x78, 0x88, 0xba, 0x68 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001413 .rlen = 24,
1414 }, { /* FIPS Pub 81 */
1415 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1416 .klen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001417 .iv = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001418 .input = { 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74 },
1419 .ilen = 8,
1420 .result = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c },
1421 .rlen = 8,
1422 }, {
1423 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1424 .klen = 8,
1425 .iv = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c },
1426 .input = { 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 },
1427 .ilen = 8,
1428 .result = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
1429 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001430 }, {
Linus Torvalds1da177e2005-04-16 15:20:36 -07001431 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1432 .klen = 8,
1433 .iv = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
1434 .input = { 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20 },
1435 .ilen = 8,
1436 .result = { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 },
1437 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001438 }, { /* Copy of openssl vector for chunk testing */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001439 /* From OpenSSL */
1440 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef},
1441 .klen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001442 .iv = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10},
1443 .input = { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20,
1444 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74,
1445 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001446 .ilen = 24,
Herbert Xuef2736f2005-06-22 13:26:03 -07001447 .result = { 0xcc, 0xd1, 0x73, 0xff, 0xab, 0x20, 0x39, 0xf4,
1448 0xac, 0xd8, 0xae, 0xfd, 0xdf, 0xd8, 0xa1, 0xeb,
1449 0x46, 0x8e, 0x91, 0x15, 0x78, 0x88, 0xba, 0x68 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001450 .rlen = 24,
1451 .np = 2,
1452 .tap = { 13, 11 }
1453 },
1454};
1455
1456static struct cipher_testvec des_cbc_dec_tv_template[] = {
1457 { /* FIPS Pub 81 */
1458 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1459 .klen = 8,
1460 .iv = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef },
1461 .input = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c },
1462 .ilen = 8,
1463 .result = { 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74 },
1464 .rlen = 8,
1465 }, {
1466 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1467 .klen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001468 .iv = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001469 .input = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
1470 .ilen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001471 .result = { 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001472 .rlen = 8,
1473 }, {
1474 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1475 .klen = 8,
1476 .iv = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
Herbert Xuef2736f2005-06-22 13:26:03 -07001477 .input = { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001478 .ilen = 8,
1479 .result = { 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20 },
1480 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001481 }, { /* Copy of above, for chunk testing */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001482 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1483 .klen = 8,
1484 .iv = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
Herbert Xuef2736f2005-06-22 13:26:03 -07001485 .input = { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001486 .ilen = 8,
1487 .result = { 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20 },
1488 .rlen = 8,
1489 .np = 2,
1490 .tap = { 4, 4 }
1491 },
1492};
1493
1494/*
1495 * We really need some more test vectors, especially for DES3 CBC.
1496 */
1497static struct cipher_testvec des3_ede_enc_tv_template[] = {
1498 { /* These are from openssl */
1499 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1500 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
1501 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10},
1502 .klen = 24,
1503 .input = { 0x73, 0x6f, 0x6d, 0x65, 0x64, 0x61, 0x74, 0x61 },
1504 .ilen = 8,
1505 .result = { 0x18, 0xd7, 0x48, 0xe5, 0x63, 0x62, 0x05, 0x72 },
1506 .rlen = 8,
1507 }, {
1508 .key = { 0x03, 0x52, 0x02, 0x07, 0x67, 0x20, 0x82, 0x17,
1509 0x86, 0x02, 0x87, 0x66, 0x59, 0x08, 0x21, 0x98,
1510 0x64, 0x05, 0x6a, 0xbd, 0xfe, 0xa9, 0x34, 0x57 },
1511 .klen = 24,
1512 .input = { 0x73, 0x71, 0x75, 0x69, 0x67, 0x67, 0x6c, 0x65 },
1513 .ilen = 8,
1514 .result = { 0xc0, 0x7d, 0x2a, 0x0f, 0xa5, 0x66, 0xfa, 0x30 },
1515 .rlen = 8,
1516 }, {
1517 .key = { 0x10, 0x46, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20,
1518 0x91, 0x07, 0xd0, 0x15, 0x89, 0x19, 0x01, 0x01,
1519 0x19, 0x07, 0x92, 0x10, 0x98, 0x1a, 0x01, 0x01 },
1520 .klen = 24,
1521 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1522 .ilen = 8,
1523 .result = { 0xe1, 0xef, 0x62, 0xc3, 0x32, 0xfe, 0x82, 0x5b },
1524 .rlen = 8,
1525 },
1526};
1527
1528static struct cipher_testvec des3_ede_dec_tv_template[] = {
1529 { /* These are from openssl */
1530 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1531 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
1532 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10},
1533 .klen = 24,
1534 .input = { 0x18, 0xd7, 0x48, 0xe5, 0x63, 0x62, 0x05, 0x72 },
1535 .ilen = 8,
1536 .result = { 0x73, 0x6f, 0x6d, 0x65, 0x64, 0x61, 0x74, 0x61 },
1537 .rlen = 8,
1538 }, {
1539 .key = { 0x03, 0x52, 0x02, 0x07, 0x67, 0x20, 0x82, 0x17,
1540 0x86, 0x02, 0x87, 0x66, 0x59, 0x08, 0x21, 0x98,
1541 0x64, 0x05, 0x6a, 0xbd, 0xfe, 0xa9, 0x34, 0x57 },
1542 .klen = 24,
1543 .input = { 0xc0, 0x7d, 0x2a, 0x0f, 0xa5, 0x66, 0xfa, 0x30 },
1544 .ilen = 8,
1545 .result = { 0x73, 0x71, 0x75, 0x69, 0x67, 0x67, 0x6c, 0x65 },
1546 .rlen = 8,
1547 }, {
1548 .key = { 0x10, 0x46, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20,
1549 0x91, 0x07, 0xd0, 0x15, 0x89, 0x19, 0x01, 0x01,
1550 0x19, 0x07, 0x92, 0x10, 0x98, 0x1a, 0x01, 0x01 },
1551 .klen = 24,
1552 .input = { 0xe1, 0xef, 0x62, 0xc3, 0x32, 0xfe, 0x82, 0x5b },
1553 .ilen = 8,
1554 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1555 .rlen = 8,
1556 },
1557};
1558
1559/*
1560 * Blowfish test vectors.
1561 */
1562#define BF_ENC_TEST_VECTORS 6
1563#define BF_DEC_TEST_VECTORS 6
1564#define BF_CBC_ENC_TEST_VECTORS 1
1565#define BF_CBC_DEC_TEST_VECTORS 1
1566
1567static struct cipher_testvec bf_enc_tv_template[] = {
1568 { /* DES test vectors from OpenSSL */
1569 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },
1570 .klen = 8,
1571 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1572 .ilen = 8,
1573 .result = { 0x4e, 0xf9, 0x97, 0x45, 0x61, 0x98, 0xdd, 0x78 },
1574 .rlen = 8,
1575 }, {
1576 .key = { 0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e },
1577 .klen = 8,
1578 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1579 .ilen = 8,
1580 .result = { 0xa7, 0x90, 0x79, 0x51, 0x08, 0xea, 0x3c, 0xae },
1581 .rlen = 8,
1582 }, {
1583 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
1584 .klen = 8,
1585 .input = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1586 .ilen = 8,
1587 .result = { 0xe8, 0x7a, 0x24, 0x4e, 0x2c, 0xc8, 0x5e, 0x82 },
1588 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001589 }, { /* Vary the keylength... */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001590 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87,
1591 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f },
1592 .klen = 16,
1593 .input = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1594 .ilen = 8,
1595 .result = { 0x93, 0x14, 0x28, 0x87, 0xee, 0x3b, 0xe1, 0x5c },
1596 .rlen = 8,
1597 }, {
1598 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87,
1599 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f,
1600 0x00, 0x11, 0x22, 0x33, 0x44 },
1601 .klen = 21,
1602 .input = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1603 .ilen = 8,
1604 .result = { 0xe6, 0xf5, 0x1e, 0xd7, 0x9b, 0x9d, 0xb2, 0x1f },
1605 .rlen = 8,
1606 }, { /* Generated with bf488 */
1607 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87,
1608 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f,
1609 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
Herbert Xuef2736f2005-06-22 13:26:03 -07001610 0x04, 0x68, 0x91, 0x04, 0xc2, 0xfd, 0x3b, 0x2f,
1611 0x58, 0x40, 0x23, 0x64, 0x1a, 0xba, 0x61, 0x76,
1612 0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001613 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
1614 .klen = 56,
1615 .input = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1616 .ilen = 8,
1617 .result = { 0xc0, 0x45, 0x04, 0x01, 0x2e, 0x4e, 0x1f, 0x53 },
1618 .rlen = 8,
1619 },
1620};
1621
1622static struct cipher_testvec bf_dec_tv_template[] = {
1623 { /* DES test vectors from OpenSSL */
1624 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1625 .klen = 8,
1626 .input = { 0x4e, 0xf9, 0x97, 0x45, 0x61, 0x98, 0xdd, 0x78 },
1627 .ilen = 8,
1628 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1629 .rlen = 8,
1630 }, {
1631 .key = { 0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e },
1632 .klen = 8,
1633 .input = { 0xa7, 0x90, 0x79, 0x51, 0x08, 0xea, 0x3c, 0xae },
1634 .ilen = 8,
1635 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1636 .rlen = 8,
1637 }, {
1638 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
1639 .klen = 8,
1640 .input = { 0xe8, 0x7a, 0x24, 0x4e, 0x2c, 0xc8, 0x5e, 0x82 },
1641 .ilen = 8,
1642 .result = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1643 .rlen = 8,
Herbert Xuef2736f2005-06-22 13:26:03 -07001644 }, { /* Vary the keylength... */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001645 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87,
1646 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f },
1647 .klen = 16,
1648 .input = { 0x93, 0x14, 0x28, 0x87, 0xee, 0x3b, 0xe1, 0x5c },
1649 .ilen = 8,
1650 .result = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1651 .rlen = 8,
1652 }, {
1653 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87,
1654 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f,
1655 0x00, 0x11, 0x22, 0x33, 0x44 },
1656 .klen = 21,
1657 .input = { 0xe6, 0xf5, 0x1e, 0xd7, 0x9b, 0x9d, 0xb2, 0x1f },
1658 .ilen = 8,
1659 .result = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1660 .rlen = 8,
1661 }, { /* Generated with bf488, using OpenSSL, Libgcrypt and Nettle */
1662 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87,
1663 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f,
1664 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
Herbert Xuef2736f2005-06-22 13:26:03 -07001665 0x04, 0x68, 0x91, 0x04, 0xc2, 0xfd, 0x3b, 0x2f,
1666 0x58, 0x40, 0x23, 0x64, 0x1a, 0xba, 0x61, 0x76,
1667 0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001668 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
1669 .klen = 56,
1670 .input = { 0xc0, 0x45, 0x04, 0x01, 0x2e, 0x4e, 0x1f, 0x53 },
1671 .ilen = 8,
1672 .result = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1673 .rlen = 8,
1674 },
1675};
1676
1677static struct cipher_testvec bf_cbc_enc_tv_template[] = {
1678 { /* From OpenSSL */
1679 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1680 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
1681 .klen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07001682 .iv = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001683 .input = { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20,
1684 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74,
1685 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20,
1686 0x66, 0x6f, 0x72, 0x20, 0x00, 0x00, 0x00, 0x00 },
1687 .ilen = 32,
1688 .result = { 0x6b, 0x77, 0xb4, 0xd6, 0x30, 0x06, 0xde, 0xe6,
1689 0x05, 0xb1, 0x56, 0xe2, 0x74, 0x03, 0x97, 0x93,
1690 0x58, 0xde, 0xb9, 0xe7, 0x15, 0x46, 0x16, 0xd9,
1691 0x59, 0xf1, 0x65, 0x2b, 0xd5, 0xff, 0x92, 0xcc },
1692 .rlen = 32,
1693 },
1694};
1695
1696static struct cipher_testvec bf_cbc_dec_tv_template[] = {
1697 { /* From OpenSSL */
1698 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1699 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
1700 .klen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07001701 .iv = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001702 .input = { 0x6b, 0x77, 0xb4, 0xd6, 0x30, 0x06, 0xde, 0xe6,
1703 0x05, 0xb1, 0x56, 0xe2, 0x74, 0x03, 0x97, 0x93,
1704 0x58, 0xde, 0xb9, 0xe7, 0x15, 0x46, 0x16, 0xd9,
1705 0x59, 0xf1, 0x65, 0x2b, 0xd5, 0xff, 0x92, 0xcc },
1706 .ilen = 32,
1707 .result = { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20,
1708 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74,
1709 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20,
1710 0x66, 0x6f, 0x72, 0x20, 0x00, 0x00, 0x00, 0x00 },
1711 .rlen = 32,
1712 },
1713};
1714
1715/*
1716 * Twofish test vectors.
1717 */
1718#define TF_ENC_TEST_VECTORS 3
1719#define TF_DEC_TEST_VECTORS 3
1720#define TF_CBC_ENC_TEST_VECTORS 4
1721#define TF_CBC_DEC_TEST_VECTORS 4
1722
1723static struct cipher_testvec tf_enc_tv_template[] = {
1724 {
1725 .key = { [0 ... 15] = 0x00 },
1726 .klen = 16,
1727 .input = { [0 ... 15] = 0x00 },
1728 .ilen = 16,
1729 .result = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1730 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
1731 .rlen = 16,
1732 }, {
1733 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1734 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
1735 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 },
1736 .klen = 24,
1737 .input = { [0 ... 15] = 0x00 },
1738 .ilen = 16,
1739 .result = { 0xcf, 0xd1, 0xd2, 0xe5, 0xa9, 0xbe, 0x9c, 0xdf,
1740 0x50, 0x1f, 0x13, 0xb8, 0x92, 0xbd, 0x22, 0x48 },
1741 .rlen = 16,
1742 }, {
1743 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1744 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
1745 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
1746 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
1747 .klen = 32,
1748 .input = { [0 ... 15] = 0x00 },
1749 .ilen = 16,
1750 .result = { 0x37, 0x52, 0x7b, 0xe0, 0x05, 0x23, 0x34, 0xb8,
1751 0x9f, 0x0c, 0xfc, 0xca, 0xe8, 0x7c, 0xfa, 0x20 },
1752 .rlen = 16,
1753 },
1754};
1755
1756static struct cipher_testvec tf_dec_tv_template[] = {
1757 {
1758 .key = { [0 ... 15] = 0x00 },
1759 .klen = 16,
1760 .input = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1761 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
1762 .ilen = 16,
1763 .result = { [0 ... 15] = 0x00 },
1764 .rlen = 16,
1765 }, {
1766 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1767 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
1768 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 },
1769 .klen = 24,
1770 .input = { 0xcf, 0xd1, 0xd2, 0xe5, 0xa9, 0xbe, 0x9c, 0xdf,
1771 0x50, 0x1f, 0x13, 0xb8, 0x92, 0xbd, 0x22, 0x48 },
1772 .ilen = 16,
1773 .result = { [0 ... 15] = 0x00 },
1774 .rlen = 16,
1775 }, {
1776 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1777 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
1778 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
1779 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
1780 .klen = 32,
1781 .input = { 0x37, 0x52, 0x7b, 0xe0, 0x05, 0x23, 0x34, 0xb8,
1782 0x9f, 0x0c, 0xfc, 0xca, 0xe8, 0x7c, 0xfa, 0x20 },
1783 .ilen = 16,
1784 .result = { [0 ... 15] = 0x00 },
1785 .rlen = 16,
1786 },
1787};
1788
1789static struct cipher_testvec tf_cbc_enc_tv_template[] = {
1790 { /* Generated with Nettle */
1791 .key = { [0 ... 15] = 0x00 },
1792 .klen = 16,
1793 .iv = { [0 ... 15] = 0x00 },
1794 .input = { [0 ... 15] = 0x00 },
1795 .ilen = 16,
1796 .result = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1797 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
1798 .rlen = 16,
1799 }, {
1800 .key = { [0 ... 15] = 0x00 },
1801 .klen = 16,
1802 .iv = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
Herbert Xuef2736f2005-06-22 13:26:03 -07001803 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001804 .input = { [0 ... 15] = 0x00 },
1805 .ilen = 16,
1806 .result = { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
1807 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 },
1808 .rlen = 16,
1809 }, {
1810 .key = { [0 ... 15] = 0x00 },
1811 .klen = 16,
1812 .iv = { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
1813 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 },
1814 .input = { [0 ... 15] = 0x00 },
1815 .ilen = 16,
1816 .result = { 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26,
1817 0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 },
1818 .rlen = 16,
1819 }, {
1820 .key = { [0 ... 15] = 0x00 },
1821 .klen = 16,
1822 .iv = { [0 ... 15] = 0x00 },
1823 .input = { [0 ... 47] = 0x00 },
1824 .ilen = 48,
1825 .result = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1826 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a,
1827 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
1828 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19,
1829 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26,
1830 0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 },
1831 .rlen = 48,
1832 },
1833};
1834
1835static struct cipher_testvec tf_cbc_dec_tv_template[] = {
1836 { /* Reverse of the first four above */
1837 .key = { [0 ... 15] = 0x00 },
1838 .klen = 16,
1839 .iv = { [0 ... 15] = 0x00 },
1840 .input = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
Herbert Xuef2736f2005-06-22 13:26:03 -07001841 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001842 .ilen = 16,
1843 .result = { [0 ... 15] = 0x00 },
1844 .rlen = 16,
1845 }, {
1846 .key = { [0 ... 15] = 0x00 },
1847 .klen = 16,
1848 .iv = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1849 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
1850 .input = { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
1851 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 },
1852 .ilen = 16,
1853 .result = { [0 ... 15] = 0x00 },
1854 .rlen = 16,
1855 }, {
1856 .key = { [0 ... 15] = 0x00 },
1857 .klen = 16,
1858 .iv = { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
1859 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 },
1860 .input = { 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26,
1861 0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 },
1862 .ilen = 16,
1863 .result = { [0 ... 15] = 0x00 },
1864 .rlen = 16,
1865 }, {
1866 .key = { [0 ... 15] = 0x00 },
1867 .klen = 16,
1868 .iv = { [0 ... 15] = 0x00 },
1869 .input = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1870 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a,
1871 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
1872 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19,
1873 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26,
1874 0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 },
1875 .ilen = 48,
1876 .result = { [0 ... 47] = 0x00 },
1877 .rlen = 48,
1878 },
1879};
1880
1881/*
1882 * Serpent test vectors. These are backwards because Serpent writes
1883 * octet sequences in right-to-left mode.
1884 */
1885#define SERPENT_ENC_TEST_VECTORS 4
1886#define SERPENT_DEC_TEST_VECTORS 4
1887
1888#define TNEPRES_ENC_TEST_VECTORS 4
1889#define TNEPRES_DEC_TEST_VECTORS 4
1890
Herbert Xuef2736f2005-06-22 13:26:03 -07001891static struct cipher_testvec serpent_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07001892 {
1893 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1894 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1895 .ilen = 16,
1896 .result = { 0x12, 0x07, 0xfc, 0xce, 0x9b, 0xd0, 0xd6, 0x47,
1897 0x6a, 0xe9, 0x8f, 0xbe, 0xd1, 0x43, 0xa0, 0xe2 },
1898 .rlen = 16,
1899 }, {
1900 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1901 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1902 .klen = 16,
1903 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1904 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1905 .ilen = 16,
1906 .result = { 0x4c, 0x7d, 0x8a, 0x32, 0x80, 0x72, 0xa2, 0x2c,
1907 0x82, 0x3e, 0x4a, 0x1f, 0x3a, 0xcd, 0xa1, 0x6d },
1908 .rlen = 16,
1909 }, {
1910 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1911 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1912 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
1913 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
1914 .klen = 32,
1915 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1916 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1917 .ilen = 16,
1918 .result = { 0xde, 0x26, 0x9f, 0xf8, 0x33, 0xe4, 0x32, 0xb8,
1919 0x5b, 0x2e, 0x88, 0xd2, 0x70, 0x1c, 0xe7, 0x5c },
1920 .rlen = 16,
1921 }, {
1922 .key = { [15] = 0x80 },
1923 .klen = 16,
1924 .input = { [0 ... 15] = 0x00 },
1925 .ilen = 16,
1926 .result = { 0xdd, 0xd2, 0x6b, 0x98, 0xa5, 0xff, 0xd8, 0x2c,
1927 0x05, 0x34, 0x5a, 0x9d, 0xad, 0xbf, 0xaf, 0x49},
1928 .rlen = 16,
1929 },
1930};
1931
Herbert Xuef2736f2005-06-22 13:26:03 -07001932static struct cipher_testvec tnepres_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07001933 { /* KeySize=128, PT=0, I=1 */
1934 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1935 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1936 .key = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1937 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1938 .klen = 16,
1939 .ilen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07001940 .result = { 0x49, 0xaf, 0xbf, 0xad, 0x9d, 0x5a, 0x34, 0x05,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001941 0x2c, 0xd8, 0xff, 0xa5, 0x98, 0x6b, 0xd2, 0xdd },
1942 .rlen = 16,
1943 }, { /* KeySize=192, PT=0, I=1 */
1944 .key = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1945 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1946 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1947 .klen = 24,
1948 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1949 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1950 .ilen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07001951 .result = { 0xe7, 0x8e, 0x54, 0x02, 0xc7, 0x19, 0x55, 0x68,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001952 0xac, 0x36, 0x78, 0xf7, 0xa3, 0xf6, 0x0c, 0x66 },
1953 .rlen = 16,
1954 }, { /* KeySize=256, PT=0, I=1 */
1955 .key = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1956 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1957 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1958 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1959 .klen = 32,
1960 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1961 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1962 .ilen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07001963 .result = { 0xab, 0xed, 0x96, 0xe7, 0x66, 0xbf, 0x28, 0xcb,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001964 0xc0, 0xeb, 0xd2, 0x1a, 0x82, 0xef, 0x08, 0x19 },
1965 .rlen = 16,
1966 }, { /* KeySize=256, I=257 */
1967 .key = { 0x1f, 0x1e, 0x1d, 0x1c, 0x1b, 0x1a, 0x19, 0x18,
1968 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10,
1969 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08,
1970 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 },
1971 .klen = 32,
1972 .input = { 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08,
1973 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 },
1974 .ilen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07001975 .result = { 0x5c, 0xe7, 0x1c, 0x70, 0xd2, 0x88, 0x2e, 0x5b,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001976 0xb8, 0x32, 0xe4, 0x33, 0xf8, 0x9f, 0x26, 0xde },
1977 .rlen = 16,
1978 },
1979};
1980
1981
Herbert Xuef2736f2005-06-22 13:26:03 -07001982static struct cipher_testvec serpent_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07001983 {
1984 .input = { 0x12, 0x07, 0xfc, 0xce, 0x9b, 0xd0, 0xd6, 0x47,
1985 0x6a, 0xe9, 0x8f, 0xbe, 0xd1, 0x43, 0xa0, 0xe2 },
1986 .ilen = 16,
1987 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1988 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1989 .rlen = 16,
1990 }, {
1991 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1992 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1993 .klen = 16,
1994 .input = { 0x4c, 0x7d, 0x8a, 0x32, 0x80, 0x72, 0xa2, 0x2c,
1995 0x82, 0x3e, 0x4a, 0x1f, 0x3a, 0xcd, 0xa1, 0x6d },
1996 .ilen = 16,
1997 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1998 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1999 .rlen = 16,
2000 }, {
2001 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2002 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2003 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
2004 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
2005 .klen = 32,
2006 .input = { 0xde, 0x26, 0x9f, 0xf8, 0x33, 0xe4, 0x32, 0xb8,
2007 0x5b, 0x2e, 0x88, 0xd2, 0x70, 0x1c, 0xe7, 0x5c },
2008 .ilen = 16,
2009 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2010 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2011 .rlen = 16,
2012 }, {
2013 .key = { [15] = 0x80 },
2014 .klen = 16,
2015 .input = { 0xdd, 0xd2, 0x6b, 0x98, 0xa5, 0xff, 0xd8, 0x2c,
2016 0x05, 0x34, 0x5a, 0x9d, 0xad, 0xbf, 0xaf, 0x49},
2017 .ilen = 16,
2018 .result = { [0 ... 15] = 0x00 },
2019 .rlen = 16,
2020 },
2021};
2022
Herbert Xuef2736f2005-06-22 13:26:03 -07002023static struct cipher_testvec tnepres_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002024 {
2025 .input = { 0x41, 0xcc, 0x6b, 0x31, 0x59, 0x31, 0x45, 0x97,
2026 0x6d, 0x6f, 0xbb, 0x38, 0x4b, 0x37, 0x21, 0x28 },
2027 .ilen = 16,
2028 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2029 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2030 .rlen = 16,
2031 }, {
2032 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2033 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2034 .klen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07002035 .input = { 0xea, 0xf4, 0xd7, 0xfc, 0xd8, 0x01, 0x34, 0x47,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002036 0x81, 0x45, 0x0b, 0xfa, 0x0c, 0xd6, 0xad, 0x6e },
2037 .ilen = 16,
2038 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2039 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2040 .rlen = 16,
2041 }, {
2042 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2043 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2044 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
2045 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
2046 .klen = 32,
Herbert Xuef2736f2005-06-22 13:26:03 -07002047 .input = { 0x64, 0xa9, 0x1a, 0x37, 0xed, 0x9f, 0xe7, 0x49,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002048 0xa8, 0x4e, 0x76, 0xd6, 0xf5, 0x0d, 0x78, 0xee },
2049 .ilen = 16,
2050 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2051 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2052 .rlen = 16,
2053 }, { /* KeySize=128, I=121 */
2054 .key = { [15] = 0x80 },
2055 .klen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07002056 .input = { 0x3d, 0xda, 0xbf, 0xc0, 0x06, 0xda, 0xab, 0x06,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002057 0x46, 0x2a, 0xf4, 0xef, 0x81, 0x54, 0x4e, 0x26 },
2058 .ilen = 16,
2059 .result = { [0 ... 15] = 0x00 },
2060 .rlen = 16,
2061 },
2062};
2063
2064
2065/* Cast6 test vectors from RFC 2612 */
2066#define CAST6_ENC_TEST_VECTORS 3
2067#define CAST6_DEC_TEST_VECTORS 3
2068
Herbert Xuef2736f2005-06-22 13:26:03 -07002069static struct cipher_testvec cast6_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002070 {
Herbert Xuef2736f2005-06-22 13:26:03 -07002071 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002072 0x0a, 0xf7, 0x56, 0x47, 0xf2, 0x9f, 0x61, 0x5d },
2073 .klen = 16,
2074 .input = { [0 ... 15] = 0x00 },
2075 .ilen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07002076 .result = { 0xc8, 0x42, 0xa0, 0x89, 0x72, 0xb4, 0x3d, 0x20,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002077 0x83, 0x6c, 0x91, 0xd1, 0xb7, 0x53, 0x0f, 0x6b },
2078 .rlen = 16,
2079 }, {
Herbert Xuef2736f2005-06-22 13:26:03 -07002080 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c,
2081 0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002082 0xba, 0xc7, 0x7a, 0x77, 0x17, 0x94, 0x28, 0x63 },
2083 .klen = 24,
2084 .input = { [0 ... 15] = 0x00 },
2085 .ilen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07002086 .result = { 0x1b, 0x38, 0x6c, 0x02, 0x10, 0xdc, 0xad, 0xcb,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002087 0xdd, 0x0e, 0x41, 0xaa, 0x08, 0xa7, 0xa7, 0xe8 },
2088 .rlen = 16,
2089 }, {
2090 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c,
2091 0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98,
2092 0x8d, 0x7c, 0x47, 0xce, 0x26, 0x49, 0x08, 0x46,
Herbert Xuef2736f2005-06-22 13:26:03 -07002093 0x1c, 0xc1, 0xb5, 0x13, 0x7a, 0xe6, 0xb6, 0x04 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07002094 .klen = 32,
2095 .input = { [0 ... 15] = 0x00 },
2096 .ilen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07002097 .result = { 0x4f, 0x6a, 0x20, 0x38, 0x28, 0x68, 0x97, 0xb9,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002098 0xc9, 0x87, 0x01, 0x36, 0x55, 0x33, 0x17, 0xfa },
2099 .rlen = 16,
2100 },
2101};
2102
Herbert Xuef2736f2005-06-22 13:26:03 -07002103static struct cipher_testvec cast6_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002104 {
Herbert Xuef2736f2005-06-22 13:26:03 -07002105 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002106 0x0a, 0xf7, 0x56, 0x47, 0xf2, 0x9f, 0x61, 0x5d },
2107 .klen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07002108 .input = { 0xc8, 0x42, 0xa0, 0x89, 0x72, 0xb4, 0x3d, 0x20,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002109 0x83, 0x6c, 0x91, 0xd1, 0xb7, 0x53, 0x0f, 0x6b },
2110 .ilen = 16,
2111 .result = { [0 ... 15] = 0x00 },
2112 .rlen = 16,
2113 }, {
Herbert Xuef2736f2005-06-22 13:26:03 -07002114 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c,
2115 0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002116 0xba, 0xc7, 0x7a, 0x77, 0x17, 0x94, 0x28, 0x63 },
2117 .klen = 24,
Herbert Xuef2736f2005-06-22 13:26:03 -07002118 .input = { 0x1b, 0x38, 0x6c, 0x02, 0x10, 0xdc, 0xad, 0xcb,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002119 0xdd, 0x0e, 0x41, 0xaa, 0x08, 0xa7, 0xa7, 0xe8 },
2120 .ilen = 16,
2121 .result = { [0 ... 15] = 0x00 },
2122 .rlen = 16,
2123 }, {
2124 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c,
2125 0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98,
2126 0x8d, 0x7c, 0x47, 0xce, 0x26, 0x49, 0x08, 0x46,
Herbert Xuef2736f2005-06-22 13:26:03 -07002127 0x1c, 0xc1, 0xb5, 0x13, 0x7a, 0xe6, 0xb6, 0x04 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07002128 .klen = 32,
Herbert Xuef2736f2005-06-22 13:26:03 -07002129 .input = { 0x4f, 0x6a, 0x20, 0x38, 0x28, 0x68, 0x97, 0xb9,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002130 0xc9, 0x87, 0x01, 0x36, 0x55, 0x33, 0x17, 0xfa },
2131 .ilen = 16,
2132 .result = { [0 ... 15] = 0x00 },
2133 .rlen = 16,
2134 },
2135};
2136
2137
2138/*
2139 * AES test vectors.
2140 */
2141#define AES_ENC_TEST_VECTORS 3
2142#define AES_DEC_TEST_VECTORS 3
Jan Glauber05f29fc2006-01-06 00:19:19 -08002143#define AES_CBC_ENC_TEST_VECTORS 2
2144#define AES_CBC_DEC_TEST_VECTORS 2
Rik Snelf3d10442006-11-29 19:01:41 +11002145#define AES_LRW_ENC_TEST_VECTORS 8
2146#define AES_LRW_DEC_TEST_VECTORS 8
Rik Snelf19f5112007-09-19 20:23:13 +08002147#define AES_XTS_ENC_TEST_VECTORS 4
2148#define AES_XTS_DEC_TEST_VECTORS 4
Linus Torvalds1da177e2005-04-16 15:20:36 -07002149
Herbert Xuef2736f2005-06-22 13:26:03 -07002150static struct cipher_testvec aes_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002151 { /* From FIPS-197 */
Herbert Xuef2736f2005-06-22 13:26:03 -07002152 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002153 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2154 .klen = 16,
2155 .input = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
2156 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
2157 .ilen = 16,
2158 .result = { 0x69, 0xc4, 0xe0, 0xd8, 0x6a, 0x7b, 0x04, 0x30,
2159 0xd8, 0xcd, 0xb7, 0x80, 0x70, 0xb4, 0xc5, 0x5a },
2160 .rlen = 16,
2161 }, {
2162 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2163 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2164 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 },
2165 .klen = 24,
Herbert Xuef2736f2005-06-22 13:26:03 -07002166 .input = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002167 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
2168 .ilen = 16,
2169 .result = { 0xdd, 0xa9, 0x7c, 0xa4, 0x86, 0x4c, 0xdf, 0xe0,
2170 0x6e, 0xaf, 0x70, 0xa0, 0xec, 0x0d, 0x71, 0x91 },
2171 .rlen = 16,
2172 }, {
2173 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2174 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2175 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
2176 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
2177 .klen = 32,
Herbert Xuef2736f2005-06-22 13:26:03 -07002178 .input = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002179 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
2180 .ilen = 16,
2181 .result = { 0x8e, 0xa2, 0xb7, 0xca, 0x51, 0x67, 0x45, 0xbf,
2182 0xea, 0xfc, 0x49, 0x90, 0x4b, 0x49, 0x60, 0x89 },
2183 .rlen = 16,
2184 },
2185};
2186
Herbert Xuef2736f2005-06-22 13:26:03 -07002187static struct cipher_testvec aes_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07002188 { /* From FIPS-197 */
Herbert Xuef2736f2005-06-22 13:26:03 -07002189 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002190 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
2191 .klen = 16,
2192 .input = { 0x69, 0xc4, 0xe0, 0xd8, 0x6a, 0x7b, 0x04, 0x30,
2193 0xd8, 0xcd, 0xb7, 0x80, 0x70, 0xb4, 0xc5, 0x5a },
2194 .ilen = 16,
2195 .result = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
2196 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
2197 .rlen = 16,
2198 }, {
2199 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2200 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2201 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 },
2202 .klen = 24,
2203 .input = { 0xdd, 0xa9, 0x7c, 0xa4, 0x86, 0x4c, 0xdf, 0xe0,
2204 0x6e, 0xaf, 0x70, 0xa0, 0xec, 0x0d, 0x71, 0x91 },
2205 .ilen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07002206 .result = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
2207 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
Linus Torvalds1da177e2005-04-16 15:20:36 -07002208 .rlen = 16,
2209 }, {
2210 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2211 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2212 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
2213 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
2214 .klen = 32,
2215 .input = { 0x8e, 0xa2, 0xb7, 0xca, 0x51, 0x67, 0x45, 0xbf,
2216 0xea, 0xfc, 0x49, 0x90, 0x4b, 0x49, 0x60, 0x89 },
2217 .ilen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07002218 .result = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002219 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
2220 .rlen = 16,
2221 },
2222};
2223
Jan Glauber05f29fc2006-01-06 00:19:19 -08002224static struct cipher_testvec aes_cbc_enc_tv_template[] = {
2225 { /* From RFC 3602 */
2226 .key = { 0x06, 0xa9, 0x21, 0x40, 0x36, 0xb8, 0xa1, 0x5b,
2227 0x51, 0x2e, 0x03, 0xd5, 0x34, 0x12, 0x00, 0x06 },
2228 .klen = 16,
2229 .iv = { 0x3d, 0xaf, 0xba, 0x42, 0x9d, 0x9e, 0xb4, 0x30,
2230 0xb4, 0x22, 0xda, 0x80, 0x2c, 0x9f, 0xac, 0x41 },
2231 .input = { "Single block msg" },
2232 .ilen = 16,
2233 .result = { 0xe3, 0x53, 0x77, 0x9c, 0x10, 0x79, 0xae, 0xb8,
2234 0x27, 0x08, 0x94, 0x2d, 0xbe, 0x77, 0x18, 0x1a },
2235 .rlen = 16,
2236 }, {
2237 .key = { 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0,
2238 0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a },
2239 .klen = 16,
2240 .iv = { 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28,
2241 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58 },
2242 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2243 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2244 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
2245 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
2246 .ilen = 32,
2247 .result = { 0xd2, 0x96, 0xcd, 0x94, 0xc2, 0xcc, 0xcf, 0x8a,
2248 0x3a, 0x86, 0x30, 0x28, 0xb5, 0xe1, 0xdc, 0x0a,
2249 0x75, 0x86, 0x60, 0x2d, 0x25, 0x3c, 0xff, 0xf9,
2250 0x1b, 0x82, 0x66, 0xbe, 0xa6, 0xd6, 0x1a, 0xb1 },
2251 .rlen = 32,
2252 },
2253};
2254
2255static struct cipher_testvec aes_cbc_dec_tv_template[] = {
2256 { /* From RFC 3602 */
2257 .key = { 0x06, 0xa9, 0x21, 0x40, 0x36, 0xb8, 0xa1, 0x5b,
2258 0x51, 0x2e, 0x03, 0xd5, 0x34, 0x12, 0x00, 0x06 },
2259 .klen = 16,
2260 .iv = { 0x3d, 0xaf, 0xba, 0x42, 0x9d, 0x9e, 0xb4, 0x30,
2261 0xb4, 0x22, 0xda, 0x80, 0x2c, 0x9f, 0xac, 0x41 },
2262 .input = { 0xe3, 0x53, 0x77, 0x9c, 0x10, 0x79, 0xae, 0xb8,
2263 0x27, 0x08, 0x94, 0x2d, 0xbe, 0x77, 0x18, 0x1a },
2264 .ilen = 16,
2265 .result = { "Single block msg" },
2266 .rlen = 16,
2267 }, {
2268 .key = { 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0,
2269 0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a },
2270 .klen = 16,
2271 .iv = { 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28,
2272 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58 },
2273 .input = { 0xd2, 0x96, 0xcd, 0x94, 0xc2, 0xcc, 0xcf, 0x8a,
2274 0x3a, 0x86, 0x30, 0x28, 0xb5, 0xe1, 0xdc, 0x0a,
2275 0x75, 0x86, 0x60, 0x2d, 0x25, 0x3c, 0xff, 0xf9,
2276 0x1b, 0x82, 0x66, 0xbe, 0xa6, 0xd6, 0x1a, 0xb1 },
2277 .ilen = 32,
2278 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2279 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2280 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
2281 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
2282 .rlen = 32,
2283 },
2284};
2285
Rik Snelf3d10442006-11-29 19:01:41 +11002286static struct cipher_testvec aes_lrw_enc_tv_template[] = {
2287 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
2288 { /* LRW-32-AES 1 */
2289 .key = { 0x45, 0x62, 0xac, 0x25, 0xf8, 0x28, 0x17, 0x6d,
2290 0x4c, 0x26, 0x84, 0x14, 0xb5, 0x68, 0x01, 0x85,
2291 0x25, 0x8e, 0x2a, 0x05, 0xe7, 0x3e, 0x9d, 0x03,
2292 0xee, 0x5a, 0x83, 0x0c, 0xcc, 0x09, 0x4c, 0x87 },
2293 .klen = 32,
2294 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2295 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
2296 .input = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2297 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2298 .ilen = 16,
2299 .result = { 0xf1, 0xb2, 0x73, 0xcd, 0x65, 0xa3, 0xdf, 0x5f,
2300 0xe9, 0x5d, 0x48, 0x92, 0x54, 0x63, 0x4e, 0xb8 },
2301 .rlen = 16,
2302 }, { /* LRW-32-AES 2 */
2303 .key = { 0x59, 0x70, 0x47, 0x14, 0xf5, 0x57, 0x47, 0x8c,
2304 0xd7, 0x79, 0xe8, 0x0f, 0x54, 0x88, 0x79, 0x44,
2305 0x0d, 0x48, 0xf0, 0xb7, 0xb1, 0x5a, 0x53, 0xea,
2306 0x1c, 0xaa, 0x6b, 0x29, 0xc2, 0xca, 0xfb, 0xaf
2307 },
2308 .klen = 32,
2309 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2310 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 },
2311 .input = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2312 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2313 .ilen = 16,
2314 .result = { 0x00, 0xc8, 0x2b, 0xae, 0x95, 0xbb, 0xcd, 0xe5,
2315 0x27, 0x4f, 0x07, 0x69, 0xb2, 0x60, 0xe1, 0x36 },
2316 .rlen = 16,
2317 }, { /* LRW-32-AES 3 */
2318 .key = { 0xd8, 0x2a, 0x91, 0x34, 0xb2, 0x6a, 0x56, 0x50,
2319 0x30, 0xfe, 0x69, 0xe2, 0x37, 0x7f, 0x98, 0x47,
2320 0xcd, 0xf9, 0x0b, 0x16, 0x0c, 0x64, 0x8f, 0xb6,
2321 0xb0, 0x0d, 0x0d, 0x1b, 0xae, 0x85, 0x87, 0x1f },
2322 .klen = 32,
2323 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2324 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 },
2325 .input = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2326 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2327 .ilen = 16,
2328 .result = { 0x76, 0x32, 0x21, 0x83, 0xed, 0x8f, 0xf1, 0x82,
2329 0xf9, 0x59, 0x62, 0x03, 0x69, 0x0e, 0x5e, 0x01 },
2330 .rlen = 16,
2331 }, { /* LRW-32-AES 4 */
2332 .key = { 0x0f, 0x6a, 0xef, 0xf8, 0xd3, 0xd2, 0xbb, 0x15,
2333 0x25, 0x83, 0xf7, 0x3c, 0x1f, 0x01, 0x28, 0x74,
2334 0xca, 0xc6, 0xbc, 0x35, 0x4d, 0x4a, 0x65, 0x54,
2335 0x90, 0xae, 0x61, 0xcf, 0x7b, 0xae, 0xbd, 0xcc,
2336 0xad, 0xe4, 0x94, 0xc5, 0x4a, 0x29, 0xae, 0x70 },
2337 .klen = 40,
2338 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2339 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
2340 .input = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2341 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2342 .ilen = 16,
2343 .result = { 0x9c, 0x0f, 0x15, 0x2f, 0x55, 0xa2, 0xd8, 0xf0,
2344 0xd6, 0x7b, 0x8f, 0x9e, 0x28, 0x22, 0xbc, 0x41 },
2345 .rlen = 16,
2346 }, { /* LRW-32-AES 5 */
2347 .key = { 0x8a, 0xd4, 0xee, 0x10, 0x2f, 0xbd, 0x81, 0xff,
2348 0xf8, 0x86, 0xce, 0xac, 0x93, 0xc5, 0xad, 0xc6,
2349 0xa0, 0x19, 0x07, 0xc0, 0x9d, 0xf7, 0xbb, 0xdd,
2350 0x52, 0x13, 0xb2, 0xb7, 0xf0, 0xff, 0x11, 0xd8,
2351 0xd6, 0x08, 0xd0, 0xcd, 0x2e, 0xb1, 0x17, 0x6f },
2352 .klen = 40,
2353 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2354 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 },
2355 .input = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2356 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2357 .ilen = 16,
2358 .result = { 0xd4, 0x27, 0x6a, 0x7f, 0x14, 0x91, 0x3d, 0x65,
2359 0xc8, 0x60, 0x48, 0x02, 0x87, 0xe3, 0x34, 0x06 },
2360 .rlen = 16,
2361 }, { /* LRW-32-AES 6 */
2362 .key = { 0xf8, 0xd4, 0x76, 0xff, 0xd6, 0x46, 0xee, 0x6c,
2363 0x23, 0x84, 0xcb, 0x1c, 0x77, 0xd6, 0x19, 0x5d,
2364 0xfe, 0xf1, 0xa9, 0xf3, 0x7b, 0xbc, 0x8d, 0x21,
2365 0xa7, 0x9c, 0x21, 0xf8, 0xcb, 0x90, 0x02, 0x89,
2366 0xa8, 0x45, 0x34, 0x8e, 0xc8, 0xc5, 0xb5, 0xf1,
2367 0x26, 0xf5, 0x0e, 0x76, 0xfe, 0xfd, 0x1b, 0x1e },
2368 .klen = 48,
2369 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2370 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
2371 .input = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2372 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2373 .ilen = 16,
2374 .result = { 0xbd, 0x06, 0xb8, 0xe1, 0xdb, 0x98, 0x89, 0x9e,
2375 0xc4, 0x98, 0xe4, 0x91, 0xcf, 0x1c, 0x70, 0x2b },
2376 .rlen = 16,
2377 }, { /* LRW-32-AES 7 */
2378 .key = { 0xfb, 0x76, 0x15, 0xb2, 0x3d, 0x80, 0x89, 0x1d,
2379 0xd4, 0x70, 0x98, 0x0b, 0xc7, 0x95, 0x84, 0xc8,
2380 0xb2, 0xfb, 0x64, 0xce, 0x60, 0x97, 0x87, 0x8d,
2381 0x17, 0xfc, 0xe4, 0x5a, 0x49, 0xe8, 0x30, 0xb7,
2382 0x6e, 0x78, 0x17, 0xe7, 0x2d, 0x5e, 0x12, 0xd4,
2383 0x60, 0x64, 0x04, 0x7a, 0xf1, 0x2f, 0x9e, 0x0c },
2384 .klen = 48,
2385 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2386 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 },
2387 .input = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2388 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2389 .ilen = 16,
2390 .result = { 0x5b, 0x90, 0x8e, 0xc1, 0xab, 0xdd, 0x67, 0x5f,
2391 0x3d, 0x69, 0x8a, 0x95, 0x53, 0xc8, 0x9c, 0xe5 },
2392 .rlen = 16,
2393 }, {
2394/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
2395 .key = { 0xf8, 0xd4, 0x76, 0xff, 0xd6, 0x46, 0xee, 0x6c,
2396 0x23, 0x84, 0xcb, 0x1c, 0x77, 0xd6, 0x19, 0x5d,
2397 0xfe, 0xf1, 0xa9, 0xf3, 0x7b, 0xbc, 0x8d, 0x21,
2398 0xa7, 0x9c, 0x21, 0xf8, 0xcb, 0x90, 0x02, 0x89,
2399 0xa8, 0x45, 0x34, 0x8e, 0xc8, 0xc5, 0xb5, 0xf1,
2400 0x26, 0xf5, 0x0e, 0x76, 0xfe, 0xfd, 0x1b, 0x1e },
2401 .klen = 48,
2402 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2403 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
2404 .input = { 0x05, 0x11, 0xb7, 0x18, 0xab, 0xc6, 0x2d, 0xac,
2405 0x70, 0x5d, 0xf6, 0x22, 0x94, 0xcd, 0xe5, 0x6c,
2406 0x17, 0x6b, 0xf6, 0x1c, 0xf0, 0xf3, 0x6e, 0xf8,
2407 0x50, 0x38, 0x1f, 0x71, 0x49, 0xb6, 0x57, 0xd6,
2408 0x8f, 0xcb, 0x8d, 0x6b, 0xe3, 0xa6, 0x29, 0x90,
2409 0xfe, 0x2a, 0x62, 0x82, 0xae, 0x6d, 0x8b, 0xf6,
2410 0xad, 0x1e, 0x9e, 0x20, 0x5f, 0x38, 0xbe, 0x04,
2411 0xda, 0x10, 0x8e, 0xed, 0xa2, 0xa4, 0x87, 0xab,
2412 0xda, 0x6b, 0xb4, 0x0c, 0x75, 0xba, 0xd3, 0x7c,
2413 0xc9, 0xac, 0x42, 0x31, 0x95, 0x7c, 0xc9, 0x04,
2414 0xeb, 0xd5, 0x6e, 0x32, 0x69, 0x8a, 0xdb, 0xa6,
2415 0x15, 0xd7, 0x3f, 0x4f, 0x2f, 0x66, 0x69, 0x03,
2416 0x9c, 0x1f, 0x54, 0x0f, 0xde, 0x1f, 0xf3, 0x65,
2417 0x4c, 0x96, 0x12, 0xed, 0x7c, 0x92, 0x03, 0x01,
2418 0x6f, 0xbc, 0x35, 0x93, 0xac, 0xf1, 0x27, 0xf1,
2419 0xb4, 0x96, 0x82, 0x5a, 0x5f, 0xb0, 0xa0, 0x50,
2420 0x89, 0xa4, 0x8e, 0x66, 0x44, 0x85, 0xcc, 0xfd,
2421 0x33, 0x14, 0x70, 0xe3, 0x96, 0xb2, 0xc3, 0xd3,
2422 0xbb, 0x54, 0x5a, 0x1a, 0xf9, 0x74, 0xa2, 0xc5,
2423 0x2d, 0x64, 0x75, 0xdd, 0xb4, 0x54, 0xe6, 0x74,
2424 0x8c, 0xd3, 0x9d, 0x9e, 0x86, 0xab, 0x51, 0x53,
2425 0xb7, 0x93, 0x3e, 0x6f, 0xd0, 0x4e, 0x2c, 0x40,
2426 0xf6, 0xa8, 0x2e, 0x3e, 0x9d, 0xf4, 0x66, 0xa5,
2427 0x76, 0x12, 0x73, 0x44, 0x1a, 0x56, 0xd7, 0x72,
2428 0x88, 0xcd, 0x21, 0x8c, 0x4c, 0x0f, 0xfe, 0xda,
2429 0x95, 0xe0, 0x3a, 0xa6, 0xa5, 0x84, 0x46, 0xcd,
2430 0xd5, 0x3e, 0x9d, 0x3a, 0xe2, 0x67, 0xe6, 0x60,
2431 0x1a, 0xe2, 0x70, 0x85, 0x58, 0xc2, 0x1b, 0x09,
2432 0xe1, 0xd7, 0x2c, 0xca, 0xad, 0xa8, 0x8f, 0xf9,
2433 0xac, 0xb3, 0x0e, 0xdb, 0xca, 0x2e, 0xe2, 0xb8,
2434 0x51, 0x71, 0xd9, 0x3c, 0x6c, 0xf1, 0x56, 0xf8,
2435 0xea, 0x9c, 0xf1, 0xfb, 0x0c, 0xe6, 0xb7, 0x10,
2436 0x1c, 0xf8, 0xa9, 0x7c, 0xe8, 0x53, 0x35, 0xc1,
2437 0x90, 0x3e, 0x76, 0x4a, 0x74, 0xa4, 0x21, 0x2c,
2438 0xf6, 0x2c, 0x4e, 0x0f, 0x94, 0x3a, 0x88, 0x2e,
2439 0x41, 0x09, 0x6a, 0x33, 0x7d, 0xf6, 0xdd, 0x3f,
2440 0x8d, 0x23, 0x31, 0x74, 0x84, 0xeb, 0x88, 0x6e,
2441 0xcc, 0xb9, 0xbc, 0x22, 0x83, 0x19, 0x07, 0x22,
2442 0xa5, 0x2d, 0xdf, 0xa5, 0xf3, 0x80, 0x85, 0x78,
2443 0x84, 0x39, 0x6a, 0x6d, 0x6a, 0x99, 0x4f, 0xa5,
2444 0x15, 0xfe, 0x46, 0xb0, 0xe4, 0x6c, 0xa5, 0x41,
2445 0x3c, 0xce, 0x8f, 0x42, 0x60, 0x71, 0xa7, 0x75,
2446 0x08, 0x40, 0x65, 0x8a, 0x82, 0xbf, 0xf5, 0x43,
2447 0x71, 0x96, 0xa9, 0x4d, 0x44, 0x8a, 0x20, 0xbe,
2448 0xfa, 0x4d, 0xbb, 0xc0, 0x7d, 0x31, 0x96, 0x65,
2449 0xe7, 0x75, 0xe5, 0x3e, 0xfd, 0x92, 0x3b, 0xc9,
2450 0x55, 0xbb, 0x16, 0x7e, 0xf7, 0xc2, 0x8c, 0xa4,
2451 0x40, 0x1d, 0xe5, 0xef, 0x0e, 0xdf, 0xe4, 0x9a,
2452 0x62, 0x73, 0x65, 0xfd, 0x46, 0x63, 0x25, 0x3d,
2453 0x2b, 0xaf, 0xe5, 0x64, 0xfe, 0xa5, 0x5c, 0xcf,
2454 0x24, 0xf3, 0xb4, 0xac, 0x64, 0xba, 0xdf, 0x4b,
2455 0xc6, 0x96, 0x7d, 0x81, 0x2d, 0x8d, 0x97, 0xf7,
2456 0xc5, 0x68, 0x77, 0x84, 0x32, 0x2b, 0xcc, 0x85,
2457 0x74, 0x96, 0xf0, 0x12, 0x77, 0x61, 0xb9, 0xeb,
2458 0x71, 0xaa, 0x82, 0xcb, 0x1c, 0xdb, 0x89, 0xc8,
2459 0xc6, 0xb5, 0xe3, 0x5c, 0x7d, 0x39, 0x07, 0x24,
2460 0xda, 0x39, 0x87, 0x45, 0xc0, 0x2b, 0xbb, 0x01,
2461 0xac, 0xbc, 0x2a, 0x5c, 0x7f, 0xfc, 0xe8, 0xce,
2462 0x6d, 0x9c, 0x6f, 0xed, 0xd3, 0xc1, 0xa1, 0xd6,
2463 0xc5, 0x55, 0xa9, 0x66, 0x2f, 0xe1, 0xc8, 0x32,
2464 0xa6, 0x5d, 0xa4, 0x3a, 0x98, 0x73, 0xe8, 0x45,
2465 0xa4, 0xc7, 0xa8, 0xb4, 0xf6, 0x13, 0x03, 0xf6,
2466 0xe9, 0x2e, 0xc4, 0x29, 0x0f, 0x84, 0xdb, 0xc4,
2467 0x21, 0xc4, 0xc2, 0x75, 0x67, 0x89, 0x37, 0x0a },
2468 .ilen = 512,
2469 .result = { 0x1a, 0x1d, 0xa9, 0x30, 0xad, 0xf9, 0x2f, 0x9b,
2470 0xb6, 0x1d, 0xae, 0xef, 0xf0, 0x2f, 0xf8, 0x5a,
2471 0x39, 0x3c, 0xbf, 0x2a, 0xb2, 0x45, 0xb2, 0x23,
2472 0x1b, 0x63, 0x3c, 0xcf, 0xaa, 0xbe, 0xcf, 0x4e,
2473 0xfa, 0xe8, 0x29, 0xc2, 0x20, 0x68, 0x2b, 0x3c,
2474 0x2e, 0x8b, 0xf7, 0x6e, 0x25, 0xbd, 0xe3, 0x3d,
2475 0x66, 0x27, 0xd6, 0xaf, 0xd6, 0x64, 0x3e, 0xe3,
2476 0xe8, 0x58, 0x46, 0x97, 0x39, 0x51, 0x07, 0xde,
2477 0xcb, 0x37, 0xbc, 0xa9, 0xc0, 0x5f, 0x75, 0xc3,
2478 0x0e, 0x84, 0x23, 0x1d, 0x16, 0xd4, 0x1c, 0x59,
2479 0x9c, 0x1a, 0x02, 0x55, 0xab, 0x3a, 0x97, 0x1d,
2480 0xdf, 0xdd, 0xc7, 0x06, 0x51, 0xd7, 0x70, 0xae,
2481 0x23, 0xc6, 0x8c, 0xf5, 0x1e, 0xa0, 0xe5, 0x82,
2482 0xb8, 0xb2, 0xbf, 0x04, 0xa0, 0x32, 0x8e, 0x68,
2483 0xeb, 0xaf, 0x6e, 0x2d, 0x94, 0x22, 0x2f, 0xce,
2484 0x4c, 0xb5, 0x59, 0xe2, 0xa2, 0x2f, 0xa0, 0x98,
2485 0x1a, 0x97, 0xc6, 0xd4, 0xb5, 0x00, 0x59, 0xf2,
2486 0x84, 0x14, 0x72, 0xb1, 0x9a, 0x6e, 0xa3, 0x7f,
2487 0xea, 0x20, 0xe7, 0xcb, 0x65, 0x77, 0x3a, 0xdf,
2488 0xc8, 0x97, 0x67, 0x15, 0xc2, 0x2a, 0x27, 0xcc,
2489 0x18, 0x55, 0xa1, 0x24, 0x0b, 0x24, 0x24, 0xaf,
2490 0x5b, 0xec, 0x68, 0xb8, 0xc8, 0xf5, 0xba, 0x63,
2491 0xff, 0xed, 0x89, 0xce, 0xd5, 0x3d, 0x88, 0xf3,
2492 0x25, 0xef, 0x05, 0x7c, 0x3a, 0xef, 0xeb, 0xd8,
2493 0x7a, 0x32, 0x0d, 0xd1, 0x1e, 0x58, 0x59, 0x99,
2494 0x90, 0x25, 0xb5, 0x26, 0xb0, 0xe3, 0x2b, 0x6c,
2495 0x4c, 0xa9, 0x8b, 0x84, 0x4f, 0x5e, 0x01, 0x50,
2496 0x41, 0x30, 0x58, 0xc5, 0x62, 0x74, 0x52, 0x1d,
2497 0x45, 0x24, 0x6a, 0x42, 0x64, 0x4f, 0x97, 0x1c,
2498 0xa8, 0x66, 0xb5, 0x6d, 0x79, 0xd4, 0x0d, 0x48,
2499 0xc5, 0x5f, 0xf3, 0x90, 0x32, 0xdd, 0xdd, 0xe1,
2500 0xe4, 0xa9, 0x9f, 0xfc, 0xc3, 0x52, 0x5a, 0x46,
2501 0xe4, 0x81, 0x84, 0x95, 0x36, 0x59, 0x7a, 0x6b,
2502 0xaa, 0xb3, 0x60, 0xad, 0xce, 0x9f, 0x9f, 0x28,
2503 0xe0, 0x01, 0x75, 0x22, 0xc4, 0x4e, 0xa9, 0x62,
2504 0x5c, 0x62, 0x0d, 0x00, 0xcb, 0x13, 0xe8, 0x43,
2505 0x72, 0xd4, 0x2d, 0x53, 0x46, 0xb5, 0xd1, 0x16,
2506 0x22, 0x18, 0xdf, 0x34, 0x33, 0xf5, 0xd6, 0x1c,
2507 0xb8, 0x79, 0x78, 0x97, 0x94, 0xff, 0x72, 0x13,
2508 0x4c, 0x27, 0xfc, 0xcb, 0xbf, 0x01, 0x53, 0xa6,
2509 0xb4, 0x50, 0x6e, 0xde, 0xdf, 0xb5, 0x43, 0xa4,
2510 0x59, 0xdf, 0x52, 0xf9, 0x7c, 0xe0, 0x11, 0x6f,
2511 0x2d, 0x14, 0x8e, 0x24, 0x61, 0x2c, 0xe1, 0x17,
2512 0xcc, 0xce, 0x51, 0x0c, 0x19, 0x8a, 0x82, 0x30,
2513 0x94, 0xd5, 0x3d, 0x6a, 0x53, 0x06, 0x5e, 0xbd,
2514 0xb7, 0xeb, 0xfa, 0xfd, 0x27, 0x51, 0xde, 0x85,
2515 0x1e, 0x86, 0x53, 0x11, 0x53, 0x94, 0x00, 0xee,
2516 0x2b, 0x8c, 0x08, 0x2a, 0xbf, 0xdd, 0xae, 0x11,
2517 0xcb, 0x1e, 0xa2, 0x07, 0x9a, 0x80, 0xcf, 0x62,
2518 0x9b, 0x09, 0xdc, 0x95, 0x3c, 0x96, 0x8e, 0xb1,
2519 0x09, 0xbd, 0xe4, 0xeb, 0xdb, 0xca, 0x70, 0x7a,
2520 0x9e, 0xfa, 0x31, 0x18, 0x45, 0x3c, 0x21, 0x33,
2521 0xb0, 0xb3, 0x2b, 0xea, 0xf3, 0x71, 0x2d, 0xe1,
2522 0x03, 0xad, 0x1b, 0x48, 0xd4, 0x67, 0x27, 0xf0,
2523 0x62, 0xe4, 0x3d, 0xfb, 0x9b, 0x08, 0x76, 0xe7,
2524 0xdd, 0x2b, 0x01, 0x39, 0x04, 0x5a, 0x58, 0x7a,
2525 0xf7, 0x11, 0x90, 0xec, 0xbd, 0x51, 0x5c, 0x32,
2526 0x6b, 0xd7, 0x35, 0x39, 0x02, 0x6b, 0xf2, 0xa6,
2527 0xd0, 0x0d, 0x07, 0xe1, 0x06, 0xc4, 0x5b, 0x7d,
2528 0xe4, 0x6a, 0xd7, 0xee, 0x15, 0x1f, 0x83, 0xb4,
2529 0xa3, 0xa7, 0x5e, 0xc3, 0x90, 0xb7, 0xef, 0xd3,
2530 0xb7, 0x4f, 0xf8, 0x92, 0x4c, 0xb7, 0x3c, 0x29,
2531 0xcd, 0x7e, 0x2b, 0x5d, 0x43, 0xea, 0x42, 0xe7,
2532 0x74, 0x3f, 0x7d, 0x58, 0x88, 0x75, 0xde, 0x3e },
2533 .rlen = 512,
2534 }
2535};
2536
2537static struct cipher_testvec aes_lrw_dec_tv_template[] = {
2538 /* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
2539 /* same as enc vectors with input and result reversed */
2540 { /* LRW-32-AES 1 */
2541 .key = { 0x45, 0x62, 0xac, 0x25, 0xf8, 0x28, 0x17, 0x6d,
2542 0x4c, 0x26, 0x84, 0x14, 0xb5, 0x68, 0x01, 0x85,
2543 0x25, 0x8e, 0x2a, 0x05, 0xe7, 0x3e, 0x9d, 0x03,
2544 0xee, 0x5a, 0x83, 0x0c, 0xcc, 0x09, 0x4c, 0x87 },
2545 .klen = 32,
2546 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2547 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
2548 .input = { 0xf1, 0xb2, 0x73, 0xcd, 0x65, 0xa3, 0xdf, 0x5f,
2549 0xe9, 0x5d, 0x48, 0x92, 0x54, 0x63, 0x4e, 0xb8 },
2550 .ilen = 16,
2551 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2552 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2553 .rlen = 16,
2554 }, { /* LRW-32-AES 2 */
2555 .key = { 0x59, 0x70, 0x47, 0x14, 0xf5, 0x57, 0x47, 0x8c,
2556 0xd7, 0x79, 0xe8, 0x0f, 0x54, 0x88, 0x79, 0x44,
2557 0x0d, 0x48, 0xf0, 0xb7, 0xb1, 0x5a, 0x53, 0xea,
2558 0x1c, 0xaa, 0x6b, 0x29, 0xc2, 0xca, 0xfb, 0xaf
2559 },
2560 .klen = 32,
2561 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2562 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 },
2563 .input = { 0x00, 0xc8, 0x2b, 0xae, 0x95, 0xbb, 0xcd, 0xe5,
2564 0x27, 0x4f, 0x07, 0x69, 0xb2, 0x60, 0xe1, 0x36 },
2565 .ilen = 16,
2566 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2567 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2568 .rlen = 16,
2569 }, { /* LRW-32-AES 3 */
2570 .key = { 0xd8, 0x2a, 0x91, 0x34, 0xb2, 0x6a, 0x56, 0x50,
2571 0x30, 0xfe, 0x69, 0xe2, 0x37, 0x7f, 0x98, 0x47,
2572 0xcd, 0xf9, 0x0b, 0x16, 0x0c, 0x64, 0x8f, 0xb6,
2573 0xb0, 0x0d, 0x0d, 0x1b, 0xae, 0x85, 0x87, 0x1f },
2574 .klen = 32,
2575 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2576 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 },
2577 .input = { 0x76, 0x32, 0x21, 0x83, 0xed, 0x8f, 0xf1, 0x82,
2578 0xf9, 0x59, 0x62, 0x03, 0x69, 0x0e, 0x5e, 0x01 },
2579 .ilen = 16,
2580 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2581 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2582 .rlen = 16,
2583 }, { /* LRW-32-AES 4 */
2584 .key = { 0x0f, 0x6a, 0xef, 0xf8, 0xd3, 0xd2, 0xbb, 0x15,
2585 0x25, 0x83, 0xf7, 0x3c, 0x1f, 0x01, 0x28, 0x74,
2586 0xca, 0xc6, 0xbc, 0x35, 0x4d, 0x4a, 0x65, 0x54,
2587 0x90, 0xae, 0x61, 0xcf, 0x7b, 0xae, 0xbd, 0xcc,
2588 0xad, 0xe4, 0x94, 0xc5, 0x4a, 0x29, 0xae, 0x70 },
2589 .klen = 40,
2590 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2591 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
2592 .input = { 0x9c, 0x0f, 0x15, 0x2f, 0x55, 0xa2, 0xd8, 0xf0,
2593 0xd6, 0x7b, 0x8f, 0x9e, 0x28, 0x22, 0xbc, 0x41 },
2594 .ilen = 16,
2595 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2596 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2597 .rlen = 16,
2598 }, { /* LRW-32-AES 5 */
2599 .key = { 0x8a, 0xd4, 0xee, 0x10, 0x2f, 0xbd, 0x81, 0xff,
2600 0xf8, 0x86, 0xce, 0xac, 0x93, 0xc5, 0xad, 0xc6,
2601 0xa0, 0x19, 0x07, 0xc0, 0x9d, 0xf7, 0xbb, 0xdd,
2602 0x52, 0x13, 0xb2, 0xb7, 0xf0, 0xff, 0x11, 0xd8,
2603 0xd6, 0x08, 0xd0, 0xcd, 0x2e, 0xb1, 0x17, 0x6f },
2604 .klen = 40,
2605 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2606 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 },
2607 .input = { 0xd4, 0x27, 0x6a, 0x7f, 0x14, 0x91, 0x3d, 0x65,
2608 0xc8, 0x60, 0x48, 0x02, 0x87, 0xe3, 0x34, 0x06 },
2609 .ilen = 16,
2610 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2611 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2612 .rlen = 16,
2613 }, { /* LRW-32-AES 6 */
2614 .key = { 0xf8, 0xd4, 0x76, 0xff, 0xd6, 0x46, 0xee, 0x6c,
2615 0x23, 0x84, 0xcb, 0x1c, 0x77, 0xd6, 0x19, 0x5d,
2616 0xfe, 0xf1, 0xa9, 0xf3, 0x7b, 0xbc, 0x8d, 0x21,
2617 0xa7, 0x9c, 0x21, 0xf8, 0xcb, 0x90, 0x02, 0x89,
2618 0xa8, 0x45, 0x34, 0x8e, 0xc8, 0xc5, 0xb5, 0xf1,
2619 0x26, 0xf5, 0x0e, 0x76, 0xfe, 0xfd, 0x1b, 0x1e },
2620 .klen = 48,
2621 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2622 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
2623 .input = { 0xbd, 0x06, 0xb8, 0xe1, 0xdb, 0x98, 0x89, 0x9e,
2624 0xc4, 0x98, 0xe4, 0x91, 0xcf, 0x1c, 0x70, 0x2b },
2625 .ilen = 16,
2626 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2627 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2628 .rlen = 16,
2629 }, { /* LRW-32-AES 7 */
2630 .key = { 0xfb, 0x76, 0x15, 0xb2, 0x3d, 0x80, 0x89, 0x1d,
2631 0xd4, 0x70, 0x98, 0x0b, 0xc7, 0x95, 0x84, 0xc8,
2632 0xb2, 0xfb, 0x64, 0xce, 0x60, 0x97, 0x87, 0x8d,
2633 0x17, 0xfc, 0xe4, 0x5a, 0x49, 0xe8, 0x30, 0xb7,
2634 0x6e, 0x78, 0x17, 0xe7, 0x2d, 0x5e, 0x12, 0xd4,
2635 0x60, 0x64, 0x04, 0x7a, 0xf1, 0x2f, 0x9e, 0x0c },
2636 .klen = 48,
2637 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2638 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 },
2639 .input = { 0x5b, 0x90, 0x8e, 0xc1, 0xab, 0xdd, 0x67, 0x5f,
2640 0x3d, 0x69, 0x8a, 0x95, 0x53, 0xc8, 0x9c, 0xe5 },
2641 .ilen = 16,
2642 .result = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2643 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
2644 .rlen = 16,
2645 }, {
2646/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
2647 .key = { 0xf8, 0xd4, 0x76, 0xff, 0xd6, 0x46, 0xee, 0x6c,
2648 0x23, 0x84, 0xcb, 0x1c, 0x77, 0xd6, 0x19, 0x5d,
2649 0xfe, 0xf1, 0xa9, 0xf3, 0x7b, 0xbc, 0x8d, 0x21,
2650 0xa7, 0x9c, 0x21, 0xf8, 0xcb, 0x90, 0x02, 0x89,
2651 0xa8, 0x45, 0x34, 0x8e, 0xc8, 0xc5, 0xb5, 0xf1,
2652 0x26, 0xf5, 0x0e, 0x76, 0xfe, 0xfd, 0x1b, 0x1e },
2653 .klen = 48,
2654 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2655 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
2656 .input = { 0x1a, 0x1d, 0xa9, 0x30, 0xad, 0xf9, 0x2f, 0x9b,
2657 0xb6, 0x1d, 0xae, 0xef, 0xf0, 0x2f, 0xf8, 0x5a,
2658 0x39, 0x3c, 0xbf, 0x2a, 0xb2, 0x45, 0xb2, 0x23,
2659 0x1b, 0x63, 0x3c, 0xcf, 0xaa, 0xbe, 0xcf, 0x4e,
2660 0xfa, 0xe8, 0x29, 0xc2, 0x20, 0x68, 0x2b, 0x3c,
2661 0x2e, 0x8b, 0xf7, 0x6e, 0x25, 0xbd, 0xe3, 0x3d,
2662 0x66, 0x27, 0xd6, 0xaf, 0xd6, 0x64, 0x3e, 0xe3,
2663 0xe8, 0x58, 0x46, 0x97, 0x39, 0x51, 0x07, 0xde,
2664 0xcb, 0x37, 0xbc, 0xa9, 0xc0, 0x5f, 0x75, 0xc3,
2665 0x0e, 0x84, 0x23, 0x1d, 0x16, 0xd4, 0x1c, 0x59,
2666 0x9c, 0x1a, 0x02, 0x55, 0xab, 0x3a, 0x97, 0x1d,
2667 0xdf, 0xdd, 0xc7, 0x06, 0x51, 0xd7, 0x70, 0xae,
2668 0x23, 0xc6, 0x8c, 0xf5, 0x1e, 0xa0, 0xe5, 0x82,
2669 0xb8, 0xb2, 0xbf, 0x04, 0xa0, 0x32, 0x8e, 0x68,
2670 0xeb, 0xaf, 0x6e, 0x2d, 0x94, 0x22, 0x2f, 0xce,
2671 0x4c, 0xb5, 0x59, 0xe2, 0xa2, 0x2f, 0xa0, 0x98,
2672 0x1a, 0x97, 0xc6, 0xd4, 0xb5, 0x00, 0x59, 0xf2,
2673 0x84, 0x14, 0x72, 0xb1, 0x9a, 0x6e, 0xa3, 0x7f,
2674 0xea, 0x20, 0xe7, 0xcb, 0x65, 0x77, 0x3a, 0xdf,
2675 0xc8, 0x97, 0x67, 0x15, 0xc2, 0x2a, 0x27, 0xcc,
2676 0x18, 0x55, 0xa1, 0x24, 0x0b, 0x24, 0x24, 0xaf,
2677 0x5b, 0xec, 0x68, 0xb8, 0xc8, 0xf5, 0xba, 0x63,
2678 0xff, 0xed, 0x89, 0xce, 0xd5, 0x3d, 0x88, 0xf3,
2679 0x25, 0xef, 0x05, 0x7c, 0x3a, 0xef, 0xeb, 0xd8,
2680 0x7a, 0x32, 0x0d, 0xd1, 0x1e, 0x58, 0x59, 0x99,
2681 0x90, 0x25, 0xb5, 0x26, 0xb0, 0xe3, 0x2b, 0x6c,
2682 0x4c, 0xa9, 0x8b, 0x84, 0x4f, 0x5e, 0x01, 0x50,
2683 0x41, 0x30, 0x58, 0xc5, 0x62, 0x74, 0x52, 0x1d,
2684 0x45, 0x24, 0x6a, 0x42, 0x64, 0x4f, 0x97, 0x1c,
2685 0xa8, 0x66, 0xb5, 0x6d, 0x79, 0xd4, 0x0d, 0x48,
2686 0xc5, 0x5f, 0xf3, 0x90, 0x32, 0xdd, 0xdd, 0xe1,
2687 0xe4, 0xa9, 0x9f, 0xfc, 0xc3, 0x52, 0x5a, 0x46,
2688 0xe4, 0x81, 0x84, 0x95, 0x36, 0x59, 0x7a, 0x6b,
2689 0xaa, 0xb3, 0x60, 0xad, 0xce, 0x9f, 0x9f, 0x28,
2690 0xe0, 0x01, 0x75, 0x22, 0xc4, 0x4e, 0xa9, 0x62,
2691 0x5c, 0x62, 0x0d, 0x00, 0xcb, 0x13, 0xe8, 0x43,
2692 0x72, 0xd4, 0x2d, 0x53, 0x46, 0xb5, 0xd1, 0x16,
2693 0x22, 0x18, 0xdf, 0x34, 0x33, 0xf5, 0xd6, 0x1c,
2694 0xb8, 0x79, 0x78, 0x97, 0x94, 0xff, 0x72, 0x13,
2695 0x4c, 0x27, 0xfc, 0xcb, 0xbf, 0x01, 0x53, 0xa6,
2696 0xb4, 0x50, 0x6e, 0xde, 0xdf, 0xb5, 0x43, 0xa4,
2697 0x59, 0xdf, 0x52, 0xf9, 0x7c, 0xe0, 0x11, 0x6f,
2698 0x2d, 0x14, 0x8e, 0x24, 0x61, 0x2c, 0xe1, 0x17,
2699 0xcc, 0xce, 0x51, 0x0c, 0x19, 0x8a, 0x82, 0x30,
2700 0x94, 0xd5, 0x3d, 0x6a, 0x53, 0x06, 0x5e, 0xbd,
2701 0xb7, 0xeb, 0xfa, 0xfd, 0x27, 0x51, 0xde, 0x85,
2702 0x1e, 0x86, 0x53, 0x11, 0x53, 0x94, 0x00, 0xee,
2703 0x2b, 0x8c, 0x08, 0x2a, 0xbf, 0xdd, 0xae, 0x11,
2704 0xcb, 0x1e, 0xa2, 0x07, 0x9a, 0x80, 0xcf, 0x62,
2705 0x9b, 0x09, 0xdc, 0x95, 0x3c, 0x96, 0x8e, 0xb1,
2706 0x09, 0xbd, 0xe4, 0xeb, 0xdb, 0xca, 0x70, 0x7a,
2707 0x9e, 0xfa, 0x31, 0x18, 0x45, 0x3c, 0x21, 0x33,
2708 0xb0, 0xb3, 0x2b, 0xea, 0xf3, 0x71, 0x2d, 0xe1,
2709 0x03, 0xad, 0x1b, 0x48, 0xd4, 0x67, 0x27, 0xf0,
2710 0x62, 0xe4, 0x3d, 0xfb, 0x9b, 0x08, 0x76, 0xe7,
2711 0xdd, 0x2b, 0x01, 0x39, 0x04, 0x5a, 0x58, 0x7a,
2712 0xf7, 0x11, 0x90, 0xec, 0xbd, 0x51, 0x5c, 0x32,
2713 0x6b, 0xd7, 0x35, 0x39, 0x02, 0x6b, 0xf2, 0xa6,
2714 0xd0, 0x0d, 0x07, 0xe1, 0x06, 0xc4, 0x5b, 0x7d,
2715 0xe4, 0x6a, 0xd7, 0xee, 0x15, 0x1f, 0x83, 0xb4,
2716 0xa3, 0xa7, 0x5e, 0xc3, 0x90, 0xb7, 0xef, 0xd3,
2717 0xb7, 0x4f, 0xf8, 0x92, 0x4c, 0xb7, 0x3c, 0x29,
2718 0xcd, 0x7e, 0x2b, 0x5d, 0x43, 0xea, 0x42, 0xe7,
2719 0x74, 0x3f, 0x7d, 0x58, 0x88, 0x75, 0xde, 0x3e },
2720 .ilen = 512,
2721 .result = { 0x05, 0x11, 0xb7, 0x18, 0xab, 0xc6, 0x2d, 0xac,
2722 0x70, 0x5d, 0xf6, 0x22, 0x94, 0xcd, 0xe5, 0x6c,
2723 0x17, 0x6b, 0xf6, 0x1c, 0xf0, 0xf3, 0x6e, 0xf8,
2724 0x50, 0x38, 0x1f, 0x71, 0x49, 0xb6, 0x57, 0xd6,
2725 0x8f, 0xcb, 0x8d, 0x6b, 0xe3, 0xa6, 0x29, 0x90,
2726 0xfe, 0x2a, 0x62, 0x82, 0xae, 0x6d, 0x8b, 0xf6,
2727 0xad, 0x1e, 0x9e, 0x20, 0x5f, 0x38, 0xbe, 0x04,
2728 0xda, 0x10, 0x8e, 0xed, 0xa2, 0xa4, 0x87, 0xab,
2729 0xda, 0x6b, 0xb4, 0x0c, 0x75, 0xba, 0xd3, 0x7c,
2730 0xc9, 0xac, 0x42, 0x31, 0x95, 0x7c, 0xc9, 0x04,
2731 0xeb, 0xd5, 0x6e, 0x32, 0x69, 0x8a, 0xdb, 0xa6,
2732 0x15, 0xd7, 0x3f, 0x4f, 0x2f, 0x66, 0x69, 0x03,
2733 0x9c, 0x1f, 0x54, 0x0f, 0xde, 0x1f, 0xf3, 0x65,
2734 0x4c, 0x96, 0x12, 0xed, 0x7c, 0x92, 0x03, 0x01,
2735 0x6f, 0xbc, 0x35, 0x93, 0xac, 0xf1, 0x27, 0xf1,
2736 0xb4, 0x96, 0x82, 0x5a, 0x5f, 0xb0, 0xa0, 0x50,
2737 0x89, 0xa4, 0x8e, 0x66, 0x44, 0x85, 0xcc, 0xfd,
2738 0x33, 0x14, 0x70, 0xe3, 0x96, 0xb2, 0xc3, 0xd3,
2739 0xbb, 0x54, 0x5a, 0x1a, 0xf9, 0x74, 0xa2, 0xc5,
2740 0x2d, 0x64, 0x75, 0xdd, 0xb4, 0x54, 0xe6, 0x74,
2741 0x8c, 0xd3, 0x9d, 0x9e, 0x86, 0xab, 0x51, 0x53,
2742 0xb7, 0x93, 0x3e, 0x6f, 0xd0, 0x4e, 0x2c, 0x40,
2743 0xf6, 0xa8, 0x2e, 0x3e, 0x9d, 0xf4, 0x66, 0xa5,
2744 0x76, 0x12, 0x73, 0x44, 0x1a, 0x56, 0xd7, 0x72,
2745 0x88, 0xcd, 0x21, 0x8c, 0x4c, 0x0f, 0xfe, 0xda,
2746 0x95, 0xe0, 0x3a, 0xa6, 0xa5, 0x84, 0x46, 0xcd,
2747 0xd5, 0x3e, 0x9d, 0x3a, 0xe2, 0x67, 0xe6, 0x60,
2748 0x1a, 0xe2, 0x70, 0x85, 0x58, 0xc2, 0x1b, 0x09,
2749 0xe1, 0xd7, 0x2c, 0xca, 0xad, 0xa8, 0x8f, 0xf9,
2750 0xac, 0xb3, 0x0e, 0xdb, 0xca, 0x2e, 0xe2, 0xb8,
2751 0x51, 0x71, 0xd9, 0x3c, 0x6c, 0xf1, 0x56, 0xf8,
2752 0xea, 0x9c, 0xf1, 0xfb, 0x0c, 0xe6, 0xb7, 0x10,
2753 0x1c, 0xf8, 0xa9, 0x7c, 0xe8, 0x53, 0x35, 0xc1,
2754 0x90, 0x3e, 0x76, 0x4a, 0x74, 0xa4, 0x21, 0x2c,
2755 0xf6, 0x2c, 0x4e, 0x0f, 0x94, 0x3a, 0x88, 0x2e,
2756 0x41, 0x09, 0x6a, 0x33, 0x7d, 0xf6, 0xdd, 0x3f,
2757 0x8d, 0x23, 0x31, 0x74, 0x84, 0xeb, 0x88, 0x6e,
2758 0xcc, 0xb9, 0xbc, 0x22, 0x83, 0x19, 0x07, 0x22,
2759 0xa5, 0x2d, 0xdf, 0xa5, 0xf3, 0x80, 0x85, 0x78,
2760 0x84, 0x39, 0x6a, 0x6d, 0x6a, 0x99, 0x4f, 0xa5,
2761 0x15, 0xfe, 0x46, 0xb0, 0xe4, 0x6c, 0xa5, 0x41,
2762 0x3c, 0xce, 0x8f, 0x42, 0x60, 0x71, 0xa7, 0x75,
2763 0x08, 0x40, 0x65, 0x8a, 0x82, 0xbf, 0xf5, 0x43,
2764 0x71, 0x96, 0xa9, 0x4d, 0x44, 0x8a, 0x20, 0xbe,
2765 0xfa, 0x4d, 0xbb, 0xc0, 0x7d, 0x31, 0x96, 0x65,
2766 0xe7, 0x75, 0xe5, 0x3e, 0xfd, 0x92, 0x3b, 0xc9,
2767 0x55, 0xbb, 0x16, 0x7e, 0xf7, 0xc2, 0x8c, 0xa4,
2768 0x40, 0x1d, 0xe5, 0xef, 0x0e, 0xdf, 0xe4, 0x9a,
2769 0x62, 0x73, 0x65, 0xfd, 0x46, 0x63, 0x25, 0x3d,
2770 0x2b, 0xaf, 0xe5, 0x64, 0xfe, 0xa5, 0x5c, 0xcf,
2771 0x24, 0xf3, 0xb4, 0xac, 0x64, 0xba, 0xdf, 0x4b,
2772 0xc6, 0x96, 0x7d, 0x81, 0x2d, 0x8d, 0x97, 0xf7,
2773 0xc5, 0x68, 0x77, 0x84, 0x32, 0x2b, 0xcc, 0x85,
2774 0x74, 0x96, 0xf0, 0x12, 0x77, 0x61, 0xb9, 0xeb,
2775 0x71, 0xaa, 0x82, 0xcb, 0x1c, 0xdb, 0x89, 0xc8,
2776 0xc6, 0xb5, 0xe3, 0x5c, 0x7d, 0x39, 0x07, 0x24,
2777 0xda, 0x39, 0x87, 0x45, 0xc0, 0x2b, 0xbb, 0x01,
2778 0xac, 0xbc, 0x2a, 0x5c, 0x7f, 0xfc, 0xe8, 0xce,
2779 0x6d, 0x9c, 0x6f, 0xed, 0xd3, 0xc1, 0xa1, 0xd6,
2780 0xc5, 0x55, 0xa9, 0x66, 0x2f, 0xe1, 0xc8, 0x32,
2781 0xa6, 0x5d, 0xa4, 0x3a, 0x98, 0x73, 0xe8, 0x45,
2782 0xa4, 0xc7, 0xa8, 0xb4, 0xf6, 0x13, 0x03, 0xf6,
2783 0xe9, 0x2e, 0xc4, 0x29, 0x0f, 0x84, 0xdb, 0xc4,
2784 0x21, 0xc4, 0xc2, 0x75, 0x67, 0x89, 0x37, 0x0a },
2785 .rlen = 512,
2786 }
2787};
2788
Rik Snelf19f5112007-09-19 20:23:13 +08002789static struct cipher_testvec aes_xts_enc_tv_template[] = {
2790 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
2791 { /* XTS-AES 1 */
2792 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2793 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2794 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2795 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
2796 .klen = 32,
2797 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2798 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
2799 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2800 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2801 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2802 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
2803 .ilen = 32,
2804 .result = { 0x91, 0x7c, 0xf6, 0x9e, 0xbd, 0x68, 0xb2, 0xec,
2805 0x9b, 0x9f, 0xe9, 0xa3, 0xea, 0xdd, 0xa6, 0x92,
2806 0xcd, 0x43, 0xd2, 0xf5, 0x95, 0x98, 0xed, 0x85,
2807 0x8c, 0x02, 0xc2, 0x65, 0x2f, 0xbf, 0x92, 0x2e },
2808 .rlen = 32,
2809 }, { /* XTS-AES 2 */
2810 .key = { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
2811 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
2812 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
2813 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 },
2814 .klen = 32,
2815 .iv = { 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00,
2816 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
2817 .input = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
2818 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
2819 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
2820 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 },
2821 .ilen = 32,
2822 .result = { 0xc4, 0x54, 0x18, 0x5e, 0x6a, 0x16, 0x93, 0x6e,
2823 0x39, 0x33, 0x40, 0x38, 0xac, 0xef, 0x83, 0x8b,
2824 0xfb, 0x18, 0x6f, 0xff, 0x74, 0x80, 0xad, 0xc4,
2825 0x28, 0x93, 0x82, 0xec, 0xd6, 0xd3, 0x94, 0xf0 },
2826 .rlen = 32,
2827 }, { /* XTS-AES 3 */
2828 .key = { 0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8,
2829 0xf7, 0xf6, 0xf5, 0xf4, 0xf3, 0xf2, 0xf1, 0xf0,
2830 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
2831 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 },
2832 .klen = 32,
2833 .iv = { 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00,
2834 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
2835 .input = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
2836 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
2837 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
2838 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 },
2839 .ilen = 32,
2840 .result = { 0xaf, 0x85, 0x33, 0x6b, 0x59, 0x7a, 0xfc, 0x1a,
2841 0x90, 0x0b, 0x2e, 0xb2, 0x1e, 0xc9, 0x49, 0xd2,
2842 0x92, 0xdf, 0x4c, 0x04, 0x7e, 0x0b, 0x21, 0x53,
2843 0x21, 0x86, 0xa5, 0x97, 0x1a, 0x22, 0x7a, 0x89 },
2844 .rlen = 32,
2845 }, { /* XTS-AES 4 */
2846 .key = { 0x27, 0x18, 0x28, 0x18, 0x28, 0x45, 0x90, 0x45,
2847 0x23, 0x53, 0x60, 0x28, 0x74, 0x71, 0x35, 0x26,
2848 0x31, 0x41, 0x59, 0x26, 0x53, 0x58, 0x97, 0x93,
2849 0x23, 0x84, 0x62, 0x64, 0x33, 0x83, 0x27, 0x95 },
2850 .klen = 32,
2851 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2852 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
2853 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2854 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2855 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
2856 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
2857 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
2858 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
2859 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2860 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
2861 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
2862 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
2863 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
2864 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
2865 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
2866 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
2867 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
2868 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
2869 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
2870 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
2871 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
2872 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
2873 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
2874 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
2875 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
2876 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
2877 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
2878 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
2879 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
2880 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
2881 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
2882 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
2883 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
2884 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
2885 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2886 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2887 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
2888 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
2889 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
2890 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
2891 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2892 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
2893 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
2894 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
2895 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
2896 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
2897 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
2898 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
2899 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
2900 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
2901 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
2902 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
2903 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
2904 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
2905 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
2906 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
2907 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
2908 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
2909 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
2910 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
2911 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
2912 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
2913 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
2914 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
2915 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
2916 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff },
2917 .ilen = 512,
2918 .result = { 0x27, 0xa7, 0x47, 0x9b, 0xef, 0xa1, 0xd4, 0x76,
2919 0x48, 0x9f, 0x30, 0x8c, 0xd4, 0xcf, 0xa6, 0xe2,
2920 0xa9, 0x6e, 0x4b, 0xbe, 0x32, 0x08, 0xff, 0x25,
2921 0x28, 0x7d, 0xd3, 0x81, 0x96, 0x16, 0xe8, 0x9c,
2922 0xc7, 0x8c, 0xf7, 0xf5, 0xe5, 0x43, 0x44, 0x5f,
2923 0x83, 0x33, 0xd8, 0xfa, 0x7f, 0x56, 0x00, 0x00,
2924 0x05, 0x27, 0x9f, 0xa5, 0xd8, 0xb5, 0xe4, 0xad,
2925 0x40, 0xe7, 0x36, 0xdd, 0xb4, 0xd3, 0x54, 0x12,
2926 0x32, 0x80, 0x63, 0xfd, 0x2a, 0xab, 0x53, 0xe5,
2927 0xea, 0x1e, 0x0a, 0x9f, 0x33, 0x25, 0x00, 0xa5,
2928 0xdf, 0x94, 0x87, 0xd0, 0x7a, 0x5c, 0x92, 0xcc,
2929 0x51, 0x2c, 0x88, 0x66, 0xc7, 0xe8, 0x60, 0xce,
2930 0x93, 0xfd, 0xf1, 0x66, 0xa2, 0x49, 0x12, 0xb4,
2931 0x22, 0x97, 0x61, 0x46, 0xae, 0x20, 0xce, 0x84,
2932 0x6b, 0xb7, 0xdc, 0x9b, 0xa9, 0x4a, 0x76, 0x7a,
2933 0xae, 0xf2, 0x0c, 0x0d, 0x61, 0xad, 0x02, 0x65,
2934 0x5e, 0xa9, 0x2d, 0xc4, 0xc4, 0xe4, 0x1a, 0x89,
2935 0x52, 0xc6, 0x51, 0xd3, 0x31, 0x74, 0xbe, 0x51,
2936 0xa1, 0x0c, 0x42, 0x11, 0x10, 0xe6, 0xd8, 0x15,
2937 0x88, 0xed, 0xe8, 0x21, 0x03, 0xa2, 0x52, 0xd8,
2938 0xa7, 0x50, 0xe8, 0x76, 0x8d, 0xef, 0xff, 0xed,
2939 0x91, 0x22, 0x81, 0x0a, 0xae, 0xb9, 0x9f, 0x91,
2940 0x72, 0xaf, 0x82, 0xb6, 0x04, 0xdc, 0x4b, 0x8e,
2941 0x51, 0xbc, 0xb0, 0x82, 0x35, 0xa6, 0xf4, 0x34,
2942 0x13, 0x32, 0xe4, 0xca, 0x60, 0x48, 0x2a, 0x4b,
2943 0xa1, 0xa0, 0x3b, 0x3e, 0x65, 0x00, 0x8f, 0xc5,
2944 0xda, 0x76, 0xb7, 0x0b, 0xf1, 0x69, 0x0d, 0xb4,
2945 0xea, 0xe2, 0x9c, 0x5f, 0x1b, 0xad, 0xd0, 0x3c,
2946 0x5c, 0xcf, 0x2a, 0x55, 0xd7, 0x05, 0xdd, 0xcd,
2947 0x86, 0xd4, 0x49, 0x51, 0x1c, 0xeb, 0x7e, 0xc3,
2948 0x0b, 0xf1, 0x2b, 0x1f, 0xa3, 0x5b, 0x91, 0x3f,
2949 0x9f, 0x74, 0x7a, 0x8a, 0xfd, 0x1b, 0x13, 0x0e,
2950 0x94, 0xbf, 0xf9, 0x4e, 0xff, 0xd0, 0x1a, 0x91,
2951 0x73, 0x5c, 0xa1, 0x72, 0x6a, 0xcd, 0x0b, 0x19,
2952 0x7c, 0x4e, 0x5b, 0x03, 0x39, 0x36, 0x97, 0xe1,
2953 0x26, 0x82, 0x6f, 0xb6, 0xbb, 0xde, 0x8e, 0xcc,
2954 0x1e, 0x08, 0x29, 0x85, 0x16, 0xe2, 0xc9, 0xed,
2955 0x03, 0xff, 0x3c, 0x1b, 0x78, 0x60, 0xf6, 0xde,
2956 0x76, 0xd4, 0xce, 0xcd, 0x94, 0xc8, 0x11, 0x98,
2957 0x55, 0xef, 0x52, 0x97, 0xca, 0x67, 0xe9, 0xf3,
2958 0xe7, 0xff, 0x72, 0xb1, 0xe9, 0x97, 0x85, 0xca,
2959 0x0a, 0x7e, 0x77, 0x20, 0xc5, 0xb3, 0x6d, 0xc6,
2960 0xd7, 0x2c, 0xac, 0x95, 0x74, 0xc8, 0xcb, 0xbc,
2961 0x2f, 0x80, 0x1e, 0x23, 0xe5, 0x6f, 0xd3, 0x44,
2962 0xb0, 0x7f, 0x22, 0x15, 0x4b, 0xeb, 0xa0, 0xf0,
2963 0x8c, 0xe8, 0x89, 0x1e, 0x64, 0x3e, 0xd9, 0x95,
2964 0xc9, 0x4d, 0x9a, 0x69, 0xc9, 0xf1, 0xb5, 0xf4,
2965 0x99, 0x02, 0x7a, 0x78, 0x57, 0x2a, 0xee, 0xbd,
2966 0x74, 0xd2, 0x0c, 0xc3, 0x98, 0x81, 0xc2, 0x13,
2967 0xee, 0x77, 0x0b, 0x10, 0x10, 0xe4, 0xbe, 0xa7,
2968 0x18, 0x84, 0x69, 0x77, 0xae, 0x11, 0x9f, 0x7a,
2969 0x02, 0x3a, 0xb5, 0x8c, 0xca, 0x0a, 0xd7, 0x52,
2970 0xaf, 0xe6, 0x56, 0xbb, 0x3c, 0x17, 0x25, 0x6a,
2971 0x9f, 0x6e, 0x9b, 0xf1, 0x9f, 0xdd, 0x5a, 0x38,
2972 0xfc, 0x82, 0xbb, 0xe8, 0x72, 0xc5, 0x53, 0x9e,
2973 0xdb, 0x60, 0x9e, 0xf4, 0xf7, 0x9c, 0x20, 0x3e,
2974 0xbb, 0x14, 0x0f, 0x2e, 0x58, 0x3c, 0xb2, 0xad,
2975 0x15, 0xb4, 0xaa, 0x5b, 0x65, 0x50, 0x16, 0xa8,
2976 0x44, 0x92, 0x77, 0xdb, 0xd4, 0x77, 0xef, 0x2c,
2977 0x8d, 0x6c, 0x01, 0x7d, 0xb7, 0x38, 0xb1, 0x8d,
2978 0xeb, 0x4a, 0x42, 0x7d, 0x19, 0x23, 0xce, 0x3f,
2979 0xf2, 0x62, 0x73, 0x57, 0x79, 0xa4, 0x18, 0xf2,
2980 0x0a, 0x28, 0x2d, 0xf9, 0x20, 0x14, 0x7b, 0xea,
2981 0xbe, 0x42, 0x1e, 0xe5, 0x31, 0x9d, 0x05, 0x68 },
2982 .rlen = 512,
2983 }
2984};
2985
2986static struct cipher_testvec aes_xts_dec_tv_template[] = {
2987 /* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
2988 { /* XTS-AES 1 */
2989 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2990 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2991 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2992 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
2993 .klen = 32,
2994 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2995 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
2996 .input = { 0x91, 0x7c, 0xf6, 0x9e, 0xbd, 0x68, 0xb2, 0xec,
2997 0x9b, 0x9f, 0xe9, 0xa3, 0xea, 0xdd, 0xa6, 0x92,
2998 0xcd, 0x43, 0xd2, 0xf5, 0x95, 0x98, 0xed, 0x85,
2999 0x8c, 0x02, 0xc2, 0x65, 0x2f, 0xbf, 0x92, 0x2e },
3000 .ilen = 32,
3001 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3002 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3003 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3004 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3005 .rlen = 32,
3006 }, { /* XTS-AES 2 */
3007 .key = { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
3008 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
3009 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
3010 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 },
3011 .klen = 32,
3012 .iv = { 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00,
3013 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3014 .input = { 0xc4, 0x54, 0x18, 0x5e, 0x6a, 0x16, 0x93, 0x6e,
3015 0x39, 0x33, 0x40, 0x38, 0xac, 0xef, 0x83, 0x8b,
3016 0xfb, 0x18, 0x6f, 0xff, 0x74, 0x80, 0xad, 0xc4,
3017 0x28, 0x93, 0x82, 0xec, 0xd6, 0xd3, 0x94, 0xf0 },
3018 .ilen = 32,
3019 .result = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3020 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3021 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3022 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 },
3023 .rlen = 32,
3024 }, { /* XTS-AES 3 */
3025 .key = { 0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8,
3026 0xf7, 0xf6, 0xf5, 0xf4, 0xf3, 0xf2, 0xf1, 0xf0,
3027 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
3028 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 },
3029 .klen = 32,
3030 .iv = { 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00,
3031 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3032 .input = { 0xaf, 0x85, 0x33, 0x6b, 0x59, 0x7a, 0xfc, 0x1a,
3033 0x90, 0x0b, 0x2e, 0xb2, 0x1e, 0xc9, 0x49, 0xd2,
3034 0x92, 0xdf, 0x4c, 0x04, 0x7e, 0x0b, 0x21, 0x53,
3035 0x21, 0x86, 0xa5, 0x97, 0x1a, 0x22, 0x7a, 0x89 },
3036 .ilen = 32,
3037 .result = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3038 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3039 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
3040 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 },
3041 .rlen = 32,
3042 }, { /* XTS-AES 4 */
3043 .key = { 0x27, 0x18, 0x28, 0x18, 0x28, 0x45, 0x90, 0x45,
3044 0x23, 0x53, 0x60, 0x28, 0x74, 0x71, 0x35, 0x26,
3045 0x31, 0x41, 0x59, 0x26, 0x53, 0x58, 0x97, 0x93,
3046 0x23, 0x84, 0x62, 0x64, 0x33, 0x83, 0x27, 0x95 },
3047 .klen = 32,
3048 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3049 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3050 .input = { 0x27, 0xa7, 0x47, 0x9b, 0xef, 0xa1, 0xd4, 0x76,
3051 0x48, 0x9f, 0x30, 0x8c, 0xd4, 0xcf, 0xa6, 0xe2,
3052 0xa9, 0x6e, 0x4b, 0xbe, 0x32, 0x08, 0xff, 0x25,
3053 0x28, 0x7d, 0xd3, 0x81, 0x96, 0x16, 0xe8, 0x9c,
3054 0xc7, 0x8c, 0xf7, 0xf5, 0xe5, 0x43, 0x44, 0x5f,
3055 0x83, 0x33, 0xd8, 0xfa, 0x7f, 0x56, 0x00, 0x00,
3056 0x05, 0x27, 0x9f, 0xa5, 0xd8, 0xb5, 0xe4, 0xad,
3057 0x40, 0xe7, 0x36, 0xdd, 0xb4, 0xd3, 0x54, 0x12,
3058 0x32, 0x80, 0x63, 0xfd, 0x2a, 0xab, 0x53, 0xe5,
3059 0xea, 0x1e, 0x0a, 0x9f, 0x33, 0x25, 0x00, 0xa5,
3060 0xdf, 0x94, 0x87, 0xd0, 0x7a, 0x5c, 0x92, 0xcc,
3061 0x51, 0x2c, 0x88, 0x66, 0xc7, 0xe8, 0x60, 0xce,
3062 0x93, 0xfd, 0xf1, 0x66, 0xa2, 0x49, 0x12, 0xb4,
3063 0x22, 0x97, 0x61, 0x46, 0xae, 0x20, 0xce, 0x84,
3064 0x6b, 0xb7, 0xdc, 0x9b, 0xa9, 0x4a, 0x76, 0x7a,
3065 0xae, 0xf2, 0x0c, 0x0d, 0x61, 0xad, 0x02, 0x65,
3066 0x5e, 0xa9, 0x2d, 0xc4, 0xc4, 0xe4, 0x1a, 0x89,
3067 0x52, 0xc6, 0x51, 0xd3, 0x31, 0x74, 0xbe, 0x51,
3068 0xa1, 0x0c, 0x42, 0x11, 0x10, 0xe6, 0xd8, 0x15,
3069 0x88, 0xed, 0xe8, 0x21, 0x03, 0xa2, 0x52, 0xd8,
3070 0xa7, 0x50, 0xe8, 0x76, 0x8d, 0xef, 0xff, 0xed,
3071 0x91, 0x22, 0x81, 0x0a, 0xae, 0xb9, 0x9f, 0x91,
3072 0x72, 0xaf, 0x82, 0xb6, 0x04, 0xdc, 0x4b, 0x8e,
3073 0x51, 0xbc, 0xb0, 0x82, 0x35, 0xa6, 0xf4, 0x34,
3074 0x13, 0x32, 0xe4, 0xca, 0x60, 0x48, 0x2a, 0x4b,
3075 0xa1, 0xa0, 0x3b, 0x3e, 0x65, 0x00, 0x8f, 0xc5,
3076 0xda, 0x76, 0xb7, 0x0b, 0xf1, 0x69, 0x0d, 0xb4,
3077 0xea, 0xe2, 0x9c, 0x5f, 0x1b, 0xad, 0xd0, 0x3c,
3078 0x5c, 0xcf, 0x2a, 0x55, 0xd7, 0x05, 0xdd, 0xcd,
3079 0x86, 0xd4, 0x49, 0x51, 0x1c, 0xeb, 0x7e, 0xc3,
3080 0x0b, 0xf1, 0x2b, 0x1f, 0xa3, 0x5b, 0x91, 0x3f,
3081 0x9f, 0x74, 0x7a, 0x8a, 0xfd, 0x1b, 0x13, 0x0e,
3082 0x94, 0xbf, 0xf9, 0x4e, 0xff, 0xd0, 0x1a, 0x91,
3083 0x73, 0x5c, 0xa1, 0x72, 0x6a, 0xcd, 0x0b, 0x19,
3084 0x7c, 0x4e, 0x5b, 0x03, 0x39, 0x36, 0x97, 0xe1,
3085 0x26, 0x82, 0x6f, 0xb6, 0xbb, 0xde, 0x8e, 0xcc,
3086 0x1e, 0x08, 0x29, 0x85, 0x16, 0xe2, 0xc9, 0xed,
3087 0x03, 0xff, 0x3c, 0x1b, 0x78, 0x60, 0xf6, 0xde,
3088 0x76, 0xd4, 0xce, 0xcd, 0x94, 0xc8, 0x11, 0x98,
3089 0x55, 0xef, 0x52, 0x97, 0xca, 0x67, 0xe9, 0xf3,
3090 0xe7, 0xff, 0x72, 0xb1, 0xe9, 0x97, 0x85, 0xca,
3091 0x0a, 0x7e, 0x77, 0x20, 0xc5, 0xb3, 0x6d, 0xc6,
3092 0xd7, 0x2c, 0xac, 0x95, 0x74, 0xc8, 0xcb, 0xbc,
3093 0x2f, 0x80, 0x1e, 0x23, 0xe5, 0x6f, 0xd3, 0x44,
3094 0xb0, 0x7f, 0x22, 0x15, 0x4b, 0xeb, 0xa0, 0xf0,
3095 0x8c, 0xe8, 0x89, 0x1e, 0x64, 0x3e, 0xd9, 0x95,
3096 0xc9, 0x4d, 0x9a, 0x69, 0xc9, 0xf1, 0xb5, 0xf4,
3097 0x99, 0x02, 0x7a, 0x78, 0x57, 0x2a, 0xee, 0xbd,
3098 0x74, 0xd2, 0x0c, 0xc3, 0x98, 0x81, 0xc2, 0x13,
3099 0xee, 0x77, 0x0b, 0x10, 0x10, 0xe4, 0xbe, 0xa7,
3100 0x18, 0x84, 0x69, 0x77, 0xae, 0x11, 0x9f, 0x7a,
3101 0x02, 0x3a, 0xb5, 0x8c, 0xca, 0x0a, 0xd7, 0x52,
3102 0xaf, 0xe6, 0x56, 0xbb, 0x3c, 0x17, 0x25, 0x6a,
3103 0x9f, 0x6e, 0x9b, 0xf1, 0x9f, 0xdd, 0x5a, 0x38,
3104 0xfc, 0x82, 0xbb, 0xe8, 0x72, 0xc5, 0x53, 0x9e,
3105 0xdb, 0x60, 0x9e, 0xf4, 0xf7, 0x9c, 0x20, 0x3e,
3106 0xbb, 0x14, 0x0f, 0x2e, 0x58, 0x3c, 0xb2, 0xad,
3107 0x15, 0xb4, 0xaa, 0x5b, 0x65, 0x50, 0x16, 0xa8,
3108 0x44, 0x92, 0x77, 0xdb, 0xd4, 0x77, 0xef, 0x2c,
3109 0x8d, 0x6c, 0x01, 0x7d, 0xb7, 0x38, 0xb1, 0x8d,
3110 0xeb, 0x4a, 0x42, 0x7d, 0x19, 0x23, 0xce, 0x3f,
3111 0xf2, 0x62, 0x73, 0x57, 0x79, 0xa4, 0x18, 0xf2,
3112 0x0a, 0x28, 0x2d, 0xf9, 0x20, 0x14, 0x7b, 0xea,
3113 0xbe, 0x42, 0x1e, 0xe5, 0x31, 0x9d, 0x05, 0x68 },
3114 .ilen = 512,
3115 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
3116 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
3117 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
3118 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
3119 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
3120 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
3121 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
3122 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
3123 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
3124 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
3125 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
3126 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
3127 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
3128 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
3129 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
3130 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
3131 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
3132 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
3133 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
3134 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
3135 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
3136 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
3137 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
3138 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
3139 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
3140 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
3141 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
3142 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
3143 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
3144 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
3145 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
3146 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
3147 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
3148 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
3149 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
3150 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
3151 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
3152 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
3153 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
3154 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
3155 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
3156 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
3157 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
3158 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
3159 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
3160 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
3161 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
3162 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
3163 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
3164 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
3165 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
3166 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
3167 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
3168 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
3169 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
3170 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
3171 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
3172 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
3173 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
3174 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
3175 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
3176 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
3177 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
3178 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff },
3179 .rlen = 512,
3180 }
3181};
3182
Linus Torvalds1da177e2005-04-16 15:20:36 -07003183/* Cast5 test vectors from RFC 2144 */
3184#define CAST5_ENC_TEST_VECTORS 3
3185#define CAST5_DEC_TEST_VECTORS 3
3186
Herbert Xuef2736f2005-06-22 13:26:03 -07003187static struct cipher_testvec cast5_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07003188 {
3189 .key = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78,
3190 0x23, 0x45, 0x67, 0x89, 0x34, 0x56, 0x78, 0x9a },
3191 .klen = 16,
3192 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
3193 .ilen = 8,
3194 .result = { 0x23, 0x8b, 0x4f, 0xe5, 0x84, 0x7e, 0x44, 0xb2 },
3195 .rlen = 8,
3196 }, {
3197 .key = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78,
3198 0x23, 0x45 },
3199 .klen = 10,
3200 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
3201 .ilen = 8,
3202 .result = { 0xeb, 0x6a, 0x71, 0x1a, 0x2c, 0x02, 0x27, 0x1b },
3203 .rlen = 8,
3204 }, {
3205 .key = { 0x01, 0x23, 0x45, 0x67, 0x12 },
3206 .klen = 5,
3207 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
3208 .ilen = 8,
3209 .result = { 0x7a, 0xc8, 0x16, 0xd1, 0x6e, 0x9b, 0x30, 0x2e },
3210 .rlen = 8,
3211 },
3212};
3213
Herbert Xuef2736f2005-06-22 13:26:03 -07003214static struct cipher_testvec cast5_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07003215 {
3216 .key = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78,
3217 0x23, 0x45, 0x67, 0x89, 0x34, 0x56, 0x78, 0x9a },
3218 .klen = 16,
3219 .input = { 0x23, 0x8b, 0x4f, 0xe5, 0x84, 0x7e, 0x44, 0xb2 },
3220 .ilen = 8,
3221 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
3222 .rlen = 8,
3223 }, {
3224 .key = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78,
3225 0x23, 0x45 },
3226 .klen = 10,
3227 .input = { 0xeb, 0x6a, 0x71, 0x1a, 0x2c, 0x02, 0x27, 0x1b },
3228 .ilen = 8,
3229 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
3230 .rlen = 8,
3231 }, {
3232 .key = { 0x01, 0x23, 0x45, 0x67, 0x12 },
3233 .klen = 5,
3234 .input = { 0x7a, 0xc8, 0x16, 0xd1, 0x6e, 0x9b, 0x30, 0x2e },
3235 .ilen = 8,
3236 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
3237 .rlen = 8,
3238 },
3239};
3240
Herbert Xuef2736f2005-06-22 13:26:03 -07003241/*
3242 * ARC4 test vectors from OpenSSL
Linus Torvalds1da177e2005-04-16 15:20:36 -07003243 */
3244#define ARC4_ENC_TEST_VECTORS 7
3245#define ARC4_DEC_TEST_VECTORS 7
3246
Herbert Xuef2736f2005-06-22 13:26:03 -07003247static struct cipher_testvec arc4_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07003248 {
3249 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
3250 .klen = 8,
3251 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
3252 .ilen = 8,
3253 .result = { 0x75, 0xb7, 0x87, 0x80, 0x99, 0xe0, 0xc5, 0x96 },
3254 .rlen = 8,
3255 }, {
3256 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
3257 .klen = 8,
3258 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3259 .ilen = 8,
3260 .result = { 0x74, 0x94, 0xc2, 0xe7, 0x10, 0x4b, 0x08, 0x79 },
3261 .rlen = 8,
3262 }, {
3263 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3264 .klen = 8,
3265 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3266 .ilen = 8,
3267 .result = { 0xde, 0x18, 0x89, 0x41, 0xa3, 0x37, 0x5d, 0x3a },
3268 .rlen = 8,
3269 }, {
3270 .key = { 0xef, 0x01, 0x23, 0x45},
3271 .klen = 4,
3272 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3273 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3274 0x00, 0x00, 0x00, 0x00 },
3275 .ilen = 20,
3276 .result = { 0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf,
3277 0xbd, 0x61, 0x5a, 0x11, 0x62, 0xe1, 0xc7, 0xba,
3278 0x36, 0xb6, 0x78, 0x58 },
3279 .rlen = 20,
3280 }, {
3281 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
3282 .klen = 8,
3283 .input = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
3284 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
3285 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
3286 0x12, 0x34, 0x56, 0x78 },
3287 .ilen = 28,
3288 .result = { 0x66, 0xa0, 0x94, 0x9f, 0x8a, 0xf7, 0xd6, 0x89,
3289 0x1f, 0x7f, 0x83, 0x2b, 0xa8, 0x33, 0xc0, 0x0c,
3290 0x89, 0x2e, 0xbe, 0x30, 0x14, 0x3c, 0xe2, 0x87,
3291 0x40, 0x01, 0x1e, 0xcf },
3292 .rlen = 28,
3293 }, {
3294 .key = { 0xef, 0x01, 0x23, 0x45 },
3295 .klen = 4,
3296 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3297 0x00, 0x00 },
3298 .ilen = 10,
3299 .result = { 0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf,
3300 0xbd, 0x61 },
3301 .rlen = 10,
3302 }, {
3303 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
3304 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3305 .klen = 16,
3306 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF },
3307 .ilen = 8,
3308 .result = { 0x69, 0x72, 0x36, 0x59, 0x1B, 0x52, 0x42, 0xB1 },
3309 .rlen = 8,
3310 },
3311};
3312
Herbert Xuef2736f2005-06-22 13:26:03 -07003313static struct cipher_testvec arc4_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07003314 {
3315 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
3316 .klen = 8,
3317 .input = { 0x75, 0xb7, 0x87, 0x80, 0x99, 0xe0, 0xc5, 0x96 },
3318 .ilen = 8,
3319 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
3320 .rlen = 8,
3321 }, {
3322 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
3323 .klen = 8,
3324 .input = { 0x74, 0x94, 0xc2, 0xe7, 0x10, 0x4b, 0x08, 0x79 },
3325 .ilen = 8,
3326 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3327 .rlen = 8,
3328 }, {
3329 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3330 .klen = 8,
3331 .input = { 0xde, 0x18, 0x89, 0x41, 0xa3, 0x37, 0x5d, 0x3a },
3332 .ilen = 8,
3333 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3334 .rlen = 8,
3335 }, {
3336 .key = { 0xef, 0x01, 0x23, 0x45},
3337 .klen = 4,
3338 .input = { 0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf,
3339 0xbd, 0x61, 0x5a, 0x11, 0x62, 0xe1, 0xc7, 0xba,
3340 0x36, 0xb6, 0x78, 0x58 },
3341 .ilen = 20,
3342 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3343 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3344 0x00, 0x00, 0x00, 0x00 },
3345 .rlen = 20,
3346 }, {
3347 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
3348 .klen = 8,
3349 .input = { 0x66, 0xa0, 0x94, 0x9f, 0x8a, 0xf7, 0xd6, 0x89,
3350 0x1f, 0x7f, 0x83, 0x2b, 0xa8, 0x33, 0xc0, 0x0c,
3351 0x89, 0x2e, 0xbe, 0x30, 0x14, 0x3c, 0xe2, 0x87,
3352 0x40, 0x01, 0x1e, 0xcf },
3353 .ilen = 28,
3354 .result = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
3355 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
3356 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
3357 0x12, 0x34, 0x56, 0x78 },
3358 .rlen = 28,
3359 }, {
3360 .key = { 0xef, 0x01, 0x23, 0x45 },
3361 .klen = 4,
3362 .input = { 0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf,
3363 0xbd, 0x61 },
3364 .ilen = 10,
3365 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3366 0x00, 0x00 },
3367 .rlen = 10,
3368 }, {
3369 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
3370 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3371 .klen = 16,
3372 .input = { 0x69, 0x72, 0x36, 0x59, 0x1B, 0x52, 0x42, 0xB1 },
3373 .ilen = 8,
3374 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF },
3375 .rlen = 8,
3376 },
3377};
3378
Herbert Xuef2736f2005-06-22 13:26:03 -07003379/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07003380 * TEA test vectors
3381 */
3382#define TEA_ENC_TEST_VECTORS 4
3383#define TEA_DEC_TEST_VECTORS 4
3384
Herbert Xuef2736f2005-06-22 13:26:03 -07003385static struct cipher_testvec tea_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07003386 {
3387 .key = { [0 ... 15] = 0x00 },
3388 .klen = 16,
3389 .input = { [0 ... 8] = 0x00 },
3390 .ilen = 8,
3391 .result = { 0x0a, 0x3a, 0xea, 0x41, 0x40, 0xa9, 0xba, 0x94 },
3392 .rlen = 8,
3393 }, {
3394 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76,
3395 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 },
3396 .klen = 16,
3397 .input = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e },
3398 .ilen = 8,
3399 .result = { 0x77, 0x5d, 0x2a, 0x6a, 0xf6, 0xce, 0x92, 0x09 },
3400 .rlen = 8,
3401 }, {
3402 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25,
3403 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e },
3404 .klen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07003405 .input = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74,
Linus Torvalds1da177e2005-04-16 15:20:36 -07003406 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 },
3407 .ilen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07003408 .result = { 0xbe, 0x7a, 0xbb, 0x81, 0x95, 0x2d, 0x1f, 0x1e,
Linus Torvalds1da177e2005-04-16 15:20:36 -07003409 0xdd, 0x89, 0xa1, 0x25, 0x04, 0x21, 0xdf, 0x95 },
3410 .rlen = 16,
3411 }, {
3412 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c,
3413 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f },
3414 .klen = 16,
Herbert Xuef2736f2005-06-22 13:26:03 -07003415 .input = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67,
3416 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20,
3417 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72,
Linus Torvalds1da177e2005-04-16 15:20:36 -07003418 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 },
3419 .ilen = 32,
Herbert Xuef2736f2005-06-22 13:26:03 -07003420 .result = { 0xe0, 0x4d, 0x5d, 0x3c, 0xb7, 0x8c, 0x36, 0x47,
3421 0x94, 0x18, 0x95, 0x91, 0xa9, 0xfc, 0x49, 0xf8,
3422 0x44, 0xd1, 0x2d, 0xc2, 0x99, 0xb8, 0x08, 0x2a,
Linus Torvalds1da177e2005-04-16 15:20:36 -07003423 0x07, 0x89, 0x73, 0xc2, 0x45, 0x92, 0xc6, 0x90 },
3424 .rlen = 32,
3425 }
3426};
3427
Herbert Xuef2736f2005-06-22 13:26:03 -07003428static struct cipher_testvec tea_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07003429 {
3430 .key = { [0 ... 15] = 0x00 },
3431 .klen = 16,
3432 .input = { 0x0a, 0x3a, 0xea, 0x41, 0x40, 0xa9, 0xba, 0x94 },
3433 .ilen = 8,
3434 .result = { [0 ... 8] = 0x00 },
3435 .rlen = 8,
3436 }, {
3437 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76,
3438 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 },
3439 .klen = 16,
3440 .input = { 0x77, 0x5d, 0x2a, 0x6a, 0xf6, 0xce, 0x92, 0x09 },
3441 .ilen = 8,
3442 .result = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e },
3443 .rlen = 8,
3444 }, {
3445 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25,
3446 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e },
3447 .klen = 16,
3448 .input = { 0xbe, 0x7a, 0xbb, 0x81, 0x95, 0x2d, 0x1f, 0x1e,
Herbert Xuef2736f2005-06-22 13:26:03 -07003449 0xdd, 0x89, 0xa1, 0x25, 0x04, 0x21, 0xdf, 0x95 },
3450 .ilen = 16,
3451 .result = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74,
Linus Torvalds1da177e2005-04-16 15:20:36 -07003452 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 },
3453 .rlen = 16,
3454 }, {
3455 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c,
3456 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f },
3457 .klen = 16,
3458 .input = { 0xe0, 0x4d, 0x5d, 0x3c, 0xb7, 0x8c, 0x36, 0x47,
Herbert Xuef2736f2005-06-22 13:26:03 -07003459 0x94, 0x18, 0x95, 0x91, 0xa9, 0xfc, 0x49, 0xf8,
3460 0x44, 0xd1, 0x2d, 0xc2, 0x99, 0xb8, 0x08, 0x2a,
3461 0x07, 0x89, 0x73, 0xc2, 0x45, 0x92, 0xc6, 0x90 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07003462 .ilen = 32,
Herbert Xuef2736f2005-06-22 13:26:03 -07003463 .result = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67,
3464 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20,
3465 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72,
Linus Torvalds1da177e2005-04-16 15:20:36 -07003466 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 },
3467 .rlen = 32,
3468 }
3469};
3470
Herbert Xuef2736f2005-06-22 13:26:03 -07003471/*
3472 * XTEA test vectors
Linus Torvalds1da177e2005-04-16 15:20:36 -07003473 */
3474#define XTEA_ENC_TEST_VECTORS 4
3475#define XTEA_DEC_TEST_VECTORS 4
3476
Herbert Xuef2736f2005-06-22 13:26:03 -07003477static struct cipher_testvec xtea_enc_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07003478 {
3479 .key = { [0 ... 15] = 0x00 },
3480 .klen = 16,
3481 .input = { [0 ... 8] = 0x00 },
3482 .ilen = 8,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07003483 .result = { 0xd8, 0xd4, 0xe9, 0xde, 0xd9, 0x1e, 0x13, 0xf7 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07003484 .rlen = 8,
3485 }, {
3486 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76,
3487 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 },
3488 .klen = 16,
3489 .input = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e },
3490 .ilen = 8,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07003491 .result = { 0x94, 0xeb, 0xc8, 0x96, 0x84, 0x6a, 0x49, 0xa8 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07003492 .rlen = 8,
3493 }, {
3494 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25,
3495 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e },
3496 .klen = 16,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07003497 .input = { 0x3e, 0xce, 0xae, 0x22, 0x60, 0x56, 0xa8, 0x9d,
Linus Torvalds1da177e2005-04-16 15:20:36 -07003498 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 },
3499 .ilen = 16,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07003500 .result = { 0xe2, 0x04, 0xdb, 0xf2, 0x89, 0x85, 0x9e, 0xea,
Linus Torvalds1da177e2005-04-16 15:20:36 -07003501 0x61, 0x35, 0xaa, 0xed, 0xb5, 0xcb, 0x71, 0x2c },
3502 .rlen = 16,
3503 }, {
3504 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c,
3505 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f },
3506 .klen = 16,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07003507 .input = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67,
3508 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20,
3509 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72,
Linus Torvalds1da177e2005-04-16 15:20:36 -07003510 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 },
3511 .ilen = 32,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07003512 .result = { 0x99, 0x81, 0x9f, 0x5d, 0x6f, 0x4b, 0x31, 0x3a,
3513 0x86, 0xff, 0x6f, 0xd0, 0xe3, 0x87, 0x70, 0x07,
3514 0x4d, 0xb8, 0xcf, 0xf3, 0x99, 0x50, 0xb3, 0xd4,
3515 0x73, 0xa2, 0xfa, 0xc9, 0x16, 0x59, 0x5d, 0x81 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07003516 .rlen = 32,
3517 }
3518};
3519
Herbert Xuef2736f2005-06-22 13:26:03 -07003520static struct cipher_testvec xtea_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07003521 {
3522 .key = { [0 ... 15] = 0x00 },
3523 .klen = 16,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07003524 .input = { 0xd8, 0xd4, 0xe9, 0xde, 0xd9, 0x1e, 0x13, 0xf7 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07003525 .ilen = 8,
3526 .result = { [0 ... 8] = 0x00 },
3527 .rlen = 8,
3528 }, {
3529 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76,
3530 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 },
3531 .klen = 16,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07003532 .input = { 0x94, 0xeb, 0xc8, 0x96, 0x84, 0x6a, 0x49, 0xa8 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07003533 .ilen = 8,
3534 .result = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e },
3535 .rlen = 8,
3536 }, {
3537 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25,
3538 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e },
3539 .klen = 16,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07003540 .input = { 0x3e, 0xce, 0xae, 0x22, 0x60, 0x56, 0xa8, 0x9d,
3541 0x77, 0x4d, 0xd4, 0xb4, 0x87, 0x24, 0xe3, 0x9a },
Linus Torvalds1da177e2005-04-16 15:20:36 -07003542 .ilen = 16,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07003543 .result = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74,
Linus Torvalds1da177e2005-04-16 15:20:36 -07003544 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 },
3545 .rlen = 16,
3546 }, {
3547 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c,
3548 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f },
3549 .klen = 16,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07003550 .input = { 0x99, 0x81, 0x9f, 0x5d, 0x6f, 0x4b, 0x31, 0x3a,
3551 0x86, 0xff, 0x6f, 0xd0, 0xe3, 0x87, 0x70, 0x07,
3552 0x4d, 0xb8, 0xcf, 0xf3, 0x99, 0x50, 0xb3, 0xd4,
3553 0x73, 0xa2, 0xfa, 0xc9, 0x16, 0x59, 0x5d, 0x81 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07003554 .ilen = 32,
Aaron Grothefb4f10e2005-09-01 17:42:46 -07003555 .result = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67,
3556 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20,
3557 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72,
Linus Torvalds1da177e2005-04-16 15:20:36 -07003558 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 },
3559 .rlen = 32,
3560 }
3561};
3562
3563/*
3564 * KHAZAD test vectors.
3565 */
3566#define KHAZAD_ENC_TEST_VECTORS 5
3567#define KHAZAD_DEC_TEST_VECTORS 5
3568
Herbert Xuef2736f2005-06-22 13:26:03 -07003569static struct cipher_testvec khazad_enc_tv_template[] = {
3570 {
3571 .key = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
Linus Torvalds1da177e2005-04-16 15:20:36 -07003572 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3573 .klen = 16,
3574 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3575 .ilen = 8,
3576 .result = { 0x49, 0xa4, 0xce, 0x32, 0xac, 0x19, 0x0e, 0x3f },
3577 .rlen = 8,
3578 }, {
3579 .key = { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
3580 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 },
3581 .klen = 16,
3582 .input = { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 },
3583 .ilen = 8,
3584 .result = { 0x7e, 0x82, 0x12, 0xa1, 0Xd9, 0X5b, 0Xe4, 0Xf9 },
3585 .rlen = 8,
3586 }, {
3587 .key = { 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2,
3588 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2 },
3589 .klen = 16,
3590 .input = { 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2 },
3591 .ilen = 8,
3592 .result = { 0Xaa, 0Xbe, 0Xc1, 0X95, 0Xc5, 0X94, 0X1a, 0X9c },
3593 .rlen = 8,
3594 }, {
3595 .key = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f,
3596 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f },
3597 .klen = 16,
3598 .input = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f },
3599 .ilen = 8,
3600 .result = { 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 },
3601 .rlen = 8,
3602 }, {
3603 .key = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f,
3604 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f },
3605 .klen = 16,
3606 .input = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f ,
3607 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f },
3608 .ilen = 16,
3609 .result = { 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 ,
3610 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 },
3611 .rlen = 16,
3612 },
3613};
3614
Herbert Xuef2736f2005-06-22 13:26:03 -07003615static struct cipher_testvec khazad_dec_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07003616 {
Herbert Xuef2736f2005-06-22 13:26:03 -07003617 .key = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
Linus Torvalds1da177e2005-04-16 15:20:36 -07003618 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3619 .klen = 16,
3620 .input = { 0X49, 0Xa4, 0Xce, 0X32, 0Xac, 0X19, 0X0e, 0X3f },
3621 .ilen = 8,
3622 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3623 .rlen = 8,
3624 }, {
3625 .key = { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
3626 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 },
3627 .klen = 16,
3628 .input = { 0X7e, 0X82, 0X12, 0Xa1, 0Xd9, 0X5b, 0Xe4, 0Xf9 },
3629 .ilen = 8,
3630 .result = { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 },
3631 .rlen = 8,
3632 }, {
3633 .key = { 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2,
3634 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2 },
3635 .klen = 16,
3636 .input = { 0Xaa, 0Xbe, 0Xc1, 0X95, 0Xc5, 0X94, 0X1a, 0X9c },
3637 .ilen = 8,
3638 .result = { 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2 },
3639 .rlen = 8,
3640 }, {
3641 .key = { 0x2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f,
3642 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f },
3643 .klen = 16,
3644 .input = { 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 },
3645 .ilen = 8,
3646 .result = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f },
3647 .rlen = 8,
3648 }, {
3649 .key = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f,
3650 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f },
3651 .klen = 16,
3652 .input = { 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 ,
3653 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 },
3654 .ilen = 16,
3655 .result = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f ,
3656 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f },
3657 .rlen = 16,
3658 },
3659};
3660
3661/*
3662 * Anubis test vectors.
3663 */
3664
3665#define ANUBIS_ENC_TEST_VECTORS 5
3666#define ANUBIS_DEC_TEST_VECTORS 5
3667#define ANUBIS_CBC_ENC_TEST_VECTORS 2
3668#define ANUBIS_CBC_DEC_TEST_VECTORS 2
3669
3670static struct cipher_testvec anubis_enc_tv_template[] = {
3671 {
3672 .key = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3673 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe },
3674 .klen = 16,
3675 .input = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3676 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe },
3677 .ilen = 16,
3678 .result = { 0x6d, 0xc5, 0xda, 0xa2, 0x26, 0x7d, 0x62, 0x6f,
3679 0x08, 0xb7, 0x52, 0x8e, 0x6e, 0x6e, 0x86, 0x90 },
3680 .rlen = 16,
3681 }, {
3682
3683 .key = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
3684 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
3685 0x03, 0x03, 0x03, 0x03 },
3686 .klen = 20,
3687 .input = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
3688 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 },
3689 .ilen = 16,
3690 .result = { 0xdb, 0xf1, 0x42, 0xf4, 0xd1, 0x8a, 0xc7, 0x49,
3691 0x87, 0x41, 0x6f, 0x82, 0x0a, 0x98, 0x64, 0xae },
3692 .rlen = 16,
3693 }, {
3694 .key = { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
3695 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
3696 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
3697 0x24, 0x24, 0x24, 0x24 },
3698 .klen = 28,
3699 .input = { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
3700 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24 },
3701 .ilen = 16,
3702 .result = { 0xfd, 0x1b, 0x4a, 0xe3, 0xbf, 0xf0, 0xad, 0x3d,
3703 0x06, 0xd3, 0x61, 0x27, 0xfd, 0x13, 0x9e, 0xde },
3704 .rlen = 16,
3705 }, {
3706 .key = { 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
3707 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
3708 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
3709 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25 },
3710 .klen = 32,
3711 .input = { 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
3712 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25 },
3713 .ilen = 16,
3714 .result = { 0x1a, 0x91, 0xfb, 0x2b, 0xb7, 0x78, 0x6b, 0xc4,
3715 0x17, 0xd9, 0xff, 0x40, 0x3b, 0x0e, 0xe5, 0xfe },
3716 .rlen = 16,
3717 }, {
3718 .key = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3719 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3720 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3721 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3722 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 },
3723 .klen = 40,
3724 .input = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3725 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 },
3726 .ilen = 16,
3727 .result = { 0xa5, 0x2c, 0x85, 0x6f, 0x9c, 0xba, 0xa0, 0x97,
3728 0x9e, 0xc6, 0x84, 0x0f, 0x17, 0x21, 0x07, 0xee },
3729 .rlen = 16,
3730 },
3731};
3732
3733static struct cipher_testvec anubis_dec_tv_template[] = {
3734 {
3735 .key = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3736 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe },
3737 .klen = 16,
3738 .input = { 0x6d, 0xc5, 0xda, 0xa2, 0x26, 0x7d, 0x62, 0x6f,
3739 0x08, 0xb7, 0x52, 0x8e, 0x6e, 0x6e, 0x86, 0x90 },
3740 .ilen = 16,
3741 .result = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3742 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe },
3743 .rlen = 16,
3744 }, {
3745
3746 .key = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
3747 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
3748 0x03, 0x03, 0x03, 0x03 },
3749 .klen = 20,
3750 .input = { 0xdb, 0xf1, 0x42, 0xf4, 0xd1, 0x8a, 0xc7, 0x49,
3751 0x87, 0x41, 0x6f, 0x82, 0x0a, 0x98, 0x64, 0xae },
3752 .ilen = 16,
3753 .result = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
3754 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 },
3755 .rlen = 16,
3756 }, {
3757 .key = { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
3758 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
3759 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
3760 0x24, 0x24, 0x24, 0x24 },
3761 .klen = 28,
3762 .input = { 0xfd, 0x1b, 0x4a, 0xe3, 0xbf, 0xf0, 0xad, 0x3d,
3763 0x06, 0xd3, 0x61, 0x27, 0xfd, 0x13, 0x9e, 0xde },
3764 .ilen = 16,
3765 .result = { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
3766 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24 },
3767 .rlen = 16,
3768 }, {
3769 .key = { 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
3770 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
3771 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
3772 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25 },
3773 .klen = 32,
3774 .input = { 0x1a, 0x91, 0xfb, 0x2b, 0xb7, 0x78, 0x6b, 0xc4,
3775 0x17, 0xd9, 0xff, 0x40, 0x3b, 0x0e, 0xe5, 0xfe },
3776 .ilen = 16,
3777 .result = { 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
3778 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25 },
3779 .rlen = 16,
3780 }, {
3781 .key = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3782 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3783 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3784 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3785 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 },
3786 .input = { 0xa5, 0x2c, 0x85, 0x6f, 0x9c, 0xba, 0xa0, 0x97,
3787 0x9e, 0xc6, 0x84, 0x0f, 0x17, 0x21, 0x07, 0xee },
3788 .klen = 40,
3789 .ilen = 16,
3790 .result = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3791 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 },
3792 .rlen = 16,
3793 },
3794};
3795
3796static struct cipher_testvec anubis_cbc_enc_tv_template[] = {
3797 {
3798 .key = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3799 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe },
3800 .klen = 16,
3801 .input = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3802 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3803 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3804 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe },
3805 .ilen = 32,
3806 .result = { 0x6d, 0xc5, 0xda, 0xa2, 0x26, 0x7d, 0x62, 0x6f,
3807 0x08, 0xb7, 0x52, 0x8e, 0x6e, 0x6e, 0x86, 0x90,
3808 0x86, 0xd8, 0xb5, 0x6f, 0x98, 0x5e, 0x8a, 0x66,
3809 0x4f, 0x1f, 0x78, 0xa1, 0xbb, 0x37, 0xf1, 0xbe },
3810 .rlen = 32,
3811 }, {
3812 .key = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3813 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3814 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3815 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3816 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 },
3817 .klen = 40,
3818 .input = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3819 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3820 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3821 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 },
3822 .ilen = 32,
3823 .result = { 0xa5, 0x2c, 0x85, 0x6f, 0x9c, 0xba, 0xa0, 0x97,
3824 0x9e, 0xc6, 0x84, 0x0f, 0x17, 0x21, 0x07, 0xee,
3825 0xa2, 0xbc, 0x06, 0x98, 0xc6, 0x4b, 0xda, 0x75,
3826 0x2e, 0xaa, 0xbe, 0x58, 0xce, 0x01, 0x5b, 0xc7 },
3827 .rlen = 32,
3828 },
3829};
3830
3831static struct cipher_testvec anubis_cbc_dec_tv_template[] = {
3832 {
3833 .key = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3834 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe },
3835 .klen = 16,
3836 .input = { 0x6d, 0xc5, 0xda, 0xa2, 0x26, 0x7d, 0x62, 0x6f,
3837 0x08, 0xb7, 0x52, 0x8e, 0x6e, 0x6e, 0x86, 0x90,
3838 0x86, 0xd8, 0xb5, 0x6f, 0x98, 0x5e, 0x8a, 0x66,
3839 0x4f, 0x1f, 0x78, 0xa1, 0xbb, 0x37, 0xf1, 0xbe },
3840 .ilen = 32,
3841 .result = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3842 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3843 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3844 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe },
3845 .rlen = 32,
3846 }, {
3847 .key = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3848 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3849 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3850 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3851 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 },
3852 .klen = 40,
3853 .input = { 0xa5, 0x2c, 0x85, 0x6f, 0x9c, 0xba, 0xa0, 0x97,
3854 0x9e, 0xc6, 0x84, 0x0f, 0x17, 0x21, 0x07, 0xee,
3855 0xa2, 0xbc, 0x06, 0x98, 0xc6, 0x4b, 0xda, 0x75,
3856 0x2e, 0xaa, 0xbe, 0x58, 0xce, 0x01, 0x5b, 0xc7 },
3857 .ilen = 32,
3858 .result = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3859 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3860 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35,
3861 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 },
3862 .rlen = 32,
3863 },
3864};
3865
Aaron Grothefb4f10e2005-09-01 17:42:46 -07003866/*
3867 * XETA test vectors
3868 */
3869#define XETA_ENC_TEST_VECTORS 4
3870#define XETA_DEC_TEST_VECTORS 4
3871
3872static struct cipher_testvec xeta_enc_tv_template[] = {
3873 {
3874 .key = { [0 ... 15] = 0x00 },
3875 .klen = 16,
3876 .input = { [0 ... 8] = 0x00 },
3877 .ilen = 8,
3878 .result = { 0xaa, 0x22, 0x96, 0xe5, 0x6c, 0x61, 0xf3, 0x45 },
3879 .rlen = 8,
3880 }, {
3881 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76,
3882 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 },
3883 .klen = 16,
3884 .input = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e },
3885 .ilen = 8,
3886 .result = { 0x82, 0x3e, 0xeb, 0x35, 0xdc, 0xdd, 0xd9, 0xc3 },
3887 .rlen = 8,
3888 }, {
3889 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25,
3890 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e },
3891 .klen = 16,
3892 .input = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74,
3893 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 },
3894 .ilen = 16,
3895 .result = { 0xe2, 0x04, 0xdb, 0xf2, 0x89, 0x85, 0x9e, 0xea,
3896 0x61, 0x35, 0xaa, 0xed, 0xb5, 0xcb, 0x71, 0x2c },
3897 .rlen = 16,
3898 }, {
3899 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c,
3900 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f },
3901 .klen = 16,
3902 .input = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67,
3903 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20,
3904 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72,
3905 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 },
3906 .ilen = 32,
3907 .result = { 0x0b, 0x03, 0xcd, 0x8a, 0xbe, 0x95, 0xfd, 0xb1,
3908 0xc1, 0x44, 0x91, 0x0b, 0xa5, 0xc9, 0x1b, 0xb4,
3909 0xa9, 0xda, 0x1e, 0x9e, 0xb1, 0x3e, 0x2a, 0x8f,
3910 0xea, 0xa5, 0x6a, 0x85, 0xd1, 0xf4, 0xa8, 0xa5 },
3911 .rlen = 32,
3912 }
3913};
3914
3915static struct cipher_testvec xeta_dec_tv_template[] = {
3916 {
3917 .key = { [0 ... 15] = 0x00 },
3918 .klen = 16,
3919 .input = { 0xaa, 0x22, 0x96, 0xe5, 0x6c, 0x61, 0xf3, 0x45 },
3920 .ilen = 8,
3921 .result = { [0 ... 8] = 0x00 },
3922 .rlen = 8,
3923 }, {
3924 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76,
3925 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 },
3926 .klen = 16,
3927 .input = { 0x82, 0x3e, 0xeb, 0x35, 0xdc, 0xdd, 0xd9, 0xc3 },
3928 .ilen = 8,
3929 .result = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e },
3930 .rlen = 8,
3931 }, {
3932 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25,
3933 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e },
3934 .klen = 16,
3935 .input = { 0xe2, 0x04, 0xdb, 0xf2, 0x89, 0x85, 0x9e, 0xea,
3936 0x61, 0x35, 0xaa, 0xed, 0xb5, 0xcb, 0x71, 0x2c },
3937 .ilen = 16,
3938 .result = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74,
3939 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 },
3940 .rlen = 16,
3941 }, {
3942 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c,
3943 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f },
3944 .klen = 16,
3945 .input = { 0x0b, 0x03, 0xcd, 0x8a, 0xbe, 0x95, 0xfd, 0xb1,
3946 0xc1, 0x44, 0x91, 0x0b, 0xa5, 0xc9, 0x1b, 0xb4,
3947 0xa9, 0xda, 0x1e, 0x9e, 0xb1, 0x3e, 0x2a, 0x8f,
3948 0xea, 0xa5, 0x6a, 0x85, 0xd1, 0xf4, 0xa8, 0xa5 },
3949 .ilen = 32,
3950 .result = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67,
3951 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20,
3952 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72,
3953 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 },
3954 .rlen = 32,
3955 }
3956};
3957
David Howells90831632006-12-16 12:13:14 +11003958/*
3959 * FCrypt test vectors
3960 */
3961#define FCRYPT_ENC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_enc_tv_template)
3962#define FCRYPT_DEC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_dec_tv_template)
3963
3964static struct cipher_testvec fcrypt_pcbc_enc_tv_template[] = {
3965 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
3966 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3967 .klen = 8,
3968 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3969 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3970 .ilen = 8,
3971 .result = { 0x0E, 0x09, 0x00, 0xC7, 0x3E, 0xF7, 0xED, 0x41 },
3972 .rlen = 8,
3973 }, {
3974 .key = { 0x11, 0x44, 0x77, 0xAA, 0xDD, 0x00, 0x33, 0x66 },
3975 .klen = 8,
3976 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
3977 .input = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0 },
3978 .ilen = 8,
3979 .result = { 0xD8, 0xED, 0x78, 0x74, 0x77, 0xEC, 0x06, 0x80 },
3980 .rlen = 8,
3981 }, { /* From Arla */
3982 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
3983 .klen = 8,
3984 .iv = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
3985 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
3986 .ilen = 48,
3987 .result = { 0x00, 0xf0, 0xe, 0x11, 0x75, 0xe6, 0x23, 0x82,
3988 0xee, 0xac, 0x98, 0x62, 0x44, 0x51, 0xe4, 0x84,
3989 0xc3, 0x59, 0xd8, 0xaa, 0x64, 0x60, 0xae, 0xf7,
3990 0xd2, 0xd9, 0x13, 0x79, 0x72, 0xa3, 0x45, 0x03,
3991 0x23, 0xb5, 0x62, 0xd7, 0x0c, 0xf5, 0x27, 0xd1,
3992 0xf8, 0x91, 0x3c, 0xac, 0x44, 0x22, 0x92, 0xef },
3993 .rlen = 48,
3994 }, {
3995 .key = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
3996 .klen = 8,
3997 .iv = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
3998 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
3999 .ilen = 48,
4000 .result = { 0xca, 0x90, 0xf5, 0x9d, 0xcb, 0xd4, 0xd2, 0x3c,
4001 0x01, 0x88, 0x7f, 0x3e, 0x31, 0x6e, 0x62, 0x9d,
4002 0xd8, 0xe0, 0x57, 0xa3, 0x06, 0x3a, 0x42, 0x58,
4003 0x2a, 0x28, 0xfe, 0x72, 0x52, 0x2f, 0xdd, 0xe0,
4004 0x19, 0x89, 0x09, 0x1c, 0x2a, 0x8e, 0x8c, 0x94,
4005 0xfc, 0xc7, 0x68, 0xe4, 0x88, 0xaa, 0xde, 0x0f },
4006 .rlen = 48,
4007 }, { /* split-page version */
4008 .key = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
4009 .klen = 8,
4010 .iv = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
4011 .input = "The quick brown fox jumps over the lazy dogs.\0\0",
4012 .ilen = 48,
4013 .result = { 0xca, 0x90, 0xf5, 0x9d, 0xcb, 0xd4, 0xd2, 0x3c,
4014 0x01, 0x88, 0x7f, 0x3e, 0x31, 0x6e, 0x62, 0x9d,
4015 0xd8, 0xe0, 0x57, 0xa3, 0x06, 0x3a, 0x42, 0x58,
4016 0x2a, 0x28, 0xfe, 0x72, 0x52, 0x2f, 0xdd, 0xe0,
4017 0x19, 0x89, 0x09, 0x1c, 0x2a, 0x8e, 0x8c, 0x94,
4018 0xfc, 0xc7, 0x68, 0xe4, 0x88, 0xaa, 0xde, 0x0f },
4019 .rlen = 48,
4020 .np = 2,
4021 .tap = { 20, 28 },
4022 }
4023};
4024
4025static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
4026 { /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
4027 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
4028 .klen = 8,
4029 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
4030 .input = { 0x0E, 0x09, 0x00, 0xC7, 0x3E, 0xF7, 0xED, 0x41 },
4031 .ilen = 8,
4032 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
4033 .rlen = 8,
4034 }, {
4035 .key = { 0x11, 0x44, 0x77, 0xAA, 0xDD, 0x00, 0x33, 0x66 },
4036 .klen = 8,
4037 .iv = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
4038 .input = { 0xD8, 0xED, 0x78, 0x74, 0x77, 0xEC, 0x06, 0x80 },
4039 .ilen = 8,
4040 .result = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0 },
4041 .rlen = 8,
4042 }, { /* From Arla */
4043 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
4044 .klen = 8,
4045 .iv = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
4046 .input = { 0x00, 0xf0, 0xe, 0x11, 0x75, 0xe6, 0x23, 0x82,
4047 0xee, 0xac, 0x98, 0x62, 0x44, 0x51, 0xe4, 0x84,
4048 0xc3, 0x59, 0xd8, 0xaa, 0x64, 0x60, 0xae, 0xf7,
4049 0xd2, 0xd9, 0x13, 0x79, 0x72, 0xa3, 0x45, 0x03,
4050 0x23, 0xb5, 0x62, 0xd7, 0x0c, 0xf5, 0x27, 0xd1,
4051 0xf8, 0x91, 0x3c, 0xac, 0x44, 0x22, 0x92, 0xef },
4052 .ilen = 48,
4053 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
4054 .rlen = 48,
4055 }, {
4056 .key = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
4057 .klen = 8,
4058 .iv = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
4059 .input = { 0xca, 0x90, 0xf5, 0x9d, 0xcb, 0xd4, 0xd2, 0x3c,
4060 0x01, 0x88, 0x7f, 0x3e, 0x31, 0x6e, 0x62, 0x9d,
4061 0xd8, 0xe0, 0x57, 0xa3, 0x06, 0x3a, 0x42, 0x58,
4062 0x2a, 0x28, 0xfe, 0x72, 0x52, 0x2f, 0xdd, 0xe0,
4063 0x19, 0x89, 0x09, 0x1c, 0x2a, 0x8e, 0x8c, 0x94,
4064 0xfc, 0xc7, 0x68, 0xe4, 0x88, 0xaa, 0xde, 0x0f },
4065 .ilen = 48,
4066 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
4067 .rlen = 48,
4068 }, { /* split-page version */
4069 .key = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
4070 .klen = 8,
4071 .iv = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 },
4072 .input = { 0xca, 0x90, 0xf5, 0x9d, 0xcb, 0xd4, 0xd2, 0x3c,
4073 0x01, 0x88, 0x7f, 0x3e, 0x31, 0x6e, 0x62, 0x9d,
4074 0xd8, 0xe0, 0x57, 0xa3, 0x06, 0x3a, 0x42, 0x58,
4075 0x2a, 0x28, 0xfe, 0x72, 0x52, 0x2f, 0xdd, 0xe0,
4076 0x19, 0x89, 0x09, 0x1c, 0x2a, 0x8e, 0x8c, 0x94,
4077 0xfc, 0xc7, 0x68, 0xe4, 0x88, 0xaa, 0xde, 0x0f },
4078 .ilen = 48,
4079 .result = "The quick brown fox jumps over the lazy dogs.\0\0",
4080 .rlen = 48,
4081 .np = 2,
4082 .tap = { 20, 28 },
4083 }
4084};
4085
Linus Torvalds1da177e2005-04-16 15:20:36 -07004086/*
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11004087 * CAMELLIA test vectors.
4088 */
4089#define CAMELLIA_ENC_TEST_VECTORS 3
4090#define CAMELLIA_DEC_TEST_VECTORS 3
4091#define CAMELLIA_CBC_ENC_TEST_VECTORS 2
4092#define CAMELLIA_CBC_DEC_TEST_VECTORS 2
4093
4094static struct cipher_testvec camellia_enc_tv_template[] = {
4095 {
4096 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
4097 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
4098 .klen = 16,
4099 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
4100 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
4101 .ilen = 16,
4102 .result = { 0x67, 0x67, 0x31, 0x38, 0x54, 0x96, 0x69, 0x73,
4103 0x08, 0x57, 0x06, 0x56, 0x48, 0xea, 0xbe, 0x43 },
4104 .rlen = 16,
4105 }, {
4106 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
4107 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
4108 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 },
4109 .klen = 24,
4110 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
4111 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
4112 .ilen = 16,
4113 .result = { 0xb4, 0x99, 0x34, 0x01, 0xb3, 0xe9, 0x96, 0xf8,
4114 0x4e, 0xe5, 0xce, 0xe7, 0xd7, 0x9b, 0x09, 0xb9 },
4115 .rlen = 16,
4116 }, {
4117 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
4118 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
4119 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
4120 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
4121 .klen = 32,
4122 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
4123 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
4124 .ilen = 16,
4125 .result = { 0x9a, 0xcc, 0x23, 0x7d, 0xff, 0x16, 0xd7, 0x6c,
4126 0x20, 0xef, 0x7c, 0x91, 0x9e, 0x3a, 0x75, 0x09 },
4127 .rlen = 16,
4128 },
4129};
4130
4131static struct cipher_testvec camellia_dec_tv_template[] = {
4132 {
4133 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
4134 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
4135 .klen = 16,
4136 .input = { 0x67, 0x67, 0x31, 0x38, 0x54, 0x96, 0x69, 0x73,
4137 0x08, 0x57, 0x06, 0x56, 0x48, 0xea, 0xbe, 0x43 },
4138 .ilen = 16,
4139 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
4140 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
4141 .rlen = 16,
4142 }, {
4143 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
4144 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
4145 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 },
4146 .klen = 24,
4147 .input = { 0xb4, 0x99, 0x34, 0x01, 0xb3, 0xe9, 0x96, 0xf8,
4148 0x4e, 0xe5, 0xce, 0xe7, 0xd7, 0x9b, 0x09, 0xb9 },
4149 .ilen = 16,
4150 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
4151 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
4152 .rlen = 16,
4153 }, {
4154 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
4155 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
4156 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
4157 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
4158 .klen = 32,
4159 .input = { 0x9a, 0xcc, 0x23, 0x7d, 0xff, 0x16, 0xd7, 0x6c,
4160 0x20, 0xef, 0x7c, 0x91, 0x9e, 0x3a, 0x75, 0x09 },
4161 .ilen = 16,
4162 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
4163 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
4164 .rlen = 16,
4165 },
4166};
4167
4168static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
4169 {
4170 .key = { 0x06, 0xa9, 0x21, 0x40, 0x36, 0xb8, 0xa1, 0x5b,
4171 0x51, 0x2e, 0x03, 0xd5, 0x34, 0x12, 0x00, 0x06 },
4172 .klen = 16,
4173 .iv = { 0x3d, 0xaf, 0xba, 0x42, 0x9d, 0x9e, 0xb4, 0x30,
4174 0xb4, 0x22, 0xda, 0x80, 0x2c, 0x9f, 0xac, 0x41 },
4175 .input = { "Single block msg" },
4176 .ilen = 16,
4177 .result = { 0xea, 0x32, 0x12, 0x76, 0x3b, 0x50, 0x10, 0xe7,
4178 0x18, 0xf6, 0xfd, 0x5d, 0xf6, 0x8f, 0x13, 0x51 },
4179 .rlen = 16,
4180 }, {
4181 .key = { 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0,
4182 0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a },
4183 .klen = 16,
4184 .iv = { 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28,
4185 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58 },
4186 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
4187 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
4188 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
4189 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
4190 .ilen = 32,
4191 .result = { 0xa5, 0xdf, 0x6e, 0x50, 0xda, 0x70, 0x6c, 0x01,
4192 0x4a, 0xab, 0xf3, 0xf2, 0xd6, 0xfc, 0x6c, 0xfd,
4193 0x19, 0xb4, 0x3e, 0x57, 0x1c, 0x02, 0x5e, 0xa0,
4194 0x15, 0x78, 0xe0, 0x5e, 0xf2, 0xcb, 0x87, 0x16 },
4195 .rlen = 32,
4196 },
4197};
4198
4199static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
4200 {
4201 .key = { 0x06, 0xa9, 0x21, 0x40, 0x36, 0xb8, 0xa1, 0x5b,
4202 0x51, 0x2e, 0x03, 0xd5, 0x34, 0x12, 0x00, 0x06 },
4203 .klen = 16,
4204 .iv = { 0x3d, 0xaf, 0xba, 0x42, 0x9d, 0x9e, 0xb4, 0x30,
4205 0xb4, 0x22, 0xda, 0x80, 0x2c, 0x9f, 0xac, 0x41 },
4206 .input = { 0xea, 0x32, 0x12, 0x76, 0x3b, 0x50, 0x10, 0xe7,
4207 0x18, 0xf6, 0xfd, 0x5d, 0xf6, 0x8f, 0x13, 0x51 },
4208 .ilen = 16,
4209 .result = { "Single block msg" },
4210 .rlen = 16,
4211 }, {
4212 .key = { 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0,
4213 0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a },
4214 .klen = 16,
4215 .iv = { 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28,
4216 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58 },
4217 .input = { 0xa5, 0xdf, 0x6e, 0x50, 0xda, 0x70, 0x6c, 0x01,
4218 0x4a, 0xab, 0xf3, 0xf2, 0xd6, 0xfc, 0x6c, 0xfd,
4219 0x19, 0xb4, 0x3e, 0x57, 0x1c, 0x02, 0x5e, 0xa0,
4220 0x15, 0x78, 0xe0, 0x5e, 0xf2, 0xcb, 0x87, 0x16 },
4221 .ilen = 32,
4222 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
4223 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
4224 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
4225 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
4226 .rlen = 32,
4227 },
4228};
4229
4230/*
Hye-Shik Change2ee95b2007-08-21 20:01:03 +08004231 * SEED test vectors
4232 */
4233#define SEED_ENC_TEST_VECTORS 4
4234#define SEED_DEC_TEST_VECTORS 4
4235
4236static struct cipher_testvec seed_enc_tv_template[] = {
4237 {
4238 .key = { [0 ... 15] = 0x00 },
4239 .klen = 16,
4240 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
4241 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
4242 .ilen = 16,
4243 .result = { 0x5e, 0xba, 0xc6, 0xe0, 0x05, 0x4e, 0x16, 0x68,
4244 0x19, 0xaf, 0xf1, 0xcc, 0x6d, 0x34, 0x6c, 0xdb },
4245 .rlen = 16,
4246 }, {
4247 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
4248 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
4249 .klen = 16,
4250 .input = { [0 ... 15] = 0x00 },
4251 .ilen = 16,
4252 .result = { 0xc1, 0x1f, 0x22, 0xf2, 0x01, 0x40, 0x50, 0x50,
4253 0x84, 0x48, 0x35, 0x97, 0xe4, 0x37, 0x0f, 0x43 },
4254 .rlen = 16,
4255 }, {
4256 .key = { 0x47, 0x06, 0x48, 0x08, 0x51, 0xe6, 0x1b, 0xe8,
4257 0x5d, 0x74, 0xbf, 0xb3, 0xfd, 0x95, 0x61, 0x85 },
4258 .klen = 16,
4259 .input = { 0x83, 0xa2, 0xf8, 0xa2, 0x88, 0x64, 0x1f, 0xb9,
4260 0xa4, 0xe9, 0xa5, 0xcc, 0x2f, 0x13, 0x1c, 0x7d },
4261 .ilen = 16,
4262 .result = { 0xee, 0x54, 0xd1, 0x3e, 0xbc, 0xae, 0x70, 0x6d,
4263 0x22, 0x6b, 0xc3, 0x14, 0x2c, 0xd4, 0x0d, 0x4a },
4264 .rlen = 16,
4265 }, {
4266 .key = { 0x28, 0xdb, 0xc3, 0xbc, 0x49, 0xff, 0xd8, 0x7d,
4267 0xcf, 0xa5, 0x09, 0xb1, 0x1d, 0x42, 0x2b, 0xe7 },
4268 .klen = 16,
4269 .input = { 0xb4, 0x1e, 0x6b, 0xe2, 0xeb, 0xa8, 0x4a, 0x14,
4270 0x8e, 0x2e, 0xed, 0x84, 0x59, 0x3c, 0x5e, 0xc7 },
4271 .ilen = 16,
4272 .result = { 0x9b, 0x9b, 0x7b, 0xfc, 0xd1, 0x81, 0x3c, 0xb9,
4273 0x5d, 0x0b, 0x36, 0x18, 0xf4, 0x0f, 0x51, 0x22 },
4274 .rlen = 16,
4275 }
4276};
4277
4278static struct cipher_testvec seed_dec_tv_template[] = {
4279 {
4280 .key = { [0 ... 15] = 0x00 },
4281 .klen = 16,
4282 .input = { 0x5e, 0xba, 0xc6, 0xe0, 0x05, 0x4e, 0x16, 0x68,
4283 0x19, 0xaf, 0xf1, 0xcc, 0x6d, 0x34, 0x6c, 0xdb },
4284 .ilen = 16,
4285 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
4286 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
4287 .rlen = 16,
4288 }, {
4289 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
4290 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
4291 .klen = 16,
4292 .input = { 0xc1, 0x1f, 0x22, 0xf2, 0x01, 0x40, 0x50, 0x50,
4293 0x84, 0x48, 0x35, 0x97, 0xe4, 0x37, 0x0f, 0x43 },
4294 .ilen = 16,
4295 .result = { [0 ... 15] = 0x00 },
4296 .rlen = 16,
4297 }, {
4298 .key = { 0x47, 0x06, 0x48, 0x08, 0x51, 0xe6, 0x1b, 0xe8,
4299 0x5d, 0x74, 0xbf, 0xb3, 0xfd, 0x95, 0x61, 0x85 },
4300 .klen = 16,
4301 .input = { 0xee, 0x54, 0xd1, 0x3e, 0xbc, 0xae, 0x70, 0x6d,
4302 0x22, 0x6b, 0xc3, 0x14, 0x2c, 0xd4, 0x0d, 0x4a },
4303 .ilen = 16,
4304 .result = { 0x83, 0xa2, 0xf8, 0xa2, 0x88, 0x64, 0x1f, 0xb9,
4305 0xa4, 0xe9, 0xa5, 0xcc, 0x2f, 0x13, 0x1c, 0x7d },
4306 .rlen = 16,
4307 }, {
4308 .key = { 0x28, 0xdb, 0xc3, 0xbc, 0x49, 0xff, 0xd8, 0x7d,
4309 0xcf, 0xa5, 0x09, 0xb1, 0x1d, 0x42, 0x2b, 0xe7 },
4310 .klen = 16,
4311 .input = { 0x9b, 0x9b, 0x7b, 0xfc, 0xd1, 0x81, 0x3c, 0xb9,
4312 0x5d, 0x0b, 0x36, 0x18, 0xf4, 0x0f, 0x51, 0x22 },
4313 .ilen = 16,
4314 .result = { 0xb4, 0x1e, 0x6b, 0xe2, 0xeb, 0xa8, 0x4a, 0x14,
4315 0x8e, 0x2e, 0xed, 0x84, 0x59, 0x3c, 0x5e, 0xc7 },
4316 .rlen = 16,
4317 }
4318};
4319
4320/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07004321 * Compression stuff.
4322 */
4323#define COMP_BUF_SIZE 512
4324
4325struct comp_testvec {
4326 int inlen, outlen;
4327 char input[COMP_BUF_SIZE];
4328 char output[COMP_BUF_SIZE];
4329};
4330
4331/*
4332 * Deflate test vectors (null-terminated strings).
4333 * Params: winbits=11, Z_DEFAULT_COMPRESSION, MAX_MEM_LEVEL.
4334 */
4335#define DEFLATE_COMP_TEST_VECTORS 2
4336#define DEFLATE_DECOMP_TEST_VECTORS 2
4337
4338static struct comp_testvec deflate_comp_tv_template[] = {
4339 {
4340 .inlen = 70,
4341 .outlen = 38,
4342 .input = "Join us now and share the software "
4343 "Join us now and share the software ",
4344 .output = { 0xf3, 0xca, 0xcf, 0xcc, 0x53, 0x28, 0x2d, 0x56,
4345 0xc8, 0xcb, 0x2f, 0x57, 0x48, 0xcc, 0x4b, 0x51,
4346 0x28, 0xce, 0x48, 0x2c, 0x4a, 0x55, 0x28, 0xc9,
4347 0x48, 0x55, 0x28, 0xce, 0x4f, 0x2b, 0x29, 0x07,
4348 0x71, 0xbc, 0x08, 0x2b, 0x01, 0x00 },
4349 }, {
4350 .inlen = 191,
4351 .outlen = 122,
4352 .input = "This document describes a compression method based on the DEFLATE"
4353 "compression algorithm. This document defines the application of "
4354 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
4355 .output = { 0x5d, 0x8d, 0x31, 0x0e, 0xc2, 0x30, 0x10, 0x04,
4356 0xbf, 0xb2, 0x2f, 0xc8, 0x1f, 0x10, 0x04, 0x09,
4357 0x89, 0xc2, 0x85, 0x3f, 0x70, 0xb1, 0x2f, 0xf8,
4358 0x24, 0xdb, 0x67, 0xd9, 0x47, 0xc1, 0xef, 0x49,
4359 0x68, 0x12, 0x51, 0xae, 0x76, 0x67, 0xd6, 0x27,
4360 0x19, 0x88, 0x1a, 0xde, 0x85, 0xab, 0x21, 0xf2,
4361 0x08, 0x5d, 0x16, 0x1e, 0x20, 0x04, 0x2d, 0xad,
4362 0xf3, 0x18, 0xa2, 0x15, 0x85, 0x2d, 0x69, 0xc4,
4363 0x42, 0x83, 0x23, 0xb6, 0x6c, 0x89, 0x71, 0x9b,
4364 0xef, 0xcf, 0x8b, 0x9f, 0xcf, 0x33, 0xca, 0x2f,
4365 0xed, 0x62, 0xa9, 0x4c, 0x80, 0xff, 0x13, 0xaf,
4366 0x52, 0x37, 0xed, 0x0e, 0x52, 0x6b, 0x59, 0x02,
4367 0xd9, 0x4e, 0xe8, 0x7a, 0x76, 0x1d, 0x02, 0x98,
4368 0xfe, 0x8a, 0x87, 0x83, 0xa3, 0x4f, 0x56, 0x8a,
4369 0xb8, 0x9e, 0x8e, 0x5c, 0x57, 0xd3, 0xa0, 0x79,
4370 0xfa, 0x02 },
4371 },
4372};
4373
4374static struct comp_testvec deflate_decomp_tv_template[] = {
4375 {
4376 .inlen = 122,
4377 .outlen = 191,
4378 .input = { 0x5d, 0x8d, 0x31, 0x0e, 0xc2, 0x30, 0x10, 0x04,
4379 0xbf, 0xb2, 0x2f, 0xc8, 0x1f, 0x10, 0x04, 0x09,
4380 0x89, 0xc2, 0x85, 0x3f, 0x70, 0xb1, 0x2f, 0xf8,
4381 0x24, 0xdb, 0x67, 0xd9, 0x47, 0xc1, 0xef, 0x49,
4382 0x68, 0x12, 0x51, 0xae, 0x76, 0x67, 0xd6, 0x27,
4383 0x19, 0x88, 0x1a, 0xde, 0x85, 0xab, 0x21, 0xf2,
4384 0x08, 0x5d, 0x16, 0x1e, 0x20, 0x04, 0x2d, 0xad,
4385 0xf3, 0x18, 0xa2, 0x15, 0x85, 0x2d, 0x69, 0xc4,
4386 0x42, 0x83, 0x23, 0xb6, 0x6c, 0x89, 0x71, 0x9b,
4387 0xef, 0xcf, 0x8b, 0x9f, 0xcf, 0x33, 0xca, 0x2f,
4388 0xed, 0x62, 0xa9, 0x4c, 0x80, 0xff, 0x13, 0xaf,
4389 0x52, 0x37, 0xed, 0x0e, 0x52, 0x6b, 0x59, 0x02,
4390 0xd9, 0x4e, 0xe8, 0x7a, 0x76, 0x1d, 0x02, 0x98,
4391 0xfe, 0x8a, 0x87, 0x83, 0xa3, 0x4f, 0x56, 0x8a,
4392 0xb8, 0x9e, 0x8e, 0x5c, 0x57, 0xd3, 0xa0, 0x79,
4393 0xfa, 0x02 },
4394 .output = "This document describes a compression method based on the DEFLATE"
4395 "compression algorithm. This document defines the application of "
4396 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
4397 }, {
4398 .inlen = 38,
4399 .outlen = 70,
4400 .input = { 0xf3, 0xca, 0xcf, 0xcc, 0x53, 0x28, 0x2d, 0x56,
4401 0xc8, 0xcb, 0x2f, 0x57, 0x48, 0xcc, 0x4b, 0x51,
4402 0x28, 0xce, 0x48, 0x2c, 0x4a, 0x55, 0x28, 0xc9,
4403 0x48, 0x55, 0x28, 0xce, 0x4f, 0x2b, 0x29, 0x07,
4404 0x71, 0xbc, 0x08, 0x2b, 0x01, 0x00 },
4405 .output = "Join us now and share the software "
4406 "Join us now and share the software ",
4407 },
4408};
4409
4410/*
4411 * Michael MIC test vectors from IEEE 802.11i
4412 */
4413#define MICHAEL_MIC_TEST_VECTORS 6
4414
Herbert Xuef2736f2005-06-22 13:26:03 -07004415static struct hash_testvec michael_mic_tv_template[] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07004416 {
4417 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
4418 .ksize = 8,
4419 .plaintext = { },
4420 .psize = 0,
4421 .digest = { 0x82, 0x92, 0x5c, 0x1c, 0xa1, 0xd1, 0x30, 0xb8 }
4422 },
4423 {
4424 .key = { 0x82, 0x92, 0x5c, 0x1c, 0xa1, 0xd1, 0x30, 0xb8 },
4425 .ksize = 8,
4426 .plaintext = { 'M' },
4427 .psize = 1,
4428 .digest = { 0x43, 0x47, 0x21, 0xca, 0x40, 0x63, 0x9b, 0x3f }
4429 },
4430 {
4431 .key = { 0x43, 0x47, 0x21, 0xca, 0x40, 0x63, 0x9b, 0x3f },
4432 .ksize = 8,
4433 .plaintext = { 'M', 'i' },
4434 .psize = 2,
4435 .digest = { 0xe8, 0xf9, 0xbe, 0xca, 0xe9, 0x7e, 0x5d, 0x29 }
4436 },
4437 {
4438 .key = { 0xe8, 0xf9, 0xbe, 0xca, 0xe9, 0x7e, 0x5d, 0x29 },
4439 .ksize = 8,
4440 .plaintext = { 'M', 'i', 'c' },
4441 .psize = 3,
4442 .digest = { 0x90, 0x03, 0x8f, 0xc6, 0xcf, 0x13, 0xc1, 0xdb }
4443 },
4444 {
4445 .key = { 0x90, 0x03, 0x8f, 0xc6, 0xcf, 0x13, 0xc1, 0xdb },
4446 .ksize = 8,
4447 .plaintext = { 'M', 'i', 'c', 'h' },
4448 .psize = 4,
4449 .digest = { 0xd5, 0x5e, 0x10, 0x05, 0x10, 0x12, 0x89, 0x86 }
4450 },
4451 {
4452 .key = { 0xd5, 0x5e, 0x10, 0x05, 0x10, 0x12, 0x89, 0x86 },
4453 .ksize = 8,
4454 .plaintext = { 'M', 'i', 'c', 'h', 'a', 'e', 'l' },
4455 .psize = 7,
4456 .digest = { 0x0a, 0x94, 0x2b, 0x12, 0x4e, 0xca, 0xa5, 0x46 },
4457 }
4458};
4459
Harald Welteebfd9bc2005-06-22 13:27:23 -07004460/*
Herbert Xuc907ee72006-08-21 22:04:03 +10004461 * CRC32C test vectors
4462 */
4463#define CRC32C_TEST_VECTORS 14
4464
4465static struct hash_testvec crc32c_tv_template[] = {
4466 {
4467 .psize = 0,
4468 .digest = { 0x00, 0x00, 0x00, 0x00 }
4469 },
4470 {
4471 .key = { 0x87, 0xa9, 0xcb, 0xed },
4472 .ksize = 4,
4473 .psize = 0,
4474 .digest = { 0x78, 0x56, 0x34, 0x12 },
4475 },
4476 {
4477 .key = { 0xff, 0xff, 0xff, 0xff },
4478 .ksize = 4,
4479 .plaintext = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
4480 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
4481 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
4482 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
4483 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28 },
4484 .psize = 40,
4485 .digest = { 0x7f, 0x15, 0x2c, 0x0e }
4486 },
4487 {
4488 .key = { 0xff, 0xff, 0xff, 0xff },
4489 .ksize = 4,
4490 .plaintext = { 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
4491 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
4492 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40,
4493 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
4494 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50 },
4495 .psize = 40,
4496 .digest = { 0xf6, 0xeb, 0x80, 0xe9 }
4497 },
4498 {
4499 .key = { 0xff, 0xff, 0xff, 0xff },
4500 .ksize = 4,
4501 .plaintext = { 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
4502 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60,
4503 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
4504 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
4505 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78 },
4506 .psize = 40,
4507 .digest = { 0xed, 0xbd, 0x74, 0xde }
4508 },
4509 {
4510 .key = { 0xff, 0xff, 0xff, 0xff },
4511 .ksize = 4,
4512 .plaintext = { 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80,
4513 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
4514 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90,
4515 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
4516 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0 },
4517 .psize = 40,
4518 .digest = { 0x62, 0xc8, 0x79, 0xd5 }
4519 },
4520 {
4521 .key = { 0xff, 0xff, 0xff, 0xff },
4522 .ksize = 4,
4523 .plaintext = { 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8,
4524 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0,
4525 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8,
4526 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0,
4527 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8 },
4528 .psize = 40,
4529 .digest = { 0xd0, 0x9a, 0x97, 0xba }
4530 },
4531 {
4532 .key = { 0xff, 0xff, 0xff, 0xff },
4533 .ksize = 4,
4534 .plaintext = { 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
4535 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,
4536 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0,
4537 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8,
4538 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0 },
4539 .psize = 40,
4540 .digest = { 0x13, 0xd9, 0x29, 0x2b }
4541 },
4542 {
4543 .key = { 0x80, 0xea, 0xd3, 0xf1 },
4544 .ksize = 4,
4545 .plaintext = { 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
4546 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
4547 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40,
4548 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
4549 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50 },
4550 .psize = 40,
4551 .digest = { 0x0c, 0xb5, 0xe2, 0xa2 }
4552 },
4553 {
4554 .key = { 0xf3, 0x4a, 0x1d, 0x5d },
4555 .ksize = 4,
4556 .plaintext = { 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
4557 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60,
4558 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
4559 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
4560 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78 },
4561 .psize = 40,
4562 .digest = { 0xd1, 0x7f, 0xfb, 0xa6 }
4563 },
4564 {
4565 .key = { 0x2e, 0x80, 0x04, 0x59 },
4566 .ksize = 4,
4567 .plaintext = { 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80,
4568 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
4569 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90,
4570 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
4571 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0 },
4572 .psize = 40,
4573 .digest = { 0x59, 0x33, 0xe6, 0x7a }
4574 },
4575 {
4576 .key = { 0xa6, 0xcc, 0x19, 0x85 },
4577 .ksize = 4,
4578 .plaintext = { 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8,
4579 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0,
4580 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8,
4581 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0,
4582 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8 },
4583 .psize = 40,
4584 .digest = { 0xbe, 0x03, 0x01, 0xd2 }
4585 },
4586 {
4587 .key = { 0x41, 0xfc, 0xfe, 0x2d },
4588 .ksize = 4,
4589 .plaintext = { 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
4590 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,
4591 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0,
4592 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8,
4593 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0 },
4594 .psize = 40,
4595 .digest = { 0x75, 0xd3, 0xc5, 0x24 }
4596 },
4597 {
4598 .key = { 0xff, 0xff, 0xff, 0xff },
4599 .ksize = 4,
4600 .plaintext = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
4601 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
4602 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
4603 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
4604 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
4605 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
4606 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
4607 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40,
4608 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
4609 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
4610 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
4611 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60,
4612 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
4613 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
4614 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
4615 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80,
4616 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
4617 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90,
4618 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
4619 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0,
4620 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8,
4621 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0,
4622 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8,
4623 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0,
4624 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8,
4625 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
4626 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8,
4627 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0,
4628 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8,
4629 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0 },
4630 .psize = 240,
4631 .digest = { 0x75, 0xd3, 0xc5, 0x24 },
4632 .np = 2,
4633 .tap = { 31, 209 }
4634 },
4635};
4636
4637/*
Harald Welteebfd9bc2005-06-22 13:27:23 -07004638 * Cipher speed tests
4639 */
4640static struct cipher_speed aes_speed_template[] = {
4641 { .klen = 16, .blen = 16, },
4642 { .klen = 16, .blen = 64, },
4643 { .klen = 16, .blen = 256, },
4644 { .klen = 16, .blen = 1024, },
4645 { .klen = 16, .blen = 8192, },
4646 { .klen = 24, .blen = 16, },
4647 { .klen = 24, .blen = 64, },
4648 { .klen = 24, .blen = 256, },
4649 { .klen = 24, .blen = 1024, },
4650 { .klen = 24, .blen = 8192, },
4651 { .klen = 32, .blen = 16, },
4652 { .klen = 32, .blen = 64, },
4653 { .klen = 32, .blen = 256, },
4654 { .klen = 32, .blen = 1024, },
4655 { .klen = 32, .blen = 8192, },
4656
4657 /* End marker */
4658 { .klen = 0, .blen = 0, }
4659};
4660
Rik Snelf3d10442006-11-29 19:01:41 +11004661static struct cipher_speed aes_lrw_speed_template[] = {
4662 { .klen = 32, .blen = 16, },
4663 { .klen = 32, .blen = 64, },
4664 { .klen = 32, .blen = 256, },
4665 { .klen = 32, .blen = 1024, },
4666 { .klen = 32, .blen = 8192, },
4667 { .klen = 40, .blen = 16, },
4668 { .klen = 40, .blen = 64, },
4669 { .klen = 40, .blen = 256, },
4670 { .klen = 40, .blen = 1024, },
4671 { .klen = 40, .blen = 8192, },
4672 { .klen = 48, .blen = 16, },
4673 { .klen = 48, .blen = 64, },
4674 { .klen = 48, .blen = 256, },
4675 { .klen = 48, .blen = 1024, },
4676 { .klen = 48, .blen = 8192, },
4677
4678 /* End marker */
4679 { .klen = 0, .blen = 0, }
4680};
4681
Rik Snelf19f5112007-09-19 20:23:13 +08004682static struct cipher_speed aes_xts_speed_template[] = {
4683 { .klen = 32, .blen = 16, },
4684 { .klen = 32, .blen = 64, },
4685 { .klen = 32, .blen = 256, },
4686 { .klen = 32, .blen = 1024, },
4687 { .klen = 32, .blen = 8192, },
4688 { .klen = 48, .blen = 16, },
4689 { .klen = 48, .blen = 64, },
4690 { .klen = 48, .blen = 256, },
4691 { .klen = 48, .blen = 1024, },
4692 { .klen = 48, .blen = 8192, },
4693 { .klen = 64, .blen = 16, },
4694 { .klen = 64, .blen = 64, },
4695 { .klen = 64, .blen = 256, },
4696 { .klen = 64, .blen = 1024, },
4697 { .klen = 64, .blen = 8192, },
4698
4699 /* End marker */
4700 { .klen = 0, .blen = 0, }
4701};
4702
Harald Welteebfd9bc2005-06-22 13:27:23 -07004703static struct cipher_speed des3_ede_speed_template[] = {
4704 { .klen = 24, .blen = 16, },
4705 { .klen = 24, .blen = 64, },
4706 { .klen = 24, .blen = 256, },
4707 { .klen = 24, .blen = 1024, },
4708 { .klen = 24, .blen = 8192, },
4709
4710 /* End marker */
4711 { .klen = 0, .blen = 0, }
4712};
4713
4714static struct cipher_speed twofish_speed_template[] = {
4715 { .klen = 16, .blen = 16, },
4716 { .klen = 16, .blen = 64, },
4717 { .klen = 16, .blen = 256, },
4718 { .klen = 16, .blen = 1024, },
4719 { .klen = 16, .blen = 8192, },
4720 { .klen = 24, .blen = 16, },
4721 { .klen = 24, .blen = 64, },
4722 { .klen = 24, .blen = 256, },
4723 { .klen = 24, .blen = 1024, },
4724 { .klen = 24, .blen = 8192, },
4725 { .klen = 32, .blen = 16, },
4726 { .klen = 32, .blen = 64, },
4727 { .klen = 32, .blen = 256, },
4728 { .klen = 32, .blen = 1024, },
4729 { .klen = 32, .blen = 8192, },
4730
4731 /* End marker */
4732 { .klen = 0, .blen = 0, }
4733};
4734
4735static struct cipher_speed blowfish_speed_template[] = {
4736 /* Don't support blowfish keys > 256 bit in this test */
4737 { .klen = 8, .blen = 16, },
4738 { .klen = 8, .blen = 64, },
4739 { .klen = 8, .blen = 256, },
4740 { .klen = 8, .blen = 1024, },
4741 { .klen = 8, .blen = 8192, },
4742 { .klen = 32, .blen = 16, },
4743 { .klen = 32, .blen = 64, },
4744 { .klen = 32, .blen = 256, },
4745 { .klen = 32, .blen = 1024, },
4746 { .klen = 32, .blen = 8192, },
4747
4748 /* End marker */
4749 { .klen = 0, .blen = 0, }
4750};
4751
4752static struct cipher_speed des_speed_template[] = {
4753 { .klen = 8, .blen = 16, },
4754 { .klen = 8, .blen = 64, },
4755 { .klen = 8, .blen = 256, },
4756 { .klen = 8, .blen = 1024, },
4757 { .klen = 8, .blen = 8192, },
4758
4759 /* End marker */
4760 { .klen = 0, .blen = 0, }
4761};
4762
Michal Ludvige8057922006-05-30 22:04:19 +10004763/*
4764 * Digest speed tests
4765 */
Herbert Xue9d41162006-08-19 21:38:49 +10004766static struct hash_speed generic_hash_speed_template[] = {
Michal Ludvige8057922006-05-30 22:04:19 +10004767 { .blen = 16, .plen = 16, },
4768 { .blen = 64, .plen = 16, },
4769 { .blen = 64, .plen = 64, },
4770 { .blen = 256, .plen = 16, },
4771 { .blen = 256, .plen = 64, },
4772 { .blen = 256, .plen = 256, },
4773 { .blen = 1024, .plen = 16, },
4774 { .blen = 1024, .plen = 256, },
4775 { .blen = 1024, .plen = 1024, },
4776 { .blen = 2048, .plen = 16, },
4777 { .blen = 2048, .plen = 256, },
4778 { .blen = 2048, .plen = 1024, },
4779 { .blen = 2048, .plen = 2048, },
4780 { .blen = 4096, .plen = 16, },
4781 { .blen = 4096, .plen = 256, },
4782 { .blen = 4096, .plen = 1024, },
4783 { .blen = 4096, .plen = 4096, },
4784 { .blen = 8192, .plen = 16, },
4785 { .blen = 8192, .plen = 256, },
4786 { .blen = 8192, .plen = 1024, },
4787 { .blen = 8192, .plen = 4096, },
4788 { .blen = 8192, .plen = 8192, },
4789
4790 /* End marker */
4791 { .blen = 0, .plen = 0, }
4792};
4793
Noriaki TAKAMIYA02ab5a72007-01-24 21:48:19 +11004794static struct cipher_speed camellia_speed_template[] = {
4795 { .klen = 16, .blen = 16, },
4796 { .klen = 16, .blen = 64, },
4797 { .klen = 16, .blen = 256, },
4798 { .klen = 16, .blen = 1024, },
4799 { .klen = 16, .blen = 8192, },
4800 { .klen = 24, .blen = 16, },
4801 { .klen = 24, .blen = 64, },
4802 { .klen = 24, .blen = 256, },
4803 { .klen = 24, .blen = 1024, },
4804 { .klen = 24, .blen = 8192, },
4805 { .klen = 32, .blen = 16, },
4806 { .klen = 32, .blen = 64, },
4807 { .klen = 32, .blen = 256, },
4808 { .klen = 32, .blen = 1024, },
4809 { .klen = 32, .blen = 8192, },
4810
4811 /* End marker */
4812 { .klen = 0, .blen = 0, }
4813};
4814
Linus Torvalds1da177e2005-04-16 15:20:36 -07004815#endif /* _CRYPTO_TCRYPT_H */