xref: /openbsd-src/regress/usr.bin/ssh/ssh-com-client.sh (revision 55727a1798ffd4690a6788201f97913c4959bc6f)
1*55727a17Sdtucker#	$OpenBSD: ssh-com-client.sh,v 1.7 2013/05/17 04:29:14 dtucker Exp $
2dc38cc98Smarkus#	Placed in the Public Domain.
3dc38cc98Smarkus
4dc38cc98Smarkustid="connect with ssh.com client"
5dc38cc98Smarkus
6dc38cc98Smarkus#TEST_COMBASE=/path/to/ssh/com/binaries
7dc38cc98Smarkusif [ "X${TEST_COMBASE}" = "X" ]; then
8dc38cc98Smarkus	fatal '$TEST_COMBASE is not set'
9dc38cc98Smarkusfi
10dc38cc98Smarkus
11dc38cc98SmarkusVERSIONS="
12dc38cc98Smarkus	2.1.0
13dc38cc98Smarkus	2.2.0
14dc38cc98Smarkus	2.3.0
15dc38cc98Smarkus	2.3.1
16dc38cc98Smarkus	2.4.0
17dc38cc98Smarkus	3.0.0
18de247f79Smarkus	3.1.0
19de247f79Smarkus	3.2.0
20357f04a7Smarkus	3.2.2
21357f04a7Smarkus	3.2.3
2246c9f5bfSmarkus	3.2.5
2346c9f5bfSmarkus	3.2.9
2446c9f5bfSmarkus	3.2.9.1
25de247f79Smarkus	3.3.0"
26dc38cc98Smarkus
27dc38cc98Smarkus# 2.0.10 2.0.12 2.0.13 don't like the test setup
28dc38cc98Smarkus
29dc38cc98Smarkus# setup authorized keys
30dc38cc98SmarkusSRC=`dirname ${SCRIPT}`
31dc38cc98Smarkuscp ${SRC}/dsa_ssh2.prv ${OBJ}/id.com
32dc38cc98Smarkuschmod 600 ${OBJ}/id.com
33dc38cc98Smarkus${SSHKEYGEN} -i -f ${OBJ}/id.com	> $OBJ/id.openssh
34dc38cc98Smarkuschmod 600 ${OBJ}/id.openssh
35dc38cc98Smarkus${SSHKEYGEN} -y -f ${OBJ}/id.openssh	> $OBJ/authorized_keys_$USER
36dc38cc98Smarkus${SSHKEYGEN} -e -f ${OBJ}/id.openssh	> $OBJ/id.com.pub
37dc38cc98Smarkusecho IdKey ${OBJ}/id.com > ${OBJ}/id.list
38dc38cc98Smarkus
39dc38cc98Smarkus# we need a DSA host key
40dc38cc98Smarkust=dsa
41dc38cc98Smarkusrm -f                             ${OBJ}/$t ${OBJ}/$t.pub
42dc38cc98Smarkus${SSHKEYGEN} -q -N '' -t $t -f	  ${OBJ}/$t
43dc38cc98Smarkus$SUDO cp $OBJ/$t $OBJ/host.$t
44dc38cc98Smarkusecho HostKey $OBJ/host.$t >> $OBJ/sshd_config
45dc38cc98Smarkus
46dc38cc98Smarkus# add hostkeys to known hosts
47dc38cc98Smarkusmkdir -p ${OBJ}/${USER}/hostkeys
48dc38cc98SmarkusHK=${OBJ}/${USER}/hostkeys/key_${PORT}_127.0.0.1
49dc38cc98Smarkus${SSHKEYGEN} -e -f ${OBJ}/rsa.pub > ${HK}.ssh-rsa.pub
50dc38cc98Smarkus${SSHKEYGEN} -e -f ${OBJ}/dsa.pub > ${HK}.ssh-dss.pub
51dc38cc98Smarkus
52dc38cc98Smarkuscat > ${OBJ}/ssh2_config << EOF
53dc38cc98Smarkus*:
54dc38cc98Smarkus	QuietMode			yes
55dc38cc98Smarkus	StrictHostKeyChecking		yes
56dc38cc98Smarkus	Port				${PORT}
57dc38cc98Smarkus	User				${USER}
58dc38cc98Smarkus	Host				127.0.0.1
59dc38cc98Smarkus	IdentityFile			${OBJ}/id.list
60dc38cc98Smarkus	RandomSeedFile			${OBJ}/random_seed
61dc38cc98Smarkus        UserConfigDirectory             ${OBJ}/%U
62dc38cc98Smarkus	AuthenticationSuccessMsg	no
63dc38cc98Smarkus	BatchMode			yes
644485534bSmarkus	ForwardX11			no
65dc38cc98SmarkusEOF
66dc38cc98Smarkus
67dc38cc98Smarkus# we need a real server (no ProxyConnect option)
68dc38cc98Smarkusstart_sshd
69dc38cc98Smarkus
70dc38cc98Smarkus# go for it
71dc38cc98Smarkusfor v in ${VERSIONS}; do
72dc38cc98Smarkus	ssh2=${TEST_COMBASE}/${v}/ssh2
73dc38cc98Smarkus	if [ ! -x ${ssh2} ]; then
74dc38cc98Smarkus		continue
75dc38cc98Smarkus	fi
76dc38cc98Smarkus	verbose "ssh2 ${v}"
77dc38cc98Smarkus	key=ssh-dss
78dc38cc98Smarkus	skipcat=0
79dc38cc98Smarkus        case $v in
80dc38cc98Smarkus        2.1.*|2.3.0)
81dc38cc98Smarkus                skipcat=1
82dc38cc98Smarkus                ;;
83dc38cc98Smarkus        3.0.*)
84dc38cc98Smarkus                key=ssh-rsa
85dc38cc98Smarkus                ;;
86dc38cc98Smarkus        esac
87dc38cc98Smarkus	cp ${HK}.$key.pub ${HK}.pub
88dc38cc98Smarkus
89dc38cc98Smarkus	# check exit status
90dc38cc98Smarkus	${ssh2} -q -F ${OBJ}/ssh2_config somehost exit 42
91dc38cc98Smarkus	r=$?
92dc38cc98Smarkus        if [ $r -ne 42 ]; then
93dc38cc98Smarkus                fail "ssh2 ${v} exit code test failed (got $r, expected 42)"
94dc38cc98Smarkus        fi
95dc38cc98Smarkus
96dc38cc98Smarkus	# data transfer
97dc38cc98Smarkus	rm -f ${COPY}
98dc38cc98Smarkus	${ssh2} -F ${OBJ}/ssh2_config somehost cat ${DATA} > ${COPY}
99dc38cc98Smarkus        if [ $? -ne 0 ]; then
100dc38cc98Smarkus                fail "ssh2 ${v} cat test (receive) failed"
101dc38cc98Smarkus        fi
102dc38cc98Smarkus	cmp ${DATA} ${COPY}	|| fail "ssh2 ${v} cat test (receive) data mismatch"
103dc38cc98Smarkus
104dc38cc98Smarkus	# data transfer, again
105dc38cc98Smarkus	if [ $skipcat -eq 0 ]; then
106dc38cc98Smarkus		rm -f ${COPY}
107dc38cc98Smarkus		cat ${DATA} | \
108dc38cc98Smarkus			${ssh2} -F ${OBJ}/ssh2_config host "cat > ${COPY}"
109dc38cc98Smarkus		if [ $? -ne 0 ]; then
110dc38cc98Smarkus			fail "ssh2 ${v} cat test (send) failed"
111dc38cc98Smarkus		fi
112dc38cc98Smarkus		cmp ${DATA} ${COPY}	|| \
113dc38cc98Smarkus			fail "ssh2 ${v} cat test (send) data mismatch"
114dc38cc98Smarkus	fi
115dc38cc98Smarkus
116dc38cc98Smarkus	# no stderr after eof
117dc38cc98Smarkus	rm -f ${COPY}
118dc38cc98Smarkus	${ssh2} -F ${OBJ}/ssh2_config somehost \
119dc38cc98Smarkus		exec sh -c \'"exec > /dev/null; sleep 1; echo bla 1>&2; exit 0"\' \
120dc38cc98Smarkus		2> /dev/null
121dc38cc98Smarkus        if [ $? -ne 0 ]; then
122dc38cc98Smarkus                fail "ssh2 ${v} stderr test failed"
123dc38cc98Smarkus        fi
124dc38cc98Smarkusdone
125dc38cc98Smarkus
126dc38cc98Smarkusrm -rf ${OBJ}/${USER}
127aa913d22Smarkusfor i in ssh2_config random_seed dsa.pub dsa host.dsa \
128dc38cc98Smarkus    id.list id.com id.com.pub id.openssh; do
129dc38cc98Smarkus	rm -f ${OBJ}/$i
130dc38cc98Smarkusdone
131