Path: blob/main/tests/sys/geom/class/eli/onetime_test.sh
39635 views
1. $(atf_get_srcdir)/conf.sh23onetime_test()4{5cipher=$16secsize=$27ealgo=${cipher%%:*}8keylen=${cipher##*:}910atf_check -s exit:0 -o ignore -e ignore \11geli onetime -e $ealgo -l $keylen -s $secsize ${md}1213atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${sectors} status=none1415md_rnd=`dd if=rnd bs=${secsize} count=${sectors} status=none | md5`16atf_check_equal 0 $?17md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${sectors} status=none | md5`18atf_check_equal 0 $?19md_edev=`dd if=/dev/${md} bs=${secsize} count=${sectors} status=none | md5`20atf_check_equal 0 $?2122if [ ${md_rnd} != ${md_ddev} ]; then23atf_fail "geli did not return the original data"24fi25if [ ${md_rnd} == ${md_edev} ]; then26atf_fail "geli did not encrypt the data"27fi28}29atf_test_case onetime cleanup30onetime_head()31{32atf_set "descr" "geli onetime can create temporary providers"33atf_set "require.user" "root"34atf_set "timeout" 180035}36onetime_body()37{38geli_test_setup3940sectors=1004142dd if=/dev/random of=rnd bs=${MAX_SECSIZE} count=${sectors} status=none43for_each_geli_config_nointegrity onetime_test44}45onetime_cleanup()46{47geli_test_cleanup48}4950onetime_a_test()51{52cipher=$153aalgo=$254secsize=$355ealgo=${cipher%%:*}56keylen=${cipher##*:}5758atf_check -s exit:0 -o ignore -e ignore \59geli onetime -a $aalgo -e $ealgo -l $keylen -s $secsize ${md}6061atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${sectors} status=none6263md_rnd=`dd if=rnd bs=${secsize} count=${sectors} status=none | md5`64atf_check_equal 0 $?65md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${sectors} status=none | md5`66atf_check_equal 0 $?6768if [ ${md_rnd} != ${md_ddev} ]; then69atf_fail "Miscompare for aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"70fi71}72atf_test_case onetime_a cleanup73onetime_a_head()74{75atf_set "descr" "geli onetime with HMACs"76atf_set "require.user" "root"77atf_set "timeout" 180078}79onetime_a_body()80{81geli_test_setup8283sectors=88485atf_check dd if=/dev/random of=rnd bs=$MAX_SECSIZE count=$sectors \86status=none87for_each_geli_config onetime_a_test88}89onetime_a_cleanup()90{91geli_test_cleanup92}9394atf_test_case onetime_d cleanup95onetime_d_head()96{97atf_set "descr" "geli onetime -d will create providers that detach on last close"98atf_set "require.user" "root"99}100onetime_d_body()101{102geli_test_setup103104sectors=100105attach_md md -t malloc -s $sectors106107atf_check geli onetime -d ${md}108if [ ! -c /dev/${md}.eli ]; then109atf_fail "Provider not created, or immediately detached"110fi111112# Be sure it doesn't detach on read.113atf_check dd if=/dev/${md}.eli of=/dev/null status=none114sleep 1115if [ ! -c /dev/${md}.eli ]; then116atf_fail "Provider detached when a reader closed"117fi118119# It should detach when a writer closes120true > /dev/${md}.eli121sleep 1122if [ -c /dev/${md}.eli ]; then123atf_fail "Provider didn't detach on last close of a writer"124fi125}126onetime_d_cleanup()127{128geli_test_cleanup129}130131atf_test_case onetime_null cleanup132onetime_null_head()133{134atf_set "descr" "geli onetime can use the null cipher"135atf_set "require.user" "root"136}137onetime_null_body()138{139geli_test_setup140141sectors=100142143dd if=/dev/random of=rnd bs=${MAX_SECSIZE} count=${sectors} status=none144145secsize=512146ealgo=${cipher%%:*}147keylen=${cipher##*:}148149attach_md md -t malloc -s 100k150151atf_check -s exit:0 -o ignore -e ignore \152geli onetime -e null -s ${secsize} ${md}153154atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${sectors} status=none155156md_rnd=`dd if=rnd bs=${secsize} count=${sectors} status=none | md5`157atf_check_equal 0 $?158md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${sectors} status=none | md5`159atf_check_equal 0 $?160md_edev=`dd if=/dev/${md} bs=${secsize} count=${sectors} status=none | md5`161atf_check_equal 0 $?162163if [ ${md_rnd} != ${md_ddev} ]; then164atf_fail "geli did not return the original data"165fi166if [ ${md_rnd} != ${md_edev} ]; then167atf_fail "geli encrypted the data even with the null cipher"168fi169}170onetime_null_cleanup()171{172geli_test_cleanup173}174175atf_init_test_cases()176{177atf_add_test_case onetime178atf_add_test_case onetime_a179atf_add_test_case onetime_d180atf_add_test_case onetime_null181}182183184