diff options
Diffstat (limited to 'crypto/tcrypt.c')
-rw-r--r-- | crypto/tcrypt.c | 901 |
1 files changed, 472 insertions, 429 deletions
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c index e52f56c5bd5e..83307420d31c 100644 --- a/crypto/tcrypt.c +++ b/crypto/tcrypt.c | |||
@@ -17,6 +17,7 @@ | |||
17 | * | 17 | * |
18 | */ | 18 | */ |
19 | 19 | ||
20 | #include <linux/err.h> | ||
20 | #include <linux/init.h> | 21 | #include <linux/init.h> |
21 | #include <linux/module.h> | 22 | #include <linux/module.h> |
22 | #include <linux/mm.h> | 23 | #include <linux/mm.h> |
@@ -54,8 +55,6 @@ | |||
54 | */ | 55 | */ |
55 | #define ENCRYPT 1 | 56 | #define ENCRYPT 1 |
56 | #define DECRYPT 0 | 57 | #define DECRYPT 0 |
57 | #define MODE_ECB 1 | ||
58 | #define MODE_CBC 0 | ||
59 | 58 | ||
60 | static unsigned int IDX[8] = { IDX1, IDX2, IDX3, IDX4, IDX5, IDX6, IDX7, IDX8 }; | 59 | static unsigned int IDX[8] = { IDX1, IDX2, IDX3, IDX4, IDX5, IDX6, IDX7, IDX8 }; |
61 | 60 | ||
@@ -89,9 +88,11 @@ static void test_hash(char *algo, struct hash_testvec *template, | |||
89 | unsigned int i, j, k, temp; | 88 | unsigned int i, j, k, temp; |
90 | struct scatterlist sg[8]; | 89 | struct scatterlist sg[8]; |
91 | char result[64]; | 90 | char result[64]; |
92 | struct crypto_tfm *tfm; | 91 | struct crypto_hash *tfm; |
92 | struct hash_desc desc; | ||
93 | struct hash_testvec *hash_tv; | 93 | struct hash_testvec *hash_tv; |
94 | unsigned int tsize; | 94 | unsigned int tsize; |
95 | int ret; | ||
95 | 96 | ||
96 | printk("\ntesting %s\n", algo); | 97 | printk("\ntesting %s\n", algo); |
97 | 98 | ||
@@ -105,30 +106,42 @@ static void test_hash(char *algo, struct hash_testvec *template, | |||
105 | 106 | ||
106 | memcpy(tvmem, template, tsize); | 107 | memcpy(tvmem, template, tsize); |
107 | hash_tv = (void *)tvmem; | 108 | hash_tv = (void *)tvmem; |
108 | tfm = crypto_alloc_tfm(algo, 0); | 109 | |
109 | if (tfm == NULL) { | 110 | tfm = crypto_alloc_hash(algo, 0, CRYPTO_ALG_ASYNC); |
110 | printk("failed to load transform for %s\n", algo); | 111 | if (IS_ERR(tfm)) { |
112 | printk("failed to load transform for %s: %ld\n", algo, | ||
113 | PTR_ERR(tfm)); | ||
111 | return; | 114 | return; |
112 | } | 115 | } |
113 | 116 | ||
117 | desc.tfm = tfm; | ||
118 | desc.flags = 0; | ||
119 | |||
114 | for (i = 0; i < tcount; i++) { | 120 | for (i = 0; i < tcount; i++) { |
115 | printk("test %u:\n", i + 1); | 121 | printk("test %u:\n", i + 1); |
116 | memset(result, 0, 64); | 122 | memset(result, 0, 64); |
117 | 123 | ||
118 | sg_set_buf(&sg[0], hash_tv[i].plaintext, hash_tv[i].psize); | 124 | sg_set_buf(&sg[0], hash_tv[i].plaintext, hash_tv[i].psize); |
119 | 125 | ||
120 | crypto_digest_init(tfm); | 126 | if (hash_tv[i].ksize) { |
121 | if (tfm->crt_u.digest.dit_setkey) { | 127 | ret = crypto_hash_setkey(tfm, hash_tv[i].key, |
122 | crypto_digest_setkey(tfm, hash_tv[i].key, | 128 | hash_tv[i].ksize); |
123 | hash_tv[i].ksize); | 129 | if (ret) { |
130 | printk("setkey() failed ret=%d\n", ret); | ||
131 | goto out; | ||
132 | } | ||
133 | } | ||
134 | |||
135 | ret = crypto_hash_digest(&desc, sg, hash_tv[i].psize, result); | ||
136 | if (ret) { | ||
137 | printk("digest () failed ret=%d\n", ret); | ||
138 | goto out; | ||
124 | } | 139 | } |
125 | crypto_digest_update(tfm, sg, 1); | ||
126 | crypto_digest_final(tfm, result); | ||
127 | 140 | ||
128 | hexdump(result, crypto_tfm_alg_digestsize(tfm)); | 141 | hexdump(result, crypto_hash_digestsize(tfm)); |
129 | printk("%s\n", | 142 | printk("%s\n", |
130 | memcmp(result, hash_tv[i].digest, | 143 | memcmp(result, hash_tv[i].digest, |
131 | crypto_tfm_alg_digestsize(tfm)) ? | 144 | crypto_hash_digestsize(tfm)) ? |
132 | "fail" : "pass"); | 145 | "fail" : "pass"); |
133 | } | 146 | } |
134 | 147 | ||
@@ -154,127 +167,56 @@ static void test_hash(char *algo, struct hash_testvec *template, | |||
154 | hash_tv[i].tap[k]); | 167 | hash_tv[i].tap[k]); |
155 | } | 168 | } |
156 | 169 | ||
157 | crypto_digest_digest(tfm, sg, hash_tv[i].np, result); | 170 | if (hash_tv[i].ksize) { |
158 | 171 | ret = crypto_hash_setkey(tfm, hash_tv[i].key, | |
159 | hexdump(result, crypto_tfm_alg_digestsize(tfm)); | 172 | hash_tv[i].ksize); |
160 | printk("%s\n", | ||
161 | memcmp(result, hash_tv[i].digest, | ||
162 | crypto_tfm_alg_digestsize(tfm)) ? | ||
163 | "fail" : "pass"); | ||
164 | } | ||
165 | } | ||
166 | |||
167 | crypto_free_tfm(tfm); | ||
168 | } | ||
169 | |||
170 | |||
171 | #ifdef CONFIG_CRYPTO_HMAC | ||
172 | |||
173 | static void test_hmac(char *algo, struct hmac_testvec *template, | ||
174 | unsigned int tcount) | ||
175 | { | ||
176 | unsigned int i, j, k, temp; | ||
177 | struct scatterlist sg[8]; | ||
178 | char result[64]; | ||
179 | struct crypto_tfm *tfm; | ||
180 | struct hmac_testvec *hmac_tv; | ||
181 | unsigned int tsize, klen; | ||
182 | |||
183 | tfm = crypto_alloc_tfm(algo, 0); | ||
184 | if (tfm == NULL) { | ||
185 | printk("failed to load transform for %s\n", algo); | ||
186 | return; | ||
187 | } | ||
188 | |||
189 | printk("\ntesting hmac_%s\n", algo); | ||
190 | |||
191 | tsize = sizeof(struct hmac_testvec); | ||
192 | tsize *= tcount; | ||
193 | if (tsize > TVMEMSIZE) { | ||
194 | printk("template (%u) too big for tvmem (%u)\n", tsize, | ||
195 | TVMEMSIZE); | ||
196 | goto out; | ||
197 | } | ||
198 | |||
199 | memcpy(tvmem, template, tsize); | ||
200 | hmac_tv = (void *)tvmem; | ||
201 | |||
202 | for (i = 0; i < tcount; i++) { | ||
203 | printk("test %u:\n", i + 1); | ||
204 | memset(result, 0, sizeof (result)); | ||
205 | |||
206 | klen = hmac_tv[i].ksize; | ||
207 | sg_set_buf(&sg[0], hmac_tv[i].plaintext, hmac_tv[i].psize); | ||
208 | |||
209 | crypto_hmac(tfm, hmac_tv[i].key, &klen, sg, 1, result); | ||
210 | 173 | ||
211 | hexdump(result, crypto_tfm_alg_digestsize(tfm)); | 174 | if (ret) { |
212 | printk("%s\n", | 175 | printk("setkey() failed ret=%d\n", ret); |
213 | memcmp(result, hmac_tv[i].digest, | 176 | goto out; |
214 | crypto_tfm_alg_digestsize(tfm)) ? "fail" : | 177 | } |
215 | "pass"); | ||
216 | } | ||
217 | |||
218 | printk("\ntesting hmac_%s across pages\n", algo); | ||
219 | |||
220 | memset(xbuf, 0, XBUFSIZE); | ||
221 | |||
222 | j = 0; | ||
223 | for (i = 0; i < tcount; i++) { | ||
224 | if (hmac_tv[i].np) { | ||
225 | j++; | ||
226 | printk("test %u:\n",j); | ||
227 | memset(result, 0, 64); | ||
228 | |||
229 | temp = 0; | ||
230 | klen = hmac_tv[i].ksize; | ||
231 | for (k = 0; k < hmac_tv[i].np; k++) { | ||
232 | memcpy(&xbuf[IDX[k]], | ||
233 | hmac_tv[i].plaintext + temp, | ||
234 | hmac_tv[i].tap[k]); | ||
235 | temp += hmac_tv[i].tap[k]; | ||
236 | sg_set_buf(&sg[k], &xbuf[IDX[k]], | ||
237 | hmac_tv[i].tap[k]); | ||
238 | } | 178 | } |
239 | 179 | ||
240 | crypto_hmac(tfm, hmac_tv[i].key, &klen, sg, | 180 | ret = crypto_hash_digest(&desc, sg, hash_tv[i].psize, |
241 | hmac_tv[i].np, result); | 181 | result); |
242 | hexdump(result, crypto_tfm_alg_digestsize(tfm)); | 182 | if (ret) { |
183 | printk("digest () failed ret=%d\n", ret); | ||
184 | goto out; | ||
185 | } | ||
243 | 186 | ||
187 | hexdump(result, crypto_hash_digestsize(tfm)); | ||
244 | printk("%s\n", | 188 | printk("%s\n", |
245 | memcmp(result, hmac_tv[i].digest, | 189 | memcmp(result, hash_tv[i].digest, |
246 | crypto_tfm_alg_digestsize(tfm)) ? | 190 | crypto_hash_digestsize(tfm)) ? |
247 | "fail" : "pass"); | 191 | "fail" : "pass"); |
248 | } | 192 | } |
249 | } | 193 | } |
194 | |||
250 | out: | 195 | out: |
251 | crypto_free_tfm(tfm); | 196 | crypto_free_hash(tfm); |
252 | } | 197 | } |
253 | 198 | ||
254 | #endif /* CONFIG_CRYPTO_HMAC */ | 199 | static void test_cipher(char *algo, int enc, |
255 | |||
256 | static void test_cipher(char *algo, int mode, int enc, | ||
257 | struct cipher_testvec *template, unsigned int tcount) | 200 | struct cipher_testvec *template, unsigned int tcount) |
258 | { | 201 | { |
259 | unsigned int ret, i, j, k, temp; | 202 | unsigned int ret, i, j, k, temp; |
260 | unsigned int tsize; | 203 | unsigned int tsize; |
204 | unsigned int iv_len; | ||
205 | unsigned int len; | ||
261 | char *q; | 206 | char *q; |
262 | struct crypto_tfm *tfm; | 207 | struct crypto_blkcipher *tfm; |
263 | char *key; | 208 | char *key; |
264 | struct cipher_testvec *cipher_tv; | 209 | struct cipher_testvec *cipher_tv; |
210 | struct blkcipher_desc desc; | ||
265 | struct scatterlist sg[8]; | 211 | struct scatterlist sg[8]; |
266 | const char *e, *m; | 212 | const char *e; |
267 | 213 | ||
268 | if (enc == ENCRYPT) | 214 | if (enc == ENCRYPT) |
269 | e = "encryption"; | 215 | e = "encryption"; |
270 | else | 216 | else |
271 | e = "decryption"; | 217 | e = "decryption"; |
272 | if (mode == MODE_ECB) | ||
273 | m = "ECB"; | ||
274 | else | ||
275 | m = "CBC"; | ||
276 | 218 | ||
277 | printk("\ntesting %s %s %s\n", algo, m, e); | 219 | printk("\ntesting %s %s\n", algo, e); |
278 | 220 | ||
279 | tsize = sizeof (struct cipher_testvec); | 221 | tsize = sizeof (struct cipher_testvec); |
280 | tsize *= tcount; | 222 | tsize *= tcount; |
@@ -288,15 +230,15 @@ static void test_cipher(char *algo, int mode, int enc, | |||
288 | memcpy(tvmem, template, tsize); | 230 | memcpy(tvmem, template, tsize); |
289 | cipher_tv = (void *)tvmem; | 231 | cipher_tv = (void *)tvmem; |
290 | 232 | ||
291 | if (mode) | 233 | tfm = crypto_alloc_blkcipher(algo, 0, CRYPTO_ALG_ASYNC); |
292 | tfm = crypto_alloc_tfm(algo, 0); | ||
293 | else | ||
294 | tfm = crypto_alloc_tfm(algo, CRYPTO_TFM_MODE_CBC); | ||
295 | 234 | ||
296 | if (tfm == NULL) { | 235 | if (IS_ERR(tfm)) { |
297 | printk("failed to load transform for %s %s\n", algo, m); | 236 | printk("failed to load transform for %s: %ld\n", algo, |
237 | PTR_ERR(tfm)); | ||
298 | return; | 238 | return; |
299 | } | 239 | } |
240 | desc.tfm = tfm; | ||
241 | desc.flags = 0; | ||
300 | 242 | ||
301 | j = 0; | 243 | j = 0; |
302 | for (i = 0; i < tcount; i++) { | 244 | for (i = 0; i < tcount; i++) { |
@@ -305,14 +247,17 @@ static void test_cipher(char *algo, int mode, int enc, | |||
305 | printk("test %u (%d bit key):\n", | 247 | printk("test %u (%d bit key):\n", |
306 | j, cipher_tv[i].klen * 8); | 248 | j, cipher_tv[i].klen * 8); |
307 | 249 | ||
308 | tfm->crt_flags = 0; | 250 | crypto_blkcipher_clear_flags(tfm, ~0); |
309 | if (cipher_tv[i].wk) | 251 | if (cipher_tv[i].wk) |
310 | tfm->crt_flags |= CRYPTO_TFM_REQ_WEAK_KEY; | 252 | crypto_blkcipher_set_flags( |
253 | tfm, CRYPTO_TFM_REQ_WEAK_KEY); | ||
311 | key = cipher_tv[i].key; | 254 | key = cipher_tv[i].key; |
312 | 255 | ||
313 | ret = crypto_cipher_setkey(tfm, key, cipher_tv[i].klen); | 256 | ret = crypto_blkcipher_setkey(tfm, key, |
257 | cipher_tv[i].klen); | ||
314 | if (ret) { | 258 | if (ret) { |
315 | printk("setkey() failed flags=%x\n", tfm->crt_flags); | 259 | printk("setkey() failed flags=%x\n", |
260 | crypto_blkcipher_get_flags(tfm)); | ||
316 | 261 | ||
317 | if (!cipher_tv[i].fail) | 262 | if (!cipher_tv[i].fail) |
318 | goto out; | 263 | goto out; |
@@ -321,19 +266,19 @@ static void test_cipher(char *algo, int mode, int enc, | |||
321 | sg_set_buf(&sg[0], cipher_tv[i].input, | 266 | sg_set_buf(&sg[0], cipher_tv[i].input, |
322 | cipher_tv[i].ilen); | 267 | cipher_tv[i].ilen); |
323 | 268 | ||
324 | if (!mode) { | 269 | iv_len = crypto_blkcipher_ivsize(tfm); |
325 | crypto_cipher_set_iv(tfm, cipher_tv[i].iv, | 270 | if (iv_len) |
326 | crypto_tfm_alg_ivsize(tfm)); | 271 | crypto_blkcipher_set_iv(tfm, cipher_tv[i].iv, |
327 | } | 272 | iv_len); |
328 | |||
329 | if (enc) | ||
330 | ret = crypto_cipher_encrypt(tfm, sg, sg, cipher_tv[i].ilen); | ||
331 | else | ||
332 | ret = crypto_cipher_decrypt(tfm, sg, sg, cipher_tv[i].ilen); | ||
333 | 273 | ||
274 | len = cipher_tv[i].ilen; | ||
275 | ret = enc ? | ||
276 | crypto_blkcipher_encrypt(&desc, sg, sg, len) : | ||
277 | crypto_blkcipher_decrypt(&desc, sg, sg, len); | ||
334 | 278 | ||
335 | if (ret) { | 279 | if (ret) { |
336 | printk("%s () failed flags=%x\n", e, tfm->crt_flags); | 280 | printk("%s () failed flags=%x\n", e, |
281 | desc.flags); | ||
337 | goto out; | 282 | goto out; |
338 | } | 283 | } |
339 | 284 | ||
@@ -346,7 +291,7 @@ static void test_cipher(char *algo, int mode, int enc, | |||
346 | } | 291 | } |
347 | } | 292 | } |
348 | 293 | ||
349 | printk("\ntesting %s %s %s across pages (chunking)\n", algo, m, e); | 294 | printk("\ntesting %s %s across pages (chunking)\n", algo, e); |
350 | memset(xbuf, 0, XBUFSIZE); | 295 | memset(xbuf, 0, XBUFSIZE); |
351 | 296 | ||
352 | j = 0; | 297 | j = 0; |
@@ -356,14 +301,17 @@ static void test_cipher(char *algo, int mode, int enc, | |||
356 | printk("test %u (%d bit key):\n", | 301 | printk("test %u (%d bit key):\n", |
357 | j, cipher_tv[i].klen * 8); | 302 | j, cipher_tv[i].klen * 8); |
358 | 303 | ||
359 | tfm->crt_flags = 0; | 304 | crypto_blkcipher_clear_flags(tfm, ~0); |
360 | if (cipher_tv[i].wk) | 305 | if (cipher_tv[i].wk) |
361 | tfm->crt_flags |= CRYPTO_TFM_REQ_WEAK_KEY; | 306 | crypto_blkcipher_set_flags( |
307 | tfm, CRYPTO_TFM_REQ_WEAK_KEY); | ||
362 | key = cipher_tv[i].key; | 308 | key = cipher_tv[i].key; |
363 | 309 | ||
364 | ret = crypto_cipher_setkey(tfm, key, cipher_tv[i].klen); | 310 | ret = crypto_blkcipher_setkey(tfm, key, |
311 | cipher_tv[i].klen); | ||
365 | if (ret) { | 312 | if (ret) { |
366 | printk("setkey() failed flags=%x\n", tfm->crt_flags); | 313 | printk("setkey() failed flags=%x\n", |
314 | crypto_blkcipher_get_flags(tfm)); | ||
367 | 315 | ||
368 | if (!cipher_tv[i].fail) | 316 | if (!cipher_tv[i].fail) |
369 | goto out; | 317 | goto out; |
@@ -379,18 +327,19 @@ static void test_cipher(char *algo, int mode, int enc, | |||
379 | cipher_tv[i].tap[k]); | 327 | cipher_tv[i].tap[k]); |
380 | } | 328 | } |
381 | 329 | ||
382 | if (!mode) { | 330 | iv_len = crypto_blkcipher_ivsize(tfm); |
383 | crypto_cipher_set_iv(tfm, cipher_tv[i].iv, | 331 | if (iv_len) |
384 | crypto_tfm_alg_ivsize(tfm)); | 332 | crypto_blkcipher_set_iv(tfm, cipher_tv[i].iv, |
385 | } | 333 | iv_len); |
386 | 334 | ||
387 | if (enc) | 335 | len = cipher_tv[i].ilen; |
388 | ret = crypto_cipher_encrypt(tfm, sg, sg, cipher_tv[i].ilen); | 336 | ret = enc ? |
389 | else | 337 | crypto_blkcipher_encrypt(&desc, sg, sg, len) : |
390 | ret = crypto_cipher_decrypt(tfm, sg, sg, cipher_tv[i].ilen); | 338 | crypto_blkcipher_decrypt(&desc, sg, sg, len); |
391 | 339 | ||
392 | if (ret) { | 340 | if (ret) { |
393 | printk("%s () failed flags=%x\n", e, tfm->crt_flags); | 341 | printk("%s () failed flags=%x\n", e, |
342 | desc.flags); | ||
394 | goto out; | 343 | goto out; |
395 | } | 344 | } |
396 | 345 | ||
@@ -409,10 +358,10 @@ static void test_cipher(char *algo, int mode, int enc, | |||
409 | } | 358 | } |
410 | 359 | ||
411 | out: | 360 | out: |
412 | crypto_free_tfm(tfm); | 361 | crypto_free_blkcipher(tfm); |
413 | } | 362 | } |
414 | 363 | ||
415 | static int test_cipher_jiffies(struct crypto_tfm *tfm, int enc, char *p, | 364 | static int test_cipher_jiffies(struct blkcipher_desc *desc, int enc, char *p, |
416 | int blen, int sec) | 365 | int blen, int sec) |
417 | { | 366 | { |
418 | struct scatterlist sg[1]; | 367 | struct scatterlist sg[1]; |
@@ -425,9 +374,9 @@ static int test_cipher_jiffies(struct crypto_tfm *tfm, int enc, char *p, | |||
425 | for (start = jiffies, end = start + sec * HZ, bcount = 0; | 374 | for (start = jiffies, end = start + sec * HZ, bcount = 0; |
426 | time_before(jiffies, end); bcount++) { | 375 | time_before(jiffies, end); bcount++) { |
427 | if (enc) | 376 | if (enc) |
428 | ret = crypto_cipher_encrypt(tfm, sg, sg, blen); | 377 | ret = crypto_blkcipher_encrypt(desc, sg, sg, blen); |
429 | else | 378 | else |
430 | ret = crypto_cipher_decrypt(tfm, sg, sg, blen); | 379 | ret = crypto_blkcipher_decrypt(desc, sg, sg, blen); |
431 | 380 | ||
432 | if (ret) | 381 | if (ret) |
433 | return ret; | 382 | return ret; |
@@ -438,7 +387,7 @@ static int test_cipher_jiffies(struct crypto_tfm *tfm, int enc, char *p, | |||
438 | return 0; | 387 | return 0; |
439 | } | 388 | } |
440 | 389 | ||
441 | static int test_cipher_cycles(struct crypto_tfm *tfm, int enc, char *p, | 390 | static int test_cipher_cycles(struct blkcipher_desc *desc, int enc, char *p, |
442 | int blen) | 391 | int blen) |
443 | { | 392 | { |
444 | struct scatterlist sg[1]; | 393 | struct scatterlist sg[1]; |
@@ -454,9 +403,9 @@ static int test_cipher_cycles(struct crypto_tfm *tfm, int enc, char *p, | |||
454 | /* Warm-up run. */ | 403 | /* Warm-up run. */ |
455 | for (i = 0; i < 4; i++) { | 404 | for (i = 0; i < 4; i++) { |
456 | if (enc) | 405 | if (enc) |
457 | ret = crypto_cipher_encrypt(tfm, sg, sg, blen); | 406 | ret = crypto_blkcipher_encrypt(desc, sg, sg, blen); |
458 | else | 407 | else |
459 | ret = crypto_cipher_decrypt(tfm, sg, sg, blen); | 408 | ret = crypto_blkcipher_decrypt(desc, sg, sg, blen); |
460 | 409 | ||
461 | if (ret) | 410 | if (ret) |
462 | goto out; | 411 | goto out; |
@@ -468,9 +417,9 @@ static int test_cipher_cycles(struct crypto_tfm *tfm, int enc, char *p, | |||
468 | 417 | ||
469 | start = get_cycles(); | 418 | start = get_cycles(); |
470 | if (enc) | 419 | if (enc) |
471 | ret = crypto_cipher_encrypt(tfm, sg, sg, blen); | 420 | ret = crypto_blkcipher_encrypt(desc, sg, sg, blen); |
472 | else | 421 | else |
473 | ret = crypto_cipher_decrypt(tfm, sg, sg, blen); | 422 | ret = crypto_blkcipher_decrypt(desc, sg, sg, blen); |
474 | end = get_cycles(); | 423 | end = get_cycles(); |
475 | 424 | ||
476 | if (ret) | 425 | if (ret) |
@@ -490,35 +439,32 @@ out: | |||
490 | return ret; | 439 | return ret; |
491 | } | 440 | } |
492 | 441 | ||
493 | static void test_cipher_speed(char *algo, int mode, int enc, unsigned int sec, | 442 | static void test_cipher_speed(char *algo, int enc, unsigned int sec, |
494 | struct cipher_testvec *template, | 443 | struct cipher_testvec *template, |
495 | unsigned int tcount, struct cipher_speed *speed) | 444 | unsigned int tcount, struct cipher_speed *speed) |
496 | { | 445 | { |
497 | unsigned int ret, i, j, iv_len; | 446 | unsigned int ret, i, j, iv_len; |
498 | unsigned char *key, *p, iv[128]; | 447 | unsigned char *key, *p, iv[128]; |
499 | struct crypto_tfm *tfm; | 448 | struct crypto_blkcipher *tfm; |
500 | const char *e, *m; | 449 | struct blkcipher_desc desc; |
450 | const char *e; | ||
501 | 451 | ||
502 | if (enc == ENCRYPT) | 452 | if (enc == ENCRYPT) |
503 | e = "encryption"; | 453 | e = "encryption"; |
504 | else | 454 | else |
505 | e = "decryption"; | 455 | e = "decryption"; |
506 | if (mode == MODE_ECB) | ||
507 | m = "ECB"; | ||
508 | else | ||
509 | m = "CBC"; | ||
510 | 456 | ||
511 | printk("\ntesting speed of %s %s %s\n", algo, m, e); | 457 | printk("\ntesting speed of %s %s\n", algo, e); |
512 | 458 | ||
513 | if (mode) | 459 | tfm = crypto_alloc_blkcipher(algo, 0, CRYPTO_ALG_ASYNC); |
514 | tfm = crypto_alloc_tfm(algo, 0); | ||
515 | else | ||
516 | tfm = crypto_alloc_tfm(algo, CRYPTO_TFM_MODE_CBC); | ||
517 | 460 | ||
518 | if (tfm == NULL) { | 461 | if (IS_ERR(tfm)) { |
519 | printk("failed to load transform for %s %s\n", algo, m); | 462 | printk("failed to load transform for %s: %ld\n", algo, |
463 | PTR_ERR(tfm)); | ||
520 | return; | 464 | return; |
521 | } | 465 | } |
466 | desc.tfm = tfm; | ||
467 | desc.flags = 0; | ||
522 | 468 | ||
523 | for (i = 0; speed[i].klen != 0; i++) { | 469 | for (i = 0; speed[i].klen != 0; i++) { |
524 | if ((speed[i].blen + speed[i].klen) > TVMEMSIZE) { | 470 | if ((speed[i].blen + speed[i].klen) > TVMEMSIZE) { |
@@ -542,125 +488,231 @@ static void test_cipher_speed(char *algo, int mode, int enc, unsigned int sec, | |||
542 | } | 488 | } |
543 | p = (unsigned char *)tvmem + speed[i].klen; | 489 | p = (unsigned char *)tvmem + speed[i].klen; |
544 | 490 | ||
545 | ret = crypto_cipher_setkey(tfm, key, speed[i].klen); | 491 | ret = crypto_blkcipher_setkey(tfm, key, speed[i].klen); |
546 | if (ret) { | 492 | if (ret) { |
547 | printk("setkey() failed flags=%x\n", tfm->crt_flags); | 493 | printk("setkey() failed flags=%x\n", |
494 | crypto_blkcipher_get_flags(tfm)); | ||
548 | goto out; | 495 | goto out; |
549 | } | 496 | } |
550 | 497 | ||
551 | if (!mode) { | 498 | iv_len = crypto_blkcipher_ivsize(tfm); |
552 | iv_len = crypto_tfm_alg_ivsize(tfm); | 499 | if (iv_len) { |
553 | memset(&iv, 0xff, iv_len); | 500 | memset(&iv, 0xff, iv_len); |
554 | crypto_cipher_set_iv(tfm, iv, iv_len); | 501 | crypto_blkcipher_set_iv(tfm, iv, iv_len); |
555 | } | 502 | } |
556 | 503 | ||
557 | if (sec) | 504 | if (sec) |
558 | ret = test_cipher_jiffies(tfm, enc, p, speed[i].blen, | 505 | ret = test_cipher_jiffies(&desc, enc, p, speed[i].blen, |
559 | sec); | 506 | sec); |
560 | else | 507 | else |
561 | ret = test_cipher_cycles(tfm, enc, p, speed[i].blen); | 508 | ret = test_cipher_cycles(&desc, enc, p, speed[i].blen); |
562 | 509 | ||
563 | if (ret) { | 510 | if (ret) { |
564 | printk("%s() failed flags=%x\n", e, tfm->crt_flags); | 511 | printk("%s() failed flags=%x\n", e, desc.flags); |
565 | break; | 512 | break; |
566 | } | 513 | } |
567 | } | 514 | } |
568 | 515 | ||
569 | out: | 516 | out: |
570 | crypto_free_tfm(tfm); | 517 | crypto_free_blkcipher(tfm); |
571 | } | 518 | } |
572 | 519 | ||
573 | static void test_digest_jiffies(struct crypto_tfm *tfm, char *p, int blen, | 520 | static int test_hash_jiffies_digest(struct hash_desc *desc, char *p, int blen, |
574 | int plen, char *out, int sec) | 521 | char *out, int sec) |
522 | { | ||
523 | struct scatterlist sg[1]; | ||
524 | unsigned long start, end; | ||
525 | int bcount; | ||
526 | int ret; | ||
527 | |||
528 | for (start = jiffies, end = start + sec * HZ, bcount = 0; | ||
529 | time_before(jiffies, end); bcount++) { | ||
530 | sg_set_buf(sg, p, blen); | ||
531 | ret = crypto_hash_digest(desc, sg, blen, out); | ||
532 | if (ret) | ||
533 | return ret; | ||
534 | } | ||
535 | |||
536 | printk("%6u opers/sec, %9lu bytes/sec\n", | ||
537 | bcount / sec, ((long)bcount * blen) / sec); | ||
538 | |||
539 | return 0; | ||
540 | } | ||
541 | |||
542 | static int test_hash_jiffies(struct hash_desc *desc, char *p, int blen, | ||
543 | int plen, char *out, int sec) | ||
575 | { | 544 | { |
576 | struct scatterlist sg[1]; | 545 | struct scatterlist sg[1]; |
577 | unsigned long start, end; | 546 | unsigned long start, end; |
578 | int bcount, pcount; | 547 | int bcount, pcount; |
548 | int ret; | ||
549 | |||
550 | if (plen == blen) | ||
551 | return test_hash_jiffies_digest(desc, p, blen, out, sec); | ||
579 | 552 | ||
580 | for (start = jiffies, end = start + sec * HZ, bcount = 0; | 553 | for (start = jiffies, end = start + sec * HZ, bcount = 0; |
581 | time_before(jiffies, end); bcount++) { | 554 | time_before(jiffies, end); bcount++) { |
582 | crypto_digest_init(tfm); | 555 | ret = crypto_hash_init(desc); |
556 | if (ret) | ||
557 | return ret; | ||
583 | for (pcount = 0; pcount < blen; pcount += plen) { | 558 | for (pcount = 0; pcount < blen; pcount += plen) { |
584 | sg_set_buf(sg, p + pcount, plen); | 559 | sg_set_buf(sg, p + pcount, plen); |
585 | crypto_digest_update(tfm, sg, 1); | 560 | ret = crypto_hash_update(desc, sg, plen); |
561 | if (ret) | ||
562 | return ret; | ||
586 | } | 563 | } |
587 | /* we assume there is enough space in 'out' for the result */ | 564 | /* we assume there is enough space in 'out' for the result */ |
588 | crypto_digest_final(tfm, out); | 565 | ret = crypto_hash_final(desc, out); |
566 | if (ret) | ||
567 | return ret; | ||
589 | } | 568 | } |
590 | 569 | ||
591 | printk("%6u opers/sec, %9lu bytes/sec\n", | 570 | printk("%6u opers/sec, %9lu bytes/sec\n", |
592 | bcount / sec, ((long)bcount * blen) / sec); | 571 | bcount / sec, ((long)bcount * blen) / sec); |
593 | 572 | ||
594 | return; | 573 | return 0; |
574 | } | ||
575 | |||
576 | static int test_hash_cycles_digest(struct hash_desc *desc, char *p, int blen, | ||
577 | char *out) | ||
578 | { | ||
579 | struct scatterlist sg[1]; | ||
580 | unsigned long cycles = 0; | ||
581 | int i; | ||
582 | int ret; | ||
583 | |||
584 | local_bh_disable(); | ||
585 | local_irq_disable(); | ||
586 | |||
587 | /* Warm-up run. */ | ||
588 | for (i = 0; i < 4; i++) { | ||
589 | sg_set_buf(sg, p, blen); | ||
590 | ret = crypto_hash_digest(desc, sg, blen, out); | ||
591 | if (ret) | ||
592 | goto out; | ||
593 | } | ||
594 | |||
595 | /* The real thing. */ | ||
596 | for (i = 0; i < 8; i++) { | ||
597 | cycles_t start, end; | ||
598 | |||
599 | start = get_cycles(); | ||
600 | |||
601 | sg_set_buf(sg, p, blen); | ||
602 | ret = crypto_hash_digest(desc, sg, blen, out); | ||
603 | if (ret) | ||
604 | goto out; | ||
605 | |||
606 | end = get_cycles(); | ||
607 | |||
608 | cycles += end - start; | ||
609 | } | ||
610 | |||
611 | out: | ||
612 | local_irq_enable(); | ||
613 | local_bh_enable(); | ||
614 | |||
615 | if (ret) | ||
616 | return ret; | ||
617 | |||
618 | printk("%6lu cycles/operation, %4lu cycles/byte\n", | ||
619 | cycles / 8, cycles / (8 * blen)); | ||
620 | |||
621 | return 0; | ||
595 | } | 622 | } |
596 | 623 | ||
597 | static void test_digest_cycles(struct crypto_tfm *tfm, char *p, int blen, | 624 | static int test_hash_cycles(struct hash_desc *desc, char *p, int blen, |
598 | int plen, char *out) | 625 | int plen, char *out) |
599 | { | 626 | { |
600 | struct scatterlist sg[1]; | 627 | struct scatterlist sg[1]; |
601 | unsigned long cycles = 0; | 628 | unsigned long cycles = 0; |
602 | int i, pcount; | 629 | int i, pcount; |
630 | int ret; | ||
631 | |||
632 | if (plen == blen) | ||
633 | return test_hash_cycles_digest(desc, p, blen, out); | ||
603 | 634 | ||
604 | local_bh_disable(); | 635 | local_bh_disable(); |
605 | local_irq_disable(); | 636 | local_irq_disable(); |
606 | 637 | ||
607 | /* Warm-up run. */ | 638 | /* Warm-up run. */ |
608 | for (i = 0; i < 4; i++) { | 639 | for (i = 0; i < 4; i++) { |
609 | crypto_digest_init(tfm); | 640 | ret = crypto_hash_init(desc); |
641 | if (ret) | ||
642 | goto out; | ||
610 | for (pcount = 0; pcount < blen; pcount += plen) { | 643 | for (pcount = 0; pcount < blen; pcount += plen) { |
611 | sg_set_buf(sg, p + pcount, plen); | 644 | sg_set_buf(sg, p + pcount, plen); |
612 | crypto_digest_update(tfm, sg, 1); | 645 | ret = crypto_hash_update(desc, sg, plen); |
646 | if (ret) | ||
647 | goto out; | ||
613 | } | 648 | } |
614 | crypto_digest_final(tfm, out); | 649 | crypto_hash_final(desc, out); |
650 | if (ret) | ||
651 | goto out; | ||
615 | } | 652 | } |
616 | 653 | ||
617 | /* The real thing. */ | 654 | /* The real thing. */ |
618 | for (i = 0; i < 8; i++) { | 655 | for (i = 0; i < 8; i++) { |
619 | cycles_t start, end; | 656 | cycles_t start, end; |
620 | 657 | ||
621 | crypto_digest_init(tfm); | ||
622 | |||
623 | start = get_cycles(); | 658 | start = get_cycles(); |
624 | 659 | ||
660 | ret = crypto_hash_init(desc); | ||
661 | if (ret) | ||
662 | goto out; | ||
625 | for (pcount = 0; pcount < blen; pcount += plen) { | 663 | for (pcount = 0; pcount < blen; pcount += plen) { |
626 | sg_set_buf(sg, p + pcount, plen); | 664 | sg_set_buf(sg, p + pcount, plen); |
627 | crypto_digest_update(tfm, sg, 1); | 665 | ret = crypto_hash_update(desc, sg, plen); |
666 | if (ret) | ||
667 | goto out; | ||
628 | } | 668 | } |
629 | crypto_digest_final(tfm, out); | 669 | ret = crypto_hash_final(desc, out); |
670 | if (ret) | ||
671 | goto out; | ||
630 | 672 | ||
631 | end = get_cycles(); | 673 | end = get_cycles(); |
632 | 674 | ||
633 | cycles += end - start; | 675 | cycles += end - start; |
634 | } | 676 | } |
635 | 677 | ||
678 | out: | ||
636 | local_irq_enable(); | 679 | local_irq_enable(); |
637 | local_bh_enable(); | 680 | local_bh_enable(); |
638 | 681 | ||
682 | if (ret) | ||
683 | return ret; | ||
684 | |||
639 | printk("%6lu cycles/operation, %4lu cycles/byte\n", | 685 | printk("%6lu cycles/operation, %4lu cycles/byte\n", |
640 | cycles / 8, cycles / (8 * blen)); | 686 | cycles / 8, cycles / (8 * blen)); |
641 | 687 | ||
642 | return; | 688 | return 0; |
643 | } | 689 | } |
644 | 690 | ||
645 | static void test_digest_speed(char *algo, unsigned int sec, | 691 | static void test_hash_speed(char *algo, unsigned int sec, |
646 | struct digest_speed *speed) | 692 | struct hash_speed *speed) |
647 | { | 693 | { |
648 | struct crypto_tfm *tfm; | 694 | struct crypto_hash *tfm; |
695 | struct hash_desc desc; | ||
649 | char output[1024]; | 696 | char output[1024]; |
650 | int i; | 697 | int i; |
698 | int ret; | ||
651 | 699 | ||
652 | printk("\ntesting speed of %s\n", algo); | 700 | printk("\ntesting speed of %s\n", algo); |
653 | 701 | ||
654 | tfm = crypto_alloc_tfm(algo, 0); | 702 | tfm = crypto_alloc_hash(algo, 0, CRYPTO_ALG_ASYNC); |
655 | 703 | ||
656 | if (tfm == NULL) { | 704 | if (IS_ERR(tfm)) { |
657 | printk("failed to load transform for %s\n", algo); | 705 | printk("failed to load transform for %s: %ld\n", algo, |
706 | PTR_ERR(tfm)); | ||
658 | return; | 707 | return; |
659 | } | 708 | } |
660 | 709 | ||
661 | if (crypto_tfm_alg_digestsize(tfm) > sizeof(output)) { | 710 | desc.tfm = tfm; |
711 | desc.flags = 0; | ||
712 | |||
713 | if (crypto_hash_digestsize(tfm) > sizeof(output)) { | ||
662 | printk("digestsize(%u) > outputbuffer(%zu)\n", | 714 | printk("digestsize(%u) > outputbuffer(%zu)\n", |
663 | crypto_tfm_alg_digestsize(tfm), sizeof(output)); | 715 | crypto_hash_digestsize(tfm), sizeof(output)); |
664 | goto out; | 716 | goto out; |
665 | } | 717 | } |
666 | 718 | ||
@@ -677,20 +729,27 @@ static void test_digest_speed(char *algo, unsigned int sec, | |||
677 | memset(tvmem, 0xff, speed[i].blen); | 729 | memset(tvmem, 0xff, speed[i].blen); |
678 | 730 | ||
679 | if (sec) | 731 | if (sec) |
680 | test_digest_jiffies(tfm, tvmem, speed[i].blen, speed[i].plen, output, sec); | 732 | ret = test_hash_jiffies(&desc, tvmem, speed[i].blen, |
733 | speed[i].plen, output, sec); | ||
681 | else | 734 | else |
682 | test_digest_cycles(tfm, tvmem, speed[i].blen, speed[i].plen, output); | 735 | ret = test_hash_cycles(&desc, tvmem, speed[i].blen, |
736 | speed[i].plen, output); | ||
737 | |||
738 | if (ret) { | ||
739 | printk("hashing failed ret=%d\n", ret); | ||
740 | break; | ||
741 | } | ||
683 | } | 742 | } |
684 | 743 | ||
685 | out: | 744 | out: |
686 | crypto_free_tfm(tfm); | 745 | crypto_free_hash(tfm); |
687 | } | 746 | } |
688 | 747 | ||
689 | static void test_deflate(void) | 748 | static void test_deflate(void) |
690 | { | 749 | { |
691 | unsigned int i; | 750 | unsigned int i; |
692 | char result[COMP_BUF_SIZE]; | 751 | char result[COMP_BUF_SIZE]; |
693 | struct crypto_tfm *tfm; | 752 | struct crypto_comp *tfm; |
694 | struct comp_testvec *tv; | 753 | struct comp_testvec *tv; |
695 | unsigned int tsize; | 754 | unsigned int tsize; |
696 | 755 | ||
@@ -762,105 +821,7 @@ static void test_deflate(void) | |||
762 | ilen, dlen); | 821 | ilen, dlen); |
763 | } | 822 | } |
764 | out: | 823 | out: |
765 | crypto_free_tfm(tfm); | 824 | crypto_free_comp(tfm); |
766 | } | ||
767 | |||
768 | static void test_crc32c(void) | ||
769 | { | ||
770 | #define NUMVEC 6 | ||
771 | #define VECSIZE 40 | ||
772 | |||
773 | int i, j, pass; | ||
774 | u32 crc; | ||
775 | u8 b, test_vec[NUMVEC][VECSIZE]; | ||
776 | static u32 vec_results[NUMVEC] = { | ||
777 | 0x0e2c157f, 0xe980ebf6, 0xde74bded, | ||
778 | 0xd579c862, 0xba979ad0, 0x2b29d913 | ||
779 | }; | ||
780 | static u32 tot_vec_results = 0x24c5d375; | ||
781 | |||
782 | struct scatterlist sg[NUMVEC]; | ||
783 | struct crypto_tfm *tfm; | ||
784 | char *fmtdata = "testing crc32c initialized to %08x: %s\n"; | ||
785 | #define SEEDTESTVAL 0xedcba987 | ||
786 | u32 seed; | ||
787 | |||
788 | printk("\ntesting crc32c\n"); | ||
789 | |||
790 | tfm = crypto_alloc_tfm("crc32c", 0); | ||
791 | if (tfm == NULL) { | ||
792 | printk("failed to load transform for crc32c\n"); | ||
793 | return; | ||
794 | } | ||
795 | |||
796 | crypto_digest_init(tfm); | ||
797 | crypto_digest_final(tfm, (u8*)&crc); | ||
798 | printk(fmtdata, crc, (crc == 0) ? "pass" : "ERROR"); | ||
799 | |||
800 | /* | ||
801 | * stuff test_vec with known values, simple incrementing | ||
802 | * byte values. | ||
803 | */ | ||
804 | b = 0; | ||
805 | for (i = 0; i < NUMVEC; i++) { | ||
806 | for (j = 0; j < VECSIZE; j++) | ||
807 | test_vec[i][j] = ++b; | ||
808 | sg_set_buf(&sg[i], test_vec[i], VECSIZE); | ||
809 | } | ||
810 | |||
811 | seed = SEEDTESTVAL; | ||
812 | (void)crypto_digest_setkey(tfm, (const u8*)&seed, sizeof(u32)); | ||
813 | crypto_digest_final(tfm, (u8*)&crc); | ||
814 | printk("testing crc32c setkey returns %08x : %s\n", crc, (crc == (SEEDTESTVAL ^ ~(u32)0)) ? | ||
815 | "pass" : "ERROR"); | ||
816 | |||
817 | printk("testing crc32c using update/final:\n"); | ||
818 | |||
819 | pass = 1; /* assume all is well */ | ||
820 | |||
821 | for (i = 0; i < NUMVEC; i++) { | ||
822 | seed = ~(u32)0; | ||
823 | (void)crypto_digest_setkey(tfm, (const u8*)&seed, sizeof(u32)); | ||
824 | crypto_digest_update(tfm, &sg[i], 1); | ||
825 | crypto_digest_final(tfm, (u8*)&crc); | ||
826 | if (crc == vec_results[i]) { | ||
827 | printk(" %08x:OK", crc); | ||
828 | } else { | ||
829 | printk(" %08x:BAD, wanted %08x\n", crc, vec_results[i]); | ||
830 | pass = 0; | ||
831 | } | ||
832 | } | ||
833 | |||
834 | printk("\ntesting crc32c using incremental accumulator:\n"); | ||
835 | crc = 0; | ||
836 | for (i = 0; i < NUMVEC; i++) { | ||
837 | seed = (crc ^ ~(u32)0); | ||
838 | (void)crypto_digest_setkey(tfm, (const u8*)&seed, sizeof(u32)); | ||
839 | crypto_digest_update(tfm, &sg[i], 1); | ||
840 | crypto_digest_final(tfm, (u8*)&crc); | ||
841 | } | ||
842 | if (crc == tot_vec_results) { | ||
843 | printk(" %08x:OK", crc); | ||
844 | } else { | ||
845 | printk(" %08x:BAD, wanted %08x\n", crc, tot_vec_results); | ||
846 | pass = 0; | ||
847 | } | ||
848 | |||
849 | printk("\ntesting crc32c using digest:\n"); | ||
850 | seed = ~(u32)0; | ||
851 | (void)crypto_digest_setkey(tfm, (const u8*)&seed, sizeof(u32)); | ||
852 | crypto_digest_digest(tfm, sg, NUMVEC, (u8*)&crc); | ||
853 | if (crc == tot_vec_results) { | ||
854 | printk(" %08x:OK", crc); | ||
855 | } else { | ||
856 | printk(" %08x:BAD, wanted %08x\n", crc, tot_vec_results); | ||
857 | pass = 0; | ||
858 | } | ||
859 | |||
860 | printk("\n%s\n", pass ? "pass" : "ERROR"); | ||
861 | |||
862 | crypto_free_tfm(tfm); | ||
863 | printk("crc32c test complete\n"); | ||
864 | } | 825 | } |
865 | 826 | ||
866 | static void test_available(void) | 827 | static void test_available(void) |
@@ -869,8 +830,8 @@ static void test_available(void) | |||
869 | 830 | ||
870 | while (*name) { | 831 | while (*name) { |
871 | printk("alg %s ", *name); | 832 | printk("alg %s ", *name); |
872 | printk((crypto_alg_available(*name, 0)) ? | 833 | printk(crypto_has_alg(*name, 0, CRYPTO_ALG_ASYNC) ? |
873 | "found\n" : "not found\n"); | 834 | "found\n" : "not found\n"); |
874 | name++; | 835 | name++; |
875 | } | 836 | } |
876 | } | 837 | } |
@@ -885,79 +846,119 @@ static void do_test(void) | |||
885 | test_hash("sha1", sha1_tv_template, SHA1_TEST_VECTORS); | 846 | test_hash("sha1", sha1_tv_template, SHA1_TEST_VECTORS); |
886 | 847 | ||
887 | //DES | 848 | //DES |
888 | test_cipher ("des", MODE_ECB, ENCRYPT, des_enc_tv_template, DES_ENC_TEST_VECTORS); | 849 | test_cipher("ecb(des)", ENCRYPT, des_enc_tv_template, |
889 | test_cipher ("des", MODE_ECB, DECRYPT, des_dec_tv_template, DES_DEC_TEST_VECTORS); | 850 | DES_ENC_TEST_VECTORS); |
890 | test_cipher ("des", MODE_CBC, ENCRYPT, des_cbc_enc_tv_template, DES_CBC_ENC_TEST_VECTORS); | 851 | test_cipher("ecb(des)", DECRYPT, des_dec_tv_template, |
891 | test_cipher ("des", MODE_CBC, DECRYPT, des_cbc_dec_tv_template, DES_CBC_DEC_TEST_VECTORS); | 852 | DES_DEC_TEST_VECTORS); |
853 | test_cipher("cbc(des)", ENCRYPT, des_cbc_enc_tv_template, | ||
854 | DES_CBC_ENC_TEST_VECTORS); | ||
855 | test_cipher("cbc(des)", DECRYPT, des_cbc_dec_tv_template, | ||
856 | DES_CBC_DEC_TEST_VECTORS); | ||
892 | 857 | ||
893 | //DES3_EDE | 858 | //DES3_EDE |
894 | test_cipher ("des3_ede", MODE_ECB, ENCRYPT, des3_ede_enc_tv_template, DES3_EDE_ENC_TEST_VECTORS); | 859 | test_cipher("ecb(des3_ede)", ENCRYPT, des3_ede_enc_tv_template, |
895 | test_cipher ("des3_ede", MODE_ECB, DECRYPT, des3_ede_dec_tv_template, DES3_EDE_DEC_TEST_VECTORS); | 860 | DES3_EDE_ENC_TEST_VECTORS); |
861 | test_cipher("ecb(des3_ede)", DECRYPT, des3_ede_dec_tv_template, | ||
862 | DES3_EDE_DEC_TEST_VECTORS); | ||
896 | 863 | ||
897 | test_hash("md4", md4_tv_template, MD4_TEST_VECTORS); | 864 | test_hash("md4", md4_tv_template, MD4_TEST_VECTORS); |
898 | 865 | ||
899 | test_hash("sha256", sha256_tv_template, SHA256_TEST_VECTORS); | 866 | test_hash("sha256", sha256_tv_template, SHA256_TEST_VECTORS); |
900 | 867 | ||
901 | //BLOWFISH | 868 | //BLOWFISH |
902 | test_cipher ("blowfish", MODE_ECB, ENCRYPT, bf_enc_tv_template, BF_ENC_TEST_VECTORS); | 869 | test_cipher("ecb(blowfish)", ENCRYPT, bf_enc_tv_template, |
903 | test_cipher ("blowfish", MODE_ECB, DECRYPT, bf_dec_tv_template, BF_DEC_TEST_VECTORS); | 870 | BF_ENC_TEST_VECTORS); |
904 | test_cipher ("blowfish", MODE_CBC, ENCRYPT, bf_cbc_enc_tv_template, BF_CBC_ENC_TEST_VECTORS); | 871 | test_cipher("ecb(blowfish)", DECRYPT, bf_dec_tv_template, |
905 | test_cipher ("blowfish", MODE_CBC, DECRYPT, bf_cbc_dec_tv_template, BF_CBC_DEC_TEST_VECTORS); | 872 | BF_DEC_TEST_VECTORS); |
873 | test_cipher("cbc(blowfish)", ENCRYPT, bf_cbc_enc_tv_template, | ||
874 | BF_CBC_ENC_TEST_VECTORS); | ||
875 | test_cipher("cbc(blowfish)", DECRYPT, bf_cbc_dec_tv_template, | ||
876 | BF_CBC_DEC_TEST_VECTORS); | ||
906 | 877 | ||
907 | //TWOFISH | 878 | //TWOFISH |
908 | test_cipher ("twofish", MODE_ECB, ENCRYPT, tf_enc_tv_template, TF_ENC_TEST_VECTORS); | 879 | test_cipher("ecb(twofish)", ENCRYPT, tf_enc_tv_template, |
909 | test_cipher ("twofish", MODE_ECB, DECRYPT, tf_dec_tv_template, TF_DEC_TEST_VECTORS); | 880 | TF_ENC_TEST_VECTORS); |
910 | test_cipher ("twofish", MODE_CBC, ENCRYPT, tf_cbc_enc_tv_template, TF_CBC_ENC_TEST_VECTORS); | 881 | test_cipher("ecb(twofish)", DECRYPT, tf_dec_tv_template, |
911 | test_cipher ("twofish", MODE_CBC, DECRYPT, tf_cbc_dec_tv_template, TF_CBC_DEC_TEST_VECTORS); | 882 | TF_DEC_TEST_VECTORS); |
883 | test_cipher("cbc(twofish)", ENCRYPT, tf_cbc_enc_tv_template, | ||
884 | TF_CBC_ENC_TEST_VECTORS); | ||
885 | test_cipher("cbc(twofish)", DECRYPT, tf_cbc_dec_tv_template, | ||
886 | TF_CBC_DEC_TEST_VECTORS); | ||
912 | 887 | ||
913 | //SERPENT | 888 | //SERPENT |
914 | test_cipher ("serpent", MODE_ECB, ENCRYPT, serpent_enc_tv_template, SERPENT_ENC_TEST_VECTORS); | 889 | test_cipher("ecb(serpent)", ENCRYPT, serpent_enc_tv_template, |
915 | test_cipher ("serpent", MODE_ECB, DECRYPT, serpent_dec_tv_template, SERPENT_DEC_TEST_VECTORS); | 890 | SERPENT_ENC_TEST_VECTORS); |
891 | test_cipher("ecb(serpent)", DECRYPT, serpent_dec_tv_template, | ||
892 | SERPENT_DEC_TEST_VECTORS); | ||
916 | 893 | ||
917 | //TNEPRES | 894 | //TNEPRES |
918 | test_cipher ("tnepres", MODE_ECB, ENCRYPT, tnepres_enc_tv_template, TNEPRES_ENC_TEST_VECTORS); | 895 | test_cipher("ecb(tnepres)", ENCRYPT, tnepres_enc_tv_template, |
919 | test_cipher ("tnepres", MODE_ECB, DECRYPT, tnepres_dec_tv_template, TNEPRES_DEC_TEST_VECTORS); | 896 | TNEPRES_ENC_TEST_VECTORS); |
897 | test_cipher("ecb(tnepres)", DECRYPT, tnepres_dec_tv_template, | ||
898 | TNEPRES_DEC_TEST_VECTORS); | ||
920 | 899 | ||
921 | //AES | 900 | //AES |
922 | test_cipher ("aes", MODE_ECB, ENCRYPT, aes_enc_tv_template, AES_ENC_TEST_VECTORS); | 901 | test_cipher("ecb(aes)", ENCRYPT, aes_enc_tv_template, |
923 | test_cipher ("aes", MODE_ECB, DECRYPT, aes_dec_tv_template, AES_DEC_TEST_VECTORS); | 902 | AES_ENC_TEST_VECTORS); |
924 | test_cipher ("aes", MODE_CBC, ENCRYPT, aes_cbc_enc_tv_template, AES_CBC_ENC_TEST_VECTORS); | 903 | test_cipher("ecb(aes)", DECRYPT, aes_dec_tv_template, |
925 | test_cipher ("aes", MODE_CBC, DECRYPT, aes_cbc_dec_tv_template, AES_CBC_DEC_TEST_VECTORS); | 904 | AES_DEC_TEST_VECTORS); |
905 | test_cipher("cbc(aes)", ENCRYPT, aes_cbc_enc_tv_template, | ||
906 | AES_CBC_ENC_TEST_VECTORS); | ||
907 | test_cipher("cbc(aes)", DECRYPT, aes_cbc_dec_tv_template, | ||
908 | AES_CBC_DEC_TEST_VECTORS); | ||
926 | 909 | ||
927 | //CAST5 | 910 | //CAST5 |
928 | test_cipher ("cast5", MODE_ECB, ENCRYPT, cast5_enc_tv_template, CAST5_ENC_TEST_VECTORS); | 911 | test_cipher("ecb(cast5)", ENCRYPT, cast5_enc_tv_template, |
929 | test_cipher ("cast5", MODE_ECB, DECRYPT, cast5_dec_tv_template, CAST5_DEC_TEST_VECTORS); | 912 | CAST5_ENC_TEST_VECTORS); |
913 | test_cipher("ecb(cast5)", DECRYPT, cast5_dec_tv_template, | ||
914 | CAST5_DEC_TEST_VECTORS); | ||
930 | 915 | ||
931 | //CAST6 | 916 | //CAST6 |
932 | test_cipher ("cast6", MODE_ECB, ENCRYPT, cast6_enc_tv_template, CAST6_ENC_TEST_VECTORS); | 917 | test_cipher("ecb(cast6)", ENCRYPT, cast6_enc_tv_template, |
933 | test_cipher ("cast6", MODE_ECB, DECRYPT, cast6_dec_tv_template, CAST6_DEC_TEST_VECTORS); | 918 | CAST6_ENC_TEST_VECTORS); |
919 | test_cipher("ecb(cast6)", DECRYPT, cast6_dec_tv_template, | ||
920 | CAST6_DEC_TEST_VECTORS); | ||
934 | 921 | ||
935 | //ARC4 | 922 | //ARC4 |
936 | test_cipher ("arc4", MODE_ECB, ENCRYPT, arc4_enc_tv_template, ARC4_ENC_TEST_VECTORS); | 923 | test_cipher("ecb(arc4)", ENCRYPT, arc4_enc_tv_template, |
937 | test_cipher ("arc4", MODE_ECB, DECRYPT, arc4_dec_tv_template, ARC4_DEC_TEST_VECTORS); | 924 | ARC4_ENC_TEST_VECTORS); |
925 | test_cipher("ecb(arc4)", DECRYPT, arc4_dec_tv_template, | ||
926 | ARC4_DEC_TEST_VECTORS); | ||
938 | 927 | ||
939 | //TEA | 928 | //TEA |
940 | test_cipher ("tea", MODE_ECB, ENCRYPT, tea_enc_tv_template, TEA_ENC_TEST_VECTORS); | 929 | test_cipher("ecb(tea)", ENCRYPT, tea_enc_tv_template, |
941 | test_cipher ("tea", MODE_ECB, DECRYPT, tea_dec_tv_template, TEA_DEC_TEST_VECTORS); | 930 | TEA_ENC_TEST_VECTORS); |
931 | test_cipher("ecb(tea)", DECRYPT, tea_dec_tv_template, | ||
932 | TEA_DEC_TEST_VECTORS); | ||
942 | 933 | ||
943 | 934 | ||
944 | //XTEA | 935 | //XTEA |
945 | test_cipher ("xtea", MODE_ECB, ENCRYPT, xtea_enc_tv_template, XTEA_ENC_TEST_VECTORS); | 936 | test_cipher("ecb(xtea)", ENCRYPT, xtea_enc_tv_template, |
946 | test_cipher ("xtea", MODE_ECB, DECRYPT, xtea_dec_tv_template, XTEA_DEC_TEST_VECTORS); | 937 | XTEA_ENC_TEST_VECTORS); |
938 | test_cipher("ecb(xtea)", DECRYPT, xtea_dec_tv_template, | ||
939 | XTEA_DEC_TEST_VECTORS); | ||
947 | 940 | ||
948 | //KHAZAD | 941 | //KHAZAD |
949 | test_cipher ("khazad", MODE_ECB, ENCRYPT, khazad_enc_tv_template, KHAZAD_ENC_TEST_VECTORS); | 942 | test_cipher("ecb(khazad)", ENCRYPT, khazad_enc_tv_template, |
950 | test_cipher ("khazad", MODE_ECB, DECRYPT, khazad_dec_tv_template, KHAZAD_DEC_TEST_VECTORS); | 943 | KHAZAD_ENC_TEST_VECTORS); |
944 | test_cipher("ecb(khazad)", DECRYPT, khazad_dec_tv_template, | ||
945 | KHAZAD_DEC_TEST_VECTORS); | ||
951 | 946 | ||
952 | //ANUBIS | 947 | //ANUBIS |
953 | test_cipher ("anubis", MODE_ECB, ENCRYPT, anubis_enc_tv_template, ANUBIS_ENC_TEST_VECTORS); | 948 | test_cipher("ecb(anubis)", ENCRYPT, anubis_enc_tv_template, |
954 | test_cipher ("anubis", MODE_ECB, DECRYPT, anubis_dec_tv_template, ANUBIS_DEC_TEST_VECTORS); | 949 | ANUBIS_ENC_TEST_VECTORS); |
955 | test_cipher ("anubis", MODE_CBC, ENCRYPT, anubis_cbc_enc_tv_template, ANUBIS_CBC_ENC_TEST_VECTORS); | 950 | test_cipher("ecb(anubis)", DECRYPT, anubis_dec_tv_template, |
956 | test_cipher ("anubis", MODE_CBC, DECRYPT, anubis_cbc_dec_tv_template, ANUBIS_CBC_ENC_TEST_VECTORS); | 951 | ANUBIS_DEC_TEST_VECTORS); |
952 | test_cipher("cbc(anubis)", ENCRYPT, anubis_cbc_enc_tv_template, | ||
953 | ANUBIS_CBC_ENC_TEST_VECTORS); | ||
954 | test_cipher("cbc(anubis)", DECRYPT, anubis_cbc_dec_tv_template, | ||
955 | ANUBIS_CBC_ENC_TEST_VECTORS); | ||
957 | 956 | ||
958 | //XETA | 957 | //XETA |
959 | test_cipher ("xeta", MODE_ECB, ENCRYPT, xeta_enc_tv_template, XETA_ENC_TEST_VECTORS); | 958 | test_cipher("ecb(xeta)", ENCRYPT, xeta_enc_tv_template, |
960 | test_cipher ("xeta", MODE_ECB, DECRYPT, xeta_dec_tv_template, XETA_DEC_TEST_VECTORS); | 959 | XETA_ENC_TEST_VECTORS); |
960 | test_cipher("ecb(xeta)", DECRYPT, xeta_dec_tv_template, | ||
961 | XETA_DEC_TEST_VECTORS); | ||
961 | 962 | ||
962 | test_hash("sha384", sha384_tv_template, SHA384_TEST_VECTORS); | 963 | test_hash("sha384", sha384_tv_template, SHA384_TEST_VECTORS); |
963 | test_hash("sha512", sha512_tv_template, SHA512_TEST_VECTORS); | 964 | test_hash("sha512", sha512_tv_template, SHA512_TEST_VECTORS); |
@@ -968,12 +969,13 @@ static void do_test(void) | |||
968 | test_hash("tgr160", tgr160_tv_template, TGR160_TEST_VECTORS); | 969 | test_hash("tgr160", tgr160_tv_template, TGR160_TEST_VECTORS); |
969 | test_hash("tgr128", tgr128_tv_template, TGR128_TEST_VECTORS); | 970 | test_hash("tgr128", tgr128_tv_template, TGR128_TEST_VECTORS); |
970 | test_deflate(); | 971 | test_deflate(); |
971 | test_crc32c(); | 972 | test_hash("crc32c", crc32c_tv_template, CRC32C_TEST_VECTORS); |
972 | #ifdef CONFIG_CRYPTO_HMAC | 973 | test_hash("hmac(md5)", hmac_md5_tv_template, |
973 | test_hmac("md5", hmac_md5_tv_template, HMAC_MD5_TEST_VECTORS); | 974 | HMAC_MD5_TEST_VECTORS); |
974 | test_hmac("sha1", hmac_sha1_tv_template, HMAC_SHA1_TEST_VECTORS); | 975 | test_hash("hmac(sha1)", hmac_sha1_tv_template, |
975 | test_hmac("sha256", hmac_sha256_tv_template, HMAC_SHA256_TEST_VECTORS); | 976 | HMAC_SHA1_TEST_VECTORS); |
976 | #endif | 977 | test_hash("hmac(sha256)", hmac_sha256_tv_template, |
978 | HMAC_SHA256_TEST_VECTORS); | ||
977 | 979 | ||
978 | test_hash("michael_mic", michael_mic_tv_template, MICHAEL_MIC_TEST_VECTORS); | 980 | test_hash("michael_mic", michael_mic_tv_template, MICHAEL_MIC_TEST_VECTORS); |
979 | break; | 981 | break; |
@@ -987,15 +989,21 @@ static void do_test(void) | |||
987 | break; | 989 | break; |
988 | 990 | ||
989 | case 3: | 991 | case 3: |
990 | test_cipher ("des", MODE_ECB, ENCRYPT, des_enc_tv_template, DES_ENC_TEST_VECTORS); | 992 | test_cipher("ecb(des)", ENCRYPT, des_enc_tv_template, |
991 | test_cipher ("des", MODE_ECB, DECRYPT, des_dec_tv_template, DES_DEC_TEST_VECTORS); | 993 | DES_ENC_TEST_VECTORS); |
992 | test_cipher ("des", MODE_CBC, ENCRYPT, des_cbc_enc_tv_template, DES_CBC_ENC_TEST_VECTORS); | 994 | test_cipher("ecb(des)", DECRYPT, des_dec_tv_template, |
993 | test_cipher ("des", MODE_CBC, DECRYPT, des_cbc_dec_tv_template, DES_CBC_DEC_TEST_VECTORS); | 995 | DES_DEC_TEST_VECTORS); |
996 | test_cipher("cbc(des)", ENCRYPT, des_cbc_enc_tv_template, | ||
997 | DES_CBC_ENC_TEST_VECTORS); | ||
998 | test_cipher("cbc(des)", DECRYPT, des_cbc_dec_tv_template, | ||
999 | DES_CBC_DEC_TEST_VECTORS); | ||
994 | break; | 1000 | break; |
995 | 1001 | ||
996 | case 4: | 1002 | case 4: |
997 | test_cipher ("des3_ede", MODE_ECB, ENCRYPT, des3_ede_enc_tv_template, DES3_EDE_ENC_TEST_VECTORS); | 1003 | test_cipher("ecb(des3_ede)", ENCRYPT, des3_ede_enc_tv_template, |
998 | test_cipher ("des3_ede", MODE_ECB, DECRYPT, des3_ede_dec_tv_template, DES3_EDE_DEC_TEST_VECTORS); | 1004 | DES3_EDE_ENC_TEST_VECTORS); |
1005 | test_cipher("ecb(des3_ede)", DECRYPT, des3_ede_dec_tv_template, | ||
1006 | DES3_EDE_DEC_TEST_VECTORS); | ||
999 | break; | 1007 | break; |
1000 | 1008 | ||
1001 | case 5: | 1009 | case 5: |
@@ -1007,29 +1015,43 @@ static void do_test(void) | |||
1007 | break; | 1015 | break; |
1008 | 1016 | ||
1009 | case 7: | 1017 | case 7: |
1010 | test_cipher ("blowfish", MODE_ECB, ENCRYPT, bf_enc_tv_template, BF_ENC_TEST_VECTORS); | 1018 | test_cipher("ecb(blowfish)", ENCRYPT, bf_enc_tv_template, |
1011 | test_cipher ("blowfish", MODE_ECB, DECRYPT, bf_dec_tv_template, BF_DEC_TEST_VECTORS); | 1019 | BF_ENC_TEST_VECTORS); |
1012 | test_cipher ("blowfish", MODE_CBC, ENCRYPT, bf_cbc_enc_tv_template, BF_CBC_ENC_TEST_VECTORS); | 1020 | test_cipher("ecb(blowfish)", DECRYPT, bf_dec_tv_template, |
1013 | test_cipher ("blowfish", MODE_CBC, DECRYPT, bf_cbc_dec_tv_template, BF_CBC_DEC_TEST_VECTORS); | 1021 | BF_DEC_TEST_VECTORS); |
1022 | test_cipher("cbc(blowfish)", ENCRYPT, bf_cbc_enc_tv_template, | ||
1023 | BF_CBC_ENC_TEST_VECTORS); | ||
1024 | test_cipher("cbc(blowfish)", DECRYPT, bf_cbc_dec_tv_template, | ||
1025 | BF_CBC_DEC_TEST_VECTORS); | ||
1014 | break; | 1026 | break; |
1015 | 1027 | ||
1016 | case 8: | 1028 | case 8: |
1017 | test_cipher ("twofish", MODE_ECB, ENCRYPT, tf_enc_tv_template, TF_ENC_TEST_VECTORS); | 1029 | test_cipher("ecb(twofish)", ENCRYPT, tf_enc_tv_template, |
1018 | test_cipher ("twofish", MODE_ECB, DECRYPT, tf_dec_tv_template, TF_DEC_TEST_VECTORS); | 1030 | TF_ENC_TEST_VECTORS); |
1019 | test_cipher ("twofish", MODE_CBC, ENCRYPT, tf_cbc_enc_tv_template, TF_CBC_ENC_TEST_VECTORS); | 1031 | test_cipher("ecb(twofish)", DECRYPT, tf_dec_tv_template, |
1020 | test_cipher ("twofish", MODE_CBC, DECRYPT, tf_cbc_dec_tv_template, TF_CBC_DEC_TEST_VECTORS); | 1032 | TF_DEC_TEST_VECTORS); |
1033 | test_cipher("cbc(twofish)", ENCRYPT, tf_cbc_enc_tv_template, | ||
1034 | TF_CBC_ENC_TEST_VECTORS); | ||
1035 | test_cipher("cbc(twofish)", DECRYPT, tf_cbc_dec_tv_template, | ||
1036 | TF_CBC_DEC_TEST_VECTORS); | ||
1021 | break; | 1037 | break; |
1022 | 1038 | ||
1023 | case 9: | 1039 | case 9: |
1024 | test_cipher ("serpent", MODE_ECB, ENCRYPT, serpent_enc_tv_template, SERPENT_ENC_TEST_VECTORS); | 1040 | test_cipher("ecb(serpent)", ENCRYPT, serpent_enc_tv_template, |
1025 | test_cipher ("serpent", MODE_ECB, DECRYPT, serpent_dec_tv_template, SERPENT_DEC_TEST_VECTORS); | 1041 | SERPENT_ENC_TEST_VECTORS); |
1042 | test_cipher("ecb(serpent)", DECRYPT, serpent_dec_tv_template, | ||
1043 | SERPENT_DEC_TEST_VECTORS); | ||
1026 | break; | 1044 | break; |
1027 | 1045 | ||
1028 | case 10: | 1046 | case 10: |
1029 | test_cipher ("aes", MODE_ECB, ENCRYPT, aes_enc_tv_template, AES_ENC_TEST_VECTORS); | 1047 | test_cipher("ecb(aes)", ENCRYPT, aes_enc_tv_template, |
1030 | test_cipher ("aes", MODE_ECB, DECRYPT, aes_dec_tv_template, AES_DEC_TEST_VECTORS); | 1048 | AES_ENC_TEST_VECTORS); |
1031 | test_cipher ("aes", MODE_CBC, ENCRYPT, aes_cbc_enc_tv_template, AES_CBC_ENC_TEST_VECTORS); | 1049 | test_cipher("ecb(aes)", DECRYPT, aes_dec_tv_template, |
1032 | test_cipher ("aes", MODE_CBC, DECRYPT, aes_cbc_dec_tv_template, AES_CBC_DEC_TEST_VECTORS); | 1050 | AES_DEC_TEST_VECTORS); |
1051 | test_cipher("cbc(aes)", ENCRYPT, aes_cbc_enc_tv_template, | ||
1052 | AES_CBC_ENC_TEST_VECTORS); | ||
1053 | test_cipher("cbc(aes)", DECRYPT, aes_cbc_dec_tv_template, | ||
1054 | AES_CBC_DEC_TEST_VECTORS); | ||
1033 | break; | 1055 | break; |
1034 | 1056 | ||
1035 | case 11: | 1057 | case 11: |
@@ -1045,18 +1067,24 @@ static void do_test(void) | |||
1045 | break; | 1067 | break; |
1046 | 1068 | ||
1047 | case 14: | 1069 | case 14: |
1048 | test_cipher ("cast5", MODE_ECB, ENCRYPT, cast5_enc_tv_template, CAST5_ENC_TEST_VECTORS); | 1070 | test_cipher("ecb(cast5)", ENCRYPT, cast5_enc_tv_template, |
1049 | test_cipher ("cast5", MODE_ECB, DECRYPT, cast5_dec_tv_template, CAST5_DEC_TEST_VECTORS); | 1071 | CAST5_ENC_TEST_VECTORS); |
1072 | test_cipher("ecb(cast5)", DECRYPT, cast5_dec_tv_template, | ||
1073 | CAST5_DEC_TEST_VECTORS); | ||
1050 | break; | 1074 | break; |
1051 | 1075 | ||
1052 | case 15: | 1076 | case 15: |
1053 | test_cipher ("cast6", MODE_ECB, ENCRYPT, cast6_enc_tv_template, CAST6_ENC_TEST_VECTORS); | 1077 | test_cipher("ecb(cast6)", ENCRYPT, cast6_enc_tv_template, |
1054 | test_cipher ("cast6", MODE_ECB, DECRYPT, cast6_dec_tv_template, CAST6_DEC_TEST_VECTORS); | 1078 | CAST6_ENC_TEST_VECTORS); |
1079 | test_cipher("ecb(cast6)", DECRYPT, cast6_dec_tv_template, | ||
1080 | CAST6_DEC_TEST_VECTORS); | ||
1055 | break; | 1081 | break; |
1056 | 1082 | ||
1057 | case 16: | 1083 | case 16: |
1058 | test_cipher ("arc4", MODE_ECB, ENCRYPT, arc4_enc_tv_template, ARC4_ENC_TEST_VECTORS); | 1084 | test_cipher("ecb(arc4)", ENCRYPT, arc4_enc_tv_template, |
1059 | test_cipher ("arc4", MODE_ECB, DECRYPT, arc4_dec_tv_template, ARC4_DEC_TEST_VECTORS); | 1085 | ARC4_ENC_TEST_VECTORS); |
1086 | test_cipher("ecb(arc4)", DECRYPT, arc4_dec_tv_template, | ||
1087 | ARC4_DEC_TEST_VECTORS); | ||
1060 | break; | 1088 | break; |
1061 | 1089 | ||
1062 | case 17: | 1090 | case 17: |
@@ -1064,22 +1092,28 @@ static void do_test(void) | |||
1064 | break; | 1092 | break; |
1065 | 1093 | ||
1066 | case 18: | 1094 | case 18: |
1067 | test_crc32c(); | 1095 | test_hash("crc32c", crc32c_tv_template, CRC32C_TEST_VECTORS); |
1068 | break; | 1096 | break; |
1069 | 1097 | ||
1070 | case 19: | 1098 | case 19: |
1071 | test_cipher ("tea", MODE_ECB, ENCRYPT, tea_enc_tv_template, TEA_ENC_TEST_VECTORS); | 1099 | test_cipher("ecb(tea)", ENCRYPT, tea_enc_tv_template, |
1072 | test_cipher ("tea", MODE_ECB, DECRYPT, tea_dec_tv_template, TEA_DEC_TEST_VECTORS); | 1100 | TEA_ENC_TEST_VECTORS); |
1101 | test_cipher("ecb(tea)", DECRYPT, tea_dec_tv_template, | ||
1102 | TEA_DEC_TEST_VECTORS); | ||
1073 | break; | 1103 | break; |
1074 | 1104 | ||
1075 | case 20: | 1105 | case 20: |
1076 | test_cipher ("xtea", MODE_ECB, ENCRYPT, xtea_enc_tv_template, XTEA_ENC_TEST_VECTORS); | 1106 | test_cipher("ecb(xtea)", ENCRYPT, xtea_enc_tv_template, |
1077 | test_cipher ("xtea", MODE_ECB, DECRYPT, xtea_dec_tv_template, XTEA_DEC_TEST_VECTORS); | 1107 | XTEA_ENC_TEST_VECTORS); |
1108 | test_cipher("ecb(xtea)", DECRYPT, xtea_dec_tv_template, | ||
1109 | XTEA_DEC_TEST_VECTORS); | ||
1078 | break; | 1110 | break; |
1079 | 1111 | ||
1080 | case 21: | 1112 | case 21: |
1081 | test_cipher ("khazad", MODE_ECB, ENCRYPT, khazad_enc_tv_template, KHAZAD_ENC_TEST_VECTORS); | 1113 | test_cipher("ecb(khazad)", ENCRYPT, khazad_enc_tv_template, |
1082 | test_cipher ("khazad", MODE_ECB, DECRYPT, khazad_dec_tv_template, KHAZAD_DEC_TEST_VECTORS); | 1114 | KHAZAD_ENC_TEST_VECTORS); |
1115 | test_cipher("ecb(khazad)", DECRYPT, khazad_dec_tv_template, | ||
1116 | KHAZAD_DEC_TEST_VECTORS); | ||
1083 | break; | 1117 | break; |
1084 | 1118 | ||
1085 | case 22: | 1119 | case 22: |
@@ -1095,15 +1129,21 @@ static void do_test(void) | |||
1095 | break; | 1129 | break; |
1096 | 1130 | ||
1097 | case 25: | 1131 | case 25: |
1098 | test_cipher ("tnepres", MODE_ECB, ENCRYPT, tnepres_enc_tv_template, TNEPRES_ENC_TEST_VECTORS); | 1132 | test_cipher("ecb(tnepres)", ENCRYPT, tnepres_enc_tv_template, |
1099 | test_cipher ("tnepres", MODE_ECB, DECRYPT, tnepres_dec_tv_template, TNEPRES_DEC_TEST_VECTORS); | 1133 | TNEPRES_ENC_TEST_VECTORS); |
1134 | test_cipher("ecb(tnepres)", DECRYPT, tnepres_dec_tv_template, | ||
1135 | TNEPRES_DEC_TEST_VECTORS); | ||
1100 | break; | 1136 | break; |
1101 | 1137 | ||
1102 | case 26: | 1138 | case 26: |
1103 | test_cipher ("anubis", MODE_ECB, ENCRYPT, anubis_enc_tv_template, ANUBIS_ENC_TEST_VECTORS); | 1139 | test_cipher("ecb(anubis)", ENCRYPT, anubis_enc_tv_template, |
1104 | test_cipher ("anubis", MODE_ECB, DECRYPT, anubis_dec_tv_template, ANUBIS_DEC_TEST_VECTORS); | 1140 | ANUBIS_ENC_TEST_VECTORS); |
1105 | test_cipher ("anubis", MODE_CBC, ENCRYPT, anubis_cbc_enc_tv_template, ANUBIS_CBC_ENC_TEST_VECTORS); | 1141 | test_cipher("ecb(anubis)", DECRYPT, anubis_dec_tv_template, |
1106 | test_cipher ("anubis", MODE_CBC, DECRYPT, anubis_cbc_dec_tv_template, ANUBIS_CBC_ENC_TEST_VECTORS); | 1142 | ANUBIS_DEC_TEST_VECTORS); |
1143 | test_cipher("cbc(anubis)", ENCRYPT, anubis_cbc_enc_tv_template, | ||
1144 | ANUBIS_CBC_ENC_TEST_VECTORS); | ||
1145 | test_cipher("cbc(anubis)", DECRYPT, anubis_cbc_dec_tv_template, | ||
1146 | ANUBIS_CBC_ENC_TEST_VECTORS); | ||
1107 | break; | 1147 | break; |
1108 | 1148 | ||
1109 | case 27: | 1149 | case 27: |
@@ -1120,85 +1160,88 @@ static void do_test(void) | |||
1120 | break; | 1160 | break; |
1121 | 1161 | ||
1122 | case 30: | 1162 | case 30: |
1123 | test_cipher ("xeta", MODE_ECB, ENCRYPT, xeta_enc_tv_template, XETA_ENC_TEST_VECTORS); | 1163 | test_cipher("ecb(xeta)", ENCRYPT, xeta_enc_tv_template, |
1124 | test_cipher ("xeta", MODE_ECB, DECRYPT, xeta_dec_tv_template, XETA_DEC_TEST_VECTORS); | 1164 | XETA_ENC_TEST_VECTORS); |
1165 | test_cipher("ecb(xeta)", DECRYPT, xeta_dec_tv_template, | ||
1166 | XETA_DEC_TEST_VECTORS); | ||
1125 | break; | 1167 | break; |
1126 | 1168 | ||
1127 | #ifdef CONFIG_CRYPTO_HMAC | ||
1128 | case 100: | 1169 | case 100: |
1129 | test_hmac("md5", hmac_md5_tv_template, HMAC_MD5_TEST_VECTORS); | 1170 | test_hash("hmac(md5)", hmac_md5_tv_template, |
1171 | HMAC_MD5_TEST_VECTORS); | ||
1130 | break; | 1172 | break; |
1131 | 1173 | ||
1132 | case 101: | 1174 | case 101: |
1133 | test_hmac("sha1", hmac_sha1_tv_template, HMAC_SHA1_TEST_VECTORS); | 1175 | test_hash("hmac(sha1)", hmac_sha1_tv_template, |
1176 | HMAC_SHA1_TEST_VECTORS); | ||
1134 | break; | 1177 | break; |
1135 | 1178 | ||
1136 | case 102: | 1179 | case 102: |
1137 | test_hmac("sha256", hmac_sha256_tv_template, HMAC_SHA256_TEST_VECTORS); | 1180 | test_hash("hmac(sha256)", hmac_sha256_tv_template, |
1181 | HMAC_SHA256_TEST_VECTORS); | ||
1138 | break; | 1182 | break; |
1139 | 1183 | ||
1140 | #endif | ||
1141 | 1184 | ||
1142 | case 200: | 1185 | case 200: |
1143 | test_cipher_speed("aes", MODE_ECB, ENCRYPT, sec, NULL, 0, | 1186 | test_cipher_speed("ecb(aes)", ENCRYPT, sec, NULL, 0, |
1144 | aes_speed_template); | 1187 | aes_speed_template); |
1145 | test_cipher_speed("aes", MODE_ECB, DECRYPT, sec, NULL, 0, | 1188 | test_cipher_speed("ecb(aes)", DECRYPT, sec, NULL, 0, |
1146 | aes_speed_template); | 1189 | aes_speed_template); |
1147 | test_cipher_speed("aes", MODE_CBC, ENCRYPT, sec, NULL, 0, | 1190 | test_cipher_speed("cbc(aes)", ENCRYPT, sec, NULL, 0, |
1148 | aes_speed_template); | 1191 | aes_speed_template); |
1149 | test_cipher_speed("aes", MODE_CBC, DECRYPT, sec, NULL, 0, | 1192 | test_cipher_speed("cbc(aes)", DECRYPT, sec, NULL, 0, |
1150 | aes_speed_template); | 1193 | aes_speed_template); |
1151 | break; | 1194 | break; |
1152 | 1195 | ||
1153 | case 201: | 1196 | case 201: |
1154 | test_cipher_speed("des3_ede", MODE_ECB, ENCRYPT, sec, | 1197 | test_cipher_speed("ecb(des3_ede)", ENCRYPT, sec, |
1155 | des3_ede_enc_tv_template, | 1198 | des3_ede_enc_tv_template, |
1156 | DES3_EDE_ENC_TEST_VECTORS, | 1199 | DES3_EDE_ENC_TEST_VECTORS, |
1157 | des3_ede_speed_template); | 1200 | des3_ede_speed_template); |
1158 | test_cipher_speed("des3_ede", MODE_ECB, DECRYPT, sec, | 1201 | test_cipher_speed("ecb(des3_ede)", DECRYPT, sec, |
1159 | des3_ede_dec_tv_template, | 1202 | des3_ede_dec_tv_template, |
1160 | DES3_EDE_DEC_TEST_VECTORS, | 1203 | DES3_EDE_DEC_TEST_VECTORS, |
1161 | des3_ede_speed_template); | 1204 | des3_ede_speed_template); |
1162 | test_cipher_speed("des3_ede", MODE_CBC, ENCRYPT, sec, | 1205 | test_cipher_speed("cbc(des3_ede)", ENCRYPT, sec, |
1163 | des3_ede_enc_tv_template, | 1206 | des3_ede_enc_tv_template, |
1164 | DES3_EDE_ENC_TEST_VECTORS, | 1207 | DES3_EDE_ENC_TEST_VECTORS, |
1165 | des3_ede_speed_template); | 1208 | des3_ede_speed_template); |
1166 | test_cipher_speed("des3_ede", MODE_CBC, DECRYPT, sec, | 1209 | test_cipher_speed("cbc(des3_ede)", DECRYPT, sec, |
1167 | des3_ede_dec_tv_template, | 1210 | des3_ede_dec_tv_template, |
1168 | DES3_EDE_DEC_TEST_VECTORS, | 1211 | DES3_EDE_DEC_TEST_VECTORS, |
1169 | des3_ede_speed_template); | 1212 | des3_ede_speed_template); |
1170 | break; | 1213 | break; |
1171 | 1214 | ||
1172 | case 202: | 1215 | case 202: |
1173 | test_cipher_speed("twofish", MODE_ECB, ENCRYPT, sec, NULL, 0, | 1216 | test_cipher_speed("ecb(twofish)", ENCRYPT, sec, NULL, 0, |
1174 | twofish_speed_template); | 1217 | twofish_speed_template); |
1175 | test_cipher_speed("twofish", MODE_ECB, DECRYPT, sec, NULL, 0, | 1218 | test_cipher_speed("ecb(twofish)", DECRYPT, sec, NULL, 0, |
1176 | twofish_speed_template); | 1219 | twofish_speed_template); |
1177 | test_cipher_speed("twofish", MODE_CBC, ENCRYPT, sec, NULL, 0, | 1220 | test_cipher_speed("cbc(twofish)", ENCRYPT, sec, NULL, 0, |
1178 | twofish_speed_template); | 1221 | twofish_speed_template); |
1179 | test_cipher_speed("twofish", MODE_CBC, DECRYPT, sec, NULL, 0, | 1222 | test_cipher_speed("cbc(twofish)", DECRYPT, sec, NULL, 0, |
1180 | twofish_speed_template); | 1223 | twofish_speed_template); |
1181 | break; | 1224 | break; |
1182 | 1225 | ||
1183 | case 203: | 1226 | case 203: |
1184 | test_cipher_speed("blowfish", MODE_ECB, ENCRYPT, sec, NULL, 0, | 1227 | test_cipher_speed("ecb(blowfish)", ENCRYPT, sec, NULL, 0, |
1185 | blowfish_speed_template); | 1228 | blowfish_speed_template); |
1186 | test_cipher_speed("blowfish", MODE_ECB, DECRYPT, sec, NULL, 0, | 1229 | test_cipher_speed("ecb(blowfish)", DECRYPT, sec, NULL, 0, |
1187 | blowfish_speed_template); | 1230 | blowfish_speed_template); |
1188 | test_cipher_speed("blowfish", MODE_CBC, ENCRYPT, sec, NULL, 0, | 1231 | test_cipher_speed("cbc(blowfish)", ENCRYPT, sec, NULL, 0, |
1189 | blowfish_speed_template); | 1232 | blowfish_speed_template); |
1190 | test_cipher_speed("blowfish", MODE_CBC, DECRYPT, sec, NULL, 0, | 1233 | test_cipher_speed("cbc(blowfish)", DECRYPT, sec, NULL, 0, |
1191 | blowfish_speed_template); | 1234 | blowfish_speed_template); |
1192 | break; | 1235 | break; |
1193 | 1236 | ||
1194 | case 204: | 1237 | case 204: |
1195 | test_cipher_speed("des", MODE_ECB, ENCRYPT, sec, NULL, 0, | 1238 | test_cipher_speed("ecb(des)", ENCRYPT, sec, NULL, 0, |
1196 | des_speed_template); | 1239 | des_speed_template); |
1197 | test_cipher_speed("des", MODE_ECB, DECRYPT, sec, NULL, 0, | 1240 | test_cipher_speed("ecb(des)", DECRYPT, sec, NULL, 0, |
1198 | des_speed_template); | 1241 | des_speed_template); |
1199 | test_cipher_speed("des", MODE_CBC, ENCRYPT, sec, NULL, 0, | 1242 | test_cipher_speed("cbc(des)", ENCRYPT, sec, NULL, 0, |
1200 | des_speed_template); | 1243 | des_speed_template); |
1201 | test_cipher_speed("des", MODE_CBC, DECRYPT, sec, NULL, 0, | 1244 | test_cipher_speed("cbc(des)", DECRYPT, sec, NULL, 0, |
1202 | des_speed_template); | 1245 | des_speed_template); |
1203 | break; | 1246 | break; |
1204 | 1247 | ||
@@ -1206,51 +1249,51 @@ static void do_test(void) | |||
1206 | /* fall through */ | 1249 | /* fall through */ |
1207 | 1250 | ||
1208 | case 301: | 1251 | case 301: |
1209 | test_digest_speed("md4", sec, generic_digest_speed_template); | 1252 | test_hash_speed("md4", sec, generic_hash_speed_template); |
1210 | if (mode > 300 && mode < 400) break; | 1253 | if (mode > 300 && mode < 400) break; |
1211 | 1254 | ||
1212 | case 302: | 1255 | case 302: |
1213 | test_digest_speed("md5", sec, generic_digest_speed_template); | 1256 | test_hash_speed("md5", sec, generic_hash_speed_template); |
1214 | if (mode > 300 && mode < 400) break; | 1257 | if (mode > 300 && mode < 400) break; |
1215 | 1258 | ||
1216 | case 303: | 1259 | case 303: |
1217 | test_digest_speed("sha1", sec, generic_digest_speed_template); | 1260 | test_hash_speed("sha1", sec, generic_hash_speed_template); |
1218 | if (mode > 300 && mode < 400) break; | 1261 | if (mode > 300 && mode < 400) break; |
1219 | 1262 | ||
1220 | case 304: | 1263 | case 304: |
1221 | test_digest_speed("sha256", sec, generic_digest_speed_template); | 1264 | test_hash_speed("sha256", sec, generic_hash_speed_template); |
1222 | if (mode > 300 && mode < 400) break; | 1265 | if (mode > 300 && mode < 400) break; |
1223 | 1266 | ||
1224 | case 305: | 1267 | case 305: |
1225 | test_digest_speed("sha384", sec, generic_digest_speed_template); | 1268 | test_hash_speed("sha384", sec, generic_hash_speed_template); |
1226 | if (mode > 300 && mode < 400) break; | 1269 | if (mode > 300 && mode < 400) break; |
1227 | 1270 | ||
1228 | case 306: | 1271 | case 306: |
1229 | test_digest_speed("sha512", sec, generic_digest_speed_template); | 1272 | test_hash_speed("sha512", sec, generic_hash_speed_template); |
1230 | if (mode > 300 && mode < 400) break; | 1273 | if (mode > 300 && mode < 400) break; |
1231 | 1274 | ||
1232 | case 307: | 1275 | case 307: |
1233 | test_digest_speed("wp256", sec, generic_digest_speed_template); | 1276 | test_hash_speed("wp256", sec, generic_hash_speed_template); |
1234 | if (mode > 300 && mode < 400) break; | 1277 | if (mode > 300 && mode < 400) break; |
1235 | 1278 | ||
1236 | case 308: | 1279 | case 308: |
1237 | test_digest_speed("wp384", sec, generic_digest_speed_template); | 1280 | test_hash_speed("wp384", sec, generic_hash_speed_template); |
1238 | if (mode > 300 && mode < 400) break; | 1281 | if (mode > 300 && mode < 400) break; |
1239 | 1282 | ||
1240 | case 309: | 1283 | case 309: |
1241 | test_digest_speed("wp512", sec, generic_digest_speed_template); | 1284 | test_hash_speed("wp512", sec, generic_hash_speed_template); |
1242 | if (mode > 300 && mode < 400) break; | 1285 | if (mode > 300 && mode < 400) break; |
1243 | 1286 | ||
1244 | case 310: | 1287 | case 310: |
1245 | test_digest_speed("tgr128", sec, generic_digest_speed_template); | 1288 | test_hash_speed("tgr128", sec, generic_hash_speed_template); |
1246 | if (mode > 300 && mode < 400) break; | 1289 | if (mode > 300 && mode < 400) break; |
1247 | 1290 | ||
1248 | case 311: | 1291 | case 311: |
1249 | test_digest_speed("tgr160", sec, generic_digest_speed_template); | 1292 | test_hash_speed("tgr160", sec, generic_hash_speed_template); |
1250 | if (mode > 300 && mode < 400) break; | 1293 | if (mode > 300 && mode < 400) break; |
1251 | 1294 | ||
1252 | case 312: | 1295 | case 312: |
1253 | test_digest_speed("tgr192", sec, generic_digest_speed_template); | 1296 | test_hash_speed("tgr192", sec, generic_hash_speed_template); |
1254 | if (mode > 300 && mode < 400) break; | 1297 | if (mode > 300 && mode < 400) break; |
1255 | 1298 | ||
1256 | case 399: | 1299 | case 399: |