1#!/bin/sh
2# $FreeBSD$
3
4base=`basename $0`
5no=45
6sectors=100
7keyfile1=`mktemp /tmp/$base.XXXXXX` || exit 1
8keyfile2=`mktemp /tmp/$base.XXXXXX` || exit 1
9mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
10
11echo "1..9"
12
13dd if=/dev/random of=${keyfile1} bs=512 count=16 >/dev/null 2>&1
14dd if=/dev/random of=${keyfile2} bs=512 count=16 >/dev/null 2>&1
15
16geli init -B none -P -K $keyfile1 md${no}
17geli attach -p -k $keyfile1 md${no}
18geli setkey -n 1 -P -K $keyfile2 md${no}
19
20# Kill attached provider.
21geli kill md${no}
22if [ $? -eq 0 ]; then
23	echo "ok 1"
24else
25	echo "not ok 1"
26fi
27sleep 1
28# Provider should be automatically detached.
29if [ ! -c /dev/md{$no}.eli ]; then
30	echo "ok 2"
31else
32	echo "not ok 2"
33fi
34
35# We cannot use keyfile1 anymore.
36geli attach -p -k $keyfile1 md${no} 2>/dev/null
37if [ $? -ne 0 ]; then
38	echo "ok 3"
39else
40	echo "not ok 3"
41fi
42
43# We cannot use keyfile2 anymore.
44geli attach -p -k $keyfile2 md${no} 2>/dev/null
45if [ $? -ne 0 ]; then
46	echo "ok 4"
47else
48	echo "not ok 4"
49fi
50
51geli init -B none -P -K $keyfile1 md${no}
52geli setkey -n 1 -p -k $keyfile1 -P -K $keyfile2 md${no}
53
54# Should be possible to attach with keyfile1.
55geli attach -p -k $keyfile1 md${no}
56if [ $? -eq 0 ]; then
57	echo "ok 5"
58else
59	echo "not ok 5"
60fi
61geli detach md${no}
62
63# Should be possible to attach with keyfile2.
64geli attach -p -k $keyfile2 md${no}
65if [ $? -eq 0 ]; then
66	echo "ok 6"
67else
68	echo "not ok 6"
69fi
70geli detach md${no}
71
72# Kill detached provider.
73geli kill md${no}
74if [ $? -eq 0 ]; then
75	echo "ok 7"
76else
77	echo "not ok 7"
78fi
79
80# We cannot use keyfile1 anymore.
81geli attach -p -k $keyfile1 md${no} 2>/dev/null
82if [ $? -ne 0 ]; then
83	echo "ok 8"
84else
85	echo "not ok 8"
86fi
87
88# We cannot use keyfile2 anymore.
89geli attach -p -k $keyfile2 md${no} 2>/dev/null
90if [ $? -ne 0 ]; then
91	echo "ok 9"
92else
93	echo "not ok 9"
94fi
95
96mdconfig -d -u $no
97rm -f $keyfile1 $keyfile2
98