1148459Spjd# $FreeBSD: stable/11/tests/sys/geom/class/eli/onetime_test.sh 345394 2019-03-21 22:23:52Z asomers $ 2148459Spjd 3345394Sasomers. $(atf_get_srcdir)/conf.sh 4345394Sasomers 5328811Sasomersonetime_test() 6328811Sasomers{ 7328811Sasomers cipher=$1 8328811Sasomers secsize=$2 9328811Sasomers ealgo=${cipher%%:*} 10328811Sasomers keylen=${cipher##*:} 11293436Sngie 12328811Sasomers atf_check -s exit:0 -o ignore -e ignore \ 13328811Sasomers geli onetime -e $ealgo -l $keylen -s $secsize ${md} 14148459Spjd 15328811Sasomers atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${sectors} status=none 16148459Spjd 17328811Sasomers md_rnd=`dd if=rnd bs=${secsize} count=${sectors} status=none | md5` 18328811Sasomers atf_check_equal 0 $? 19328811Sasomers md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${sectors} status=none | md5` 20328811Sasomers atf_check_equal 0 $? 21328811Sasomers md_edev=`dd if=/dev/${md} bs=${secsize} count=${sectors} status=none | md5` 22328811Sasomers atf_check_equal 0 $? 23328811Sasomers 24328811Sasomers if [ ${md_rnd} != ${md_ddev} ]; then 25328811Sasomers atf_fail "geli did not return the original data" 26328811Sasomers fi 27328811Sasomers if [ ${md_rnd} == ${md_edev} ]; then 28328811Sasomers atf_fail "geli did not encrypt the data" 29328811Sasomers fi 30328811Sasomers} 31328811Sasomersatf_test_case onetime cleanup 32328811Sasomersonetime_head() 33328811Sasomers{ 34328811Sasomers atf_set "descr" "geli onetime can create temporary providers" 35328811Sasomers atf_set "require.user" "root" 36328811Sasomers atf_set "timeout" 1800 37328811Sasomers} 38328811Sasomersonetime_body() 39328811Sasomers{ 40345394Sasomers geli_test_setup 41345394Sasomers 42328811Sasomers sectors=100 43328811Sasomers 44328811Sasomers dd if=/dev/random of=rnd bs=${MAX_SECSIZE} count=${sectors} status=none 45328811Sasomers for_each_geli_config_nointegrity onetime_test 46328811Sasomers} 47328811Sasomersonetime_cleanup() 48328811Sasomers{ 49328811Sasomers geli_test_cleanup 50328811Sasomers} 51328811Sasomers 52328811Sasomersonetime_a_test() 53328811Sasomers{ 54312829Sasomers cipher=$1 55328811Sasomers aalgo=$2 56328811Sasomers secsize=$3 57159327Spjd ealgo=${cipher%%:*} 58148459Spjd keylen=${cipher##*:} 59148459Spjd 60328811Sasomers atf_check -s exit:0 -o ignore -e ignore \ 61328811Sasomers geli onetime -a $aalgo -e $ealgo -l $keylen -s $secsize ${md} 62148459Spjd 63328811Sasomers atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${sectors} status=none 64148459Spjd 65328811Sasomers md_rnd=`dd if=rnd bs=${secsize} count=${sectors} status=none | md5` 66328811Sasomers atf_check_equal 0 $? 67328811Sasomers md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${sectors} status=none | md5` 68328811Sasomers atf_check_equal 0 $? 69148459Spjd 70328811Sasomers if [ ${md_rnd} != ${md_ddev} ]; then 71328811Sasomers atf_fail "Miscompare for aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}" 72328811Sasomers fi 73328811Sasomers} 74328811Sasomersatf_test_case onetime_a cleanup 75328811Sasomersonetime_a_head() 76328811Sasomers{ 77328811Sasomers atf_set "descr" "geli onetime with HMACs" 78328811Sasomers atf_set "require.user" "root" 79328811Sasomers atf_set "timeout" 1800 80328811Sasomers} 81328811Sasomersonetime_a_body() 82328811Sasomers{ 83345394Sasomers geli_test_setup 84345394Sasomers 85328811Sasomers sectors=8 86148459Spjd 87328811Sasomers atf_check dd if=/dev/random of=rnd bs=$MAX_SECSIZE count=$sectors \ 88328811Sasomers status=none 89328811Sasomers for_each_geli_config onetime_a_test 90328811Sasomers} 91328811Sasomersonetime_a_cleanup() 92328811Sasomers{ 93328811Sasomers geli_test_cleanup 94328811Sasomers} 95148459Spjd 96328811Sasomersatf_test_case onetime_d cleanup 97328811Sasomersonetime_d_head() 98328811Sasomers{ 99328811Sasomers atf_set "descr" "geli onetime -d will create providers that detach on last close" 100328811Sasomers atf_set "require.user" "root" 101328811Sasomers} 102328811Sasomersonetime_d_body() 103328811Sasomers{ 104345394Sasomers geli_test_setup 105328811Sasomers 106328811Sasomers sectors=100 107328811Sasomers md=$(attach_md -t malloc -s $sectors) 108328811Sasomers 109328811Sasomers atf_check geli onetime -d ${md} 110328811Sasomers if [ ! -c /dev/${md}.eli ]; then 111328811Sasomers atf_fail "Provider not created, or immediately detached" 112312829Sasomers fi 113328811Sasomers 114328811Sasomers # Be sure it doesn't detach on read. 115328811Sasomers atf_check dd if=/dev/${md}.eli of=/dev/null status=none 116328811Sasomers sleep 1 117328811Sasomers if [ ! -c /dev/${md}.eli ]; then 118328811Sasomers atf_fail "Provider detached when a reader closed" 119312829Sasomers fi 120312829Sasomers 121328811Sasomers # It should detach when a writer closes 122328811Sasomers true > /dev/${md}.eli 123328811Sasomers sleep 1 124328811Sasomers if [ -c /dev/${md}.eli ]; then 125328811Sasomers atf_fail "Provider didn't detach on last close of a writer" 126328811Sasomers fi 127312829Sasomers} 128328811Sasomersonetime_d_cleanup() 129328811Sasomers{ 130328811Sasomers geli_test_cleanup 131328811Sasomers} 132312829Sasomers 133328811Sasomersatf_init_test_cases() 134328811Sasomers{ 135328811Sasomers atf_add_test_case onetime 136328811Sasomers atf_add_test_case onetime_a 137328811Sasomers atf_add_test_case onetime_d 138328811Sasomers} 139