diff options
-rw-r--r-- | regress/sshcfgparse.sh | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/regress/sshcfgparse.sh b/regress/sshcfgparse.sh index 26d4a6f3c..e0ce568d7 100644 --- a/regress/sshcfgparse.sh +++ b/regress/sshcfgparse.sh | |||
@@ -1,8 +1,27 @@ | |||
1 | # $OpenBSD: sshcfgparse.sh,v 1.3 2018/04/06 04:18:35 dtucker Exp $ | 1 | # $OpenBSD: sshcfgparse.sh,v 1.4 2018/07/04 13:51:12 djm Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="ssh config parse" | 4 | tid="ssh config parse" |
5 | 5 | ||
6 | expect_result_present() { | ||
7 | _str="$1" ; shift | ||
8 | for _expect in "$@" ; do | ||
9 | echo "$f" | tr ',' '\n' | grep "^$_expect\$" >/dev/null | ||
10 | if test $? -ne 0 ; then | ||
11 | fail "missing expected \"$_expect\" from \"$_str\"" | ||
12 | fi | ||
13 | done | ||
14 | } | ||
15 | expect_result_absent() { | ||
16 | _str="$1" ; shift | ||
17 | for _expect in "$@" ; do | ||
18 | echo "$f" | tr ',' '\n' | grep "^$_expect\$" >/dev/null | ||
19 | if test $? -eq 0 ; then | ||
20 | fail "unexpected \"$_expect\" present in \"$_str\"" | ||
21 | fi | ||
22 | done | ||
23 | } | ||
24 | |||
6 | verbose "reparse minimal config" | 25 | verbose "reparse minimal config" |
7 | (${SSH} -G -F $OBJ/ssh_config somehost >$OBJ/ssh_config.1 && | 26 | (${SSH} -G -F $OBJ/ssh_config somehost >$OBJ/ssh_config.1 && |
8 | ${SSH} -G -F $OBJ/ssh_config.1 somehost >$OBJ/ssh_config.2 && | 27 | ${SSH} -G -F $OBJ/ssh_config.1 somehost >$OBJ/ssh_config.2 && |
@@ -36,5 +55,35 @@ test "$f" = "bar" || fail "user first match -l, expected 'bar' got '$f'" | |||
36 | f=`${SSH} -GF $OBJ/ssh_config baz@host -o user=foo -l bar baz@host | awk '/^user /{print $2}'` | 55 | f=`${SSH} -GF $OBJ/ssh_config baz@host -o user=foo -l bar baz@host | awk '/^user /{print $2}'` |
37 | test "$f" = "baz" || fail "user first match user@host, expected 'baz' got '$f'" | 56 | test "$f" = "baz" || fail "user first match user@host, expected 'baz' got '$f'" |
38 | 57 | ||
58 | verbose "pubkeyacceptedkeytypes" | ||
59 | # Default set | ||
60 | f=`${SSH} -GF none host | awk '/^pubkeyacceptedkeytypes /{print $2}'` | ||
61 | expect_result_present "$f" "ssh-ed25519" "ssh-ed25519-cert-v01.*" | ||
62 | expect_result_absent "$f" "ssh-dss" | ||
63 | # Explicit override | ||
64 | f=`${SSH} -GF none -opubkeyacceptedkeytypes=ssh-ed25519 host | \ | ||
65 | awk '/^pubkeyacceptedkeytypes /{print $2}'` | ||
66 | expect_result_present "$f" "ssh-ed25519" | ||
67 | expect_result_absent "$f" "ssh-ed25519-cert-v01.*" "ssh-dss" | ||
68 | # Removal from default set | ||
69 | f=`${SSH} -GF none -opubkeyacceptedkeytypes=-ssh-ed25519-cert* host | \ | ||
70 | awk '/^pubkeyacceptedkeytypes /{print $2}'` | ||
71 | expect_result_present "$f" "ssh-ed25519" | ||
72 | expect_result_absent "$f" "ssh-ed25519-cert-v01.*" "ssh-dss" | ||
73 | f=`${SSH} -GF none -opubkeyacceptedkeytypes=-ssh-ed25519 host | \ | ||
74 | awk '/^pubkeyacceptedkeytypes /{print $2}'` | ||
75 | expect_result_present "$f" "ssh-ed25519-cert-v01.*" | ||
76 | expect_result_absent "$f" "ssh-ed25519" "ssh-dss" | ||
77 | # Append to default set. | ||
78 | # XXX this will break for !WITH_OPENSSL | ||
79 | f=`${SSH} -GF none -opubkeyacceptedkeytypes=+ssh-dss-cert* host | \ | ||
80 | awk '/^pubkeyacceptedkeytypes /{print $2}'` | ||
81 | expect_result_present "$f" "ssh-ed25519" "ssh-dss-cert-v01.*" | ||
82 | expect_result_absent "$f" "ssh-dss" | ||
83 | f=`${SSH} -GF none -opubkeyacceptedkeytypes=+ssh-dss host | \ | ||
84 | awk '/^pubkeyacceptedkeytypes /{print $2}'` | ||
85 | expect_result_present "$f" "ssh-ed25519" "ssh-ed25519-cert-v01.*" "ssh-dss" | ||
86 | expect_result_absent "$f" "ssh-dss-cert-v01.*" | ||
87 | |||
39 | # cleanup | 88 | # cleanup |
40 | rm -f $OBJ/ssh_config.[012] | 89 | rm -f $OBJ/ssh_config.[012] |