#!/bin/sh -vx

. /root/test-config

dmesg -n 7
mkdir -p /vdc

setup_test_dummy_key ()
{
    mode='\x00\x00\x00\x00'
    raw="$(printf ""\\\\x%02x"" $(seq 0 63))"
    if lscpu | grep "Byte Order" | grep -q Little ; then
	size='\x40\x00\x00\x00'
    else
	size='\x00\x00\x00\x40'
    fi
    key="${mode}${raw}${size}"
    keyctl new_session
    echo -n -e "${key}" | keyctl padd logon fscrypt:4242424242424242 @s
}

do_mount ()
{
    mount -t ext4 $VDC /vdc
}

do_unmount ()
{
    umount /vdc
}

do_smoketest ()
{
    do_mount
    rm -rf /vdc/a /vdc/b
    mkdir /vdc/a /vdc/b
    echo foobar | e4crypt add_key /vdc/a
    cp /etc/motd /vdc
    mv /vdc/motd /vdc/a
    cp /etc/motd /vdc/a
    ln -s motd /vdc/a/link
    cp -r /root/xfstests /vdc/a
    do_unmount
    do_mount
    lsattr /vdc/a
    ls -l /vdc/a
    cat /vdc/a/link
    cat /vdc/a/motd
    do_unmount
    keyctl purge logon
    do_mount
    lsattr /vdc/a
    ls -l /vdc/a
    if test -z "$SKIP_CLEANUP" ; then
	rm -rf /vdc/a /vdc/b
    fi
    do_unmount
}

if test -z "$SKIP_NO_DIR_INDEX" ; then
    mke2fs -t ext4 -O encrypt,^dir_index -Fq $VDC
    do_smoketest
fi

if test -z "$SKIP_DIR_INDEX" ; then
    mke2fs -t ext4 -O encrypt -Fq $VDC
    do_smoketest
fi
