#!/bin/bash

# check luks1 images parsing

# NOTE: if image with whirlpool hash fails, check
# that you are not using old gcrypt with flawed whirlpool
# (see cryptsetup debug output)

CRYPTSETUP=../src/cryptsetup
TST_DIR=luks1-images
MAP=luks1tst
KEYFILE=keyfile1

function remove_mapping()
{
	[ -b /dev/mapper/$MAP ] && dmsetup remove $MAP
}

function fail()
{
	[ -n "$1" ] && echo "$1"
	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()
{
	which lsblk >/dev/null 2>&1 || skip "WARNING: lsblk tool required."

	echo "REQUIRED KDF TEST"
	$CRYPTSETUP benchmark -h whirlpool | grep "N/A" && skip

	echo "REQUIRED CIPHERS TEST"
	echo "#  Algorithm | Key |  Encryption |  Decryption"

	test_one aes-xts 256
	test_one twofish-xts 256
	test_one serpent-xts 256
	test_one aes-cbc 256
	test_one aes-lrw 256
}

export LANG=C

if [ $(id -u) != 0 ]; then
	echo "WARNING: You must be root to run activation part of test, test skipped."
	exit 0
fi

test_required
[ ! -d $TST_DIR ] && tar xjf luks1-images.tar.bz2 --no-same-owner

echo "ACTIVATION FS UUID CHECK"
for file in $(ls $TST_DIR/luks1_*) ; do
	echo -n " $file"
	$CRYPTSETUP luksOpen -d $TST_DIR/$KEYFILE $file $MAP 2>/dev/null
	ret=$?
	# ignore missing whirlpool (pwd failed is exit code 2)
	[ $ret -eq 1 ] && (echo $file | grep -q -e "whirlpool") && echo " [N/A]" && continue
	# ignore flawed whirlpool (pwd failed is exit code 2)
	[ $ret -eq 2 ] && (echo $file | grep -q -e "whirlpool") && \
		($CRYPTSETUP luksDump $file --debug | grep -q -e "flawed whirlpool") && \
		echo " [IGNORED (flawed Whirlpool library)]" && continue
	[ $ret -ne 0 ] && fail
	$CRYPTSETUP status $MAP >/dev/null || fail
	$CRYPTSETUP status /dev/mapper/$MAP >/dev/null || fail
	UUID=$(lsblk -n -o UUID /dev/mapper/$MAP)
	$CRYPTSETUP remove $MAP || fail
	[ "$UUID" != "DEAD-BABE" ] && fail "UUID check failed."
	echo " [OK]"
done
