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