1323134Sdes#	$OpenBSD: Makefile,v 1.94 2016/12/16 03:51:19 dtucker Exp $
298937Sdes
3294332SdesREGRESS_TARGETS=	unit t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t-exec
4294332Sdestests:		prep $(REGRESS_TARGETS)
598937Sdes
6180746Sdes# Interop tests are not run by default
7180746Sdesinterop interop-tests: t-exec-interop
8180746Sdes
9294332Sdesprep:
10294332Sdes	test "x${USE_VALGRIND}" = "x" || mkdir -p $(OBJ)/valgrind-out
11294332Sdes
12124208Sdesclean:
13124208Sdes	for F in $(CLEANFILES); do rm -f $(OBJ)$$F; done
14255670Sdes	test -z "${SUDO}" || ${SUDO} rm -f ${SUDO_CLEAN}
15180746Sdes	rm -rf $(OBJ).putty
16180746Sdes
17124208Sdesdistclean:	clean
1898937Sdes
1998937SdesLTESTS= 	connect \
2098937Sdes		proxy-connect \
2198937Sdes		connect-privsep \
2298937Sdes		proto-version \
2398937Sdes		proto-mismatch \
2498937Sdes		exit-status \
25137015Sdes		envpass \
2698937Sdes		transfer \
27126274Sdes		banner \
28124208Sdes		rekey \
2998937Sdes		stderr-data \
3098937Sdes		stderr-after-eof \
3198937Sdes		broken-pipe \
3298937Sdes		try-ciphers \
3398937Sdes		yes-head \
34128456Sdes		login-timeout \
3598937Sdes		agent \
36113908Sdes		agent-getpeereid \
37113908Sdes		agent-timeout \
38113908Sdes		agent-ptrace \
3998937Sdes		keyscan \
40113908Sdes		keygen-change \
41204861Sdes		keygen-convert \
42323134Sdes		keygen-moduli \
43180750Sdes		key-options \
44137015Sdes		scp \
4598937Sdes		sftp \
46255670Sdes		sftp-chroot \
47113908Sdes		sftp-cmds \
48124208Sdes		sftp-badcmds \
49113908Sdes		sftp-batch \
50146998Sdes		sftp-glob \
51261320Sdes		sftp-perm \
52124208Sdes		reconfigure \
53124208Sdes		dynamic-forward \
54137015Sdes		forwarding \
55137015Sdes		multiplex \
56146998Sdes		reexec \
57162852Sdes		brokenkeys \
58323129Sdes		sshcfgparse \
59294336Sdes		cfgparse \
60162852Sdes		cfgmatch \
61180750Sdes		addrmatch \
62180746Sdes		localcommand \
63204861Sdes		forcecommand \
64204861Sdes		portnum \
65218767Sdes		keytype \
66218767Sdes		kextype \
67204861Sdes		cert-hostkey \
68218767Sdes		cert-userkey \
69248613Sdes		host-expand \
70248613Sdes		keys-command \
71248613Sdes		forward-control \
72248613Sdes		integrity \
73294332Sdes		krl \
74294332Sdes		multipubkey \
75294332Sdes		limit-keytype \
76294332Sdes		hostkey-agent \
77294332Sdes		keygen-knownhosts \
78294336Sdes		hostkey-rotate \
79296633Sdes		principals-command \
80323129Sdes		cert-file \
81323134Sdes		cfginclude \
82323134Sdes		allow-deny-users
83294332Sdes
84294332Sdes
85263712Sdes#		dhgex \
8698937Sdes
87180750SdesINTEROP_TESTS=	putty-transfer putty-ciphers putty-kex conch-ciphers
88180746Sdes#INTEROP_TESTS+=ssh-com ssh-com-client ssh-com-keygen ssh-com-sftp
89180746Sdes
90218767Sdes#LTESTS= 	cipher-speed
91218767Sdes
92323134SdesUSERNAME!=		id -un
93323134SdesCLEANFILES=	*.core actual agent-key.* authorized_keys_${USERNAME} \
94323134Sdes		authorized_keys_${USERNAME}.* \
95323134Sdes		authorized_principals_${USERNAME} \
96323129Sdes		banner.in banner.out cert_host_key* cert_user_key* \
97323129Sdes		copy.1 copy.2 data ed25519-agent ed25519-agent* \
98323129Sdes		ed25519-agent.pub empty.in expect failed-regress.log \
99323129Sdes		failed-ssh.log failed-sshd.log hkr.* host.rsa host.rsa1 \
100323129Sdes		host_* host_ca_key* host_krl_* host_revoked_* key.* \
101323129Sdes		key.dsa-* key.ecdsa-* key.ed25519-512 key.ed25519-512.pub \
102323129Sdes		key.rsa-* keys-command-args kh.* known_hosts \
103323129Sdes		known_hosts-cert known_hosts.* krl-* ls.copy modpipe \
104323129Sdes		netcat pidfile putty.rsa2 ready regress.log remote_pid \
105323129Sdes		revoked-* rsa rsa-agent rsa-agent.pub rsa.pub rsa1 \
106323129Sdes		rsa1-agent rsa1-agent.pub rsa1.pub rsa_ssh2_cr.prv \
107323129Sdes		rsa_ssh2_crnl.prv scp-ssh-wrapper.exe \
108323129Sdes		scp-ssh-wrapper.scp setuid-allowed sftp-server.log \
109323129Sdes		sftp-server.sh sftp.log ssh-log-wrapper.sh ssh.log \
110323129Sdes		ssh_config ssh_config.* ssh_proxy ssh_proxy_bak \
111323129Sdes		ssh_proxy_envpass sshd.log sshd_config sshd_config.orig \
112323129Sdes		sshd_proxy sshd_proxy.* sshd_proxy_bak sshd_proxy_orig \
113323129Sdes		t10.out t10.out.pub t12.out t12.out.pub t2.out t3.out \
114323129Sdes		t6.out1 t6.out2 t7.out t7.out.pub t8.out t8.out.pub \
115323129Sdes		t9.out t9.out.pub testdata user_*key* user_ca* user_key*
11698937Sdes
117323134SdesSUDO_CLEAN+=	/var/run/testdata_${USERNAME} /var/run/keycommand_${USERNAME}
118248613Sdes
119204861Sdes# Enable all malloc(3) randomisations and checks
120323134SdesTEST_ENV=      "MALLOC_OPTIONS=CFGJRSUX"
121204861Sdes
122218767SdesTEST_SSH_SSHKEYGEN?=ssh-keygen
123218767Sdes
124248613SdesCPPFLAGS=-I..
125248613Sdes
12698937Sdest1:
127218767Sdes	${TEST_SSH_SSHKEYGEN} -if ${.CURDIR}/rsa_ssh2.prv | diff - ${.CURDIR}/rsa_openssh.prv
128218767Sdes	tr '\n' '\r' <${.CURDIR}/rsa_ssh2.prv > ${.OBJDIR}/rsa_ssh2_cr.prv
129218767Sdes	${TEST_SSH_SSHKEYGEN} -if ${.OBJDIR}/rsa_ssh2_cr.prv | diff - ${.CURDIR}/rsa_openssh.prv
130218767Sdes	awk '{print $$0 "\r"}' ${.CURDIR}/rsa_ssh2.prv > ${.OBJDIR}/rsa_ssh2_crnl.prv
131218767Sdes	${TEST_SSH_SSHKEYGEN} -if ${.OBJDIR}/rsa_ssh2_crnl.prv | diff - ${.CURDIR}/rsa_openssh.prv
13298937Sdes
13398937Sdest2:
134124208Sdes	cat ${.CURDIR}/rsa_openssh.prv > $(OBJ)/t2.out
135124208Sdes	chmod 600 $(OBJ)/t2.out
136218767Sdes	${TEST_SSH_SSHKEYGEN} -yf $(OBJ)/t2.out | diff - ${.CURDIR}/rsa_openssh.pub
13798937Sdes
13898937Sdest3:
139218767Sdes	${TEST_SSH_SSHKEYGEN} -ef ${.CURDIR}/rsa_openssh.pub >$(OBJ)/t3.out
140218767Sdes	${TEST_SSH_SSHKEYGEN} -if $(OBJ)/t3.out | diff - ${.CURDIR}/rsa_openssh.pub
14198937Sdes
14298937Sdest4:
143294332Sdes	${TEST_SSH_SSHKEYGEN} -E md5 -lf ${.CURDIR}/rsa_openssh.pub |\
14498937Sdes		awk '{print $$2}' | diff - ${.CURDIR}/t4.ok
14598937Sdes
14698937Sdest5:
147218767Sdes	${TEST_SSH_SSHKEYGEN} -Bf ${.CURDIR}/rsa_openssh.pub |\
14898937Sdes		awk '{print $$2}' | diff - ${.CURDIR}/t5.ok
14998937Sdes
15098937Sdest6:
151218767Sdes	${TEST_SSH_SSHKEYGEN} -if ${.CURDIR}/dsa_ssh2.prv > $(OBJ)/t6.out1
152218767Sdes	${TEST_SSH_SSHKEYGEN} -if ${.CURDIR}/dsa_ssh2.pub > $(OBJ)/t6.out2
153124208Sdes	chmod 600 $(OBJ)/t6.out1
154218767Sdes	${TEST_SSH_SSHKEYGEN} -yf $(OBJ)/t6.out1 | diff - $(OBJ)/t6.out2
15598937Sdes
156124208Sdes$(OBJ)/t7.out:
157218767Sdes	${TEST_SSH_SSHKEYGEN} -q -t rsa -N '' -f $@
15898937Sdes
159124208Sdest7: $(OBJ)/t7.out
160218767Sdes	${TEST_SSH_SSHKEYGEN} -lf $(OBJ)/t7.out > /dev/null
161218767Sdes	${TEST_SSH_SSHKEYGEN} -Bf $(OBJ)/t7.out > /dev/null
16298937Sdes
163218767Sdes$(OBJ)/t8.out:
164218767Sdes	${TEST_SSH_SSHKEYGEN} -q -t dsa -N '' -f $@
165218767Sdes
166218767Sdest8: $(OBJ)/t8.out
167218767Sdes	${TEST_SSH_SSHKEYGEN} -lf $(OBJ)/t8.out > /dev/null
168218767Sdes	${TEST_SSH_SSHKEYGEN} -Bf $(OBJ)/t8.out > /dev/null
169218767Sdes
170218767Sdes$(OBJ)/t9.out:
171218767Sdes	test "${TEST_SSH_ECC}" != yes || \
172218767Sdes	${TEST_SSH_SSHKEYGEN} -q -t ecdsa -N '' -f $@
173218767Sdes
174218767Sdest9: $(OBJ)/t9.out
175218767Sdes	test "${TEST_SSH_ECC}" != yes || \
176218767Sdes	${TEST_SSH_SSHKEYGEN} -lf $(OBJ)/t9.out > /dev/null
177218767Sdes	test "${TEST_SSH_ECC}" != yes || \
178218767Sdes	${TEST_SSH_SSHKEYGEN} -Bf $(OBJ)/t9.out > /dev/null
179218767Sdes
180261320Sdes
181261320Sdes$(OBJ)/t10.out:
182261320Sdes	${TEST_SSH_SSHKEYGEN} -q -t ed25519 -N '' -f $@
183261320Sdes
184261320Sdest10: $(OBJ)/t10.out
185261320Sdes	${TEST_SSH_SSHKEYGEN} -lf $(OBJ)/t10.out > /dev/null
186261320Sdes	${TEST_SSH_SSHKEYGEN} -Bf $(OBJ)/t10.out > /dev/null
187261320Sdes
188294332Sdest11:
189294332Sdes	${TEST_SSH_SSHKEYGEN} -E sha256 -lf ${.CURDIR}/rsa_openssh.pub |\
190294332Sdes		awk '{print $$2}' | diff - ${.CURDIR}/t11.ok
191294332Sdes
192294336Sdes$(OBJ)/t12.out:
193294336Sdes	${TEST_SSH_SSHKEYGEN} -q -t ed25519 -N '' -C 'test-comment-1234' -f $@
194294332Sdes
195294336Sdest12: $(OBJ)/t12.out
196294332Sdes	${TEST_SSH_SSHKEYGEN} -lf $(OBJ)/t12.out.pub | grep test-comment-1234 >/dev/null
197294332Sdes
198124208Sdest-exec:	${LTESTS:=.sh}
199124208Sdes	@if [ "x$?" = "x" ]; then exit 0; fi; \
200124208Sdes	for TEST in ""$?; do \
201124208Sdes		echo "run test $${TEST}" ... 1>&2; \
202255670Sdes		(env SUDO="${SUDO}" TEST_ENV=${TEST_ENV} ${TEST_SHELL} ${.CURDIR}/test-exec.sh ${.OBJDIR} ${.CURDIR}/$${TEST}) || exit $$?; \
203124208Sdes	done
204180746Sdes
205180746Sdest-exec-interop:	${INTEROP_TESTS:=.sh}
206180746Sdes	@if [ "x$?" = "x" ]; then exit 0; fi; \
207180746Sdes	for TEST in ""$?; do \
208180746Sdes		echo "run test $${TEST}" ... 1>&2; \
209255670Sdes		(env SUDO="${SUDO}" TEST_ENV=${TEST_ENV} ${TEST_SHELL} ${.CURDIR}/test-exec.sh ${.OBJDIR} ${.CURDIR}/$${TEST}) || exit $$?; \
210180746Sdes	done
211180746Sdes
212218767Sdes# Not run by default
213218767Sdesinterop: ${INTEROP_TARGETS}
214294328Sdes
215294328Sdes# Unit tests, built by top-level Makefile
216294328Sdesunit:
217294328Sdes	set -e ; if test -z "${SKIP_UNIT}" ; then \
218294332Sdes		V="" ; \
219294332Sdes		test "x${USE_VALGRIND}" = "x" || \
220294332Sdes		    V=${.CURDIR}/valgrind-unit.sh ; \
221294332Sdes		$$V ${.OBJDIR}/unittests/sshbuf/test_sshbuf ; \
222294332Sdes		$$V ${.OBJDIR}/unittests/sshkey/test_sshkey \
223294332Sdes			-d ${.CURDIR}/unittests/sshkey/testdata ; \
224294332Sdes		$$V ${.OBJDIR}/unittests/bitmap/test_bitmap ; \
225323136Sdes		$$V ${.OBJDIR}/unittests/conversion/test_conversion ; \
226294332Sdes		$$V ${.OBJDIR}/unittests/kex/test_kex ; \
227294332Sdes		$$V ${.OBJDIR}/unittests/hostkeys/test_hostkeys \
228294332Sdes			-d ${.CURDIR}/unittests/hostkeys/testdata ; \
229323134Sdes		$$V ${.OBJDIR}/unittests/match/test_match ; \
230323134Sdes		if test "x${TEST_SSH_UTF8}" = "xyes"  ; then \
231323134Sdes			$$V ${.OBJDIR}/unittests/utf8/test_utf8 ; \
232323134Sdes		fi \
233294328Sdes	fi
234