xref: /openbsd/regress/sbin/bioctl/Makefile (revision 4bdff4be)
1#	$OpenBSD: Makefile,v 1.9 2023/08/30 17:40:08 kn Exp $
2
3BIOCTL ?=		/sbin/bioctl
4
5CHUNKFILE =		disk.img
6CHUNKDEVFILE =		chunk.txt
7VOLDEVFILE =		vol.txt
8ROUNDSFILE =		rounds.txt
9PASSFILE =		passphrase.txt
10
11OLDPW =			oldsecret
12NEWPW =			securenew
13NROUNDS ?=		17
14
15REGRESS_SETUP_ONCE =	create-chunk create-passfile
16
17create-chunk:
18	dd if=/dev/zero of=${CHUNKFILE} bs=512k count=0 seek=1 status=none
19	${SUDO} vnconfig -- ${CHUNKFILE} 1>${CHUNKDEVFILE}
20	echo 'RAID *' | ${SUDO} disklabel -wAT- -- "$$(<${CHUNKDEVFILE})"
21
22create-passfile:
23	${SUDO} install -o root -m u=rw,go= /dev/null ${PASSFILE}
24	printf '%s\n' '${OLDPW}' | ${SUDO} tee ${PASSFILE} 1>/dev/null
25
26
27SUCCESS_TESTS =			scripted-create-volume \
28				scripted-recreate-volume \
29				reopen-volume-with-passfile \
30				scripted-change-passphrase \
31				verify-increased-rounds
32REGRESS_TARGETS =		${SUCCESS_TESTS}
33REGRESS_ROOT_TARGETS =		${SUCCESS_TESTS}
34
35scripted-create-volume:
36	printf '%s\n' '${OLDPW}' | \
37		${SUDO} ${BIOCTL} -s -cC -l"$$(<${CHUNKDEVFILE})a" -- softraid0 | \
38		grep -o 'sd[0-9]*$$' -- 1>${VOLDEVFILE}
39
40scripted-recreate-volume: detach-volume
41	printf '%s\n' '${OLDPW}' | \
42		${SUDO} ${BIOCTL} -s -Cforce -r${NROUNDS} -cC -l"$$(<${CHUNKDEVFILE})a" -- softraid0 | \
43		grep -o 'sd[0-9]*$$' -- 1>${VOLDEVFILE}
44
45reopen-volume-with-passfile: detach-volume
46	${SUDO} ${BIOCTL} -p${PASSFILE} -cC -l"$$(<${CHUNKDEVFILE})a" -- softraid0 | \
47		grep -o 'sd[0-9]*$$' -- 1>${VOLDEVFILE}
48
49scripted-change-passphrase:
50	printf '%s\n%s\n' '${OLDPW}' '${NEWPW}' | \
51		${SUDO} ${BIOCTL} -s -P -v -- "$$(<${VOLDEVFILE})" | \
52		tee -- ${ROUNDSFILE}
53
54verify-increased-rounds:
55	awk -safe -vOLD=${NROUNDS} -- '\
56		NR == 1 { old = $$7 }; \
57		NR == 2 { new = $$7 }; \
58		END     { exit !(OLD == old && old <= new) }' ${ROUNDSFILE}
59
60
61FAILURE_TESTS =			reuse-active-chunk \
62				use-public-passfile \
63				use-foreign-passfile \
64				set-empty-passphrase
65REGRESS_EXPECTED_FAILURES +=	${FAILURE_TESTS}
66REGRESS_TARGETS +=		${FAILURE_TESTS}
67REGRESS_ROOT_TARGETS +=		${FAILURE_TESTS}
68
69reuse-active-chunk:
70	${SUDO} ${BIOCTL} -cC -l"$$(<${CHUNKDEVFILE})a" -- softraid0
71
72use-public-passfile:
73	${SUDO} chmod a=rwx ${PASSFILE}
74	${SUDO} ${BIOCTL} -p${PASSFILE} -P -- "$$(<${VOLDEVFILE})"
75
76use-foreign-passfile:
77	${SUDO} chown build ${PASSFILE}
78	${SUDO} ${BIOCTL} -p${PASSFILE} -P -- "$$(<${VOLDEVFILE})"
79
80set-empty-passphrase:
81	printf '\n' | ${SUDO} ${BIOCTL} -s -P -- "$$(<${VOLDEVFILE})"
82
83
84CLEANFILES =		*.txt *.img
85REGRESS_CLEANUP =	cleanup
86
87detach-volume:
88	${SUDO} ${BIOCTL} -d -- "$$(<${VOLDEVFILE})" 2>/dev/null
89cleanup: detach-volume
90	${SUDO} vnconfig  -u -- "$$(<${CHUNKDEVFILE})" 2>/dev/null
91
92.include <bsd.regress.mk>
93