xref: /freebsd/usr.sbin/certctl/tests/certctl_test.sh (revision 03221b189a48a509c1bc9adb8331638ae3eac065)
1c340ef28SDag-Erling Smørgrav#
2c340ef28SDag-Erling Smørgrav# Copyright (c) 2025 Dag-Erling Smørgrav <des@FreeBSD.org>
3c340ef28SDag-Erling Smørgrav#
4c340ef28SDag-Erling Smørgrav# SPDX-License-Identifier: BSD-2-Clause
5c340ef28SDag-Erling Smørgrav#
6c340ef28SDag-Erling Smørgrav
7c340ef28SDag-Erling Smørgrav. $(atf_get_srcdir)/certctl.subr
8c340ef28SDag-Erling Smørgrav
9c340ef28SDag-Erling Smørgrav# Random sets of eight non-colliding names
10c340ef28SDag-Erling Smørgravset1()
11c340ef28SDag-Erling Smørgrav{
12c340ef28SDag-Erling Smørgrav	cat <<EOF
13c340ef28SDag-Erling SmørgravAVOYKJHSLFHWPVQMKBHENUAHJTEGMCCB 0ca83bbe
14c340ef28SDag-Erling SmørgravUYSYXKDNNJTYOQPBGIKQDHRJYZHTDPKK 0d9a6512
15c340ef28SDag-Erling SmørgravLODHGFXMZYKGOKAYGWTMMYQJYHDATDDM 4e6219f5
16c340ef28SDag-Erling SmørgravNBBTQHJLHKBFFFWJTHHSNKOQYMGLHLPW 5dd76abc
17c340ef28SDag-Erling SmørgravBJFAQZXZHYQLIDDPCAQFPDMNXICUXBXW ad68573d
18c340ef28SDag-Erling SmørgravIOKNTHVEVVIJMNMYAVILMEMQQWLVRESN b577803d
19c340ef28SDag-Erling SmørgravBHGMAJJGNJPIVMHMFCUTJLGFROJICEKN c98a6338
20c340ef28SDag-Erling SmørgravHCRFQMGDQJALMLUQNXMPGLXFLLJRODJW f50c6379
21c340ef28SDag-Erling SmørgravEOF
22c340ef28SDag-Erling Smørgrav}
23c340ef28SDag-Erling Smørgrav
24c340ef28SDag-Erling Smørgravset2()
25c340ef28SDag-Erling Smørgrav{
26c340ef28SDag-Erling Smørgrav	cat <<EOF
27c340ef28SDag-Erling SmørgravGOHKZTSKIPDSYNLMGYXGLROPTATELXIU 30789c88
28c340ef28SDag-Erling SmørgravYOOTYHEGHZIYFXOBLNKENPSJUDGOPJJU 7fadbc13
29c340ef28SDag-Erling SmørgravETRINNYBGKIENAVGOKVJYFSSHFZIJZRH 8ed664af
30c340ef28SDag-Erling SmørgravDBFGMFFMRNLPQLQPOLXOEUVLCRXLRSWT 8f34355e
31c340ef28SDag-Erling SmørgravWFOPBQPLQFHDHZOUQFEIDGSYDUOTSNDQ ac0471df
32c340ef28SDag-Erling SmørgravHMNETZMGNIWRGXQCVZXVZGWSGFBRRDQC b32f1472
33c340ef28SDag-Erling SmørgravSHFYBXDVAUACBFPPAIGDAQIAGYOYGMQE baca75fa
34c340ef28SDag-Erling SmørgravPCBGDNVPYCDGNRQSGRSLXFHYKXLAVLHW ddeeae01
35c340ef28SDag-Erling SmørgravEOF
36c340ef28SDag-Erling Smørgrav}
37c340ef28SDag-Erling Smørgrav
38c340ef28SDag-Erling Smørgravset3()
39c340ef28SDag-Erling Smørgrav{
40c340ef28SDag-Erling Smørgrav	cat <<EOF
41c340ef28SDag-Erling SmørgravNJWIRLPWAIICVJBKXXHFHLCPAERZATRL 000aa2e5
42c340ef28SDag-Erling SmørgravRJAENDPOCZQEVCPFUWOWDXPCSMYJPVYC 021b95a3
43c340ef28SDag-Erling SmørgravPQUQDSWHBNVLBTNBGONYRLGZZVEFXVLO 071e8c50
44c340ef28SDag-Erling SmørgravVZEXRKJUPZSFBDWBOLUZXOGLNTEAPCZM 3af7bb9b
45c340ef28SDag-Erling SmørgravZXOWOXQTXNZMAMZIWVFDZDJEWOOAGAOH 48d5c7cc
46c340ef28SDag-Erling SmørgravKQSFQYVJMFTMADIHJIWGSQISWKSHRYQO 509f5ba1
47c340ef28SDag-Erling SmørgravAIECYSLWZOIEPJWWUTWSQXCNCIHHZHYI 8cb0c503
48c340ef28SDag-Erling SmørgravRFHWDJZEPOFLMPGXAHVEJFHCDODAPVEV 9ae4e049
49c340ef28SDag-Erling SmørgravEOF
50c340ef28SDag-Erling Smørgrav}
51c340ef28SDag-Erling Smørgrav
52c340ef28SDag-Erling Smørgrav# Random set of three colliding names
53c340ef28SDag-Erling Smørgravcollhash=f2888ce3
54c340ef28SDag-Erling Smørgravcoll()
55c340ef28SDag-Erling Smørgrav{
56c340ef28SDag-Erling Smørgrav	cat <<EOF
57c340ef28SDag-Erling SmørgravEJFTZEOANQLOYPEHWWXBWEWEFVKHMSNA $collhash
58c340ef28SDag-Erling SmørgravLEMRWZAZLKZLPPSFLNLQZVGKKBEOFYWG $collhash
59c340ef28SDag-Erling SmørgravZWUPHYWKKTVEFBJOLLPDAIKGRDFVXZID $collhash
60c340ef28SDag-Erling SmørgravEOF
61c340ef28SDag-Erling Smørgrav}
62c340ef28SDag-Erling Smørgrav
63c340ef28SDag-Erling Smørgravsortfile() {
64c340ef28SDag-Erling Smørgrav	for filename; do
65c340ef28SDag-Erling Smørgrav		sort "${filename}" >"${filename}"-
66c340ef28SDag-Erling Smørgrav		mv "${filename}"- "${filename}"
67c340ef28SDag-Erling Smørgrav	done
68c340ef28SDag-Erling Smørgrav}
69c340ef28SDag-Erling Smørgrav
70c340ef28SDag-Erling Smørgravcertctl_setup()
71c340ef28SDag-Erling Smørgrav{
72c340ef28SDag-Erling Smørgrav	export DESTDIR="$PWD"
73c340ef28SDag-Erling Smørgrav
74c340ef28SDag-Erling Smørgrav	# Create input directories
75c340ef28SDag-Erling Smørgrav	mkdir -p ${DESTDIR}${DISTBASE}/usr/share/certs/trusted
76c340ef28SDag-Erling Smørgrav	mkdir -p ${DESTDIR}${DISTBASE}/usr/share/certs/untrusted
77c340ef28SDag-Erling Smørgrav	mkdir -p ${DESTDIR}/usr/local/share/certs
78c340ef28SDag-Erling Smørgrav
79*03221b18SDag-Erling Smørgrav	# Do not create output directories; certctl will take care of it
80*03221b18SDag-Erling Smørgrav	#mkdir -p ${DESTDIR}${DISTBASE}/etc/ssl/certs
81*03221b18SDag-Erling Smørgrav	#mkdir -p ${DESTDIR}${DISTBASE}/etc/ssl/untrusted
82c340ef28SDag-Erling Smørgrav
83c340ef28SDag-Erling Smørgrav	# Generate a random key
84c340ef28SDag-Erling Smørgrav	keyname="testkey"
85c340ef28SDag-Erling Smørgrav	gen_key ${keyname}
86c340ef28SDag-Erling Smørgrav
87c340ef28SDag-Erling Smørgrav	# Generate certificates
88c340ef28SDag-Erling Smørgrav	:>metalog.expect
89c340ef28SDag-Erling Smørgrav	:>trusted.expect
90c340ef28SDag-Erling Smørgrav	:>untrusted.expect
91c340ef28SDag-Erling Smørgrav	metalog() {
92c340ef28SDag-Erling Smørgrav		echo ".${DISTBASE}$@ type=file" >>metalog.expect
93c340ef28SDag-Erling Smørgrav	}
94c340ef28SDag-Erling Smørgrav	trusted() {
95c340ef28SDag-Erling Smørgrav		local crtname=$1
96c340ef28SDag-Erling Smørgrav		local filename=$2
97c340ef28SDag-Erling Smørgrav		printf "%s\t%s\n" "${filename}" "${crtname}" >>trusted.expect
98c340ef28SDag-Erling Smørgrav		metalog "/etc/ssl/certs/${filename}"
99c340ef28SDag-Erling Smørgrav	}
100c340ef28SDag-Erling Smørgrav	untrusted() {
101c340ef28SDag-Erling Smørgrav		local crtname=$1
102c340ef28SDag-Erling Smørgrav		local filename=$2
103c340ef28SDag-Erling Smørgrav		printf "%s\t%s\n" "${filename}" "${crtname}" >>untrusted.expect
104c340ef28SDag-Erling Smørgrav		metalog "/etc/ssl/untrusted/${filename}"
105c340ef28SDag-Erling Smørgrav	}
106c340ef28SDag-Erling Smørgrav	set1 | while read crtname hash ; do
107c340ef28SDag-Erling Smørgrav		gen_crt ${crtname} ${keyname}
108c340ef28SDag-Erling Smørgrav		mv ${crtname}.crt ${DESTDIR}${DISTBASE}/usr/share/certs/trusted
109c340ef28SDag-Erling Smørgrav		trusted "${crtname}" "${hash}.0"
110c340ef28SDag-Erling Smørgrav	done
111c340ef28SDag-Erling Smørgrav	local c=0
112c340ef28SDag-Erling Smørgrav	coll | while read crtname hash ; do
113c340ef28SDag-Erling Smørgrav		gen_crt ${crtname} ${keyname}
114c340ef28SDag-Erling Smørgrav		mv ${crtname}.crt ${DESTDIR}${DISTBASE}/usr/share/certs/trusted
115c340ef28SDag-Erling Smørgrav		trusted "${crtname}" "${hash}.${c}"
116c340ef28SDag-Erling Smørgrav		c=$((c+1))
117c340ef28SDag-Erling Smørgrav	done
118c340ef28SDag-Erling Smørgrav	set2 | while read crtname hash ; do
119c340ef28SDag-Erling Smørgrav		gen_crt ${crtname} ${keyname}
120c340ef28SDag-Erling Smørgrav		openssl x509 -in ${crtname}.crt
121c340ef28SDag-Erling Smørgrav		rm ${crtname}.crt
122c340ef28SDag-Erling Smørgrav		trusted "${crtname}" "${hash}.0"
123c340ef28SDag-Erling Smørgrav	done >usr/local/share/certs/bundle.crt
124c340ef28SDag-Erling Smørgrav	set3 | while read crtname hash ; do
125c340ef28SDag-Erling Smørgrav		gen_crt ${crtname} ${keyname}
126c340ef28SDag-Erling Smørgrav		mv ${crtname}.crt ${DESTDIR}${DISTBASE}/usr/share/certs/untrusted
127c340ef28SDag-Erling Smørgrav		untrusted "${crtname}" "${hash}.0"
128c340ef28SDag-Erling Smørgrav	done
129c340ef28SDag-Erling Smørgrav	metalog "/etc/ssl/cert.pem"
130c340ef28SDag-Erling Smørgrav	unset -f untrusted
131c340ef28SDag-Erling Smørgrav	unset -f trusted
132c340ef28SDag-Erling Smørgrav	unset -f metalog
133c340ef28SDag-Erling Smørgrav	sortfile *.expect
134c340ef28SDag-Erling Smørgrav}
135c340ef28SDag-Erling Smørgrav
136c340ef28SDag-Erling Smørgravcheck_trusted() {
137c340ef28SDag-Erling Smørgrav	local crtname=$1
138c340ef28SDag-Erling Smørgrav	local subject="$(subject ${crtname})"
139c340ef28SDag-Erling Smørgrav	local c=${2:-1}
140c340ef28SDag-Erling Smørgrav
141c340ef28SDag-Erling Smørgrav	atf_check -e ignore -o match:"found: ${c}\$" \
142c340ef28SDag-Erling Smørgrav	    openssl storeutl -noout -subject "${subject}" \
143c340ef28SDag-Erling Smørgrav	    ${DESTDIR}${DISTBASE}/etc/ssl/certs
144c340ef28SDag-Erling Smørgrav	atf_check -e ignore -o not-match:"found: [1-9]"  \
145c340ef28SDag-Erling Smørgrav	    openssl storeutl -noout -subject "${subject}" \
146c340ef28SDag-Erling Smørgrav	    ${DESTDIR}${DISTBASE}/etc/ssl/untrusted
147c340ef28SDag-Erling Smørgrav}
148c340ef28SDag-Erling Smørgrav
149c340ef28SDag-Erling Smørgravcheck_untrusted() {
150c340ef28SDag-Erling Smørgrav	local crtname=$1
151c340ef28SDag-Erling Smørgrav	local subject="$(subject ${crtname})"
152c340ef28SDag-Erling Smørgrav	local c=${2:-1}
153c340ef28SDag-Erling Smørgrav
154c340ef28SDag-Erling Smørgrav	atf_check -e ignore -o not-match:"found: [1-9]" \
155c340ef28SDag-Erling Smørgrav	    openssl storeutl -noout -subject "${subject}" \
156c340ef28SDag-Erling Smørgrav	    ${DESTDIR}/${DISTBASE}/etc/ssl/certs
157c340ef28SDag-Erling Smørgrav	atf_check -e ignore -o match:"found: ${c}\$" \
158c340ef28SDag-Erling Smørgrav	    openssl storeutl -noout -subject "${subject}" \
159c340ef28SDag-Erling Smørgrav	    ${DESTDIR}/${DISTBASE}/etc/ssl/untrusted
160c340ef28SDag-Erling Smørgrav}
161c340ef28SDag-Erling Smørgrav
162c340ef28SDag-Erling Smørgravcheck_in_bundle() {
163c340ef28SDag-Erling Smørgrav	local b=${DISTBASE}${DISTBASE+/}
164c340ef28SDag-Erling Smørgrav	local crtfile=$1
165c340ef28SDag-Erling Smørgrav	local line
166c340ef28SDag-Erling Smørgrav
167c340ef28SDag-Erling Smørgrav	line=$(tail +5 "${crtfile}" | head -1)
168c340ef28SDag-Erling Smørgrav	atf_check grep -q "${line}" ${DESTDIR}${DISTBASE}/etc/ssl/cert.pem
169c340ef28SDag-Erling Smørgrav}
170c340ef28SDag-Erling Smørgrav
171c340ef28SDag-Erling Smørgravcheck_not_in_bundle() {
172c340ef28SDag-Erling Smørgrav	local b=${DISTBASE}${DISTBASE+/}
173c340ef28SDag-Erling Smørgrav	local crtfile=$1
174c340ef28SDag-Erling Smørgrav	local line
175c340ef28SDag-Erling Smørgrav
176c340ef28SDag-Erling Smørgrav	line=$(tail +5 "${crtfile}" | head -1)
177c340ef28SDag-Erling Smørgrav	atf_check -s exit:1 grep -q "${line}" etc/ssl/cert.pem
178c340ef28SDag-Erling Smørgrav}
179c340ef28SDag-Erling Smørgrav
180c340ef28SDag-Erling Smørgravatf_test_case rehash
181c340ef28SDag-Erling Smørgravrehash_head()
182c340ef28SDag-Erling Smørgrav{
183c340ef28SDag-Erling Smørgrav	atf_set "descr" "Test the rehash command"
184c340ef28SDag-Erling Smørgrav}
185c340ef28SDag-Erling Smørgravrehash_body()
186c340ef28SDag-Erling Smørgrav{
187c340ef28SDag-Erling Smørgrav	certctl_setup
188c340ef28SDag-Erling Smørgrav	atf_check certctl rehash
189c340ef28SDag-Erling Smørgrav
190c340ef28SDag-Erling Smørgrav	# Verify non-colliding trusted certificates
191c340ef28SDag-Erling Smørgrav	(set1; set2) >trusted
192c340ef28SDag-Erling Smørgrav	while read crtname hash ; do
193c340ef28SDag-Erling Smørgrav		check_trusted "${crtname}"
194c340ef28SDag-Erling Smørgrav	done <trusted
195c340ef28SDag-Erling Smørgrav
196c340ef28SDag-Erling Smørgrav	# Verify colliding trusted certificates
197c340ef28SDag-Erling Smørgrav	coll >coll
198c340ef28SDag-Erling Smørgrav	while read crtname hash ; do
199c340ef28SDag-Erling Smørgrav		check_trusted "${crtname}" $(wc -l <coll)
200c340ef28SDag-Erling Smørgrav	done <coll
201c340ef28SDag-Erling Smørgrav
202c340ef28SDag-Erling Smørgrav	# Verify untrusted certificates
203c340ef28SDag-Erling Smørgrav	set3 >untrusted
204c340ef28SDag-Erling Smørgrav	while read crtname hash ; do
205c340ef28SDag-Erling Smørgrav		check_untrusted "${crtname}"
206c340ef28SDag-Erling Smørgrav	done <untrusted
207c340ef28SDag-Erling Smørgrav
208c340ef28SDag-Erling Smørgrav	# Verify bundle
209c340ef28SDag-Erling Smørgrav	for f in etc/ssl/certs/*.? ; do
210c340ef28SDag-Erling Smørgrav		check_in_bundle "${f}"
211c340ef28SDag-Erling Smørgrav	done
212c340ef28SDag-Erling Smørgrav	for f in etc/ssl/untrusted/*.? ; do
213c340ef28SDag-Erling Smørgrav		check_not_in_bundle "${f}"
214c340ef28SDag-Erling Smørgrav	done
215c340ef28SDag-Erling Smørgrav}
216c340ef28SDag-Erling Smørgrav
217c340ef28SDag-Erling Smørgravatf_test_case list
218c340ef28SDag-Erling Smørgravlist_head()
219c340ef28SDag-Erling Smørgrav{
220c340ef28SDag-Erling Smørgrav	atf_set "descr" "Test the list and untrusted commands"
221c340ef28SDag-Erling Smørgrav}
222c340ef28SDag-Erling Smørgravlist_body()
223c340ef28SDag-Erling Smørgrav{
224c340ef28SDag-Erling Smørgrav	certctl_setup
225c340ef28SDag-Erling Smørgrav	atf_check certctl rehash
226c340ef28SDag-Erling Smørgrav
227c340ef28SDag-Erling Smørgrav	atf_check -o save:trusted.out certctl list
228c340ef28SDag-Erling Smørgrav	sortfile trusted.out
229c340ef28SDag-Erling Smørgrav	# the ordering of the colliding certificates is partly
230c340ef28SDag-Erling Smørgrav	# determined by fields that change every time we regenerate
231c340ef28SDag-Erling Smørgrav	# them, so ignore them in the diff
232c340ef28SDag-Erling Smørgrav	atf_check diff -u \
233c340ef28SDag-Erling Smørgrav	    --ignore-matching-lines $collhash \
234c340ef28SDag-Erling Smørgrav	    trusted.expect trusted.out
235c340ef28SDag-Erling Smørgrav
236c340ef28SDag-Erling Smørgrav	atf_check -o save:untrusted.out certctl untrusted
237c340ef28SDag-Erling Smørgrav	sortfile untrusted.out
238c340ef28SDag-Erling Smørgrav	atf_check diff -u \
239c340ef28SDag-Erling Smørgrav	    untrusted.expect untrusted.out
240c340ef28SDag-Erling Smørgrav}
241c340ef28SDag-Erling Smørgrav
242c340ef28SDag-Erling Smørgravatf_test_case trust
243c340ef28SDag-Erling Smørgravtrust_head()
244c340ef28SDag-Erling Smørgrav{
245c340ef28SDag-Erling Smørgrav	atf_set "descr" "Test the trust command"
246c340ef28SDag-Erling Smørgrav}
247c340ef28SDag-Erling Smørgravtrust_body()
248c340ef28SDag-Erling Smørgrav{
249c340ef28SDag-Erling Smørgrav	certctl_setup
250c340ef28SDag-Erling Smørgrav	atf_check certctl rehash
251c340ef28SDag-Erling Smørgrav	crtname=$(set3 | (read crtname hash ; echo ${crtname}))
252c340ef28SDag-Erling Smørgrav	crtfile=usr/share/certs/untrusted/${crtname}.crt
253c340ef28SDag-Erling Smørgrav	check_untrusted ${crtname}
254c340ef28SDag-Erling Smørgrav	check_not_in_bundle ${crtfile}
255c340ef28SDag-Erling Smørgrav	atf_check -e match:"was previously untrusted" \
256c340ef28SDag-Erling Smørgrav	    certctl trust ${crtfile}
257c340ef28SDag-Erling Smørgrav	check_trusted ${crtname}
258c340ef28SDag-Erling Smørgrav	check_in_bundle ${crtfile}
259c340ef28SDag-Erling Smørgrav}
260c340ef28SDag-Erling Smørgrav
261c340ef28SDag-Erling Smørgravatf_test_case untrust
262c340ef28SDag-Erling Smørgravuntrust_head()
263c340ef28SDag-Erling Smørgrav{
264c340ef28SDag-Erling Smørgrav	atf_set "descr" "Test the untrust command"
265c340ef28SDag-Erling Smørgrav}
266c340ef28SDag-Erling Smørgravuntrust_body()
267c340ef28SDag-Erling Smørgrav{
268c340ef28SDag-Erling Smørgrav	certctl_setup
269c340ef28SDag-Erling Smørgrav	atf_check certctl rehash
270c340ef28SDag-Erling Smørgrav	crtname=$(set1 | (read crtname hash ; echo ${crtname}))
271c340ef28SDag-Erling Smørgrav	crtfile=usr/share/certs/trusted/${crtname}.crt
272c340ef28SDag-Erling Smørgrav	check_trusted "${crtname}"
273c340ef28SDag-Erling Smørgrav	check_in_bundle ${crtfile}
274c340ef28SDag-Erling Smørgrav	atf_check certctl untrust "${crtfile}"
275c340ef28SDag-Erling Smørgrav	check_untrusted "${crtname}"
276c340ef28SDag-Erling Smørgrav	check_not_in_bundle ${crtfile}
277c340ef28SDag-Erling Smørgrav}
278c340ef28SDag-Erling Smørgrav
279c340ef28SDag-Erling Smørgravatf_test_case metalog
280c340ef28SDag-Erling Smørgravmetalog_head()
281c340ef28SDag-Erling Smørgrav{
282c340ef28SDag-Erling Smørgrav	atf_set "descr" "Verify the metalog"
283c340ef28SDag-Erling Smørgrav}
284c340ef28SDag-Erling Smørgravmetalog_body()
285c340ef28SDag-Erling Smørgrav{
286c340ef28SDag-Erling Smørgrav	export DISTBASE=/base
287c340ef28SDag-Erling Smørgrav	certctl_setup
288c340ef28SDag-Erling Smørgrav
289c340ef28SDag-Erling Smørgrav	# certctl gets DESTDIR and DISTBASE from environment
290c340ef28SDag-Erling Smørgrav	rm -f metalog.orig
291c340ef28SDag-Erling Smørgrav	atf_check certctl -U -M metalog.orig rehash
292c340ef28SDag-Erling Smørgrav	sed -E 's/(type=file) .*/\1/' metalog.orig | sort >metalog.short
293c340ef28SDag-Erling Smørgrav	atf_check diff -u metalog.expect metalog.short
294c340ef28SDag-Erling Smørgrav
295c340ef28SDag-Erling Smørgrav	# certctl gets DESTDIR and DISTBASE from command line
296c340ef28SDag-Erling Smørgrav	rm -f metalog.orig
297c340ef28SDag-Erling Smørgrav	atf_check env -uDESTDIR -uDISTBASE \
298c340ef28SDag-Erling Smørgrav	    certctl -D ${DESTDIR} -d ${DISTBASE} -U -M metalog.orig rehash
299c340ef28SDag-Erling Smørgrav	sed -E 's/(type=file) .*/\1/' metalog.orig | sort >metalog.short
300c340ef28SDag-Erling Smørgrav	atf_check diff -u metalog.expect metalog.short
301c340ef28SDag-Erling Smørgrav
302c340ef28SDag-Erling Smørgrav	# as above, but intentionally add trailing slashes
303c340ef28SDag-Erling Smørgrav	rm -f metalog.orig
304c340ef28SDag-Erling Smørgrav	atf_check env -uDESTDIR -uDISTBASE \
305c340ef28SDag-Erling Smørgrav	    certctl -D ${DESTDIR}// -d ${DISTBASE}/ -U -M metalog.orig rehash
306c340ef28SDag-Erling Smørgrav	sed -E 's/(type=file) .*/\1/' metalog.orig | sort >metalog.short
307c340ef28SDag-Erling Smørgrav	atf_check diff -u metalog.expect metalog.short
308c340ef28SDag-Erling Smørgrav}
309c340ef28SDag-Erling Smørgrav
310c340ef28SDag-Erling Smørgravatf_test_case misc
311c340ef28SDag-Erling Smørgravmisc_head()
312c340ef28SDag-Erling Smørgrav{
313c340ef28SDag-Erling Smørgrav	atf_set "descr" "Test miscellaneous edge cases"
314c340ef28SDag-Erling Smørgrav}
315c340ef28SDag-Erling Smørgravmisc_body()
316c340ef28SDag-Erling Smørgrav{
317c340ef28SDag-Erling Smørgrav	# certctl rejects DISTBASE that does not begin with a slash
318c340ef28SDag-Erling Smørgrav	atf_check -s exit:1 -e match:"begin with a slash" \
319c340ef28SDag-Erling Smørgrav	    certctl -d base -n rehash
320c340ef28SDag-Erling Smørgrav	atf_check -s exit:1 -e match:"begin with a slash" \
321c340ef28SDag-Erling Smørgrav	    env DISTBASE=base certctl -n rehash
322c340ef28SDag-Erling Smørgrav}
323c340ef28SDag-Erling Smørgrav
324c340ef28SDag-Erling Smørgravatf_init_test_cases()
325c340ef28SDag-Erling Smørgrav{
326c340ef28SDag-Erling Smørgrav	atf_add_test_case rehash
327c340ef28SDag-Erling Smørgrav	atf_add_test_case list
328c340ef28SDag-Erling Smørgrav	atf_add_test_case trust
329c340ef28SDag-Erling Smørgrav	atf_add_test_case untrust
330c340ef28SDag-Erling Smørgrav	atf_add_test_case metalog
331c340ef28SDag-Erling Smørgrav	atf_add_test_case misc
332c340ef28SDag-Erling Smørgrav}
333