OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [crypto/] [tcrypt.h] - Blame information for rev 81

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
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
12
 * Software Foundation; either version 2 of the License, or (at your option)
13
 * any later version.
14
 *
15
 * 2006-12-07 Added SHA384 HMAC and SHA512 HMAC tests
16
 * 2004-08-09 Cipher speed tests by Reyk Floeter <reyk@vantronix.net>
17
 * 2003-09-14 Changes by Kartikey Mahendra Bhatt
18
 *
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
 
29
struct hash_testvec {
30
        /* only used with keyed hash algorithms */
31
        char key[132] __attribute__ ((__aligned__(4)));
32
        char plaintext[240];
33
        char digest[MAX_DIGEST_SIZE];
34
        unsigned char tap[MAX_TAP];
35
        unsigned char psize;
36
        unsigned char np;
37
        unsigned char ksize;
38
};
39
 
40
struct cipher_testvec {
41
        char key[MAX_KEYLEN] __attribute__ ((__aligned__(4)));
42
        char iv[MAX_IVLEN];
43
        char input[512];
44
        char result[512];
45
        unsigned char tap[MAX_TAP];
46
        int np;
47
        unsigned char fail;
48
        unsigned char wk; /* weak key flag */
49
        unsigned char klen;
50
        unsigned short ilen;
51
        unsigned short rlen;
52
};
53
 
54
struct cipher_speed {
55
        unsigned char klen;
56
        unsigned int blen;
57
};
58
 
59
struct hash_speed {
60
        unsigned int blen;      /* buffer length */
61
        unsigned int plen;      /* per-update length */
62
};
63
 
64
/*
65
 * MD4 test vectors from RFC1320
66
 */
67
#define MD4_TEST_VECTORS        7
68
 
69
static 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
 
115
static 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
 
