1#	$OpenBSD: Makefile,v 1.62 2013/01/18 00:45:29 djm Exp $
2
3.OBJDIR=$(OBJ)
4.CURDIR=$(shell pwd)
5
6REGRESS_TARGETS=	t1 t2 t3 t4 t5 t6 t7 t8 t9 t-exec
7tests:		$(REGRESS_TARGETS)
8
9# Interop tests are not run by default
10interop interop-tests: t-exec-interop
11
12clean:
13	for F in $(CLEANFILES); do rm -f $(OBJ)$$F; done
14	rm -rf $(OBJ).putty
15
16distclean:	clean
17
18LTESTS= 	connect \
19		proxy-connect \
20		connect-privsep \
21		proto-version \
22		proto-mismatch \
23		exit-status \
24		envpass \
25		transfer \
26		banner \
27		rekey \
28		stderr-data \
29		stderr-after-eof \
30		broken-pipe \
31		try-ciphers \
32		yes-head \
33		login-timeout \
34		agent \
35		agent-getpeereid \
36		agent-timeout \
37		keyscan \
38		keygen-change \
39		keygen-convert \
40		key-options \
41		scp \
42		sftp \
43		sftp-cmds \
44		sftp-badcmds \
45		sftp-batch \
46		sftp-glob \
47		reconfigure \
48		dynamic-forward \
49		forwarding \
50		multiplex \
51		reexec \
52		brokenkeys \
53		cfgmatch \
54		addrmatch \
55		localcommand \
56		forcecommand \
57		utmpx-osx \
58		gssapi \
59		portnum \
60		keytype \
61		kextype \
62		cert-hostkey \
63		cert-userkey \
64		host-expand \
65		keys-command \
66		forward-control \
67		integrity \
68		krl
69
70INTEROP_TESTS=	putty-transfer putty-ciphers putty-kex conch-ciphers
71#INTEROP_TESTS+=ssh-com ssh-com-client ssh-com-keygen ssh-com-sftp
72
73#LTESTS= 	cipher-speed
74
75USER!=		id -un
76CLEANFILES=	t2.out t3.out t6.out1 t6.out2 t7.out t7.out.pub copy.1 copy.2 \
77		t8.out t8.out.pub t9.out t9.out.pub \
78		authorized_keys_${USER} known_hosts pidfile testdata \
79		ssh_config sshd_config.orig ssh_proxy sshd_config sshd_proxy \
80		rsa.pub rsa rsa1.pub rsa1 host.rsa host.rsa1 \
81		rsa-agent rsa-agent.pub rsa1-agent rsa1-agent.pub \
82		ls.copy banner.in banner.out empty.in \
83		scp-ssh-wrapper.scp ssh_proxy_envpass remote_pid \
84		sshd_proxy_bak rsa_ssh2_cr.prv rsa_ssh2_crnl.prv \
85		known_hosts-cert host_ca_key* cert_host_key* cert_user_key* \
86		putty.rsa2 sshd_proxy_orig ssh_proxy_bak \
87		key.rsa-* key.dsa-* key.ecdsa-* \
88		authorized_principals_${USER} expect actual ready \
89		sshd_proxy.* authorized_keys_${USER}.* modpipe revoked-* krl-*
90
91
92# Enable all malloc(3) randomisations and checks
93TEST_ENV=      "MALLOC_OPTIONS=AFGJPRX"
94
95TEST_SSH_SSHKEYGEN?=ssh-keygen
96
97CPPFLAGS=-I..
98
99t1:
100	${TEST_SSH_SSHKEYGEN} -if ${.CURDIR}/rsa_ssh2.prv | diff - ${.CURDIR}/rsa_openssh.prv
101	tr '\n' '\r' <${.CURDIR}/rsa_ssh2.prv > ${.OBJDIR}/rsa_ssh2_cr.prv
102	${TEST_SSH_SSHKEYGEN} -if ${.OBJDIR}/rsa_ssh2_cr.prv | diff - ${.CURDIR}/rsa_openssh.prv
103	awk '{print $$0 "\r"}' ${.CURDIR}/rsa_ssh2.prv > ${.OBJDIR}/rsa_ssh2_crnl.prv
104	${TEST_SSH_SSHKEYGEN} -if ${.OBJDIR}/rsa_ssh2_crnl.prv | diff - ${.CURDIR}/rsa_openssh.prv
105
106t2:
107	cat ${.CURDIR}/rsa_openssh.prv > $(OBJ)/t2.out
108	chmod 600 $(OBJ)/t2.out
109	${TEST_SSH_SSHKEYGEN} -yf $(OBJ)/t2.out | diff - ${.CURDIR}/rsa_openssh.pub
110
111t3:
112	${TEST_SSH_SSHKEYGEN} -ef ${.CURDIR}/rsa_openssh.pub >$(OBJ)/t3.out
113	${TEST_SSH_SSHKEYGEN} -if $(OBJ)/t3.out | diff - ${.CURDIR}/rsa_openssh.pub
114
115t4:
116	${TEST_SSH_SSHKEYGEN} -lf ${.CURDIR}/rsa_openssh.pub |\
117		awk '{print $$2}' | diff - ${.CURDIR}/t4.ok
118
119t5:
120	${TEST_SSH_SSHKEYGEN} -Bf ${.CURDIR}/rsa_openssh.pub |\
121		awk '{print $$2}' | diff - ${.CURDIR}/t5.ok
122
123t6:
124	${TEST_SSH_SSHKEYGEN} -if ${.CURDIR}/dsa_ssh2.prv > $(OBJ)/t6.out1
125	${TEST_SSH_SSHKEYGEN} -if ${.CURDIR}/dsa_ssh2.pub > $(OBJ)/t6.out2
126	chmod 600 $(OBJ)/t6.out1
127	${TEST_SSH_SSHKEYGEN} -yf $(OBJ)/t6.out1 | diff - $(OBJ)/t6.out2
128
129$(OBJ)/t7.out:
130	${TEST_SSH_SSHKEYGEN} -q -t rsa -N '' -f $@
131
132t7: $(OBJ)/t7.out
133	${TEST_SSH_SSHKEYGEN} -lf $(OBJ)/t7.out > /dev/null
134	${TEST_SSH_SSHKEYGEN} -Bf $(OBJ)/t7.out > /dev/null
135
136$(OBJ)/t8.out:
137	${TEST_SSH_SSHKEYGEN} -q -t dsa -N '' -f $@
138
139t8: $(OBJ)/t8.out
140	${TEST_SSH_SSHKEYGEN} -lf $(OBJ)/t8.out > /dev/null
141	${TEST_SSH_SSHKEYGEN} -Bf $(OBJ)/t8.out > /dev/null
142
143$(OBJ)/t9.out:
144	test "${TEST_SSH_ECC}" != yes || \
145	${TEST_SSH_SSHKEYGEN} -q -t ecdsa -N '' -f $@
146
147t9: $(OBJ)/t9.out
148	test "${TEST_SSH_ECC}" != yes || \
149	${TEST_SSH_SSHKEYGEN} -lf $(OBJ)/t9.out > /dev/null
150	test "${TEST_SSH_ECC}" != yes || \
151	${TEST_SSH_SSHKEYGEN} -Bf $(OBJ)/t9.out > /dev/null
152
153t-exec:	${LTESTS:=.sh}
154	@if [ "x$?" = "x" ]; then exit 0; fi; \
155	for TEST in ""$?; do \
156		echo "[BEGIN] $${TEST}"; \
157		(env SUDO="${SUDO}" TEST_ENV=${TEST_ENV} sh $(.CURDIR)/test-exec.sh $(.OBJDIR) $(.CURDIR)/$${TEST}); \
158		ret=$$?; \
159		if [[ 0 -eq $${ret} ]]; then \
160			echo "[PASS] $${TEST}"; \
161		else\
162			echo "[FAIL] $${TEST}"; \
163			exit $${ret};\
164		fi;\
165	done
166
167t-exec-interop:	${INTEROP_TESTS:=.sh}
168	@if [ "x$?" = "x" ]; then exit 0; fi; \
169	for TEST in ""$?; do \
170		echo "[BEGIN] $${TEST}"; \
171		(env SUDO="${SUDO}" TEST_ENV=${TEST_ENV} sh $(.CURDIR)/test-exec.sh $(.OBJDIR) $(.CURDIR)/$${TEST}); \
172		ret=$$?; \
173		if [[ 0 -eq $${ret} ]]; then \
174			echo "[PASS] $${TEST}"; \
175		else\
176			echo "[FAIL] $${TEST}"; \
177		fi;\
178	done
179
180# Not run by default
181interop: ${INTEROP_TARGETS}
182