diff options
Diffstat (limited to 'crypto/tcrypt.c')
| -rw-r--r-- | crypto/tcrypt.c | 86 | 
1 files changed, 81 insertions, 5 deletions
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c index 8f147bff0980..5cf2ccb1540c 100644 --- a/crypto/tcrypt.c +++ b/crypto/tcrypt.c @@ -809,7 +809,7 @@ static void test_acipher_speed(const char *algo, int enc, unsigned int sec,  			       struct cipher_speed_template *template,  			       unsigned int tcount, u8 *keysize)  { -	unsigned int ret, i, j, iv_len; +	unsigned int ret, i, j, k, iv_len;  	struct tcrypt_result tresult;  	const char *key;  	char iv[128]; @@ -883,11 +883,23 @@ static void test_acipher_speed(const char *algo, int enc, unsigned int sec,  			}  			sg_init_table(sg, TVMEMSIZE); -			sg_set_buf(sg, tvmem[0] + *keysize, + +			k = *keysize + *b_size; +			if (k > PAGE_SIZE) { +				sg_set_buf(sg, tvmem[0] + *keysize,  				   PAGE_SIZE - *keysize); -			for (j = 1; j < TVMEMSIZE; j++) { -				sg_set_buf(sg + j, tvmem[j], PAGE_SIZE); -				memset(tvmem[j], 0xff, PAGE_SIZE); +				k -= PAGE_SIZE; +				j = 1; +				while (k > PAGE_SIZE) { +					sg_set_buf(sg + j, tvmem[j], PAGE_SIZE); +					memset(tvmem[j], 0xff, PAGE_SIZE); +					j++; +					k -= PAGE_SIZE; +				} +				sg_set_buf(sg + j, tvmem[j], k); +				memset(tvmem[j], 0xff, k); +			} else { +				sg_set_buf(sg, tvmem[0] + *keysize, *b_size);  			}  			iv_len = crypto_ablkcipher_ivsize(tfm); @@ -1192,6 +1204,9 @@ static int do_test(int m)  	case 109:  		ret += tcrypt_test("vmac(aes)");  		break; +	case 110: +		ret += tcrypt_test("hmac(crc32)"); +		break;  	case 150:  		ret += tcrypt_test("ansi_cprng"); @@ -1339,6 +1354,11 @@ static int do_test(int m)  				  speed_template_32_64);  		break; +	case 208: +		test_cipher_speed("ecb(arc4)", ENCRYPT, sec, NULL, 0, +				  speed_template_8); +		break; +  	case 300:  		/* fall through */ @@ -1512,6 +1532,14 @@ static int do_test(int m)  				   speed_template_16_24_32);  		test_acipher_speed("ctr(aes)", DECRYPT, sec, NULL, 0,  				   speed_template_16_24_32); +		test_acipher_speed("cfb(aes)", ENCRYPT, sec, NULL, 0, +				   speed_template_16_24_32); +		test_acipher_speed("cfb(aes)", DECRYPT, sec, NULL, 0, +				   speed_template_16_24_32); +		test_acipher_speed("ofb(aes)", ENCRYPT, sec, NULL, 0, +				   speed_template_16_24_32); +		test_acipher_speed("ofb(aes)", DECRYPT, sec, NULL, 0, +				   speed_template_16_24_32);  		break;  	case 501: @@ -1527,6 +1555,18 @@ static int do_test(int m)  		test_acipher_speed("cbc(des3_ede)", DECRYPT, sec,  				   des3_speed_template, DES3_SPEED_VECTORS,  				   speed_template_24); +		test_acipher_speed("cfb(des3_ede)", ENCRYPT, sec, +				   des3_speed_template, DES3_SPEED_VECTORS, +				   speed_template_24); +		test_acipher_speed("cfb(des3_ede)", DECRYPT, sec, +				   des3_speed_template, DES3_SPEED_VECTORS, +				   speed_template_24); +		test_acipher_speed("ofb(des3_ede)", ENCRYPT, sec, +				   des3_speed_template, DES3_SPEED_VECTORS, +				   speed_template_24); +		test_acipher_speed("ofb(des3_ede)", DECRYPT, sec, +				   des3_speed_template, DES3_SPEED_VECTORS, +				   speed_template_24);  		break;  	case 502: @@ -1538,6 +1578,14 @@ static int do_test(int m)  				   speed_template_8);  		test_acipher_speed("cbc(des)", DECRYPT, sec, NULL, 0,  				   speed_template_8); +		test_acipher_speed("cfb(des)", ENCRYPT, sec, NULL, 0, +				   speed_template_8); +		test_acipher_speed("cfb(des)", DECRYPT, sec, NULL, 0, +				   speed_template_8); +		test_acipher_speed("ofb(des)", ENCRYPT, sec, NULL, 0, +				   speed_template_8); +		test_acipher_speed("ofb(des)", DECRYPT, sec, NULL, 0, +				   speed_template_8);  		break;  	case 503: @@ -1563,6 +1611,34 @@ static int do_test(int m)  				   speed_template_32_64);  		break; +	case 504: +		test_acipher_speed("ecb(twofish)", ENCRYPT, sec, NULL, 0, +				   speed_template_16_24_32); +		test_acipher_speed("ecb(twofish)", DECRYPT, sec, NULL, 0, +				   speed_template_16_24_32); +		test_acipher_speed("cbc(twofish)", ENCRYPT, sec, NULL, 0, +				   speed_template_16_24_32); +		test_acipher_speed("cbc(twofish)", DECRYPT, sec, NULL, 0, +				   speed_template_16_24_32); +		test_acipher_speed("ctr(twofish)", ENCRYPT, sec, NULL, 0, +				   speed_template_16_24_32); +		test_acipher_speed("ctr(twofish)", DECRYPT, sec, NULL, 0, +				   speed_template_16_24_32); +		test_acipher_speed("lrw(twofish)", ENCRYPT, sec, NULL, 0, +				   speed_template_32_40_48); +		test_acipher_speed("lrw(twofish)", DECRYPT, sec, NULL, 0, +				   speed_template_32_40_48); +		test_acipher_speed("xts(twofish)", ENCRYPT, sec, NULL, 0, +				   speed_template_32_48_64); +		test_acipher_speed("xts(twofish)", DECRYPT, sec, NULL, 0, +				   speed_template_32_48_64); +		break; + +	case 505: +		test_acipher_speed("ecb(arc4)", ENCRYPT, sec, NULL, 0, +				   speed_template_8); +		break; +  	case 1000:  		test_available();  		break;  | 
