|
Packit |
94f725 |
#!/bin/bash
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
# check bitlk images parsing
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
[ -z "$CRYPTSETUP_PATH" ] && CRYPTSETUP_PATH=".."
|
|
Packit |
94f725 |
CRYPTSETUP=$CRYPTSETUP_PATH/cryptsetup
|
|
Packit |
94f725 |
TST_DIR=bitlk-images
|
|
Packit |
94f725 |
MAP=bitlktst
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
[ -z "$srcdir" ] && srcdir="."
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
function remove_mapping()
|
|
Packit |
94f725 |
{
|
|
Packit |
94f725 |
[ -b /dev/mapper/$MAP ] && dmsetup remove --retry $MAP
|
|
Packit |
94f725 |
}
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
function fail()
|
|
Packit |
94f725 |
{
|
|
Packit |
94f725 |
[ -n "$1" ] && echo "$1"
|
|
Packit |
94f725 |
echo " [FAILED]"
|
|
Packit |
94f725 |
echo "FAILED backtrace:"
|
|
Packit |
94f725 |
while caller $frame; do ((frame++)); done
|
|
Packit |
94f725 |
remove_mapping
|
|
Packit |
94f725 |
exit 2
|
|
Packit |
94f725 |
}
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
function skip()
|
|
Packit |
94f725 |
{
|
|
Packit |
94f725 |
[ -n "$1" ] && echo "$1"
|
|
Packit |
94f725 |
echo "Test skipped."
|
|
Packit |
94f725 |
exit 77
|
|
Packit |
94f725 |
}
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
function load_vars()
|
|
Packit |
94f725 |
{
|
|
Packit |
94f725 |
local file=$(echo $1 | sed -e s/^$TST_DIR\\/// | sed -e s/\.img$//)
|
|
Packit |
94f725 |
source <(grep = <(grep -A8 "\[$file\]" $TST_DIR/images.conf))
|
|
Packit |
94f725 |
}
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
function check_dump()
|
|
Packit |
94f725 |
{
|
|
Packit |
94f725 |
dump=$1
|
|
Packit |
94f725 |
file=$2
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
# load variables for this image from config file
|
|
Packit |
94f725 |
load_vars $file
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
# GUID
|
|
Packit |
94f725 |
dump_guid=$(echo "$dump" | grep Version -A 1 | tail -1 | cut -d: -f2 | tr -d "\t\n ")
|
|
Packit |
94f725 |
[ ! -z "$GUID" -a "$dump_guid" = "$GUID" ] || fail " GUID check from dump failed."
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
# cipher
|
|
Packit |
94f725 |
dump_cipher=$(echo "$dump" | grep "Cipher name" | cut -d: -f2 | tr -d "\t\n ")
|
|
Packit |
94f725 |
dump_mode=$(echo "$dump" | grep "Cipher mode" | cut -d: -f2 | tr -d "\t\n ")
|
|
Packit |
94f725 |
cipher=$(echo "$dump_cipher-$dump_mode")
|
|
Packit |
94f725 |
[ ! -z "$CIPHER" -a "$cipher" = "$CIPHER" ] || fail " cipher check from dump failed."
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
if echo "$file" | grep -q -e "smart-card"; then
|
|
Packit |
94f725 |
# smart card protected VMK GUID
|
|
Packit |
94f725 |
dump_sc_vmk=$(echo "$dump" | grep "VMK protected with smart card" -B 1 | head -1 | cut -d: -f2 | tr -d "\t ")
|
|
Packit |
94f725 |
[ ! -z "$SC_VMK_GUID" -a "$dump_sc_vmk" = "$SC_VMK_GUID" ] || fail " smart card protected VMK GUID check from dump failed."
|
|
Packit |
94f725 |
else
|
|
Packit |
94f725 |
# password protected VMK GUID
|
|
Packit |
94f725 |
dump_pw_vmk=$(echo "$dump" | grep "VMK protected with passphrase" -B 1 | head -1 | cut -d: -f2 | tr -d "\t ")
|
|
Packit |
94f725 |
[ ! -z "$PW_VMK_GUID" -a "$dump_pw_vmk" = "$PW_VMK_GUID" ] || fail " password protected VMK GUID check from dump failed."
|
|
Packit |
94f725 |
fi
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
# recovery password protected VMK GUID
|
|
Packit |
94f725 |
dump_rp_vmk=$(echo "$dump" | grep "VMK protected with recovery passphrase" -B 1 | head -1 | cut -d: -f2 | tr -d "\t ")
|
|
Packit |
94f725 |
[ ! -z "$RP_VMK_GUID" -a "$dump_rp_vmk" = "$RP_VMK_GUID" ] || fail " recovery password protected VMK GUID check from dump failed."
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
}
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
export LANG=C
|
|
Packit |
94f725 |
[ ! -d $TST_DIR ] && tar xJSf $srcdir/bitlk-images.tar.xz --no-same-owner
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
echo "HEADER CHECK"
|
|
Packit |
94f725 |
for file in $(ls $TST_DIR/bitlk-*) ; do
|
|
Packit |
94f725 |
echo -n " $file"
|
|
Packit |
94f725 |
out=$($CRYPTSETUP bitlkDump $file)
|
|
Packit |
94f725 |
check_dump "$out" "$file"
|
|
Packit |
94f725 |
echo " [OK]"
|
|
Packit |
94f725 |
done
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
if [ $(id -u) != 0 ]; then
|
|
Packit |
94f725 |
echo "WARNING: You must be root to run activation part of test, test skipped."
|
|
Packit |
94f725 |
exit 0
|
|
Packit |
94f725 |
fi
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
remove_mapping
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
echo "ACTIVATION FS UUID CHECK"
|
|
Packit |
94f725 |
for file in $(ls $TST_DIR/bitlk-*) ; do
|
|
Packit |
94f725 |
# load variables for this image from config file
|
|
Packit |
94f725 |
load_vars $file
|
|
Packit |
94f725 |
|
|
Packit |
94f725 |
# test with both passphrase and recovery passphrase
|
|
Packit |
94f725 |
for PASSPHRASE in $PW $RP ; do
|
|
Packit |
94f725 |
echo -n " $file"
|
|
Packit |
94f725 |
echo $PASSPHRASE | $CRYPTSETUP bitlkOpen -r $file --test-passphrase >/dev/null 2>&1
|
|
Packit |
94f725 |
ret=$?
|
|
Packit |
94f725 |
[ $ret -eq 1 ] && echo " [N/A]" && continue
|
|
Packit |
94f725 |
echo $PASSPHRASE | $CRYPTSETUP bitlkOpen -r $file $MAP >/dev/null 2>&1
|
|
Packit |
94f725 |
ret=$?
|
|
Packit |
94f725 |
[ $ret -eq 1 ] && ( echo "$file" | grep -q -e "aes-cbc" ) && echo " [N/A]" && continue
|
|
Packit |
94f725 |
[ $ret -eq 1 ] && ( echo "$file" | grep -q -e "aes-cbc-elephant" ) && echo " [N/A]" && continue
|
|
Packit |
94f725 |
[ $ret -eq 1 ] && ( echo "$file" | grep -q -e "clearkey" ) && echo " [N/A]" && continue
|
|
Packit |
94f725 |
[ $ret -eq 1 ] && ( echo "$file" | grep -q -e "eow" ) && echo " [N/A]" && continue
|
|
Packit |
94f725 |
[ $ret -eq 1 ] && ( echo "$file" | grep -q -e "-4k.img" ) && echo " [N/A]" && continue
|
|
Packit |
94f725 |
[ $ret -eq 0 ] || fail " failed to open $file ($ret)"
|
|
Packit |
94f725 |
$CRYPTSETUP status $MAP >/dev/null || fail
|
|
Packit |
94f725 |
$CRYPTSETUP status /dev/mapper/$MAP >/dev/null || fail
|
|
Packit |
94f725 |
uuid=$(lsblk -n -o UUID /dev/mapper/$MAP)
|
|
Packit |
94f725 |
sha256sum=$(sha256sum /dev/mapper/$MAP | cut -d" " -f1)
|
|
Packit |
94f725 |
$CRYPTSETUP remove $MAP || fail
|
|
Packit |
94f725 |
[ "$uuid" = "$UUID" ] || fail " UUID check failed."
|
|
Packit |
94f725 |
[ "$sha256sum" = "$SHA256SUM" ] || fail " SHA256 sum check failed."
|
|
Packit |
94f725 |
echo " [OK]"
|
|
Packit |
94f725 |
done
|
|
Packit |
94f725 |
done
|