1148459Spjd#!/bin/sh
2148459Spjd# $FreeBSD: releng/11.0/tests/sys/geom/class/eli/delkey_test.sh 293821 2016-01-13 09:14:27Z ngie $
3148459Spjd
4293436Sngie. $(dirname $0)/conf.sh
5293436Sngie
6148459Spjdbase=`basename $0`
7148459Spjdsectors=100
8293436Sngiekeyfile1=`mktemp $base.XXXXXX` || exit 1
9293436Sngiekeyfile2=`mktemp $base.XXXXXX` || exit 1
10293436Sngiekeyfile3=`mktemp $base.XXXXXX` || exit 1
11293436Sngiekeyfile4=`mktemp $base.XXXXXX` || exit 1
12148459Spjdmdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
13148459Spjd
14148459Spjdecho "1..14"
15148459Spjd
16148459Spjddd if=/dev/random of=${keyfile1} bs=512 count=16 >/dev/null 2>&1
17148459Spjddd if=/dev/random of=${keyfile2} bs=512 count=16 >/dev/null 2>&1
18148459Spjddd if=/dev/random of=${keyfile3} bs=512 count=16 >/dev/null 2>&1
19148459Spjddd if=/dev/random of=${keyfile4} bs=512 count=16 >/dev/null 2>&1
20148459Spjd
21182452Spjdgeli init -B none -P -K $keyfile1 md${no}
22148459Spjdgeli attach -p -k $keyfile1 md${no}
23148459Spjdgeli setkey -n 1 -P -K $keyfile2 md${no}
24148459Spjd
25148459Spjd# Remove key 0 for attached provider.
26148459Spjdgeli delkey -n 0 md${no}
27148459Spjdif [ $? -eq 0 ]; then
28148459Spjd	echo "ok 1"
29148459Spjdelse
30148459Spjd	echo "not ok 1"
31148459Spjdfi
32148459Spjdgeli detach md${no}
33148459Spjd
34148459Spjd# We cannot use keyfile1 anymore.
35148459Spjdgeli attach -p -k $keyfile1 md${no} 2>/dev/null
36148459Spjdif [ $? -ne 0 ]; then
37148459Spjd	echo "ok 2"
38148459Spjdelse
39148459Spjd	echo "not ok 2"
40148459Spjdfi
41148459Spjd
42148459Spjd# Attach with key 1.
43148459Spjdgeli attach -p -k $keyfile2 md${no}
44148459Spjdif [ $? -eq 0 ]; then
45148459Spjd	echo "ok 3"
46148459Spjdelse
47148459Spjd	echo "not ok 3"
48148459Spjdfi
49148459Spjd
50148459Spjd# We cannot remove last key without -f option (for attached provider).
51148459Spjdgeli delkey -n 1 md${no} 2>/dev/null
52148459Spjdif [ $? -ne 0 ]; then
53148459Spjd	echo "ok 4"
54148459Spjdelse
55148459Spjd	echo "not ok 4"
56148459Spjdfi
57148459Spjd
58148459Spjd# Remove last key for attached provider.
59148459Spjdgeli delkey -f -n 1 md${no}
60148459Spjdif [ $? -eq 0 ]; then
61148459Spjd	echo "ok 5"
62148459Spjdelse
63148459Spjd	echo "not ok 5"
64148459Spjdfi
65148459Spjd
66148459Spjd# If there are no valid keys, but provider is attached, we can save situation.
67148459Spjdgeli setkey -n 0 -P -K $keyfile3 md${no}
68148459Spjdif [ $? -eq 0 ]; then
69148459Spjd	echo "ok 6"
70148459Spjdelse
71148459Spjd	echo "not ok 6"
72148459Spjdfi
73148459Spjdgeli detach md${no}
74148459Spjd
75148459Spjd# We cannot use keyfile2 anymore.
76148459Spjdgeli attach -p -k $keyfile2 md${no} 2>/dev/null
77148459Spjdif [ $? -ne 0 ]; then
78148459Spjd	echo "ok 7"
79148459Spjdelse
80148459Spjd	echo "not ok 7"
81148459Spjdfi
82148459Spjd
83148459Spjd# Attach with key 0.
84148459Spjdgeli attach -p -k $keyfile3 md${no}
85148459Spjdif [ $? -eq 0 ]; then
86148459Spjd	echo "ok 8"
87148459Spjdelse
88148459Spjd	echo "not ok 8"
89148459Spjdfi
90148459Spjd
91148459Spjd# Setup key 1.
92148459Spjdgeli setkey -n 1 -P -K $keyfile4 md${no}
93148459Spjdif [ $? -eq 0 ]; then
94148459Spjd	echo "ok 9"
95148459Spjdelse
96148459Spjd	echo "not ok 9"
97148459Spjdfi
98148459Spjdgeli detach md${no}
99148459Spjd
100148459Spjd# Remove key 1 for detached provider.
101148459Spjdgeli delkey -n 1 md${no}
102148459Spjdif [ $? -eq 0 ]; then
103148459Spjd	echo "ok 10"
104148459Spjdelse
105148459Spjd	echo "not ok 10"
106148459Spjdfi
107148459Spjd
108148459Spjd# We cannot use keyfile4 anymore.
109148459Spjdgeli attach -p -k $keyfile4 md${no} 2>/dev/null
110148459Spjdif [ $? -ne 0 ]; then
111148459Spjd	echo "ok 11"
112148459Spjdelse
113148459Spjd	echo "not ok 11"
114148459Spjdfi
115148459Spjd
116148459Spjd# We cannot remove last key without -f option (for detached provider).
117148459Spjdgeli delkey -n 0 md${no} 2>/dev/null
118148459Spjdif [ $? -ne 0 ]; then
119148459Spjd	echo "ok 12"
120148459Spjdelse
121148459Spjd	echo "not ok 12"
122148459Spjdfi
123148459Spjd
124148459Spjd# Remove last key for detached provider.
125148459Spjdgeli delkey -f -n 0 md${no}
126148459Spjdif [ $? -eq 0 ]; then
127148459Spjd	echo "ok 13"
128148459Spjdelse
129148459Spjd	echo "not ok 13"
130148459Spjdfi
131148459Spjd
132148459Spjd# We cannot use keyfile3 anymore.
133148459Spjdgeli attach -p -k $keyfile3 md${no} 2>/dev/null
134148459Spjdif [ $? -ne 0 ]; then
135148459Spjd	echo "ok 14"
136148459Spjdelse
137148459Spjd	echo "not ok 14"
138148459Spjdfi
139148459Spjd
140148459Spjdrm -f $keyfile1 $keyfile2 $keyfile3 $keyfile4
141