#!/bin/sh
class="eli"
base=$(atf_get ident)
MAX_SECSIZE=8192
attach_md()
{
local _md
local rv=$1
shift
[ -c /dev/mdctl ] || atf_skip "no /dev/mdctl to create md devices"
_md=$(mdconfig -a "$@") || atf_fail "failed to allocate md(4)"
echo $_md >> $TEST_MDS_FILE || exit
eval "${rv}='${_md}'"
}
for_each_geli_config() {
func=$1
backing_filename=$2
osecsize=$(( $MAX_SECSIZE * 2 ))
bytes=`expr $osecsize \* $sectors + 512`b
if [ -n "$backing_filename" ]; then
truncate -s $bytes backing_file
attach_md md -t vnode -f backing_file
else
attach_md md -t malloc -s $bytes
fi
for cipher in aes-xts:128 aes-xts:256 \
aes-cbc:128 aes-cbc:192 aes-cbc:256 \
camellia-cbc:128 camellia-cbc:192 camellia-cbc:256; do
ealgo=${cipher%%:*}
keylen=${cipher##*:}
for aalgo in hmac/sha1 hmac/ripemd160 hmac/sha256 \
hmac/sha384 hmac/sha512; do
for secsize in 512 1024 2048 4096 $MAX_SECSIZE; do
${func} $cipher $aalgo $secsize
geli detach ${md} 2>/dev/null
done
done
done
}
for_each_geli_config_nointegrity() {
func=$1
bytes=`expr $MAX_SECSIZE \* $sectors + 512`b
attach_md md -t malloc -s $bytes
for cipher in aes-xts:128 aes-xts:256 \
aes-cbc:128 aes-cbc:192 aes-cbc:256 \
camellia-cbc:128 camellia-cbc:192 camellia-cbc:256; do
ealgo=${cipher%%:*}
keylen=${cipher##*:}
for secsize in 512 1024 2048 4096 $MAX_SECSIZE; do
${func} $cipher $secsize
geli detach ${md} 2>/dev/null
done
done
}
geli_test_cleanup()
{
if [ -f "$TEST_MDS_FILE" ]; then
while read md; do
[ -c /dev/${md}.eli ] && \
geli detach $md.eli 2>/dev/null
mdconfig -d -u $md 2>/dev/null
done < $TEST_MDS_FILE
fi
true
}
geli_test_setup()
{
geom_atf_test_setup
}
ATF_TEST=true
. `dirname $0`/../geom_subr.sh