109d98641SEnji Cooper#!/bin/sh 209d98641SEnji Cooper# $FreeBSD$ 309d98641SEnji Cooper 4*f397a004SAlan Somersatf_test_case delkey cleanup 5*f397a004SAlan Somersdelkey_head() 6*f397a004SAlan Somers{ 7*f397a004SAlan Somers atf_set "descr" "geli delkey can destroy the master key" 8*f397a004SAlan Somers atf_set "require.user" "root" 9*f397a004SAlan Somers} 10*f397a004SAlan Somersdelkey_body() 11*f397a004SAlan Somers{ 12*f397a004SAlan Somers . $(atf_get_srcdir)/conf.sh 1309d98641SEnji Cooper 1409d98641SEnji Cooper sectors=100 15041999e3SAlan Somers md=$(attach_md -t malloc -s `expr $sectors + 1`) 1609d98641SEnji Cooper 17*f397a004SAlan Somers atf_check dd if=/dev/random of=keyfile1 bs=512 count=16 status=none 18*f397a004SAlan Somers atf_check dd if=/dev/random of=keyfile2 bs=512 count=16 status=none 19*f397a004SAlan Somers atf_check dd if=/dev/random of=keyfile3 bs=512 count=16 status=none 20*f397a004SAlan Somers atf_check dd if=/dev/random of=keyfile4 bs=512 count=16 status=none 2109d98641SEnji Cooper 22*f397a004SAlan Somers atf_check geli init -B none -P -K keyfile1 ${md} 23*f397a004SAlan Somers atf_check geli attach -p -k keyfile1 ${md} 24*f397a004SAlan Somers atf_check -s exit:0 -o ignore geli setkey -n 1 -P -K keyfile2 ${md} 2509d98641SEnji Cooper 2609d98641SEnji Cooper # Remove key 0 for attached provider. 27*f397a004SAlan Somers atf_check geli delkey -n 0 ${md} 28*f397a004SAlan Somers atf_check geli detach ${md} 2909d98641SEnji Cooper 3009d98641SEnji Cooper # We cannot use keyfile1 anymore. 31*f397a004SAlan Somers atf_check -s not-exit:0 -e match:"Wrong key" \ 32*f397a004SAlan Somers geli attach -p -k keyfile1 ${md} 3309d98641SEnji Cooper 3409d98641SEnji Cooper # Attach with key 1. 35*f397a004SAlan Somers atf_check geli attach -p -k keyfile2 ${md} 3609d98641SEnji Cooper 3709d98641SEnji Cooper # We cannot remove last key without -f option (for attached provider). 38*f397a004SAlan Somers atf_check -s not-exit:0 -e match:"This is the last Master Key" \ 39*f397a004SAlan Somers geli delkey -n 1 ${md} 4009d98641SEnji Cooper 4109d98641SEnji Cooper # Remove last key for attached provider. 42*f397a004SAlan Somers atf_check geli delkey -f -n 1 ${md} 4309d98641SEnji Cooper 4409d98641SEnji Cooper # If there are no valid keys, but provider is attached, we can save situation. 45*f397a004SAlan Somers atf_check -s exit:0 -o ignore geli setkey -n 0 -P -K keyfile3 ${md} 46*f397a004SAlan Somers atf_check geli detach ${md} 4709d98641SEnji Cooper 4809d98641SEnji Cooper # We cannot use keyfile2 anymore. 49*f397a004SAlan Somers atf_check -s not-exit:0 -e match:"Wrong key" \ 50*f397a004SAlan Somers geli attach -p -k keyfile2 ${md} 5109d98641SEnji Cooper 5209d98641SEnji Cooper # Attach with key 0. 53*f397a004SAlan Somers atf_check geli attach -p -k keyfile3 ${md} 5409d98641SEnji Cooper 5509d98641SEnji Cooper # Setup key 1. 56*f397a004SAlan Somers atf_check -s exit:0 -o ignore geli setkey -n 1 -P -K keyfile4 ${md} 57*f397a004SAlan Somers atf_check geli detach ${md} 5809d98641SEnji Cooper 5909d98641SEnji Cooper # Remove key 1 for detached provider. 60*f397a004SAlan Somers atf_check geli delkey -n 1 ${md} 6109d98641SEnji Cooper 6209d98641SEnji Cooper # We cannot use keyfile4 anymore. 63*f397a004SAlan Somers atf_check -s not-exit:0 -e match:"Wrong key" \ 64*f397a004SAlan Somers geli attach -p -k keyfile4 ${md} 6509d98641SEnji Cooper 6609d98641SEnji Cooper # We cannot remove last key without -f option (for detached provider). 67*f397a004SAlan Somers atf_check -s not-exit:0 -e match:"This is the last Master Key" \ 68*f397a004SAlan Somers geli delkey -n 0 ${md} 6909d98641SEnji Cooper 7009d98641SEnji Cooper # Remove last key for detached provider. 71*f397a004SAlan Somers atf_check geli delkey -f -n 0 ${md} 7209d98641SEnji Cooper 7309d98641SEnji Cooper # We cannot use keyfile3 anymore. 74*f397a004SAlan Somers atf_check -s not-exit:0 -e match:"No valid keys" \ 75*f397a004SAlan Somers geli attach -p -k keyfile3 ${md} 76*f397a004SAlan Somers} 77*f397a004SAlan Somersdelkey_cleanup() 78*f397a004SAlan Somers{ 79*f397a004SAlan Somers . $(atf_get_srcdir)/conf.sh 80*f397a004SAlan Somers geli_test_cleanup 81*f397a004SAlan Somers} 8209d98641SEnji Cooper 83*f397a004SAlan Somersatf_init_test_cases() 84*f397a004SAlan Somers{ 85*f397a004SAlan Somers atf_add_test_case delkey 86*f397a004SAlan Somers} 87