160
static struct hash_testvec sha1_tv_template[] = {
161
        {
162
                .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
 
181
static struct hash_testvec sha256_tv_template[] = {
182
        {
183
                .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
 
206
static struct hash_testvec sha384_tv_template[] = {
207
        {
208
                .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"
227
                             "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
228
                .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
 
255
static struct hash_testvec sha512_tv_template[] = {
256
        {
257
                .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
/*
309
 * WHIRLPOOL test vectors from Whirlpool package
310
 * by Vincent Rijmen and Paulo S. L. M. Barreto as part of the NESSIE
311
 * submission
312
 */
313
#define WP512_TEST_VECTORS      8
314
 
315
static struct hash_testvec wp512_tv_template[] = {
316
        {
317
                .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,
354
                .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,
361
                            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,
400
                .digest = { 0x2A, 0x98, 0x7E, 0xA4, 0x0F, 0x91, 0x70, 0x61,
401
                            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
 
413
static struct hash_testvec wp384_tv_template[] = {
414
        {
415
                .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,
446
                .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,
451
                            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,
484
                .digest = { 0x2A, 0x98, 0x7E, 0xA4, 0x0F, 0x91, 0x70, 0x61,
485
                            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
 
495
static struct hash_testvec wp256_tv_template[] = {
496
        {
497
                .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,
522
                .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,
525
                            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,
552
                .digest = { 0x2A, 0x98, 0x7E, 0xA4, 0x0F, 0x91, 0x70, 0x61,
553
                            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
/*
560
 * TIGER test vectors from Tiger website
561
 */
562
#define TGR192_TEST_VECTORS     6
563
 
564
static 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
 
609
static 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
 
654
static 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
 
691
/*
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
 
697
static struct hash_testvec hmac_md5_tv_template[] =
698
{
699
        {
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
 
761
static struct hash_testvec hmac_sha1_tv_template[] = {
762
        {
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
        }, {
771
                .key    = { 'J', 'e', 'f', 'e' },
772
                .ksize  = 4,
773
                .plaintext = "what do ya want for nothing?",
774
                .psize  = 28,
775
                .digest = { 0xef, 0xfc, 0xdf, 0x6a, 0xe5, 0xeb, 0x2f, 0xa2, 0xd2, 0x74,
776
                            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,
784
                .digest = { 0x12, 0x5d, 0x73, 0x42, 0xb9, 0xac, 0x11, 0xcd, 0x91, 0xa3,
785
                            0x9a, 0xf4, 0x8a, 0xa1, 0x7b, 0x4f, 0x63, 0xf1, 0x75, 0xd3 },
786
        }, {
787
                .key    = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
788
                            0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
789
                            0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19 },
790
                .ksize  = 25,
791
                .plaintext = { [0 ... 49] = 0xcd },
792
                .psize  = 50,
793
                .digest = { 0x4c, 0x90, 0x07, 0xf4, 0x02, 0x62, 0x50, 0xc6, 0xbc, 0x84,
794
                            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,
800
                .digest = { 0x4c, 0x1a, 0x03, 0x42, 0x4b, 0x55, 0xe0, 0x7f, 0xe7, 0xf2,
801
                            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,
807
                .digest = { 0xaa, 0x4a, 0xe5, 0xe1, 0x52, 0x72, 0xd0, 0x0e, 0x95, 0x70,
808
                            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,
815
                .digest = { 0xe8, 0xe9, 0x9d, 0x0f, 0x45, 0x23, 0x7d, 0x78, 0x6d, 0x6b,
816
                            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
 
826
static struct hash_testvec hmac_sha256_tv_template[] = {
827
        {
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
 
937
#define XCBC_AES_TEST_VECTORS 6
938
 
939
static 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
 
1005
/*
1006
 * SHA384 HMAC test vectors from RFC4231
1007
 */
1008
 
1009
#define HMAC_SHA384_TEST_VECTORS        4
1010
 
1011
static 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
 
1128
static 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
/*
1248
 * 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
 
1257
static 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,
1324
                .tap    = { 14, 10, 8 }
1325
        }, {
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,
1337
                .tap    = { 2, 1, 3, 18 }
1338
        }, {
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,
1348
                .tap    = { 2, 2, 2, 2, 8 }
1349
        }, {
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,
1357
                .tap    = { 1, 1, 1, 1, 1, 1, 1, 1 }
1358
        },
1359
};
1360
 
1361
static 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 */
1370
                .key    = { 0x7c, 0xa1, 0x10, 0x45, 0x4a, 0x1a, 0x6e, 0x57 },
1371
                .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
 
1401
static struct cipher_testvec des_cbc_enc_tv_template[] = {
1402
        { /* From OpenSSL */
1403
                .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef},
1404
                .klen   = 8,
1405
                .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 },
1409
                .ilen   = 24,
1410
                .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 },
1413
                .rlen   = 24,
1414
        }, { /* FIPS Pub 81 */
1415
                .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1416
                .klen   = 8,
1417
                .iv     = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef },
1418
                .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,
1430
        }, {
1431
                .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,
1438
        }, { /* Copy of openssl vector for chunk testing */
1439
             /* From OpenSSL */
1440
                .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef},
1441
                .klen   = 8,
1442
                .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 },
1446
                .ilen   = 24,
1447
                .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 },
1450
                .rlen   = 24,
1451
                .np     = 2,
1452
                .tap    = { 13, 11 }
1453
        },
1454
};
1455
 
1456
static 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,
1468
                .iv     = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c },
1469
                .input  = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
1470
                .ilen   = 8,
1471
                .result = { 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 },
1472
                .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 },
1477
                .input  = { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 },
1478
                .ilen   = 8,
1479
                .result = { 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20 },
1480
                .rlen   = 8,
1481
        }, { /* Copy of above, for chunk testing */
1482
                .key    = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
1483
                .klen   = 8,
1484
                .iv     = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
1485
                .input  = { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 },
1486
                .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
 */
1497
static 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
 
1528
static 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
 
1567
static 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,
1589
        }, { /* Vary the keylength... */
1590
                .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,
1610
                            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,
1613
                            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
 
1622
static 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,
1644
        }, { /* Vary the keylength... */
1645
                .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,
1665
                            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,
1668
                            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
 
1677
static 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,
1682
                .iv     = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1683
                .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
 
1696
static 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,
1701
                .iv     = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 },
1702
                .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
 
1723
static 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
 
1756
static 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
 
1789
static 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,
1803
                            0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
1804
                .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
 
1835
static 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,
1841
                            0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
1842
                .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
 
1891
static struct cipher_testvec serpent_enc_tv_template[] = {
1892
        {
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
 
1932
static struct cipher_testvec tnepres_enc_tv_template[] = {
1933
        { /* 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,
1940
                .result = { 0x49, 0xaf, 0xbf, 0xad, 0x9d, 0x5a, 0x34, 0x05,
1941
                            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,
1951
                .result = { 0xe7, 0x8e, 0x54, 0x02, 0xc7, 0x19, 0x55, 0x68,
1952
                            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,
1963
                .result = { 0xab, 0xed, 0x96, 0xe7, 0x66, 0xbf, 0x28, 0xcb,
1964
                            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,
1975
                .result = { 0x5c, 0xe7, 0x1c, 0x70, 0xd2, 0x88, 0x2e, 0x5b,
1976
                            0xb8, 0x32, 0xe4, 0x33, 0xf8, 0x9f, 0x26, 0xde },
1977
                .rlen   = 16,
1978
        },
1979
};
1980
 
1981
 
1982
static struct cipher_testvec serpent_dec_tv_template[] = {
1983
        {
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
 
2023
static struct cipher_testvec tnepres_dec_tv_template[] = {
2024
        {
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,
2035
                .input  = { 0xea, 0xf4, 0xd7, 0xfc, 0xd8, 0x01, 0x34, 0x47,
2036
                            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,
2047
                .input  = { 0x64, 0xa9, 0x1a, 0x37, 0xed, 0x9f, 0xe7, 0x49,
2048
                            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,
2056
                .input  = { 0x3d, 0xda, 0xbf, 0xc0, 0x06, 0xda, 0xab, 0x06,
2057
                            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
 
2069
static struct cipher_testvec cast6_enc_tv_template[] = {
2070
        {
2071
                .key    = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c,
2072
                            0x0a, 0xf7, 0x56, 0x47, 0xf2, 0x9f, 0x61, 0x5d },
2073
                .klen   = 16,
2074
                .input  = { [0 ... 15] = 0x00 },
2075
                .ilen   = 16,
2076
                .result = { 0xc8, 0x42, 0xa0, 0x89, 0x72, 0xb4, 0x3d, 0x20,
2077
                            0x83, 0x6c, 0x91, 0xd1, 0xb7, 0x53, 0x0f, 0x6b },
2078
                .rlen   = 16,
2079
        }, {
2080
                .key    = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c,
2081
                            0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98,
2082
                            0xba, 0xc7, 0x7a, 0x77, 0x17, 0x94, 0x28, 0x63 },
2083
                .klen   = 24,
2084
                .input  = { [0 ... 15] = 0x00 },
2085
                .ilen   = 16,
2086
                .result = { 0x1b, 0x38, 0x6c, 0x02, 0x10, 0xdc, 0xad, 0xcb,
2087
                            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,
2093
                            0x1c, 0xc1, 0xb5, 0x13, 0x7a, 0xe6, 0xb6, 0x04 },
2094
                .klen   = 32,
2095
                .input  = { [0 ... 15] = 0x00 },
2096
                .ilen   = 16,
2097
                .result = { 0x4f, 0x6a, 0x20, 0x38, 0x28, 0x68, 0x97, 0xb9,
2098
                            0xc9, 0x87, 0x01, 0x36, 0x55, 0x33, 0x17, 0xfa },
2099
                .rlen   = 16,
2100
        },
2101
};
2102
 
2103
static struct cipher_testvec cast6_dec_tv_template[] = {
2104
        {
2105
                .key    = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c,
2106
                            0x0a, 0xf7, 0x56, 0x47, 0xf2, 0x9f, 0x61, 0x5d },
2107
                .klen   = 16,
2108
                .input  = { 0xc8, 0x42, 0xa0, 0x89, 0x72, 0xb4, 0x3d, 0x20,
2109
                            0x83, 0x6c, 0x91, 0xd1, 0xb7, 0x53, 0x0f, 0x6b },
2110
                .ilen   = 16,
2111
                .result = { [0 ... 15] = 0x00 },
2112
                .rlen   = 16,
2113
        }, {
2114
                .key    = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c,
2115
                            0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98,
2116
                            0xba, 0xc7, 0x7a, 0x77, 0x17, 0x94, 0x28, 0x63 },
2117
                .klen   = 24,
2118
                .input  = { 0x1b, 0x38, 0x6c, 0x02, 0x10, 0xdc, 0xad, 0xcb,
2119
                            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,
2127
                            0x1c, 0xc1, 0xb5, 0x13, 0x7a, 0xe6, 0xb6, 0x04 },
2128
                .klen   = 32,
2129
                .input  = { 0x4f, 0x6a, 0x20, 0x38, 0x28, 0x68, 0x97, 0xb9,
2130
                            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
2143
#define AES_CBC_ENC_TEST_VECTORS 2
2144
#define AES_CBC_DEC_TEST_VECTORS 2
2145
#define AES_LRW_ENC_TEST_VECTORS 8
2146
#define AES_LRW_DEC_TEST_VECTORS 8
2147
#define AES_XTS_ENC_TEST_VECTORS 4
2148
#define AES_XTS_DEC_TEST_VECTORS 4
2149
 
2150
static struct cipher_testvec aes_enc_tv_template[] = {
2151
        { /* From FIPS-197 */
2152
                .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2153
                            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,
2166
                .input  = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
2167
                            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,
2178
                .input  = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
2179
                            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
 
2187
static struct cipher_testvec aes_dec_tv_template[] = {
2188
        { /* From FIPS-197 */
2189
                .key    = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
2190
                            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,
2206
                .result = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
2207
                            0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
2208
                .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,
2218
                .result = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
2219
                            0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
2220
                .rlen   = 16,
2221
        },
2222
};
2223
 
2224
static 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
 
2255
static 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
 
2286
static 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
 
2537
static 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
 
2789
static 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
 
2986
static 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
 
3183
/* Cast5 test vectors from RFC 2144 */
3184
#define CAST5_ENC_TEST_VECTORS  3
3185
#define CAST5_DEC_TEST_VECTORS  3
3186
 
3187
static struct cipher_testvec cast5_enc_tv_template[] = {
3188
        {
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
 
3214
static struct cipher_testvec cast5_dec_tv_template[] = {
3215
        {
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
 
3241
/*
3242
 * ARC4 test vectors from OpenSSL
3243
 */
3244
#define ARC4_ENC_TEST_VECTORS   7
3245
#define ARC4_DEC_TEST_VECTORS   7
3246
 
3247
static struct cipher_testvec arc4_enc_tv_template[] = {
3248
        {
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
 
3313
static struct cipher_testvec arc4_dec_tv_template[] = {
3314
        {
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
 
3379
/*
3380
 * TEA test vectors
3381
 */
3382
#define TEA_ENC_TEST_VECTORS    4
3383
#define TEA_DEC_TEST_VECTORS    4
3384
 
3385
static struct cipher_testvec tea_enc_tv_template[] = {
3386
        {
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,
3405
                .input  = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74,
3406
                            0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 },
3407
                .ilen   = 16,
3408
                .result = { 0xbe, 0x7a, 0xbb, 0x81, 0x95, 0x2d, 0x1f, 0x1e,
3409
                            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,
3415
                .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,
3418
                            0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 },
3419
                .ilen   = 32,
3420
                .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,
3423
                            0x07, 0x89, 0x73, 0xc2, 0x45, 0x92, 0xc6, 0x90 },
3424
                .rlen   = 32,
3425
        }
3426
};
3427
 
3428
static struct cipher_testvec tea_dec_tv_template[] = {
3429
        {
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,
3449
                            0xdd, 0x89, 0xa1, 0x25, 0x04, 0x21, 0xdf, 0x95 },
3450
                .ilen   = 16,
3451
                .result = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74,
3452
                            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,
3459
                            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 },
3462
                .ilen   = 32,
3463
                .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,
3466
                            0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 },
3467
                .rlen   = 32,
3468
        }
3469
};
3470
 
3471
/*
3472
 * XTEA test vectors
3473
 */
3474
#define XTEA_ENC_TEST_VECTORS   4
3475
#define XTEA_DEC_TEST_VECTORS   4
3476
 
3477
static struct cipher_testvec xtea_enc_tv_template[] = {
3478
        {
3479
                .key    = { [0 ... 15] = 0x00 },
3480
                .klen   = 16,
3481
                .input  = { [0 ... 8] = 0x00 },
3482
                .ilen   = 8,
3483
                .result = { 0xd8, 0xd4, 0xe9, 0xde, 0xd9, 0x1e, 0x13, 0xf7 },
3484
                .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,
3491
                .result = { 0x94, 0xeb, 0xc8, 0x96, 0x84, 0x6a, 0x49, 0xa8 },
3492
                .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,
3497
                .input  = { 0x3e, 0xce, 0xae, 0x22, 0x60, 0x56, 0xa8, 0x9d,
3498
                            0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 },
3499
                .ilen   = 16,
3500
                .result = { 0xe2, 0x04, 0xdb, 0xf2, 0x89, 0x85, 0x9e, 0xea,
3501
                            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,
3507
                .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,
3510
                            0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 },
3511
                .ilen   = 32,
3512
                .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 },
3516
                .rlen   = 32,
3517
        }
3518
};
3519
 
3520
static struct cipher_testvec xtea_dec_tv_template[] = {
3521
        {
3522
                .key    = { [0 ... 15] = 0x00 },
3523
                .klen   = 16,
3524
                .input  = { 0xd8, 0xd4, 0xe9, 0xde, 0xd9, 0x1e, 0x13, 0xf7 },
3525
                .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,
3532
                .input  = { 0x94, 0xeb, 0xc8, 0x96, 0x84, 0x6a, 0x49, 0xa8 },
3533
                .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,
3540
                .input  = { 0x3e, 0xce, 0xae, 0x22, 0x60, 0x56, 0xa8, 0x9d,
3541
                            0x77, 0x4d, 0xd4, 0xb4, 0x87, 0x24, 0xe3, 0x9a },
3542
                .ilen   = 16,
3543
                .result = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74,
3544
                            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,
3550
                .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 },
3554
                .ilen   = 32,
3555
                .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,
3558
                            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
 
3569
static struct cipher_testvec khazad_enc_tv_template[] = {
3570
        {
3571
                .key    = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3572
                            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
 
3615
static struct cipher_testvec khazad_dec_tv_template[] = {
3616
        {
3617
                .key    = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3618
                            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
 
3670
static 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
 
3733
static 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
 
3796
static 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
 
3831
static 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
 
3866
/*
3867
 * XETA test vectors
3868
 */
3869
#define XETA_ENC_TEST_VECTORS   4
3870
#define XETA_DEC_TEST_VECTORS   4
3871
 
3872
static 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
 
3915
static 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
 
3958
/*
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
 
3964
static 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
 
4025
static 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
 
4086
/*
4087
 * 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
 
4094
static 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
 
4131
static 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
 
4168
static 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
 
4199
static 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
/*
4231
 * SEED test vectors
4232
 */
4233
#define SEED_ENC_TEST_VECTORS   4
4234
#define SEED_DEC_TEST_VECTORS   4
4235
 
4236
static 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
 
4278
static 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
/*
4321
 * Compression stuff.
4322
 */
4323
#define COMP_BUF_SIZE           512
4324
 
4325
struct 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
 
4338
static 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
 
4374
static 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
 
4415
static struct hash_testvec michael_mic_tv_template[] = {
4416
        {
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
 
4460
/*
4461
 * CRC32C test vectors
4462
 */
4463
#define CRC32C_TEST_VECTORS 14
4464
 
4465
static 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
/*
4638
 * Cipher speed tests
4639
 */
4640
static 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
 
4661
static 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
 
4682
static 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
 
4703
static 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
 
4714
static 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
 
4735
static 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
 
4752
static 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
 
4763
/*
4764
 * Digest speed tests
4765
 */
4766
static struct hash_speed generic_hash_speed_template[] = {
4767
        { .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
 
4794
static 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
 
4815
#endif  /* _CRYPTO_TCRYPT_H */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.