109d98641SEnji Cooper# $FreeBSD$ 209d98641SEnji Cooper 3f397a004SAlan Somersonetime_test() 4f397a004SAlan Somers{ 5f92ce022SAlan Somers cipher=$1 6f92ce022SAlan Somers secsize=$2 709d98641SEnji Cooper ealgo=${cipher%%:*} 809d98641SEnji Cooper keylen=${cipher##*:} 9f92ce022SAlan Somers 10f397a004SAlan Somers atf_check -s exit:0 -o ignore -e ignore \ 11f397a004SAlan Somers geli onetime -e $ealgo -l $keylen -s $secsize ${md} 1209d98641SEnji Cooper 13*5dce212dSAlan Somers atf_check dd if=/dev/random of=rnd bs=${secsize} count=${sectors} status=none 14*5dce212dSAlan Somers atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${sectors} status=none 1509d98641SEnji Cooper 16*5dce212dSAlan Somers md_rnd=`dd if=rnd bs=${secsize} count=${sectors} status=none | md5` 17f397a004SAlan Somers atf_check_equal 0 $? 18*5dce212dSAlan Somers md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${sectors} status=none | md5` 19f397a004SAlan Somers atf_check_equal 0 $? 20*5dce212dSAlan 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{ 39f397a004SAlan Somers . $(atf_get_srcdir)/conf.sh 40f397a004SAlan Somers sectors=100 4109d98641SEnji Cooper 42*5dce212dSAlan Somers dd if=/dev/random of=rnd bs=${MAX_SECSIZE} count=${sectors} status=none 43f397a004SAlan Somers for_each_geli_config_nointegrity onetime_test 44f397a004SAlan Somers} 45f397a004SAlan Somersonetime_cleanup() 46f397a004SAlan Somers{ 47f397a004SAlan Somers . $(atf_get_srcdir)/conf.sh 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 62*5dce212dSAlan Somers atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${sectors} status=none 63f397a004SAlan Somers 64*5dce212dSAlan Somers md_rnd=`dd if=rnd bs=${secsize} count=${sectors} status=none | md5` 65f397a004SAlan Somers atf_check_equal 0 $? 66*5dce212dSAlan 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{ 82f397a004SAlan Somers . $(atf_get_srcdir)/conf.sh 83f397a004SAlan Somers sectors=8 84f397a004SAlan Somers 85f397a004SAlan Somers atf_check dd if=/dev/random of=rnd bs=1024 count=1024 status=none 86f397a004SAlan Somers for_each_geli_config onetime_a_test 87f397a004SAlan Somers} 88f397a004SAlan Somersonetime_a_cleanup() 89f397a004SAlan Somers{ 90f397a004SAlan Somers . $(atf_get_srcdir)/conf.sh 91f397a004SAlan Somers geli_test_cleanup 92f397a004SAlan Somers} 93f397a004SAlan Somers 94f397a004SAlan Somersatf_test_case onetime_d cleanup 95f397a004SAlan Somersonetime_d_head() 96f397a004SAlan Somers{ 97f397a004SAlan Somers atf_set "descr" "geli onetime -d will create providers that detach on last close" 98f397a004SAlan Somers atf_set "require.user" "root" 99f397a004SAlan Somers} 100f397a004SAlan Somersonetime_d_body() 101f397a004SAlan Somers{ 102f397a004SAlan Somers . $(atf_get_srcdir)/conf.sh 103f397a004SAlan Somers 104f397a004SAlan Somers sectors=100 105f397a004SAlan Somers md=$(attach_md -t malloc -s $sectors) 106f397a004SAlan Somers 107f397a004SAlan Somers atf_check geli onetime -d ${md} 108f397a004SAlan Somers if [ ! -c /dev/${md}.eli ]; then 109f397a004SAlan Somers atf_fail "Provider not created, or immediately detached" 110f397a004SAlan Somers fi 111f397a004SAlan Somers 112f397a004SAlan Somers # Be sure it doesn't detach on read. 113f397a004SAlan Somers atf_check dd if=/dev/${md}.eli of=/dev/null status=none 114f397a004SAlan Somers sleep 1 115f397a004SAlan Somers if [ ! -c /dev/${md}.eli ]; then 116f397a004SAlan Somers atf_fail "Provider detached when a reader closed" 117f397a004SAlan Somers fi 118f397a004SAlan Somers 119f397a004SAlan Somers # It should detach when a writer closes 120f397a004SAlan Somers true > /dev/${md}.eli 121f397a004SAlan Somers sleep 1 122f397a004SAlan Somers if [ -c /dev/${md}.eli ]; then 123f397a004SAlan Somers atf_fail "Provider didn't detach on last close of a writer" 124f397a004SAlan Somers fi 125f397a004SAlan Somers} 126f397a004SAlan Somersonetime_d_cleanup() 127f397a004SAlan Somers{ 128f397a004SAlan Somers . $(atf_get_srcdir)/conf.sh 129f397a004SAlan Somers geli_test_cleanup 130f397a004SAlan Somers} 131f397a004SAlan Somers 132f397a004SAlan Somersatf_init_test_cases() 133f397a004SAlan Somers{ 134f397a004SAlan Somers atf_add_test_case onetime 135f397a004SAlan Somers atf_add_test_case onetime_a 136f397a004SAlan Somers atf_add_test_case onetime_d 137f397a004SAlan Somers} 138