X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=tests%2Fmode-test;h=9a2ad8b4e257f2027a7266f23dd5cd28acd4f47a;hb=203f2e082d8bf77b49a5237db2d4399d6f2b7025;hp=41872ef42bd12aee3efc0dd89db1fb27439e81a6;hpb=c066fddf8b93c39a37e06d929f786b2959d025f0;p=platform%2Fupstream%2Fcryptsetup.git diff --git a/tests/mode-test b/tests/mode-test index 41872ef..9a2ad8b 100755 --- a/tests/mode-test +++ b/tests/mode-test @@ -1,14 +1,9 @@ #!/bin/bash - # # Test mode compatibility, check input + kernel and cryptsetup cipher status # -# FIXME: add checkum test of data -# - CRYPTSETUP=../src/cryptsetup DEV_NAME=dmc_test -LOOPDEV=/dev/loop5 HEADER_IMG=mode-test.img PASSWORD=3xrododenron @@ -17,13 +12,19 @@ CIPHERS="aes twofish serpent" MODES="cbc lrw xts" IVMODES="null benbi plain plain64 essiv:sha256" +LOOPDEV=$(losetup -f 2>/dev/null) + +dmremove() { # device + udevadm settle >/dev/null 2>&1 + dmsetup remove $1 >/dev/null 2>&1 +} + cleanup() { for dev in $(dmsetup status --target crypt | sed s/\:\ .*// | grep "^$DEV_NAME"_); do - dmsetup remove $dev + dmremove $dev done - udevadm settle 2>/dev/null 2>&1 sleep 2 - [ -b /dev/mapper/$DEV_NAME ] && dmsetup remove $DEV_NAME + [ -b /dev/mapper/$DEV_NAME ] && dmremove $DEV_NAME losetup -d $LOOPDEV >/dev/null 2>&1 rm -f $HEADER_IMG >/dev/null 2>&1 } @@ -35,6 +36,12 @@ fail() exit 100 } +skip() +{ + [ -n "$1" ] && echo "$1" + exit 0 +} + add_device() { dd if=/dev/zero of=$HEADER_IMG bs=1M count=6 >/dev/null 2>&1 sync @@ -44,54 +51,81 @@ add_device() { dmcrypt_check() # device outstring { - X=$(dmsetup table $1 2>/dev/null | cut -d' ' -f 4) + X=$(dmsetup table $1 2>/dev/null | sed 's/.*: //' | cut -d' ' -f 4) if [ $X = $2 ] ; then - echo -n "OK]" + echo -n "[table OK]" else - echo -n "FAIL]" + echo "[table FAIL]" echo " Expecting $2 got $X." fail fi X=$($CRYPTSETUP status $1 | grep cipher | sed s/\.\*cipher:\\s*//) if [ $X = $2 ] ; then - echo " [OK]" + echo -n "[status OK]" else - echo " [FAIL]" + echo "[status FAIL]" echo " Expecting $2 got $X." fail fi + + dmremove $1 +} + +dmcrypt_check_sum() # cipher device outstring +{ + EXPSUM="c036cbb7553a909f8b8877d4461924307f27ecb66cff928eeeafd569c3887e29" + # Fill device with zeroes and reopen it + dd if=/dev/zero of=/dev/mapper/$2 bs=1M count=6 >/dev/null 2>&1 + sync + dmremove $2 + + echo $PASSWORD | $CRYPTSETUP create -h sha256 -c $1 -s 256 $2 /dev/mapper/$DEV_NAME >/dev/null 2>&1 + ret=$? + VSUM=$(sha256sum /dev/mapper/$2 | cut -d' ' -f 1) + if [ $ret -eq 0 -a "$VSUM" = "$EXPSUM" ] ; then + echo -n "[OK]" + else + echo "[FAIL]" + echo " Expecting $EXPSUM got $VSUM." + fail + fi + + dmremove $2 } dmcrypt() { OUT=$2 [ -z "$OUT" ] && OUT=$1 + printf "%-25s" "$1" - echo -n -e "TESTING(PLAIN): $1 [" - echo $PASSWORD | $CRYPTSETUP create -c $1 -s 256 "$DEV_NAME"_"$1" /dev/mapper/$DEV_NAME >/dev/null 2>&1 + echo $PASSWORD | $CRYPTSETUP create -h sha256 -c $1 -s 256 "$DEV_NAME"_"$1" /dev/mapper/$DEV_NAME >/dev/null 2>&1 if [ $? -eq 0 ] ; then + echo -n -e "PLAIN:" dmcrypt_check "$DEV_NAME"_"$1" $OUT - dmsetup remove "$DEV_NAME"_"$1" >/dev/null 2>&1 else - echo "SKIPPED]" + echo -n "[n/a]" fi - echo -n -e "TESTING(LUKS): $1 [" echo $PASSWORD | $CRYPTSETUP luksFormat -i 1 -c $1 -s 256 /dev/mapper/$DEV_NAME >/dev/null 2>&1 if [ $? -eq 0 ] ; then + echo -n -e " LUKS:" echo $PASSWORD | $CRYPTSETUP luksOpen /dev/mapper/$DEV_NAME "$DEV_NAME"_"$1" >/dev/null 2>&1 dmcrypt_check "$DEV_NAME"_"$1" $OUT - dmsetup remove "$DEV_NAME"_"$1" >/dev/null 2>&1 - else - echo "SKIPPED]" fi + + # repeated device creation must return the same checksum + echo $PASSWORD | $CRYPTSETUP create -h sha256 -c $1 -s 256 "$DEV_NAME"_"$1" /dev/mapper/$DEV_NAME >/dev/null 2>&1 + if [ $? -eq 0 ] ; then + echo -n -e " CHECKSUM:" + dmcrypt_check_sum "$1" "$DEV_NAME"_"$1" + fi + echo } -if [ $(id -u) != 0 ]; then - echo "WARNING: You must be root to run this test, test skipped." - exit 0 -fi +[ $(id -u) != 0 ] && skip "WARNING: You must be root to run this test, test skipped." +[ -z "$LOOPDEV" ] && skip "Cannot find free loop device, test skipped." add_device