blob: 9752acb0a080b0a5d88581ccbcd553b3c8d850bb [file] [log] [blame]
Damien Millerf54542a2013-12-07 16:32:44 +11001# $OpenBSD: keytype.sh,v 1.3 2013/12/06 13:52:46 markus Exp $
Darren Tuckerb69e0332010-11-05 18:19:15 +11002# Placed in the Public Domain.
3
4tid="login with different key types"
5
Tim Ricea3f297d2012-02-14 23:01:42 -08006TIME=`which time 2>/dev/null`
Tim Ricee426f5e2010-11-08 09:15:14 -08007if test ! -x "$TIME"; then
8 TIME=""
9fi
10
Darren Tuckerb69e0332010-11-05 18:19:15 +110011cp $OBJ/sshd_proxy $OBJ/sshd_proxy_bak
12cp $OBJ/ssh_proxy $OBJ/ssh_proxy_bak
13
Darren Tucker77244af2013-12-21 17:02:39 +110014# Traditional and builtin key types.
Damien Millerf54542a2013-12-07 16:32:44 +110015ktypes="dsa-1024 rsa-2048 rsa-3072 ed25519-512"
Darren Tucker77244af2013-12-21 17:02:39 +110016# Types not present in all OpenSSL versions.
Darren Tuckerb6a75b02013-11-10 20:25:22 +110017for i in `$SSH -Q key`; do
18 case "$i" in
Darren Tucker77244af2013-12-21 17:02:39 +110019 ecdsa-sha2-nistp256) ktypes="$ktypes ecdsa-256" ;;
20 ecdsa-sha2-nistp384) ktypes="$ktypes ecdsa-384" ;;
21 ecdsa-sha2-nistp521) ktypes="$ktypes ecdsa-521" ;;
Darren Tuckerb6a75b02013-11-10 20:25:22 +110022 esac
23done
Darren Tuckerb69e0332010-11-05 18:19:15 +110024
25for kt in $ktypes; do
26 rm -f $OBJ/key.$kt
Tim Ricec10aeaa2010-11-07 13:03:11 -080027 bits=`echo ${kt} | awk -F- '{print $2}'`
28 type=`echo ${kt} | awk -F- '{print $1}'`
Darren Tuckerb69e0332010-11-05 18:19:15 +110029 printf "keygen $type, $bits bits:\t"
30 ${TIME} ${SSHKEYGEN} -b $bits -q -N '' -t $type -f $OBJ/key.$kt ||\
31 fail "ssh-keygen for type $type, $bits bits failed"
32done
33
34tries="1 2 3"
35for ut in $ktypes; do
36 htypes=$ut
37 #htypes=$ktypes
38 for ht in $htypes; do
39 trace "ssh connect, userkey $ut, hostkey $ht"
40 (
41 grep -v HostKey $OBJ/sshd_proxy_bak
42 echo HostKey $OBJ/key.$ht
43 ) > $OBJ/sshd_proxy
44 (
45 grep -v IdentityFile $OBJ/ssh_proxy_bak
46 echo IdentityFile $OBJ/key.$ut
47 ) > $OBJ/ssh_proxy
48 (
Darren Tucker56347ef2013-05-17 13:28:36 +100049 printf 'localhost-with-alias,127.0.0.1,::1 '
Darren Tuckerb69e0332010-11-05 18:19:15 +110050 cat $OBJ/key.$ht.pub
51 ) > $OBJ/known_hosts
52 cat $OBJ/key.$ut.pub > $OBJ/authorized_keys_$USER
53 for i in $tries; do
54 printf "userkey $ut, hostkey ${ht}:\t"
55 ${TIME} ${SSH} -F $OBJ/ssh_proxy 999.999.999.999 true
56 if [ $? -ne 0 ]; then
57 fail "ssh userkey $ut, hostkey $ht failed"
58 fi
59 done
60 done
61done