From 0461d9e822a4470aa4eb1c9cfb3bf3d6e0f4b123 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 30 Nov 2012 15:03:01 +0100 Subject: [PATCH 1/1] Better tcrypt test options. --- lib/tcrypt/tcrypt.c | 4 +++- src/cryptsetup.c | 12 +++++++----- tests/tcrypt-compat-test | 40 ++++++++++++++++++++++++++++++++++++++-- 3 files changed, 48 insertions(+), 8 deletions(-) diff --git a/lib/tcrypt/tcrypt.c b/lib/tcrypt/tcrypt.c index 594408a..920be02 100644 --- a/lib/tcrypt/tcrypt.c +++ b/lib/tcrypt/tcrypt.c @@ -344,6 +344,8 @@ static int decrypt_hdr_cbci(struct tcrypt_algs *ciphers, memcpy(iv, &key[ciphers->cipher[0].iv_offset], bs); /* Initialize all ciphers in chain in ECB mode */ + for (j = 0; j < ciphers->chain_count; j++) + cipher[j] = NULL; for (j = 0; j < ciphers->chain_count; j++) { r = crypt_cipher_init(&cipher[j], ciphers->cipher[j].name, "ecb", &key[ciphers->cipher[j].key_offset], @@ -377,7 +379,7 @@ static int decrypt_hdr(struct crypt_device *cd, struct tcrypt_phdr *hdr, const char *key, int legacy_modes) { struct tcrypt_phdr hdr2; - int i, j, r; + int i, j, r = -EINVAL; for (i = 0; tcrypt_cipher[i].chain_count; i++) { if (!legacy_modes && tcrypt_cipher[i].legacy) diff --git a/src/cryptsetup.c b/src/cryptsetup.c index 7320ad6..7ed4d5e 100644 --- a/src/cryptsetup.c +++ b/src/cryptsetup.c @@ -458,7 +458,7 @@ static int action_benchmark(int arg __attribute__((unused))) { NULL, NULL, 0, 0 } }; char *header = "# Tests are approximate using memory only (no storage IO).\n" - "# Algorithm | Key | Encryption | Decryption\n"; + "# Algorithm | Key | Encryption | Decryption\n"; char cipher[MAX_CIPHER_LEN], cipher_mode[MAX_CIPHER_LEN]; double enc_mbr = 0, dec_mbr = 0; int key_size = (opt_key_size ?: DEFAULT_PLAIN_KEYBITS); @@ -477,7 +477,9 @@ static int action_benchmark(int arg __attribute__((unused))) *c = '\0'; /* FIXME: not really clever :) */ - if (strstr(cipher, "des")) + if (strstr(cipher, "des") || + strstr(cipher, "blowfish") || + strstr(cipher, "cast5")) iv_size = 8; r = crypt_benchmark(NULL, cipher, cipher_mode, @@ -487,7 +489,7 @@ static int action_benchmark(int arg __attribute__((unused))) log_std("%s", header); strncat(cipher, "-", MAX_CIPHER_LEN); strncat(cipher, cipher_mode, MAX_CIPHER_LEN); - log_std("%11s %4db %5.1f MiB/s %5.1f MiB/s\n", + log_std("%12s %4db %5.1f MiB/s %5.1f MiB/s\n", cipher, key_size, enc_mbr, dec_mbr); } else if (r == -ENOENT) log_err(_("Cipher %s is not available.\n"), opt_cipher); @@ -506,10 +508,10 @@ static int action_benchmark(int arg __attribute__((unused))) snprintf(cipher, MAX_CIPHER_LEN, "%s-%s", bciphers[i].cipher, bciphers[i].mode); if (!r) - log_std("%11s %4db %5.1f MiB/s %5.1f MiB/s\n", + log_std("%12s %4db %5.1f MiB/s %5.1f MiB/s\n", cipher, bciphers[i].key_size*8, enc_mbr, dec_mbr); else - log_std("%11s %4db %12s %12s\n", cipher, + log_std("%12s %4db %12s %12s\n", cipher, bciphers[i].key_size*8, _("N/A"), _("N/A")); } if (skipped && skipped == i) diff --git a/tests/tcrypt-compat-test b/tests/tcrypt-compat-test index 6282948..6cbf33c 100755 --- a/tests/tcrypt-compat-test +++ b/tests/tcrypt-compat-test @@ -18,11 +18,47 @@ function remove_mapping() function fail() { [ -n "$1" ] && echo "$1" - echo "FAILED" + echo " [FAILED]" remove_mapping exit 2 } +function skip() +{ + [ -n "$1" ] && echo "$1" + echo "Test skipped." + exit 0 +} + +function test_one() +{ + $CRYPTSETUP benchmark -c "$1" -s "$2" | grep -v "#" || skip +} + +function test_required() +{ + echo "REQUIRED CIPHERS TEST" + echo "# Algorithm | Key | Encryption | Decryption" + + test_one aes-cbc 256 + test_one aes-lrw 384 + test_one aes-xts 512 + + test_one twofish-cbc 256 + test_one twofish-lrw 384 + test_one twofish-xts 512 + + test_one serpent-cbc 256 + test_one serpent-lrw 384 + test_one serpent-xts 512 + + test_one blowfish-cbc 256 + + test_one des3_ede-cbc 192 + test_one cast5 128 +} + +test_required [ ! -d $TST_DIR ] && tar xjf tcrypt-images.tar.bz2 @@ -41,7 +77,7 @@ for file in $(ls $TST_DIR/tc_*-hidden) ; do done if [ $(id -u) != 0 ]; then - echo "WARNING: You must be root to run this test, test skipped." + echo "WARNING: You must be root to run activation part of test, test skipped." exit 0 fi -- 2.7.4