diff options
author | codeworkx <daniel.hillenbrand@codeworkx.de> | 2012-06-02 13:09:29 +0200 |
---|---|---|
committer | codeworkx <daniel.hillenbrand@codeworkx.de> | 2012-06-02 13:09:29 +0200 |
commit | c6da2cfeb05178a11c6d062a06f8078150ee492f (patch) | |
tree | f3b4021d252c52d6463a9b3c1bb7245e399b009c /crypto/tcrypt.c | |
parent | c6d7c4dbff353eac7919342ae6b3299a378160a6 (diff) | |
download | kernel_samsung_smdk4412-c6da2cfeb05178a11c6d062a06f8078150ee492f.zip kernel_samsung_smdk4412-c6da2cfeb05178a11c6d062a06f8078150ee492f.tar.gz kernel_samsung_smdk4412-c6da2cfeb05178a11c6d062a06f8078150ee492f.tar.bz2 |
samsung update 1
Diffstat (limited to 'crypto/tcrypt.c')
-rw-r--r-- | crypto/tcrypt.c | 160 |
1 files changed, 109 insertions, 51 deletions
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c index 2222617..093764e 100644 --- a/crypto/tcrypt.c +++ b/crypto/tcrypt.c @@ -33,9 +33,12 @@ #include <linux/jiffies.h> #include <linux/timex.h> #include <linux/interrupt.h> +#ifdef CRYPTO_SPEED_TESTS #include "tcrypt.h" +#endif #include "internal.h" +#ifdef CRYPTO_SPEED_TESTS /* * Need slab memory for testing (size in number of pages). */ @@ -51,12 +54,15 @@ * Used by test_cipher_speed() */ static unsigned int sec; +#endif static char *alg = NULL; static u32 type; static u32 mask; static int mode; +#ifdef CRYPTO_SPEED_TESTS static char *tvmem[TVMEMSIZE]; +#endif static char *check[] = { "des", "md5", "des3_ede", "rot13", "sha1", "sha224", "sha256", @@ -66,7 +72,7 @@ static char *check[] = { "camellia", "seed", "salsa20", "rmd128", "rmd160", "rmd256", "rmd320", "lzo", "cts", "zlib", NULL }; - +#ifdef CRYPTO_SPEED_TESTS static int test_cipher_jiffies(struct blkcipher_desc *desc, int enc, struct scatterlist *sg, int blen, int sec) { @@ -718,6 +724,7 @@ static void test_ahash_speed(const char *algo, unsigned int sec, out: crypto_free_ahash(tfm); } +#endif static void test_available(void) { @@ -752,15 +759,17 @@ static int do_test(int m) for (i = 1; i < 200; i++) ret += do_test(i); break; - +#ifdef CONFIG_CRYPTO_MD5 case 1: ret += tcrypt_test("md5"); break; - +#endif +#ifdef CONFIG_CRYPTO_SHA1 case 2: ret += tcrypt_test("sha1"); break; - +#endif +#ifdef CONFIG_CRYPTO_DES case 3: ret += tcrypt_test("ecb(des)"); ret += tcrypt_test("cbc(des)"); @@ -770,38 +779,47 @@ static int do_test(int m) ret += tcrypt_test("ecb(des3_ede)"); ret += tcrypt_test("cbc(des3_ede)"); break; - +#endif +#ifdef CONFIG_CRYPTO_MD4 case 5: ret += tcrypt_test("md4"); break; - +#endif case 6: ret += tcrypt_test("sha256"); break; - +#ifdef CONFIG_CRYPTO_BLOWFISH case 7: ret += tcrypt_test("ecb(blowfish)"); ret += tcrypt_test("cbc(blowfish)"); break; - +#endif +#ifdef CONFIG_CRYPTO_TWOFISH case 8: ret += tcrypt_test("ecb(twofish)"); ret += tcrypt_test("cbc(twofish)"); break; - +#endif +#ifdef CONFIG_CRYPTO_SERPENT case 9: ret += tcrypt_test("ecb(serpent)"); break; - +#endif case 10: ret += tcrypt_test("ecb(aes)"); ret += tcrypt_test("cbc(aes)"); +#ifdef CONFIG_CRYPTO_LRW ret += tcrypt_test("lrw(aes)"); +#endif +#ifdef CONFIG_CRYPTO_XTS ret += tcrypt_test("xts(aes)"); +#endif +#ifdef CONFIG_CRYPTO_CTR ret += tcrypt_test("ctr(aes)"); ret += tcrypt_test("rfc3686(ctr(aes))"); break; - +#endif +#ifdef CONFIG_CRYPTO_SHA512 case 11: ret += tcrypt_test("sha384"); break; @@ -809,31 +827,34 @@ static int do_test(int m) case 12: ret += tcrypt_test("sha512"); break; - +#endif +#ifdef CONFIG_CRYPTO_DEFLATE case 13: ret += tcrypt_test("deflate"); break; - +#endif +#ifdef CONFIG_CRYPTO_CAST5 case 14: ret += tcrypt_test("ecb(cast5)"); break; - +#endif +#ifdef CONFIG_CRYPTO_CAST6 case 15: ret += tcrypt_test("ecb(cast6)"); break; - +#endif case 16: ret += tcrypt_test("ecb(arc4)"); break; - +#ifdef CONFIG_CRYPTO_MICHAEL_MIC case 17: ret += tcrypt_test("michael_mic"); break; - +#endif case 18: ret += tcrypt_test("crc32c"); break; - +#ifdef CONFIG_CRYPTO_TEA case 19: ret += tcrypt_test("ecb(tea)"); break; @@ -841,11 +862,13 @@ static int do_test(int m) case 20: ret += tcrypt_test("ecb(xtea)"); break; - +#endif +#ifdef CONFIG_CRYPTO_KHAZAD case 21: ret += tcrypt_test("ecb(khazad)"); break; - +#endif +#ifdef CONFIG_CRYPTO_WP512 case 22: ret += tcrypt_test("wp512"); break; @@ -857,16 +880,19 @@ static int do_test(int m) case 24: ret += tcrypt_test("wp256"); break; - +#endif +#ifdef CONFIG_CRYPTO_SERPENT case 25: ret += tcrypt_test("ecb(tnepres)"); break; - +#endif +#ifdef CONFIG_CRYPTO_ANUBIS case 26: ret += tcrypt_test("ecb(anubis)"); ret += tcrypt_test("cbc(anubis)"); break; - +#endif +#ifdef CONFIG_CRYPTO_TGR192 case 27: ret += tcrypt_test("tgr192"); break; @@ -879,83 +905,100 @@ static int do_test(int m) case 29: ret += tcrypt_test("tgr128"); break; - +#endif +#ifdef CONFIG_CRYPTO_TEA case 30: ret += tcrypt_test("ecb(xeta)"); break; - +#endif +#ifdef CONFIG_CRYPTO_FCRYPT case 31: ret += tcrypt_test("pcbc(fcrypt)"); break; - +#endif +#ifdef CONFIG_CRYPTO_CAMELLIA case 32: ret += tcrypt_test("ecb(camellia)"); ret += tcrypt_test("cbc(camellia)"); break; +#endif case 33: ret += tcrypt_test("sha224"); break; - +#ifdef CONFIG_CRYPTO_SALSA20 case 34: ret += tcrypt_test("salsa20"); break; - +#endif +#ifdef CONFIG_CRYPTO_GCM case 35: ret += tcrypt_test("gcm(aes)"); break; - +#endif +#ifdef CONFIG_CRYPTO_LZO case 36: ret += tcrypt_test("lzo"); break; - +#endif +#ifdef CONFIG_CRYPTO_CCM case 37: ret += tcrypt_test("ccm(aes)"); break; - +#endif +#ifdef CONFIG_CRYPTO_CTS case 38: ret += tcrypt_test("cts(cbc(aes))"); break; - +#endif +#ifdef CONFIG_CRYPTO_RMD128 case 39: ret += tcrypt_test("rmd128"); break; - +#endif +#ifdef CONFIG_CRYPTO_RMD160 case 40: ret += tcrypt_test("rmd160"); break; - +#endif +#ifdef CONFIG_CRYPTO_RMD256 case 41: ret += tcrypt_test("rmd256"); break; - +#endif +#ifdef CONFIG_CRYPTO_RMD320 case 42: ret += tcrypt_test("rmd320"); break; - +#endif +#ifdef CONFIG_CRYPTO_SEED case 43: ret += tcrypt_test("ecb(seed)"); break; - +#endif +#ifdef CONFIG_CRYPTO_ZLIB case 44: ret += tcrypt_test("zlib"); break; - +#endif +#ifdef CONFIG_CRYPTO_CCM case 45: ret += tcrypt_test("rfc4309(ccm(aes))"); break; - +#endif +#ifdef CONFIG_CRYPTO_MD5 case 100: ret += tcrypt_test("hmac(md5)"); break; - +#endif +#ifdef CONFIG_CRYPTO_SHA1 case 101: ret += tcrypt_test("hmac(sha1)"); break; - +#endif case 102: ret += tcrypt_test("hmac(sha256)"); break; - +#ifdef CONFIG_CRYPTO_SHA512 case 103: ret += tcrypt_test("hmac(sha384)"); break; @@ -963,15 +1006,16 @@ static int do_test(int m) case 104: ret += tcrypt_test("hmac(sha512)"); break; - +#endif case 105: ret += tcrypt_test("hmac(sha224)"); break; - +#ifdef CONFIG_CRYPTO_XCBC case 106: ret += tcrypt_test("xcbc(aes)"); break; - +#endif +#ifdef CONFIG_CRYPTO_RMD case 107: ret += tcrypt_test("hmac(rmd128)"); break; @@ -979,19 +1023,23 @@ static int do_test(int m) case 108: ret += tcrypt_test("hmac(rmd160)"); break; - +#endif +#ifdef CONFIG_CRYPTO_VMAC case 109: ret += tcrypt_test("vmac(aes)"); break; - +#endif case 150: ret += tcrypt_test("ansi_cprng"); break; +#ifdef CONFIG_CRYPTO_GCM case 151: ret += tcrypt_test("rfc4106(gcm(aes))"); break; +#endif +#ifdef CRYPTO_SPEED_TESTS case 200: test_cipher_speed("ecb(aes)", ENCRYPT, sec, NULL, 0, speed_template_16_24_32); @@ -1230,7 +1278,7 @@ static int do_test(int m) case 499: break; - +#endif case 1000: test_available(); break; @@ -1248,6 +1296,7 @@ static int do_alg_test(const char *alg, u32 type, u32 mask) static int __init tcrypt_mod_init(void) { int err = -ENOMEM; +#ifdef CRYPTO_SPEED_TESTS int i; for (i = 0; i < TVMEMSIZE; i++) { @@ -1255,6 +1304,9 @@ static int __init tcrypt_mod_init(void) if (!tvmem[i]) goto err_free_tv; } +#endif + + testmgr_crypto_proc_init(); if (alg) err = do_alg_test(alg, type, mask); @@ -1264,8 +1316,12 @@ static int __init tcrypt_mod_init(void) if (err) { printk(KERN_ERR "tcrypt: one or more tests failed!\n"); goto err_free_tv; +#ifndef CONFIG_CRYPTO_FIPS } - +#else + } else + do_integrity_check(); +#endif /* We intentionaly return -EAGAIN to prevent keeping the module, * unless we're running in fips mode. It does all its work from * init() and doesn't offer any runtime functionality, but in @@ -1277,9 +1333,10 @@ static int __init tcrypt_mod_init(void) err = -EAGAIN; err_free_tv: +#ifdef CRYPTO_SPEED_TESTS for (i = 0; i < TVMEMSIZE && tvmem[i]; i++) free_page((unsigned long)tvmem[i]); - +#endif return err; } @@ -1296,10 +1353,11 @@ module_param(alg, charp, 0); module_param(type, uint, 0); module_param(mask, uint, 0); module_param(mode, int, 0); +#ifdef SUPPORT_SPEED_TEST module_param(sec, uint, 0); MODULE_PARM_DESC(sec, "Length in seconds of speed tests " "(defaults to zero which uses CPU cycles instead)"); - +#endif MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Quick & dirty crypto testing module"); MODULE_AUTHOR("James Morris <jmorris@intercode.com.au>"); |