diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c index 414ef5e71171df00e83f7664a2788d1206a29558..401d25ac214fb6aed68d621aa55913352e42ad05 100644 --- a/crypto/tcrypt.c +++ b/crypto/tcrypt.c @@ -427,9 +427,10 @@ static void test_cipher(char *algo, int mode, int enc, } static void test_cipher_speed(char *algo, int mode, int enc, unsigned int sec, - struct cipher_speed *speed) + struct cipher_testvec *template, + unsigned int tcount, struct cipher_speed *speed) { - unsigned int ret, i, iv_len; + unsigned int ret, i, j, iv_len; unsigned char *key, *p, iv[128]; struct crypto_tfm *tfm; struct scatterlist sg[8]; @@ -471,6 +472,12 @@ static void test_cipher_speed(char *algo, int mode, int enc, unsigned int sec, /* set key, plain text and IV */ key = (unsigned char *)tvmem; + for (j = 0; j < tcount; j++) { + if (template[j].klen == speed[i].klen) { + key = template[j].key; + break; + } + } p = (unsigned char *)tvmem + speed[i].klen; ret = crypto_cipher_setkey(tfm, key, speed[i].klen); @@ -953,38 +960,66 @@ static void do_test(void) #endif case 200: - test_cipher_speed("aes", MODE_ECB, ENCRYPT, sec, aes_speed_template); - test_cipher_speed("aes", MODE_ECB, DECRYPT, sec, aes_speed_template); - test_cipher_speed("aes", MODE_CBC, ENCRYPT, sec, aes_speed_template); - test_cipher_speed("aes", MODE_CBC, DECRYPT, sec, aes_speed_template); + test_cipher_speed("aes", MODE_ECB, ENCRYPT, sec, NULL, 0, + aes_speed_template); + test_cipher_speed("aes", MODE_ECB, DECRYPT, sec, NULL, 0, + aes_speed_template); + test_cipher_speed("aes", MODE_CBC, ENCRYPT, sec, NULL, 0, + aes_speed_template); + test_cipher_speed("aes", MODE_CBC, DECRYPT, sec, NULL, 0, + aes_speed_template); break; case 201: - test_cipher_speed("des3_ede", MODE_ECB, ENCRYPT, sec, des3_ede_speed_template); - test_cipher_speed("des3_ede", MODE_ECB, DECRYPT, sec, des3_ede_speed_template); - test_cipher_speed("des3_ede", MODE_CBC, ENCRYPT, sec, des3_ede_speed_template); - test_cipher_speed("des3_ede", MODE_CBC, DECRYPT, sec, des3_ede_speed_template); + test_cipher_speed("des3_ede", MODE_ECB, ENCRYPT, sec, + des3_ede_enc_tv_template, + DES3_EDE_ENC_TEST_VECTORS, + des3_ede_speed_template); + test_cipher_speed("des3_ede", MODE_ECB, DECRYPT, sec, + des3_ede_dec_tv_template, + DES3_EDE_DEC_TEST_VECTORS, + des3_ede_speed_template); + test_cipher_speed("des3_ede", MODE_CBC, ENCRYPT, sec, + des3_ede_enc_tv_template, + DES3_EDE_ENC_TEST_VECTORS, + des3_ede_speed_template); + test_cipher_speed("des3_ede", MODE_CBC, DECRYPT, sec, + des3_ede_dec_tv_template, + DES3_EDE_DEC_TEST_VECTORS, + des3_ede_speed_template); break; case 202: - test_cipher_speed("twofish", MODE_ECB, ENCRYPT, sec, twofish_speed_template); - test_cipher_speed("twofish", MODE_ECB, DECRYPT, sec, twofish_speed_template); - test_cipher_speed("twofish", MODE_CBC, ENCRYPT, sec, twofish_speed_template); - test_cipher_speed("twofish", MODE_CBC, DECRYPT, sec, twofish_speed_template); + test_cipher_speed("twofish", MODE_ECB, ENCRYPT, sec, NULL, 0, + twofish_speed_template); + test_cipher_speed("twofish", MODE_ECB, DECRYPT, sec, NULL, 0, + twofish_speed_template); + test_cipher_speed("twofish", MODE_CBC, ENCRYPT, sec, NULL, 0, + twofish_speed_template); + test_cipher_speed("twofish", MODE_CBC, DECRYPT, sec, NULL, 0, + twofish_speed_template); break; case 203: - test_cipher_speed("blowfish", MODE_ECB, ENCRYPT, sec, blowfish_speed_template); - test_cipher_speed("blowfish", MODE_ECB, DECRYPT, sec, blowfish_speed_template); - test_cipher_speed("blowfish", MODE_CBC, ENCRYPT, sec, blowfish_speed_template); - test_cipher_speed("blowfish", MODE_CBC, DECRYPT, sec, blowfish_speed_template); + test_cipher_speed("blowfish", MODE_ECB, ENCRYPT, sec, NULL, 0, + blowfish_speed_template); + test_cipher_speed("blowfish", MODE_ECB, DECRYPT, sec, NULL, 0, + blowfish_speed_template); + test_cipher_speed("blowfish", MODE_CBC, ENCRYPT, sec, NULL, 0, + blowfish_speed_template); + test_cipher_speed("blowfish", MODE_CBC, DECRYPT, sec, NULL, 0, + blowfish_speed_template); break; case 204: - test_cipher_speed("des", MODE_ECB, ENCRYPT, sec, des_speed_template); - test_cipher_speed("des", MODE_ECB, DECRYPT, sec, des_speed_template); - test_cipher_speed("des", MODE_CBC, ENCRYPT, sec, des_speed_template); - test_cipher_speed("des", MODE_CBC, DECRYPT, sec, des_speed_template); + test_cipher_speed("des", MODE_ECB, ENCRYPT, sec, NULL, 0, + des_speed_template); + test_cipher_speed("des", MODE_ECB, DECRYPT, sec, NULL, 0, + des_speed_template); + test_cipher_speed("des", MODE_CBC, ENCRYPT, sec, NULL, 0, + des_speed_template); + test_cipher_speed("des", MODE_CBC, DECRYPT, sec, NULL, 0, + des_speed_template); break; case 1000: