109d98641SEnji Cooper 2cf551b8aSAlan Somers. $(atf_get_srcdir)/conf.sh 3cf551b8aSAlan Somers 4f397a004SAlan Somersonetime_test() 5f397a004SAlan Somers{ 6f92ce022SAlan Somers cipher=$1 7f92ce022SAlan Somers secsize=$2 809d98641SEnji Cooper ealgo=${cipher%%:*} 909d98641SEnji Cooper keylen=${cipher##*:} 10f92ce022SAlan Somers 11f397a004SAlan Somers atf_check -s exit:0 -o ignore -e ignore \ 12f397a004SAlan Somers geli onetime -e $ealgo -l $keylen -s $secsize ${md} 1309d98641SEnji Cooper 145dce212dSAlan Somers atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${sectors} status=none 1509d98641SEnji Cooper 165dce212dSAlan Somers md_rnd=`dd if=rnd bs=${secsize} count=${sectors} status=none | md5` 17f397a004SAlan Somers atf_check_equal 0 $? 185dce212dSAlan Somers md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${sectors} status=none | md5` 19f397a004SAlan Somers atf_check_equal 0 $? 205dce212dSAlan Somers md_edev=`dd if=/dev/${md} bs=${secsize} count=${sectors} status=none | md5` 21f397a004SAlan Somers atf_check_equal 0 $? 2209d98641SEnji Cooper 23f397a004SAlan Somers if [ ${md_rnd} != ${md_ddev} ]; then 24f397a004SAlan Somers atf_fail "geli did not return the original data" 2509d98641SEnji Cooper fi 26f397a004SAlan Somers if [ ${md_rnd} == ${md_edev} ]; then 27f397a004SAlan Somers atf_fail "geli did not encrypt the data" 2809d98641SEnji Cooper fi 29f397a004SAlan Somers} 30f397a004SAlan Somersatf_test_case onetime cleanup 31f397a004SAlan Somersonetime_head() 32f397a004SAlan Somers{ 33f397a004SAlan Somers atf_set "descr" "geli onetime can create temporary providers" 34f397a004SAlan Somers atf_set "require.user" "root" 35f397a004SAlan Somers atf_set "timeout" 1800 36f397a004SAlan Somers} 37f397a004SAlan Somersonetime_body() 38f397a004SAlan Somers{ 39cf551b8aSAlan Somers geli_test_setup 40cf551b8aSAlan Somers 41f397a004SAlan Somers sectors=100 4209d98641SEnji Cooper 435dce212dSAlan Somers dd if=/dev/random of=rnd bs=${MAX_SECSIZE} count=${sectors} status=none 44f397a004SAlan Somers for_each_geli_config_nointegrity onetime_test 45f397a004SAlan Somers} 46f397a004SAlan Somersonetime_cleanup() 47f397a004SAlan Somers{ 48f397a004SAlan Somers geli_test_cleanup 49f92ce022SAlan Somers} 50f92ce022SAlan Somers 51f397a004SAlan Somersonetime_a_test() 52f397a004SAlan Somers{ 53f397a004SAlan Somers cipher=$1 54f397a004SAlan Somers aalgo=$2 55f397a004SAlan Somers secsize=$3 56f397a004SAlan Somers ealgo=${cipher%%:*} 57f397a004SAlan Somers keylen=${cipher##*:} 58f397a004SAlan Somers 59f397a004SAlan Somers atf_check -s exit:0 -o ignore -e ignore \ 60f397a004SAlan Somers geli onetime -a $aalgo -e $ealgo -l $keylen -s $secsize ${md} 61f397a004SAlan Somers 625dce212dSAlan Somers atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${sectors} status=none 63f397a004SAlan Somers 645dce212dSAlan Somers md_rnd=`dd if=rnd bs=${secsize} count=${sectors} status=none | md5` 65f397a004SAlan Somers atf_check_equal 0 $? 665dce212dSAlan Somers md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${sectors} status=none | md5` 67f397a004SAlan Somers atf_check_equal 0 $? 68f397a004SAlan Somers 69f397a004SAlan Somers if [ ${md_rnd} != ${md_ddev} ]; then 70f397a004SAlan Somers atf_fail "Miscompare for aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}" 71f397a004SAlan Somers fi 72f397a004SAlan Somers} 73f397a004SAlan Somersatf_test_case onetime_a cleanup 74f397a004SAlan Somersonetime_a_head() 75f397a004SAlan Somers{ 76f397a004SAlan Somers atf_set "descr" "geli onetime with HMACs" 77f397a004SAlan Somers atf_set "require.user" "root" 78f397a004SAlan Somers atf_set "timeout" 1800 79f397a004SAlan Somers} 80f397a004SAlan Somersonetime_a_body() 81f397a004SAlan Somers{ 82cf551b8aSAlan Somers geli_test_setup 83cf551b8aSAlan Somers 84f397a004SAlan Somers sectors=8 85f397a004SAlan Somers 861d23aa6eSAlan Somers atf_check dd if=/dev/random of=rnd bs=$MAX_SECSIZE count=$sectors \ 871d23aa6eSAlan Somers status=none 88f397a004SAlan Somers for_each_geli_config onetime_a_test 89f397a004SAlan Somers} 90f397a004SAlan Somersonetime_a_cleanup() 91f397a004SAlan Somers{ 92f397a004SAlan Somers geli_test_cleanup 93f397a004SAlan Somers} 94f397a004SAlan Somers 95f397a004SAlan Somersatf_test_case onetime_d cleanup 96f397a004SAlan Somersonetime_d_head() 97f397a004SAlan Somers{ 98f397a004SAlan Somers atf_set "descr" "geli onetime -d will create providers that detach on last close" 99f397a004SAlan Somers atf_set "require.user" "root" 100f397a004SAlan Somers} 101f397a004SAlan Somersonetime_d_body() 102f397a004SAlan Somers{ 103cf551b8aSAlan Somers geli_test_setup 104f397a004SAlan Somers 105f397a004SAlan Somers sectors=100 106*96950419SGleb Smirnoff attach_md md -t malloc -s $sectors 107f397a004SAlan Somers 108f397a004SAlan Somers atf_check geli onetime -d ${md} 109f397a004SAlan Somers if [ ! -c /dev/${md}.eli ]; then 110f397a004SAlan Somers atf_fail "Provider not created, or immediately detached" 111f397a004SAlan Somers fi 112f397a004SAlan Somers 113f397a004SAlan Somers # Be sure it doesn't detach on read. 114f397a004SAlan Somers atf_check dd if=/dev/${md}.eli of=/dev/null status=none 115f397a004SAlan Somers sleep 1 116f397a004SAlan Somers if [ ! -c /dev/${md}.eli ]; then 117f397a004SAlan Somers atf_fail "Provider detached when a reader closed" 118f397a004SAlan Somers fi 119f397a004SAlan Somers 120f397a004SAlan Somers # It should detach when a writer closes 121f397a004SAlan Somers true > /dev/${md}.eli 122f397a004SAlan Somers sleep 1 123f397a004SAlan Somers if [ -c /dev/${md}.eli ]; then 124f397a004SAlan Somers atf_fail "Provider didn't detach on last close of a writer" 125f397a004SAlan Somers fi 126f397a004SAlan Somers} 127f397a004SAlan Somersonetime_d_cleanup() 128f397a004SAlan Somers{ 129f397a004SAlan Somers geli_test_cleanup 130f397a004SAlan Somers} 131f397a004SAlan Somers 1325f2d3b42SLi-Wen Hsuatf_test_case onetime_null cleanup 133aafaa8b7SAlan Somersonetime_null_head() 134aafaa8b7SAlan Somers{ 135aafaa8b7SAlan Somers atf_set "descr" "geli onetime can use the null cipher" 136aafaa8b7SAlan Somers atf_set "require.user" "root" 137aafaa8b7SAlan Somers} 138aafaa8b7SAlan Somersonetime_null_body() 139aafaa8b7SAlan Somers{ 140aafaa8b7SAlan Somers geli_test_setup 141aafaa8b7SAlan Somers 142aafaa8b7SAlan Somers sectors=100 143aafaa8b7SAlan Somers 144aafaa8b7SAlan Somers dd if=/dev/random of=rnd bs=${MAX_SECSIZE} count=${sectors} status=none 145aafaa8b7SAlan Somers 146aafaa8b7SAlan Somers secsize=512 147aafaa8b7SAlan Somers ealgo=${cipher%%:*} 148aafaa8b7SAlan Somers keylen=${cipher##*:} 149aafaa8b7SAlan Somers 150*96950419SGleb Smirnoff attach_md md -t malloc -s 100k 151aafaa8b7SAlan Somers 152aafaa8b7SAlan Somers atf_check -s exit:0 -o ignore -e ignore \ 153aafaa8b7SAlan Somers geli onetime -e null -s ${secsize} ${md} 154aafaa8b7SAlan Somers 155aafaa8b7SAlan Somers atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${sectors} status=none 156aafaa8b7SAlan Somers 157aafaa8b7SAlan Somers md_rnd=`dd if=rnd bs=${secsize} count=${sectors} status=none | md5` 158aafaa8b7SAlan Somers atf_check_equal 0 $? 159aafaa8b7SAlan Somers md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${sectors} status=none | md5` 160aafaa8b7SAlan Somers atf_check_equal 0 $? 161aafaa8b7SAlan Somers md_edev=`dd if=/dev/${md} bs=${secsize} count=${sectors} status=none | md5` 162aafaa8b7SAlan Somers atf_check_equal 0 $? 163aafaa8b7SAlan Somers 164aafaa8b7SAlan Somers if [ ${md_rnd} != ${md_ddev} ]; then 165aafaa8b7SAlan Somers atf_fail "geli did not return the original data" 166aafaa8b7SAlan Somers fi 167aafaa8b7SAlan Somers if [ ${md_rnd} != ${md_edev} ]; then 168aafaa8b7SAlan Somers atf_fail "geli encrypted the data even with the null cipher" 169aafaa8b7SAlan Somers fi 170aafaa8b7SAlan Somers} 171aafaa8b7SAlan Somersonetime_null_cleanup() 172aafaa8b7SAlan Somers{ 173aafaa8b7SAlan Somers geli_test_cleanup 174aafaa8b7SAlan Somers} 175aafaa8b7SAlan Somers 176f397a004SAlan Somersatf_init_test_cases() 177f397a004SAlan Somers{ 178f397a004SAlan Somers atf_add_test_case onetime 179f397a004SAlan Somers atf_add_test_case onetime_a 180f397a004SAlan Somers atf_add_test_case onetime_d 181aafaa8b7SAlan Somers atf_add_test_case onetime_null 182f397a004SAlan Somers} 183