1255670Sdes#	$OpenBSD: ssh-com.sh,v 1.8 2013/05/17 00:37:40 dtucker Exp $
298937Sdes#	Placed in the Public Domain.
398937Sdes
498937Sdestid="connect to ssh.com server"
598937Sdes
698937Sdes#TEST_COMBASE=/path/to/ssh/com/binaries
798937Sdesif [ "X${TEST_COMBASE}" = "X" ]; then
898937Sdes	fatal '$TEST_COMBASE is not set'
998937Sdesfi
1098937Sdes
1198937SdesVERSIONS="
1298937Sdes	2.0.12
1398937Sdes	2.0.13
1498937Sdes	2.1.0
1598937Sdes	2.2.0
1698937Sdes	2.3.0
1798937Sdes	2.4.0
1898937Sdes	3.0.0
19113908Sdes	3.1.0
20113908Sdes	3.2.0
21124208Sdes	3.2.2
22124208Sdes	3.2.3
23128456Sdes	3.2.5
24128456Sdes	3.2.9
25128456Sdes	3.2.9.1
26113908Sdes	3.3.0"
2798937Sdes# 2.0.10 does not support UserConfigDirectory
28113908Sdes# 2.3.1 requires a config in $HOME/.ssh2
2998937Sdes
3098937SdesSRC=`dirname ${SCRIPT}`
3198937Sdes
3298937Sdes# ssh.com
3398937Sdescat << EOF > $OBJ/sshd2_config
34113908Sdes#*:
35126274Sdes	# Port and ListenAddress are not used.
3698937Sdes	QuietMode			yes
3798937Sdes	Port				4343
3898937Sdes	ListenAddress			127.0.0.1
3998937Sdes	UserConfigDirectory		${OBJ}/%U
4098937Sdes	Ciphers				AnyCipher
4198937Sdes	PubKeyAuthentication		yes
4298937Sdes	#AllowedAuthentications		publickey
4398937Sdes	AuthorizationFile		authorization
4498937Sdes	HostKeyFile			${SRC}/dsa_ssh2.prv
4598937Sdes	PublicHostKeyFile		${SRC}/dsa_ssh2.pub
4698937Sdes	RandomSeedFile			${OBJ}/random_seed
4798937Sdes	MaxConnections			0 
4898937Sdes	PermitRootLogin			yes
4998937Sdes	VerboseMode			no
5098937Sdes	CheckMail			no
5198937Sdes	Ssh1Compatibility		no
5298937SdesEOF
5398937Sdes
5498937Sdes# create client config 
5598937Sdessed "s/HostKeyAlias.*/HostKeyAlias ssh2-localhost-with-alias/" \
5698937Sdes	< $OBJ/ssh_config > $OBJ/ssh_config_com
5798937Sdes
5898937Sdes# we need a DSA key for
5998937Sdesrm -f                             ${OBJ}/dsa ${OBJ}/dsa.pub
6098937Sdes${SSHKEYGEN} -q -N '' -t dsa -f	  ${OBJ}/dsa
6198937Sdes
6298937Sdes# setup userdir, try rsa first
6398937Sdesmkdir -p ${OBJ}/${USER}
6498937Sdescp /dev/null ${OBJ}/${USER}/authorization
6598937Sdesfor t in rsa dsa; do
6698937Sdes	${SSHKEYGEN} -e -f ${OBJ}/$t.pub	>  ${OBJ}/${USER}/$t.com
6798937Sdes	echo Key $t.com			>> ${OBJ}/${USER}/authorization
6898937Sdes	echo IdentityFile ${OBJ}/$t	>> ${OBJ}/ssh_config_com
6998937Sdesdone
7098937Sdes
7198937Sdes# convert and append DSA hostkey
7298937Sdes(
73255670Sdes	printf 'ssh2-localhost-with-alias,127.0.0.1,::1 '
7498937Sdes	${SSHKEYGEN} -if ${SRC}/dsa_ssh2.pub
7598937Sdes) >> $OBJ/known_hosts
7698937Sdes
7798937Sdes# go for it
7898937Sdesfor v in ${VERSIONS}; do
7998937Sdes	sshd2=${TEST_COMBASE}/${v}/sshd2
8098937Sdes	if [ ! -x ${sshd2} ]; then
8198937Sdes		continue
8298937Sdes	fi
8398937Sdes	trace "sshd2 ${v}"
8498937Sdes	PROXY="proxycommand ${sshd2} -qif ${OBJ}/sshd2_config 2> /dev/null"
8598937Sdes	${SSH} -qF ${OBJ}/ssh_config_com -o "${PROXY}" dummy exit 0
8698937Sdes        if [ $? -ne 0 ]; then
8798937Sdes                fail "ssh connect to sshd2 ${v} failed"
8898937Sdes        fi
8998937Sdes
9098937Sdes	ciphers="3des-cbc blowfish-cbc arcfour"
9198937Sdes	macs="hmac-md5"
9298937Sdes	case $v in
9398937Sdes	2.4.*)
9498937Sdes		ciphers="$ciphers cast128-cbc"
9598937Sdes		macs="$macs hmac-sha1 hmac-sha1-96 hmac-md5-96"
9698937Sdes		;;
9798937Sdes	3.*)
9898937Sdes		ciphers="$ciphers aes128-cbc cast128-cbc"
9998937Sdes		macs="$macs hmac-sha1 hmac-sha1-96 hmac-md5-96"
10098937Sdes		;;
10198937Sdes	esac
10298937Sdes	#ciphers="3des-cbc"
10398937Sdes	for m in $macs; do
10498937Sdes	for c in $ciphers; do
10598937Sdes		trace "sshd2 ${v} cipher $c mac $m"
10698937Sdes		verbose "test ${tid}: sshd2 ${v} cipher $c mac $m"
10798937Sdes		${SSH} -c $c -m $m -qF ${OBJ}/ssh_config_com -o "${PROXY}" dummy exit 0
10898937Sdes		if [ $? -ne 0 ]; then
10998937Sdes			fail "ssh connect to sshd2 ${v} with $c/$m failed"
11098937Sdes		fi
11198937Sdes	done
11298937Sdes	done
11398937Sdesdone
11498937Sdes
11598937Sdesrm -rf ${OBJ}/${USER}
11698937Sdesfor i in sshd_config_proxy ssh_config_proxy random_seed \
11798937Sdes	sshd2_config dsa.pub dsa ssh_config_com; do
11898937Sdes	rm -f ${OBJ}/$i
11998937Sdesdone
120