The usual stuff ...
[linux-2.6/linux-mips.git] / crypto / tcrypt.h
blob35419e45811651c1611dcc3bae06e99efeaf9366
1 /*
2 * Quick & dirty crypto testing module.
4 * This will only exist until we have a better testing mechanism
5 * (e.g. a char device).
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.
16 #ifndef _CRYPTO_TCRYPT_H
17 #define _CRYPTO_TCRYPT_H
19 #define MD5_DIGEST_SIZE 16
20 #define MD4_DIGEST_SIZE 16
21 #define SHA1_DIGEST_SIZE 20
22 #define SHA256_DIGEST_SIZE 32
23 #define SHA384_DIGEST_SIZE 48
24 #define SHA512_DIGEST_SIZE 64
27 * MD4 test vectors from RFC1320
29 #define MD4_TEST_VECTORS 7
31 struct md4_testvec {
32 char plaintext[128];
33 char digest[MD4_DIGEST_SIZE];
34 } md4_tv_template[] = {
35 { "",
36 { 0x31, 0xd6, 0xcf, 0xe0, 0xd1, 0x6a, 0xe9, 0x31,
37 0xb7, 0x3c, 0x59, 0xd7, 0xe0, 0xc0, 0x89, 0xc0 }
40 { "a",
41 { 0xbd, 0xe5, 0x2c, 0xb3, 0x1d, 0xe3, 0x3e, 0x46,
42 0x24, 0x5e, 0x05, 0xfb, 0xdb, 0xd6, 0xfb, 0x24 }
45 { "abc",
46 { 0xa4, 0x48, 0x01, 0x7a, 0xaf, 0x21, 0xd8, 0x52,
47 0x5f, 0xc1, 0x0a, 0xe8, 0x7a, 0xa6, 0x72, 0x9d }
50 { "message digest",
51 { 0xd9, 0x13, 0x0a, 0x81, 0x64, 0x54, 0x9f, 0xe8,
52 0x18, 0x87, 0x48, 0x06, 0xe1, 0xc7, 0x01, 0x4b }
55 { "abcdefghijklmnopqrstuvwxyz",
56 { 0xd7, 0x9e, 0x1c, 0x30, 0x8a, 0xa5, 0xbb, 0xcd,
57 0xee, 0xa8, 0xed, 0x63, 0xdf, 0x41, 0x2d, 0xa9 }
60 { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
61 { 0x04, 0x3f, 0x85, 0x82, 0xf2, 0x41, 0xdb, 0x35,
62 0x1c, 0xe6, 0x27, 0xe1, 0x53, 0xe7, 0xf0, 0xe4 }
65 { "123456789012345678901234567890123456789012345678901234567890123"
66 "45678901234567890",
67 { 0xe3, 0x3b, 0x4d, 0xdc, 0x9c, 0x38, 0xf2, 0x19,
68 0x9c, 0x3e, 0x7b, 0x16, 0x4f, 0xcc, 0x05, 0x36 }
73 * MD5 test vectors from RFC1321
75 #define MD5_TEST_VECTORS 7
77 struct md5_testvec {
78 char plaintext[128];
79 char digest[MD5_DIGEST_SIZE];
80 } md5_tv_template[] = {
81 { "",
82 { 0xd4, 0x1d, 0x8c, 0xd9, 0x8f, 0x00, 0xb2, 0x04,
83 0xe9, 0x80, 0x09, 0x98, 0xec, 0xf8, 0x42, 0x7e } },
85 { "a",
86 { 0x0c, 0xc1, 0x75, 0xb9, 0xc0, 0xf1, 0xb6, 0xa8,
87 0x31, 0xc3, 0x99, 0xe2, 0x69, 0x77, 0x26, 0x61 } },
89 { "abc",
90 { 0x90, 0x01, 0x50, 0x98, 0x3c, 0xd2, 0x4f, 0xb0,
91 0xd6, 0x96, 0x3f, 0x7d, 0x28, 0xe1, 0x7f, 0x72 } },
93 { "message digest",
94 { 0xf9, 0x6b, 0x69, 0x7d, 0x7c, 0xb7, 0x93, 0x8d,
95 0x52, 0x5a, 0x2f, 0x31, 0xaa, 0xf1, 0x61, 0xd0 } },
97 { "abcdefghijklmnopqrstuvwxyz",
98 { 0xc3, 0xfc, 0xd3, 0xd7, 0x61, 0x92, 0xe4, 0x00,
99 0x7d, 0xfb, 0x49, 0x6c, 0xca, 0x67, 0xe1, 0x3b } },
101 { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
102 { 0xd1, 0x74, 0xab, 0x98, 0xd2, 0x77, 0xd9, 0xf5,
103 0xa5, 0x61, 0x1c, 0x2c, 0x9f, 0x41, 0x9d, 0x9f } },
105 { "12345678901234567890123456789012345678901234567890123456789012"
106 "345678901234567890",
107 { 0x57, 0xed, 0xf4, 0xa2, 0x2b, 0xe3, 0xc9, 0x55,
108 0xac, 0x49, 0xda, 0x2e, 0x21, 0x07, 0xb6, 0x7a } }
111 #ifdef CONFIG_CRYPTO_HMAC
113 * HMAC-MD5 test vectors from RFC2202
114 * (These need to be fixed to not use strlen).
116 #define HMAC_MD5_TEST_VECTORS 7
118 struct hmac_md5_testvec {
119 char key[128];
120 char plaintext[128];
121 char digest[MD5_DIGEST_SIZE];
124 struct hmac_md5_testvec hmac_md5_tv_template[] =
128 { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
129 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00},
131 "Hi There",
133 { 0x92, 0x94, 0x72, 0x7a, 0x36, 0x38, 0xbb, 0x1c,
134 0x13, 0xf4, 0x8e, 0xf8, 0x15, 0x8b, 0xfc, 0x9d }
138 { 'J', 'e', 'f', 'e', 0 },
140 "what do ya want for nothing?",
142 { 0x75, 0x0c, 0x78, 0x3e, 0x6a, 0xb0, 0xb5, 0x03,
143 0xea, 0xa8, 0x6e, 0x31, 0x0a, 0x5d, 0xb7, 0x38 }
147 { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
148 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00 },
150 { 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
151 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
152 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
153 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
154 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
155 0x00 },
157 { 0x56, 0xbe, 0x34, 0x52, 0x1d, 0x14, 0x4c, 0x88,
158 0xdb, 0xb8, 0xc7, 0x33, 0xf0, 0xe8, 0xb3, 0xf6 }
162 { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
163 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
164 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x00 },
167 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
168 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
169 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
170 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
171 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
172 0x00 },
174 { 0x69, 0x7e, 0xaf, 0x0a, 0xca, 0x3a, 0x3a, 0xea,
175 0x3a, 0x75, 0x16, 0x47, 0x46, 0xff, 0xaa, 0x79 }
179 { 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
180 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x00 },
182 "Test With Truncation",
184 { 0x56, 0x46, 0x1e, 0xf2, 0x34, 0x2e, 0xdc, 0x00,
185 0xf9, 0xba, 0xb9, 0x95, 0x69, 0x0e, 0xfd, 0x4c }
189 { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
190 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
191 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
192 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
193 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
194 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
195 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
196 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
197 0x00 },
199 "Test Using Larger Than Block-Size Key - Hash Key First",
201 { 0x6b, 0x1a, 0xb7, 0xfe, 0x4b, 0xd7, 0xbf, 0x8f,
202 0x0b, 0x62, 0xe6, 0xce, 0x61, 0xb9, 0xd0, 0xcd }
206 { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
207 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
208 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
209 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
210 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
211 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
212 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
213 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
214 0x00 },
216 "Test Using Larger Than Block-Size Key and Larger Than One "
217 "Block-Size Data",
219 { 0x6f, 0x63, 0x0f, 0xad, 0x67, 0xcd, 0xa0, 0xee,
220 0x1f, 0xb1, 0xf5, 0x62, 0xdb, 0x3a, 0xa5, 0x3e }
223 /* cross page test, need to retain key */
226 { 'J', 'e', 'f', 'e', 0 },
228 "what do ya want for nothing?",
230 { 0x75, 0x0c, 0x78, 0x3e, 0x6a, 0xb0, 0xb5, 0x03,
231 0xea, 0xa8, 0x6e, 0x31, 0x0a, 0x5d, 0xb7, 0x38 }
238 * HMAC-SHA1 test vectors from RFC2202
241 #define HMAC_SHA1_TEST_VECTORS 7
243 struct hmac_sha1_testvec {
244 char key[128];
245 char plaintext[128];
246 char digest[SHA1_DIGEST_SIZE];
247 } hmac_sha1_tv_template[] = {
250 { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
251 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
252 0x00},
254 "Hi There",
256 { 0xb6, 0x17, 0x31, 0x86, 0x55, 0x05, 0x72, 0x64,
257 0xe2, 0x8b, 0xc0, 0xb6, 0xfb ,0x37, 0x8c, 0x8e, 0xf1,
258 0x46, 0xbe, 0x00 }
262 { 'J', 'e', 'f', 'e', 0 },
264 "what do ya want for nothing?",
266 { 0xef, 0xfc, 0xdf, 0x6a, 0xe5, 0xeb, 0x2f, 0xa2, 0xd2, 0x74,
267 0x16, 0xd5, 0xf1, 0x84, 0xdf, 0x9c, 0x25, 0x9a, 0x7c, 0x79 }
272 { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
273 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
274 0x00},
277 { 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
278 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
279 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
280 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
281 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
282 0x00 },
284 { 0x12, 0x5d, 0x73, 0x42, 0xb9, 0xac, 0x11, 0xcd, 0x91, 0xa3,
285 0x9a, 0xf4, 0x8a, 0xa1, 0x7b, 0x4f, 0x63, 0xf1, 0x75, 0xd3 }
290 { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
291 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
292 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x00 },
295 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
296 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
297 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
298 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
299 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
300 0x00 },
302 { 0x4c, 0x90, 0x07, 0xf4, 0x02, 0x62, 0x50, 0xc6, 0xbc, 0x84,
303 0x14, 0xf9, 0xbf, 0x50, 0xc8, 0x6c, 0x2d, 0x72, 0x35, 0xda }
308 { 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
309 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
310 0x00 },
312 "Test With Truncation",
314 { 0x4c, 0x1a, 0x03, 0x42, 0x4b, 0x55, 0xe0, 0x7f, 0xe7, 0xf2,
315 0x7b, 0xe1, 0xd5, 0x8b, 0xb9, 0x32, 0x4a, 0x9a, 0x5a, 0x04 }
320 { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
321 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
322 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
323 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
324 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
325 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
326 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
327 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
328 0x00 },
330 "Test Using Larger Than Block-Size Key - Hash Key First",
332 { 0xaa, 0x4a, 0xe5, 0xe1, 0x52, 0x72, 0xd0, 0x0e, 0x95, 0x70,
333 0x56, 0x37, 0xce, 0x8a, 0x3b, 0x55, 0xed, 0x40, 0x21, 0x12 }
338 { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
339 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
340 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
341 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
342 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
343 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
344 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
345 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
346 0x00 },
348 "Test Using Larger Than Block-Size Key and Larger Than One "
349 "Block-Size Data",
351 { 0xe8, 0xe9, 0x9d, 0x0f, 0x45, 0x23, 0x7d, 0x78, 0x6d, 0x6b,
352 0xba, 0xa7, 0x96, 0x5c, 0x78, 0x08, 0xbb, 0xff, 0x1a, 0x91 }
355 /* cross page test */
357 { 'J', 'e', 'f', 'e', 0 },
359 "what do ya want for nothing?",
361 { 0xef, 0xfc, 0xdf, 0x6a, 0xe5, 0xeb, 0x2f, 0xa2, 0xd2, 0x74,
362 0x16, 0xd5, 0xf1, 0x84, 0xdf, 0x9c, 0x25, 0x9a, 0x7c, 0x79 }
369 * HMAC-SHA256 test vectors from
370 * draft-ietf-ipsec-ciph-sha-256-01.txt
372 #define HMAC_SHA256_TEST_VECTORS 10
374 struct hmac_sha256_testvec {
375 char key[128];
376 char plaintext[128];
377 char digest[SHA256_DIGEST_SIZE];
378 } hmac_sha256_tv_template[] = {
381 { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
382 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
383 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
384 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x00 },
387 { "abc" },
389 { 0xa2, 0x1b, 0x1f, 0x5d, 0x4c, 0xf4, 0xf7, 0x3a,
390 0x4d, 0xd9, 0x39, 0x75, 0x0f, 0x7a, 0x06, 0x6a,
391 0x7f, 0x98, 0xcc, 0x13, 0x1c, 0xb1, 0x6a, 0x66,
392 0x92, 0x75, 0x90, 0x21, 0xcf, 0xab, 0x81, 0x81 },
397 { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
398 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
399 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
400 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x00 },
402 { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" },
404 { 0x10, 0x4f, 0xdc, 0x12, 0x57, 0x32, 0x8f, 0x08,
405 0x18, 0x4b, 0xa7, 0x31, 0x31, 0xc5, 0x3c, 0xae,
406 0xe6, 0x98, 0xe3, 0x61, 0x19, 0x42, 0x11, 0x49,
407 0xea, 0x8c, 0x71, 0x24, 0x56, 0x69, 0x7d, 0x30 }
411 { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
412 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
413 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
414 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x00 },
416 { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
417 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" },
419 { 0x47, 0x03, 0x05, 0xfc, 0x7e, 0x40, 0xfe, 0x34,
420 0xd3, 0xee, 0xb3, 0xe7, 0x73, 0xd9, 0x5a, 0xab,
421 0x73, 0xac, 0xf0, 0xfd, 0x06, 0x04, 0x47, 0xa5,
422 0xeb, 0x45, 0x95, 0xbf, 0x33, 0xa9, 0xd1, 0xa3 }
426 { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
427 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
428 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
429 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x00 },
431 { "Hi There" },
433 { 0x19, 0x8a, 0x60, 0x7e, 0xb4, 0x4b, 0xfb, 0xc6,
434 0x99, 0x03, 0xa0, 0xf1, 0xcf, 0x2b, 0xbd, 0xc5,
435 0xba, 0x0a, 0xa3, 0xf3, 0xd9, 0xae, 0x3c, 0x1c,
436 0x7a, 0x3b, 0x16, 0x96, 0xa0, 0xb6, 0x8c, 0xf7 }
440 { "Jefe" },
442 { "what do ya want for nothing?" },
444 { 0x5b, 0xdc, 0xc1, 0x46, 0xbf, 0x60, 0x75, 0x4e,
445 0x6a, 0x04, 0x24, 0x26, 0x08, 0x95, 0x75, 0xc7,
446 0x5a, 0x00, 0x3f, 0x08, 0x9d, 0x27, 0x39, 0x83,
447 0x9d, 0xec, 0x58, 0xb9, 0x64, 0xec, 0x38, 0x43 }
451 { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
452 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
453 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
454 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00 },
456 { 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
457 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
458 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
459 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
460 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
461 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
462 0xdd, 0xdd, 0x00 },
464 { 0xcd, 0xcb, 0x12, 0x20, 0xd1, 0xec, 0xcc, 0xea,
465 0x91, 0xe5, 0x3a, 0xba, 0x30, 0x92, 0xf9, 0x62,
466 0xe5, 0x49, 0xfe, 0x6c, 0xe9, 0xed, 0x7f, 0xdc,
467 0x43, 0x19, 0x1f, 0xbd, 0xe4, 0x5c, 0x30, 0xb0 }
471 { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
472 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
473 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
474 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
475 0x21, 0x22, 0x23, 0x24, 0x25, 0x00 },
477 { 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
478 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
479 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
480 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
481 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
482 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
483 0xcd, 0xcd, 0x00 },
485 { 0xd4, 0x63, 0x3c, 0x17, 0xf6, 0xfb, 0x8d, 0x74,
486 0x4c, 0x66, 0xde, 0xe0, 0xf8, 0xf0, 0x74, 0x55,
487 0x6e, 0xc4, 0xaf, 0x55, 0xef, 0x07, 0x99, 0x85,
488 0x41, 0x46, 0x8e, 0xb4, 0x9b, 0xd2, 0xe9, 0x17 }
492 { 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
493 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
494 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
495 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x00 },
497 { "Test With Truncation" },
499 { 0x75, 0x46, 0xaf, 0x01, 0x84, 0x1f, 0xc0, 0x9b,
500 0x1a, 0xb9, 0xc3, 0x74, 0x9a, 0x5f, 0x1c, 0x17,
501 0xd4, 0xf5, 0x89, 0x66, 0x8a, 0x58, 0x7b, 0x27,
502 0x00, 0xa9, 0xc9, 0x7c, 0x11, 0x93, 0xcf, 0x42 }
506 { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
507 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
508 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
509 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
510 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
511 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
512 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
513 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
514 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
515 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00 },
517 { "Test Using Larger Than Block-Size Key - Hash Key First" },
519 { 0x69, 0x53, 0x02, 0x5e, 0xd9, 0x6f, 0x0c, 0x09,
520 0xf8, 0x0a, 0x96, 0xf7, 0x8e, 0x65, 0x38, 0xdb,
521 0xe2, 0xe7, 0xb8, 0x20, 0xe3, 0xdd, 0x97, 0x0e,
522 0x7d, 0xdd, 0x39, 0x09, 0x1b, 0x32, 0x35, 0x2f }
526 { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
527 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
528 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
529 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
530 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
531 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
532 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
533 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
534 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
535 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00 },
537 { "Test Using Larger Than Block-Size Key and Larger Than "
538 "One Block-Size Data" },
540 { 0x63, 0x55, 0xac, 0x22, 0xe8, 0x90, 0xd0, 0xa3,
541 0xc8, 0x48, 0x1a, 0x5c, 0xa4, 0x82, 0x5b, 0xc8,
542 0x84, 0xd3, 0xe7, 0xa1, 0xff, 0x98, 0xa2, 0xfc,
543 0x2a, 0xc7, 0xd8, 0xe0, 0x64, 0xc3, 0xb2, 0xe6 }
548 #endif /* CONFIG_CRYPTO_HMAC */
551 * SHA1 test vectors from from FIPS PUB 180-1
553 #define SHA1_TEST_VECTORS 2
555 struct sha1_testvec {
556 char plaintext[128];
557 char digest[SHA1_DIGEST_SIZE];
558 } sha1_tv_template[] = {
559 { "abc",
560 { 0xA9, 0x99, 0x3E, 0x36, 0x47, 0x06, 0x81, 0x6A, 0xBA, 0x3E,
561 0x25, 0x71, 0x78, 0x50, 0xC2, 0x6C ,0x9C, 0xD0, 0xD8, 0x9D }
564 { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
566 { 0x84, 0x98, 0x3E, 0x44, 0x1C, 0x3B, 0xD2, 0x6E ,0xBA, 0xAE,
567 0x4A, 0xA1, 0xF9, 0x51, 0x29, 0xE5, 0xE5, 0x46, 0x70, 0xF1 }
572 * SHA256 test vectors from from NIST
574 #define SHA256_TEST_VECTORS 2
576 struct sha256_testvec {
577 char plaintext[128];
578 char digest[SHA256_DIGEST_SIZE];
579 } sha256_tv_template[] = {
580 { "abc",
581 { 0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea,
582 0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23,
583 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c,
584 0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad }
587 { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
588 { 0x24, 0x8d, 0x6a, 0x61, 0xd2, 0x06, 0x38, 0xb8,
589 0xe5, 0xc0, 0x26, 0x93, 0x0c, 0x3e, 0x60, 0x39,
590 0xa3, 0x3c, 0xe4, 0x59, 0x64, 0xff, 0x21, 0x67,
591 0xf6, 0xec, 0xed, 0xd4, 0x19, 0xdb, 0x06, 0xc1 }
596 * SHA384 test vectors from from NIST and kerneli
598 #define SHA384_TEST_VECTORS 4
600 struct sha384_testvec {
601 char plaintext[128];
602 char digest[SHA384_DIGEST_SIZE];
603 } sha384_tv_template[] = {
605 { "abc",
606 { 0xcb, 0x00, 0x75, 0x3f, 0x45, 0xa3, 0x5e, 0x8b,
607 0xb5, 0xa0, 0x3d, 0x69, 0x9a, 0xc6, 0x50, 0x07,
608 0x27, 0x2c, 0x32, 0xab, 0x0e, 0xde, 0xd1, 0x63,
609 0x1a, 0x8b, 0x60, 0x5a, 0x43, 0xff, 0x5b, 0xed,
610 0x80, 0x86, 0x07, 0x2b, 0xa1, 0xe7, 0xcc, 0x23,
611 0x58, 0xba, 0xec, 0xa1, 0x34, 0xc8, 0x25, 0xa7 }
614 { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
615 { 0x33, 0x91, 0xfd, 0xdd, 0xfc, 0x8d, 0xc7, 0x39,
616 0x37, 0x07, 0xa6, 0x5b, 0x1b, 0x47, 0x09, 0x39,
617 0x7c, 0xf8, 0xb1, 0xd1, 0x62, 0xaf, 0x05, 0xab,
618 0xfe, 0x8f, 0x45, 0x0d, 0xe5, 0xf3, 0x6b, 0xc6,
619 0xb0, 0x45, 0x5a, 0x85, 0x20, 0xbc, 0x4e, 0x6f,
620 0x5f, 0xe9, 0x5b, 0x1f, 0xe3, 0xc8, 0x45, 0x2b }
623 { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
624 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
625 { 0x09, 0x33, 0x0c, 0x33, 0xf7, 0x11, 0x47, 0xe8,
626 0x3d, 0x19, 0x2f, 0xc7, 0x82, 0xcd, 0x1b, 0x47,
627 0x53, 0x11, 0x1b, 0x17, 0x3b, 0x3b, 0x05, 0xd2,
628 0x2f, 0xa0, 0x80, 0x86, 0xe3, 0xb0, 0xf7, 0x12,
629 0xfc, 0xc7, 0xc7, 0x1a, 0x55, 0x7e, 0x2d, 0xb9,
630 0x66, 0xc3, 0xe9, 0xfa, 0x91, 0x74, 0x60, 0x39 }
633 { "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
634 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
635 { 0x3d, 0x20, 0x89, 0x73, 0xab, 0x35, 0x08, 0xdb,
636 0xbd, 0x7e, 0x2c, 0x28, 0x62, 0xba, 0x29, 0x0a,
637 0xd3, 0x01, 0x0e, 0x49, 0x78, 0xc1, 0x98, 0xdc,
638 0x4d, 0x8f, 0xd0, 0x14, 0xe5, 0x82, 0x82, 0x3a,
639 0x89, 0xe1, 0x6f, 0x9b, 0x2a, 0x7b, 0xbc, 0x1a,
640 0xc9, 0x38, 0xe2, 0xd1, 0x99, 0xe8, 0xbe, 0xa4 }
645 * SHA512 test vectors from from NIST and kerneli
647 #define SHA512_TEST_VECTORS 4
649 struct sha512_testvec {
650 char plaintext[128];
651 char digest[SHA512_DIGEST_SIZE];
652 } sha512_tv_template[] = {
654 { "abc",
655 { 0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba,
656 0xcc, 0x41, 0x73, 0x49, 0xae, 0x20, 0x41, 0x31,
657 0x12, 0xe6, 0xfa, 0x4e, 0x89, 0xa9, 0x7e, 0xa2,
658 0x0a, 0x9e, 0xee, 0xe6, 0x4b, 0x55, 0xd3, 0x9a,
659 0x21, 0x92, 0x99, 0x2a, 0x27, 0x4f, 0xc1, 0xa8,
660 0x36, 0xba, 0x3c, 0x23, 0xa3, 0xfe, 0xeb, 0xbd,
661 0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, 0xe8, 0x0e,
662 0x2a, 0x9a, 0xc9, 0x4f, 0xa5, 0x4c, 0xa4, 0x9f }
665 { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
666 { 0x20, 0x4a, 0x8f, 0xc6, 0xdd, 0xa8, 0x2f, 0x0a,
667 0x0c, 0xed, 0x7b, 0xeb, 0x8e, 0x08, 0xa4, 0x16,
668 0x57, 0xc1, 0x6e, 0xf4, 0x68, 0xb2, 0x28, 0xa8,
669 0x27, 0x9b, 0xe3, 0x31, 0xa7, 0x03, 0xc3, 0x35,
670 0x96, 0xfd, 0x15, 0xc1, 0x3b, 0x1b, 0x07, 0xf9,
671 0xaa, 0x1d, 0x3b, 0xea, 0x57, 0x78, 0x9c, 0xa0,
672 0x31, 0xad, 0x85, 0xc7, 0xa7, 0x1d, 0xd7, 0x03,
673 0x54, 0xec, 0x63, 0x12, 0x38, 0xca, 0x34, 0x45 }
676 { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
677 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
678 { 0x8e, 0x95, 0x9b, 0x75, 0xda, 0xe3, 0x13, 0xda,
679 0x8c, 0xf4, 0xf7, 0x28, 0x14, 0xfc, 0x14, 0x3f,
680 0x8f, 0x77, 0x79, 0xc6, 0xeb, 0x9f, 0x7f, 0xa1,
681 0x72, 0x99, 0xae, 0xad, 0xb6, 0x88, 0x90, 0x18,
682 0x50, 0x1d, 0x28, 0x9e, 0x49, 0x00, 0xf7, 0xe4,
683 0x33, 0x1b, 0x99, 0xde, 0xc4, 0xb5, 0x43, 0x3a,
684 0xc7, 0xd3, 0x29, 0xee, 0xb6, 0xdd, 0x26, 0x54,
685 0x5e, 0x96, 0xe5, 0x5b, 0x87, 0x4b, 0xe9, 0x09 }
688 { "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
689 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
690 { 0x93, 0x0d, 0x0c, 0xef, 0xcb, 0x30, 0xff, 0x11,
691 0x33, 0xb6, 0x89, 0x81, 0x21, 0xf1, 0xcf, 0x3d,
692 0x27, 0x57, 0x8a, 0xfc, 0xaf, 0xe8, 0x67, 0x7c,
693 0x52, 0x57, 0xcf, 0x06, 0x99, 0x11, 0xf7, 0x5d,
694 0x8f, 0x58, 0x31, 0xb5, 0x6e, 0xbf, 0xda, 0x67,
695 0xb2, 0x78, 0xe6, 0x6d, 0xff, 0x8b, 0x84, 0xfe,
696 0x2b, 0x28, 0x70, 0xf7, 0x42, 0xa5, 0x80, 0xd8,
697 0xed, 0xb4, 0x19, 0x87, 0x23, 0x28, 0x50, 0xc9
703 * DES test vectors.
705 #define DES_ENC_TEST_VECTORS 5
706 #define DES_DEC_TEST_VECTORS 2
707 #define DES_CBC_ENC_TEST_VECTORS 4
708 #define DES_CBC_DEC_TEST_VECTORS 3
709 #define DES3_EDE_ENC_TEST_VECTORS 3
710 #define DES3_EDE_DEC_TEST_VECTORS 3
712 struct des_tv {
713 unsigned int len;
714 int fail;
715 char key[24];
716 char iv[8];
717 char plaintext[128];
718 char result[128];
721 struct des_tv des_enc_tv_template[] = {
723 /* From Applied Cryptography */
725 8, 0,
727 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
728 { 0 },
729 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 },
730 { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d }
733 /* Same key, different plaintext block */
735 8, 0,
737 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
738 { 0 },
739 { 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 },
740 { 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b }
743 /* Sbox test from NBS */
745 8, 0,
747 { 0x7C, 0xA1, 0x10, 0x45, 0x4A, 0x1A, 0x6E, 0x57 },
748 { 0 },
749 { 0x01, 0xA1, 0xD6, 0xD0, 0x39, 0x77, 0x67, 0x42 },
750 { 0x69, 0x0F, 0x5B, 0x0D, 0x9A, 0x26, 0x93, 0x9B }
753 /* Three blocks */
755 24, 0,
758 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
760 { 0 },
762 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
763 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
764 0xca, 0xfe, 0xba, 0xbe, 0xfe, 0xed, 0xbe, 0xef },
766 { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
767 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b,
768 0xb4, 0x99, 0x26, 0xf7, 0x1f, 0xe1, 0xd4, 0x90 },
771 /* Weak key */
773 8, 1,
775 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 },
776 { 0 },
777 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 },
778 { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d }
781 /* Two blocks -- for testing encryption across pages */
783 16, 0,
786 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
788 { 0 },
790 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
791 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 },
793 { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
794 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b }
797 /* Two blocks -- for testing decryption across pages */
799 16, 0,
802 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
804 { 0 },
806 { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
807 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b },
809 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
810 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 },
813 /* Four blocks -- for testing encryption with chunking */
815 24, 0,
818 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
820 { 0 },
822 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
823 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
824 0xca, 0xfe, 0xba, 0xbe, 0xfe, 0xed, 0xbe, 0xef,
825 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 },
827 { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
828 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b,
829 0xb4, 0x99, 0x26, 0xf7, 0x1f, 0xe1, 0xd4, 0x90,
830 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b },
835 struct des_tv des_dec_tv_template[] = {
837 /* From Applied Cryptography */
839 8, 0,
841 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
842 { 0 },
843 { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d },
844 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 },
847 /* Sbox test from NBS */
849 8, 0,
851 { 0x7C, 0xA1, 0x10, 0x45, 0x4A, 0x1A, 0x6E, 0x57 },
852 { 0 },
853 { 0x69, 0x0F, 0x5B, 0x0D, 0x9A, 0x26, 0x93, 0x9B },
854 { 0x01, 0xA1, 0xD6, 0xD0, 0x39, 0x77, 0x67, 0x42 }
857 /* Two blocks, for chunking test */
859 16, 0,
861 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
862 { 0 },
864 { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d,
865 0x69, 0x0F, 0x5B, 0x0D, 0x9A, 0x26, 0x93, 0x9B },
867 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
868 0xa3, 0x99, 0x7b, 0xca, 0xaf, 0x69, 0xa0, 0xf5 }
873 struct des_tv des_cbc_enc_tv_template[] = {
874 /* From OpenSSL */
876 24, 0,
878 {0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef},
879 {0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10},
881 { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20,
882 0x4E, 0x6F, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74,
883 0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20,
884 0x66, 0x6F, 0x72, 0x20, 0x00, 0x31, 0x00, 0x00 },
886 { 0xcc, 0xd1, 0x73, 0xff, 0xab, 0x20, 0x39, 0xf4,
887 0xac, 0xd8, 0xae, 0xfd, 0xdf, 0xd8, 0xa1, 0xeb,
888 0x46, 0x8e, 0x91, 0x15, 0x78, 0x88, 0xba, 0x68,
889 0x1d, 0x26, 0x93, 0x97, 0xf7, 0xfe, 0x62, 0xb4 }
892 /* FIPS Pub 81 */
894 8, 0,
896 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
897 { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef },
898 { 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74 },
899 { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c },
904 8, 0,
906 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
907 { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c },
908 { 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 },
909 { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
913 8, 0,
915 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
916 { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
917 { 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20 },
918 { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 },
921 /* Copy of openssl vector for chunk testing */
923 /* From OpenSSL */
925 24, 0,
927 {0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef},
928 {0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10},
930 { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20,
931 0x4E, 0x6F, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74,
932 0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20,
933 0x66, 0x6F, 0x72, 0x20, 0x00, 0x31, 0x00, 0x00 },
935 { 0xcc, 0xd1, 0x73, 0xff, 0xab, 0x20, 0x39, 0xf4,
936 0xac, 0xd8, 0xae, 0xfd, 0xdf, 0xd8, 0xa1, 0xeb,
937 0x46, 0x8e, 0x91, 0x15, 0x78, 0x88, 0xba, 0x68,
938 0x1d, 0x26, 0x93, 0x97, 0xf7, 0xfe, 0x62, 0xb4 }
944 struct des_tv des_cbc_dec_tv_template[] = {
946 /* FIPS Pub 81 */
948 8, 0,
950 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
951 { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef },
952 { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c },
953 { 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74 },
957 8, 0,
959 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
960 { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c },
961 { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
962 { 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 },
966 8, 0,
968 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
969 { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
970 { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 },
971 { 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20 },
974 /* Copy of above, for chunk testing */
977 8, 0,
979 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef },
980 { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f },
981 { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 },
982 { 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20 },
987 * We really need some more test vectors, especially for DES3 CBC.
989 struct des_tv des3_ede_enc_tv_template[] = {
991 /* These are from openssl */
993 8, 0,
995 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
996 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
997 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
999 { 0 },
1001 { 0x73, 0x6F, 0x6D, 0x65, 0x64, 0x61, 0x74, 0x61 },
1003 { 0x18, 0xd7, 0x48, 0xe5, 0x63, 0x62, 0x05, 0x72 },
1007 8, 0,
1009 { 0x03,0x52,0x02,0x07,0x67,0x20,0x82,0x17,
1010 0x86,0x02,0x87,0x66,0x59,0x08,0x21,0x98,
1011 0x64,0x05,0x6A,0xBD,0xFE,0xA9,0x34,0x57 },
1013 { 0 },
1015 { 0x73,0x71,0x75,0x69,0x67,0x67,0x6C,0x65 },
1017 { 0xc0,0x7d,0x2a,0x0f,0xa5,0x66,0xfa,0x30 }
1022 8, 0,
1024 { 0x10,0x46,0x10,0x34,0x89,0x98,0x80,0x20,
1025 0x91,0x07,0xD0,0x15,0x89,0x19,0x01,0x01,
1026 0x19,0x07,0x92,0x10,0x98,0x1A,0x01,0x01 },
1028 { 0 },
1030 { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
1032 { 0xe1,0xef,0x62,0xc3,0x32,0xfe,0x82,0x5b }
1036 struct des_tv des3_ede_dec_tv_template[] = {
1038 /* These are from openssl */
1040 8, 0,
1042 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
1043 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
1044 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
1046 { 0 },
1049 { 0x18, 0xd7, 0x48, 0xe5, 0x63, 0x62, 0x05, 0x72 },
1051 { 0x73, 0x6F, 0x6D, 0x65, 0x64, 0x61, 0x74, 0x61 },
1055 8, 0,
1057 { 0x03,0x52,0x02,0x07,0x67,0x20,0x82,0x17,
1058 0x86,0x02,0x87,0x66,0x59,0x08,0x21,0x98,
1059 0x64,0x05,0x6A,0xBD,0xFE,0xA9,0x34,0x57 },
1061 { 0 },
1063 { 0xc0,0x7d,0x2a,0x0f,0xa5,0x66,0xfa,0x30 },
1065 { 0x73,0x71,0x75,0x69,0x67,0x67,0x6C,0x65 },
1071 8, 0,
1073 { 0x10,0x46,0x10,0x34,0x89,0x98,0x80,0x20,
1074 0x91,0x07,0xD0,0x15,0x89,0x19,0x01,0x01,
1075 0x19,0x07,0x92,0x10,0x98,0x1A,0x01,0x01 },
1077 { 0 },
1079 { 0xe1,0xef,0x62,0xc3,0x32,0xfe,0x82,0x5b },
1081 { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
1086 * Blowfish test vectors.
1088 #define BF_ENC_TEST_VECTORS 6
1089 #define BF_DEC_TEST_VECTORS 6
1090 #define BF_CBC_ENC_TEST_VECTORS 1
1091 #define BF_CBC_DEC_TEST_VECTORS 1
1093 struct bf_tv {
1094 unsigned int keylen;
1095 unsigned int plen;
1096 unsigned int rlen;
1097 int fail;
1098 char key[56];
1099 char iv[8];
1100 char plaintext[32];
1101 char result[32];
1104 struct bf_tv bf_enc_tv_template[] = {
1106 /* DES test vectors from OpenSSL */
1108 8, 8, 8, 0,
1109 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },
1110 { 0 },
1111 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1112 { 0x4E, 0xF9, 0x97, 0x45, 0x61, 0x98, 0xDD, 0x78 },
1116 8, 8, 8, 0,
1117 { 0x1F, 0x1F, 0x1F, 0x1F, 0x0E, 0x0E, 0x0E, 0x0E, },
1118 { 0 },
1119 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF },
1120 { 0xA7, 0x90, 0x79, 0x51, 0x08, 0xEA, 0x3C, 0xAE },
1124 8, 8, 8, 0,
1125 { 0xF0, 0xE1, 0xD2, 0xC3, 0xB4, 0xA5, 0x96, 0x87, },
1126 { 0 },
1127 { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 },
1128 { 0xE8, 0x7A, 0x24, 0x4E, 0x2C, 0xC8, 0x5E, 0x82 }
1131 /* Vary the keylength... */
1134 16, 8, 8, 0,
1135 { 0xF0, 0xE1, 0xD2, 0xC3, 0xB4, 0xA5, 0x96, 0x87,
1136 0x78, 0x69, 0x5A, 0x4B, 0x3C, 0x2D, 0x1E, 0x0F },
1137 { 0 },
1138 { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 },
1139 { 0x93, 0x14, 0x28, 0x87, 0xEE, 0x3B, 0xE1, 0x5C }
1143 21, 8, 8, 0,
1144 { 0xF0, 0xE1, 0xD2, 0xC3, 0xB4, 0xA5, 0x96, 0x87,
1145 0x78, 0x69, 0x5A, 0x4B, 0x3C, 0x2D, 0x1E, 0x0F,
1146 0x00, 0x11, 0x22, 0x33, 0x44 },
1147 { 0 },
1148 { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 },
1149 { 0xE6, 0xF5, 0x1E, 0xD7, 0x9B, 0x9D, 0xB2, 0x1F }
1152 /* Generated with bf488 */
1154 56, 8, 8, 0,
1155 { 0xF0, 0xE1, 0xD2, 0xC3, 0xB4, 0xA5, 0x96, 0x87,
1156 0x78, 0x69, 0x5A, 0x4B, 0x3C, 0x2D, 0x1E, 0x0F,
1157 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
1158 0x04, 0x68, 0x91, 0x04, 0xC2, 0xFD, 0x3B, 0x2F,
1159 0x58, 0x40, 0x23, 0x64, 0x1A, 0xBA, 0x61, 0x76,
1160 0x1F, 0x1F, 0x1F, 0x1F, 0x0E, 0x0E, 0x0E, 0x0E,
1161 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
1162 { 0 },
1163 { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 },
1164 { 0xc0, 0x45, 0x04, 0x01, 0x2e, 0x4e, 0x1f, 0x53 }
1169 struct bf_tv bf_dec_tv_template[] = {
1171 /* DES test vectors from OpenSSL */
1173 8, 8, 8, 0,
1174 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },
1175 { 0 },
1176 { 0x4E, 0xF9, 0x97, 0x45, 0x61, 0x98, 0xDD, 0x78 },
1177 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
1181 8, 8, 8, 0,
1182 { 0x1F, 0x1F, 0x1F, 0x1F, 0x0E, 0x0E, 0x0E, 0x0E, },
1183 { 0 },
1184 { 0xA7, 0x90, 0x79, 0x51, 0x08, 0xEA, 0x3C, 0xAE },
1185 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF }
1189 8, 8, 8, 0,
1190 { 0xF0, 0xE1, 0xD2, 0xC3, 0xB4, 0xA5, 0x96, 0x87, },
1191 { 0 },
1192 { 0xE8, 0x7A, 0x24, 0x4E, 0x2C, 0xC8, 0x5E, 0x82 },
1193 { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 }
1196 /* Vary the keylength... */
1199 16, 8, 8, 0,
1200 { 0xF0, 0xE1, 0xD2, 0xC3, 0xB4, 0xA5, 0x96, 0x87,
1201 0x78, 0x69, 0x5A, 0x4B, 0x3C, 0x2D, 0x1E, 0x0F },
1202 { 0 },
1203 { 0x93, 0x14, 0x28, 0x87, 0xEE, 0x3B, 0xE1, 0x5C },
1204 { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 }
1208 21, 8, 8, 0,
1209 { 0xF0, 0xE1, 0xD2, 0xC3, 0xB4, 0xA5, 0x96, 0x87,
1210 0x78, 0x69, 0x5A, 0x4B, 0x3C, 0x2D, 0x1E, 0x0F,
1211 0x00, 0x11, 0x22, 0x33, 0x44 },
1212 { 0 },
1213 { 0xE6, 0xF5, 0x1E, 0xD7, 0x9B, 0x9D, 0xB2, 0x1F },
1214 { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 }
1217 /* Generated with bf488, using OpenSSL, Libgcrypt and Nettle */
1219 56, 8, 8, 0,
1220 { 0xF0, 0xE1, 0xD2, 0xC3, 0xB4, 0xA5, 0x96, 0x87,
1221 0x78, 0x69, 0x5A, 0x4B, 0x3C, 0x2D, 0x1E, 0x0F,
1222 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
1223 0x04, 0x68, 0x91, 0x04, 0xC2, 0xFD, 0x3B, 0x2F,
1224 0x58, 0x40, 0x23, 0x64, 0x1A, 0xBA, 0x61, 0x76,
1225 0x1F, 0x1F, 0x1F, 0x1F, 0x0E, 0x0E, 0x0E, 0x0E,
1226 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
1227 { 0 },
1228 { 0xc0, 0x45, 0x04, 0x01, 0x2e, 0x4e, 0x1f, 0x53 },
1229 { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 }
1233 struct bf_tv bf_cbc_enc_tv_template[] = {
1235 /* From OpenSSL */
1237 16, 32, 32, 0,
1239 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
1240 0xF0, 0xE1, 0xD2, 0xC3, 0xB4, 0xA5, 0x96, 0x87 },
1242 { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 },
1244 { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20,
1245 0x4E, 0x6F, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74,
1246 0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20,
1247 0x66, 0x6F, 0x72, 0x20, 0x00, 0x00, 0x00, 0x00 },
1249 { 0x6B, 0x77, 0xB4, 0xD6, 0x30, 0x06, 0xDE, 0xE6,
1250 0x05, 0xB1, 0x56, 0xE2, 0x74, 0x03, 0x97, 0x93,
1251 0x58, 0xDE, 0xB9, 0xE7, 0x15, 0x46, 0x16, 0xD9,
1252 0x59, 0xF1, 0x65, 0x2B, 0xD5, 0xFF, 0x92, 0xCC }
1256 struct bf_tv bf_cbc_dec_tv_template[] = {
1258 /* From OpenSSL */
1260 16, 32, 32, 0,
1262 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
1263 0xF0, 0xE1, 0xD2, 0xC3, 0xB4, 0xA5, 0x96, 0x87 },
1265 { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 },
1267 { 0x6B, 0x77, 0xB4, 0xD6, 0x30, 0x06, 0xDE, 0xE6,
1268 0x05, 0xB1, 0x56, 0xE2, 0x74, 0x03, 0x97, 0x93,
1269 0x58, 0xDE, 0xB9, 0xE7, 0x15, 0x46, 0x16, 0xD9,
1270 0x59, 0xF1, 0x65, 0x2B, 0xD5, 0xFF, 0x92, 0xCC },
1272 { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20,
1273 0x4E, 0x6F, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74,
1274 0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20,
1275 0x66, 0x6F, 0x72, 0x20, 0x00, 0x00, 0x00, 0x00 }
1280 * Twofish test vectors.
1282 #define TF_ENC_TEST_VECTORS 3
1283 #define TF_DEC_TEST_VECTORS 3
1284 #define TF_CBC_ENC_TEST_VECTORS 4
1285 #define TF_CBC_DEC_TEST_VECTORS 4
1287 struct tf_tv {
1288 unsigned int keylen;
1289 unsigned int plen;
1290 unsigned int rlen;
1291 int fail;
1292 char key[32];
1293 char iv[16];
1294 char plaintext[48];
1295 char result[48];
1298 struct tf_tv tf_enc_tv_template[] = {
1300 16, 16, 16, 0,
1301 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1302 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1303 { 0 },
1304 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1305 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1306 { 0x9F, 0x58, 0x9F, 0x5C, 0xF6, 0x12, 0x2C, 0x32,
1307 0xB6, 0xBF, 0xEC, 0x2F, 0x2A, 0xE8, 0xC3, 0x5A }
1310 24, 16, 16, 0,
1311 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
1312 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10,
1313 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 },
1314 { 0 },
1315 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1316 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1317 { 0xCF, 0xD1, 0xD2, 0xE5, 0xA9, 0xBE, 0x9C, 0xDF,
1318 0x50, 0x1F, 0x13, 0xB8, 0x92, 0xBD, 0x22, 0x48 }
1321 32, 16, 16, 0,
1322 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
1323 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10,
1324 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
1325 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF },
1326 { 0 },
1327 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1328 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1329 { 0x37, 0x52, 0x7B, 0xE0, 0x05, 0x23, 0x34, 0xB8,
1330 0x9F, 0x0C, 0xFC, 0xCA, 0xE8, 0x7C, 0xFA, 0x20 }
1334 struct tf_tv tf_dec_tv_template[] = {
1336 16, 16, 16, 0,
1337 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1338 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1339 { 0 },
1340 { 0x9F, 0x58, 0x9F, 0x5C, 0xF6, 0x12, 0x2C, 0x32,
1341 0xB6, 0xBF, 0xEC, 0x2F, 0x2A, 0xE8, 0xC3, 0x5A },
1342 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1343 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1346 24, 16, 16, 0,
1347 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
1348 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10,
1349 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 },
1350 { 0 },
1351 { 0xCF, 0xD1, 0xD2, 0xE5, 0xA9, 0xBE, 0x9C, 0xDF,
1352 0x50, 0x1F, 0x13, 0xB8, 0x92, 0xBD, 0x22, 0x48 },
1353 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1354 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1357 32, 16, 16, 0,
1358 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
1359 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10,
1360 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
1361 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF },
1362 { 0 },
1363 { 0x37, 0x52, 0x7B, 0xE0, 0x05, 0x23, 0x34, 0xB8,
1364 0x9F, 0x0C, 0xFC, 0xCA, 0xE8, 0x7C, 0xFA, 0x20 },
1365 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1366 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1370 struct tf_tv tf_cbc_enc_tv_template[] = {
1371 /* Generated with Nettle */
1373 16, 16, 16, 0,
1375 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1376 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1377 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1378 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1379 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1380 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1381 { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1382 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
1386 16, 16, 16, 0,
1388 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1389 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1390 { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1391 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
1392 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1393 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1394 { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
1395 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 },
1399 16, 16, 16, 0,
1401 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1402 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1403 { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
1404 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 },
1405 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1406 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1407 { 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26,
1408 0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 },
1412 16, 48, 48, 0,
1414 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1415 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1416 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1417 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1418 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1419 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1420 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1421 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1422 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1423 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1424 { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1425 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a,
1426 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
1427 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19,
1428 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26,
1429 0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 },
1433 struct tf_tv tf_cbc_dec_tv_template[] = {
1434 /* Reverse of the first four above */
1436 16, 16, 16, 0,
1438 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1439 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1440 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1441 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1442 { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1443 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
1444 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1445 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1449 16, 16, 16, 0,
1451 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1452 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1453 { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1454 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a },
1455 { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
1456 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 },
1457 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1458 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1462 16, 16, 16, 0,
1464 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1465 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1466 { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
1467 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 },
1468 { 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26,
1469 0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 },
1470 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1471 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1475 16, 48, 48, 0,
1477 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1478 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1479 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1480 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1481 { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32,
1482 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a,
1483 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e,
1484 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19,
1485 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26,
1486 0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 },
1487 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1488 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1489 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1490 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1491 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1492 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1497 * Serpent test vectors. These are backwards because Serpent writes
1498 * octect sequences in right-to-left mode.
1500 #define SERPENT_ENC_TEST_VECTORS 4
1501 #define SERPENT_DEC_TEST_VECTORS 4
1503 struct serpent_tv {
1504 unsigned int keylen, fail;
1505 u8 key[32], plaintext[16], result[16];
1508 struct serpent_tv serpent_enc_tv_template[] =
1511 0, 0,
1512 { 0 },
1513 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1514 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1515 { 0x12, 0x07, 0xfc, 0xce, 0x9b, 0xd0, 0xd6, 0x47,
1516 0x6a, 0xe9, 0x8f, 0xbe, 0xd1, 0x43, 0xa0, 0xe2 }
1519 16, 0,
1520 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1521 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1522 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1523 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1524 { 0x4c, 0x7d, 0x8a, 0x32, 0x80, 0x72, 0xa2, 0x2c,
1525 0x82, 0x3e, 0x4a, 0x1f, 0x3a, 0xcd, 0xa1, 0x6d }
1528 32, 0,
1529 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1530 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1531 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
1532 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
1533 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1534 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1535 { 0xde, 0x26, 0x9f, 0xf8, 0x33, 0xe4, 0x32, 0xb8,
1536 0x5b, 0x2e, 0x88, 0xd2, 0x70, 0x1c, 0xe7, 0x5c }
1539 16, 0,
1540 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1541 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 },
1542 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1543 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1544 { 0xdd, 0xd2, 0x6b, 0x98, 0xa5, 0xff, 0xd8, 0x2c,
1545 0x05, 0x34, 0x5a, 0x9d, 0xad, 0xbf, 0xaf, 0x49}
1549 struct serpent_tv serpent_dec_tv_template[] =
1552 0, 0,
1553 { 0 },
1554 { 0x12, 0x07, 0xfc, 0xce, 0x9b, 0xd0, 0xd6, 0x47,
1555 0x6a, 0xe9, 0x8f, 0xbe, 0xd1, 0x43, 0xa0, 0xe2 },
1556 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1557 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1561 16, 0,
1562 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1563 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1564 { 0x4c, 0x7d, 0x8a, 0x32, 0x80, 0x72, 0xa2, 0x2c,
1565 0x82, 0x3e, 0x4a, 0x1f, 0x3a, 0xcd, 0xa1, 0x6d },
1566 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1567 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1570 32, 0,
1571 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1572 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1573 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
1574 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
1576 { 0xde, 0x26, 0x9f, 0xf8, 0x33, 0xe4, 0x32, 0xb8,
1577 0x5b, 0x2e, 0x88, 0xd2, 0x70, 0x1c, 0xe7, 0x5c },
1578 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1579 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1582 16, 0,
1583 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1584 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 },
1585 { 0xdd, 0xd2, 0x6b, 0x98, 0xa5, 0xff, 0xd8, 0x2c,
1586 0x05, 0x34, 0x5a, 0x9d, 0xad, 0xbf, 0xaf, 0x49},
1587 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1588 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
1593 * AES test vectors.
1595 #define AES_ENC_TEST_VECTORS 3
1596 #define AES_DEC_TEST_VECTORS 3
1598 struct aes_tv {
1599 unsigned int keylen;
1600 unsigned int plen;
1601 unsigned int rlen;
1602 int fail;
1603 char key[32];
1604 char iv[8];
1605 char plaintext[16];
1606 char result[16];
1609 struct aes_tv aes_enc_tv_template[] = {
1610 /* From FIPS-197 */
1612 16, 16, 16, 0,
1613 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1614 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1615 { 0 },
1616 { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
1617 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
1618 { 0x69, 0xc4, 0xe0, 0xd8, 0x6a, 0x7b, 0x04, 0x30,
1619 0xd8, 0xcd, 0xb7, 0x80, 0x70, 0xb4, 0xc5, 0x5a },
1622 24, 16, 16, 0,
1623 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1624 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1625 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 },
1626 { 0 },
1627 { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
1628 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
1629 { 0xdd, 0xa9, 0x7c, 0xa4, 0x86, 0x4c, 0xdf, 0xe0,
1630 0x6e, 0xaf, 0x70, 0xa0, 0xec, 0x0d, 0x71, 0x91 },
1633 32, 16, 16, 0,
1634 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1635 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1636 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
1637 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
1638 { 0 },
1639 { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
1640 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
1641 { 0x8e, 0xa2, 0xb7, 0xca, 0x51, 0x67, 0x45, 0xbf,
1642 0xea, 0xfc, 0x49, 0x90, 0x4b, 0x49, 0x60, 0x89 },
1646 struct aes_tv aes_dec_tv_template[] = {
1647 /* From FIPS-197 */
1649 16, 16, 16, 0,
1651 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1652 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f },
1653 { 0 },
1654 { 0x69, 0xc4, 0xe0, 0xd8, 0x6a, 0x7b, 0x04, 0x30,
1655 0xd8, 0xcd, 0xb7, 0x80, 0x70, 0xb4, 0xc5, 0x5a },
1656 { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
1657 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
1661 24, 16, 16, 0,
1662 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1663 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1664 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 },
1665 { 0 },
1666 { 0xdd, 0xa9, 0x7c, 0xa4, 0x86, 0x4c, 0xdf, 0xe0,
1667 0x6e, 0xaf, 0x70, 0xa0, 0xec, 0x0d, 0x71, 0x91 },
1668 { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
1669 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
1672 32, 16, 16, 0,
1673 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1674 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1675 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
1676 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f },
1677 { 0 },
1678 { 0x8e, 0xa2, 0xb7, 0xca, 0x51, 0x67, 0x45, 0xbf,
1679 0xea, 0xfc, 0x49, 0x90, 0x4b, 0x49, 0x60, 0x89 },
1680 { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
1681 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff },
1686 * Compression stuff.
1688 #define COMP_BUF_SIZE 512
1690 struct comp_testvec {
1691 int inlen, outlen;
1692 char input[COMP_BUF_SIZE];
1693 char output[COMP_BUF_SIZE];
1697 * Deflate test vectors (null-terminated strings).
1698 * Params: winbits=11, Z_DEFAULT_COMPRESSION, MAX_MEM_LEVEL.
1700 #define DEFLATE_COMP_TEST_VECTORS 2
1701 #define DEFLATE_DECOMP_TEST_VECTORS 2
1703 struct comp_testvec deflate_comp_tv_template[] = {
1705 70, 38,
1707 "Join us now and share the software "
1708 "Join us now and share the software ",
1710 { 0xf3, 0xca, 0xcf, 0xcc, 0x53, 0x28, 0x2d, 0x56,
1711 0xc8, 0xcb, 0x2f, 0x57, 0x48, 0xcc, 0x4b, 0x51,
1712 0x28, 0xce, 0x48, 0x2c, 0x4a, 0x55, 0x28, 0xc9,
1713 0x48, 0x55, 0x28, 0xce, 0x4f, 0x2b, 0x29, 0x07,
1714 0x71, 0xbc, 0x08, 0x2b, 0x01, 0x00
1719 191, 122,
1721 "This document describes a compression method based on the DEFLATE"
1722 "compression algorithm. This document defines the application of "
1723 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
1725 { 0x5d, 0x8d, 0x31, 0x0e, 0xc2, 0x30, 0x10, 0x04,
1726 0xbf, 0xb2, 0x2f, 0xc8, 0x1f, 0x10, 0x04, 0x09,
1727 0x89, 0xc2, 0x85, 0x3f, 0x70, 0xb1, 0x2f, 0xf8,
1728 0x24, 0xdb, 0x67, 0xd9, 0x47, 0xc1, 0xef, 0x49,
1729 0x68, 0x12, 0x51, 0xae, 0x76, 0x67, 0xd6, 0x27,
1730 0x19, 0x88, 0x1a, 0xde, 0x85, 0xab, 0x21, 0xf2,
1731 0x08, 0x5d, 0x16, 0x1e, 0x20, 0x04, 0x2d, 0xad,
1732 0xf3, 0x18, 0xa2, 0x15, 0x85, 0x2d, 0x69, 0xc4,
1733 0x42, 0x83, 0x23, 0xb6, 0x6c, 0x89, 0x71, 0x9b,
1734 0xef, 0xcf, 0x8b, 0x9f, 0xcf, 0x33, 0xca, 0x2f,
1735 0xed, 0x62, 0xa9, 0x4c, 0x80, 0xff, 0x13, 0xaf,
1736 0x52, 0x37, 0xed, 0x0e, 0x52, 0x6b, 0x59, 0x02,
1737 0xd9, 0x4e, 0xe8, 0x7a, 0x76, 0x1d, 0x02, 0x98,
1738 0xfe, 0x8a, 0x87, 0x83, 0xa3, 0x4f, 0x56, 0x8a,
1739 0xb8, 0x9e, 0x8e, 0x5c, 0x57, 0xd3, 0xa0, 0x79,
1740 0xfa, 0x02 },
1744 struct comp_testvec deflate_decomp_tv_template[] = {
1746 122, 191,
1748 { 0x5d, 0x8d, 0x31, 0x0e, 0xc2, 0x30, 0x10, 0x04,
1749 0xbf, 0xb2, 0x2f, 0xc8, 0x1f, 0x10, 0x04, 0x09,
1750 0x89, 0xc2, 0x85, 0x3f, 0x70, 0xb1, 0x2f, 0xf8,
1751 0x24, 0xdb, 0x67, 0xd9, 0x47, 0xc1, 0xef, 0x49,
1752 0x68, 0x12, 0x51, 0xae, 0x76, 0x67, 0xd6, 0x27,
1753 0x19, 0x88, 0x1a, 0xde, 0x85, 0xab, 0x21, 0xf2,
1754 0x08, 0x5d, 0x16, 0x1e, 0x20, 0x04, 0x2d, 0xad,
1755 0xf3, 0x18, 0xa2, 0x15, 0x85, 0x2d, 0x69, 0xc4,
1756 0x42, 0x83, 0x23, 0xb6, 0x6c, 0x89, 0x71, 0x9b,
1757 0xef, 0xcf, 0x8b, 0x9f, 0xcf, 0x33, 0xca, 0x2f,
1758 0xed, 0x62, 0xa9, 0x4c, 0x80, 0xff, 0x13, 0xaf,
1759 0x52, 0x37, 0xed, 0x0e, 0x52, 0x6b, 0x59, 0x02,
1760 0xd9, 0x4e, 0xe8, 0x7a, 0x76, 0x1d, 0x02, 0x98,
1761 0xfe, 0x8a, 0x87, 0x83, 0xa3, 0x4f, 0x56, 0x8a,
1762 0xb8, 0x9e, 0x8e, 0x5c, 0x57, 0xd3, 0xa0, 0x79,
1763 0xfa, 0x02 },
1765 "This document describes a compression method based on the DEFLATE"
1766 "compression algorithm. This document defines the application of "
1767 "the DEFLATE algorithm to the IP Payload Compression Protocol.",
1771 38, 70,
1773 { 0xf3, 0xca, 0xcf, 0xcc, 0x53, 0x28, 0x2d, 0x56,
1774 0xc8, 0xcb, 0x2f, 0x57, 0x48, 0xcc, 0x4b, 0x51,
1775 0x28, 0xce, 0x48, 0x2c, 0x4a, 0x55, 0x28, 0xc9,
1776 0x48, 0x55, 0x28, 0xce, 0x4f, 0x2b, 0x29, 0x07,
1777 0x71, 0xbc, 0x08, 0x2b, 0x01, 0x00
1780 "Join us now and share the software "
1781 "Join us now and share the software ",
1785 #endif /* _CRYPTO_TCRYPT_H */