1#!/bin/sh
2# $FreeBSD$
3
4. $(dirname $0)/conf.sh
5
6base=`basename $0`
7sectors=100
8keyfile0=`mktemp $base.XXXXXX` || exit 1
9keyfile1=`mktemp $base.XXXXXX` || exit 1
10passfile0=`mktemp $base.XXXXXX` || exit 1
11passfile1=`mktemp $base.XXXXXX` || exit 1
12mdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
13
14echo "1..150"
15
16dd if=/dev/random of=${keyfile0} bs=512 count=16 >/dev/null 2>&1
17dd if=/dev/random of=${keyfile1} bs=512 count=16 >/dev/null 2>&1
18dd if=/dev/random bs=512 count=16 2>/dev/null | sha1 > ${passfile0}
19dd if=/dev/random bs=512 count=16 2>/dev/null | sha1 > ${passfile1}
20
21i=1
22for iter in -1 0 64; do
23	geli init -i ${iter} -B none -J ${passfile0} -P md${no} 2>/dev/null && echo -n "not "
24	echo "ok ${i}"; i=$((i+1))
25	geli init -i ${iter} -B none -J ${passfile0} -P -K ${keyfile0} md${no} 2>/dev/null && echo -n "not "
26	echo "ok ${i}"; i=$((i+1))
27	geli init -i ${iter} -B none -J ${passfile0} -K ${keyfile0} md${no} 2>/dev/null || echo -n "not "
28	echo "ok ${i}"; i=$((i+1))
29	geli attach -k ${keyfile0} -p md${no} 2>/dev/null && echo -n "not "
30	echo "ok ${i}"; i=$((i+1))
31	geli attach -j ${passfile0} md${no} 2>/dev/null && echo -n "not "
32	echo "ok ${i}"; i=$((i+1))
33	geli attach -j ${keyfile0} md${no} 2>/dev/null && echo -n "not "
34	echo "ok ${i}"; i=$((i+1))
35	geli attach -k ${passfile0} -p md${no} 2>/dev/null && echo -n "not "
36	echo "ok ${i}"; i=$((i+1))
37	geli attach -j ${keyfile0} -k ${passfile0} md${no} 2>/dev/null && echo -n "not "
38	echo "ok ${i}"; i=$((i+1))
39	geli attach -j ${keyfile0} -k ${keyfile0} md${no} 2>/dev/null && echo -n "not "
40	echo "ok ${i}"; i=$((i+1))
41	geli attach -j ${passfile0} -k ${passfile0} md${no} 2>/dev/null && echo -n "not "
42	echo "ok ${i}"; i=$((i+1))
43	geli attach -j ${passfile0} -k ${keyfile0} md${no} 2>/dev/null || echo -n "not "
44	echo "ok ${i}"; i=$((i+1))
45	geli detach md${no} || echo -n "not "
46	echo "ok ${i}"; i=$((i+1))
47	cat ${keyfile0} | geli attach -j ${passfile0} -k - md${no} 2>/dev/null || echo -n "not "
48	echo "ok ${i}"; i=$((i+1))
49	geli detach md${no} || echo -n "not "
50	echo "ok ${i}"; i=$((i+1))
51	cat ${passfile0} | geli attach -j - -k ${keyfile0} md${no} 2>/dev/null || echo -n "not "
52	echo "ok ${i}"; i=$((i+1))
53	geli detach md${no} || echo -n "not "
54	echo "ok ${i}"; i=$((i+1))
55
56	geli init -i ${iter} -B none -J ${passfile0} -J ${passfile1} -P md${no} 2>/dev/null && echo -n "not "
57	echo "ok ${i}"; i=$((i+1))
58	geli init -i ${iter} -B none -J ${passfile0} -J ${passfile1} -P -K ${keyfile0} -K ${keyfile1} md${no} 2>/dev/null && echo -n "not "
59	echo "ok ${i}"; i=$((i+1))
60	geli init -i ${iter} -B none -J ${passfile0} -J ${passfile1} -K ${keyfile0} -K ${keyfile1} md${no} 2>/dev/null || echo -n "not "
61	echo "ok ${i}"; i=$((i+1))
62	geli attach -k ${keyfile0} -p md${no} 2>/dev/null && echo -n "not "
63	echo "ok ${i}"; i=$((i+1))
64	geli attach -k ${keyfile1} -p md${no} 2>/dev/null && echo -n "not "
65	echo "ok ${i}"; i=$((i+1))
66	geli attach -j ${passfile0} md${no} 2>/dev/null && echo -n "not "
67	echo "ok ${i}"; i=$((i+1))
68	geli attach -j ${passfile1} md${no} 2>/dev/null && echo -n "not "
69	echo "ok ${i}"; i=$((i+1))
70	geli attach -k ${keyfile0} -k ${keyfile1} -p md${no} 2>/dev/null && echo -n "not "
71	echo "ok ${i}"; i=$((i+1))
72	geli attach -j ${passfile0} -j ${passfile1} md${no} 2>/dev/null && echo -n "not "
73	echo "ok ${i}"; i=$((i+1))
74	geli attach -k ${keyfile0} -j ${passfile0} md${no} 2>/dev/null && echo -n "not "
75	echo "ok ${i}"; i=$((i+1))
76	geli attach -k ${keyfile0} -j ${passfile1} md${no} 2>/dev/null && echo -n "not "
77	echo "ok ${i}"; i=$((i+1))
78	geli attach -k ${keyfile1} -j ${passfile0} md${no} 2>/dev/null && echo -n "not "
79	echo "ok ${i}"; i=$((i+1))
80	geli attach -k ${keyfile1} -j ${passfile1} md${no} 2>/dev/null && echo -n "not "
81	echo "ok ${i}"; i=$((i+1))
82	geli attach -k ${keyfile0} -j ${passfile0} -j ${passfile1} md${no} 2>/dev/null && echo -n "not "
83	echo "ok ${i}"; i=$((i+1))
84	geli attach -k ${keyfile1} -j ${passfile0} -j ${passfile1} md${no} 2>/dev/null && echo -n "not "
85	echo "ok ${i}"; i=$((i+1))
86	geli attach -k ${keyfile0} -k ${keyfile1} -j ${passfile0} md${no} 2>/dev/null && echo -n "not "
87	echo "ok ${i}"; i=$((i+1))
88	geli attach -k ${keyfile0} -k ${keyfile1} -j ${passfile1} md${no} 2>/dev/null && echo -n "not "
89	echo "ok ${i}"; i=$((i+1))
90	geli attach -k ${keyfile1} -k ${keyfile0} -j ${passfile0} -j ${passfile1} md${no} 2>/dev/null && echo -n "not "
91	echo "ok ${i}"; i=$((i+1))
92	geli attach -k ${keyfile0} -k ${keyfile1} -j ${passfile1} -j ${passfile0} md${no} 2>/dev/null && echo -n "not "
93	echo "ok ${i}"; i=$((i+1))
94	geli attach -k ${keyfile1} -k ${keyfile0} -j ${passfile1} -j ${passfile0} md${no} 2>/dev/null && echo -n "not "
95	echo "ok ${i}"; i=$((i+1))
96	geli attach -j ${passfile0} -j ${passfile1} -k ${keyfile0} -k ${keyfile1} md${no} 2>/dev/null || echo -n "not "
97	echo "ok ${i}"; i=$((i+1))
98	geli detach md${no} || echo -n "not "
99	echo "ok ${i}"; i=$((i+1))
100	cat ${passfile0} | geli attach -j - -j ${passfile1} -k ${keyfile0} -k ${keyfile1} md${no} 2>/dev/null || echo -n "not "
101	echo "ok ${i}"; i=$((i+1))
102	geli detach md${no} || echo -n "not "
103	echo "ok ${i}"; i=$((i+1))
104	cat ${passfile1} | geli attach -j ${passfile0} -j - -k ${keyfile0} -k ${keyfile1} md${no} 2>/dev/null || echo -n "not "
105	echo "ok ${i}"; i=$((i+1))
106	geli detach md${no} || echo -n "not "
107	echo "ok ${i}"; i=$((i+1))
108	cat ${keyfile0} | geli attach -j ${passfile0} -j ${passfile1} -k - -k ${keyfile1} md${no} 2>/dev/null || echo -n "not "
109	echo "ok ${i}"; i=$((i+1))
110	geli detach md${no} || echo -n "not "
111	echo "ok ${i}"; i=$((i+1))
112	cat ${keyfile1} | geli attach -j ${passfile0} -j ${passfile1} -k ${keyfile0} -k - md${no} 2>/dev/null || echo -n "not "
113	echo "ok ${i}"; i=$((i+1))
114	geli detach md${no} || echo -n "not "
115	echo "ok ${i}"; i=$((i+1))
116	cat ${keyfile0} ${keyfile1} | geli attach -j ${passfile0} -j ${passfile1} -k - md${no} 2>/dev/null || echo -n "not "
117	echo "ok ${i}"; i=$((i+1))
118	geli detach md${no} || echo -n "not "
119	echo "ok ${i}"; i=$((i+1))
120	cat ${passfile0} ${passfile1} | awk '{printf "%s", $0}' | geli attach -j - -k ${keyfile0} -k ${keyfile1} md${no} 2>/dev/null || echo -n "not "
121	echo "ok ${i}"; i=$((i+1))
122	geli detach md${no} || echo -n "not "
123	echo "ok ${i}"; i=$((i+1))
124done
125
126rm -f ${keyfile0} ${keyfile1} ${passfile0} ${passfile1}
127