#	$OpenBSD: putty-kex.sh,v 1.11 2024/02/09 08:56:59 dtucker Exp $
#	Placed in the Public Domain.

tid="putty KEX"

puttysetup

cp ${OBJ}/sshd_proxy ${OBJ}/sshd_proxy_bak

# Enable group1, which PuTTY now disables by default
echo "KEX=dh-group1-sha1" >>${OBJ}/.putty/sessions/localhost_proxy

# Grepping algos out of the binary is pretty janky, but AFAIK there's no way
# to query supported algos.
kex=""
for k in `$SSH -Q kex`; do
	if strings "${PLINK}" | grep -E "^${k}$" >/dev/null; then
		kex="${kex} ${k}"
	else
		trace "omitting unsupported KEX ${k}"
	fi
done

for k in ${kex}; do
	verbose "$tid: kex $k"
	cp ${OBJ}/sshd_proxy_bak ${OBJ}/sshd_proxy
	echo "KexAlgorithms ${k}" >>${OBJ}/sshd_proxy

	sed -i "s/UsePAM.*/UsePAM no/" ${OBJ}/sshd_proxy

	env HOME=$PWD ${PLINK} -v -load localhost_proxy -batch -i ${OBJ}/putty.rsa2 true \
	    2>${OBJ}/log/putty-kex-$k.log
	if [ $? -ne 0 ]; then
		fail "KEX $k failed"
	fi
	kexmsg=`grep -E '^Doing.* key exchange' ${OBJ}/log/putty-kex-$k.log`
	trace putty: ${kexmsg}
done
