diff options
author | Hans Nilsson <[email protected]> | 2016-11-11 16:59:08 +0100 |
---|---|---|
committer | Hans Nilsson <[email protected]> | 2016-11-18 15:05:40 +0100 |
commit | 8215ea28fa2f699499b64d6f2c712e068b199390 (patch) | |
tree | 0941b1f929a56f3728a7bc6f3aad1abddbb370f7 /lib/ssh/src/ssh_transport.erl | |
parent | 01bd8ba71ce1f56ec9f8ef9de8a9f123076ed12a (diff) | |
download | otp-8215ea28fa2f699499b64d6f2c712e068b199390.tar.gz otp-8215ea28fa2f699499b64d6f2c712e068b199390.tar.bz2 otp-8215ea28fa2f699499b64d6f2c712e068b199390.zip |
ssh: Add fun and fingerprint to option 'silently_accept_host'
Diffstat (limited to 'lib/ssh/src/ssh_transport.erl')
-rw-r--r-- | lib/ssh/src/ssh_transport.erl | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/ssh/src/ssh_transport.erl b/lib/ssh/src/ssh_transport.erl index 15b80de30a..21ba34506a 100644 --- a/lib/ssh/src/ssh_transport.erl +++ b/lib/ssh/src/ssh_transport.erl @@ -734,12 +734,16 @@ public_algo({#'ECPoint'{},{namedCurve,OID}}) -> list_to_atom("ecdsa-sha2-" ++ binary_to_list(Curve)). -accepted_host(Ssh, PeerName, Opts) -> +accepted_host(Ssh, PeerName, Public, Opts) -> case proplists:get_value(silently_accept_hosts, Opts, false) of + F when is_function(F,2) -> + true == (catch F(PeerName, public_key:ssh_hostkey_fingerprint(Public))); + {DigestAlg,F} when is_function(F,2) -> + true == (catch F(PeerName, public_key:ssh_hostkey_fingerprint(DigestAlg,Public))); true -> - yes; + true; false -> - yes_no(Ssh, "New host " ++ PeerName ++ " accept") + yes == yes_no(Ssh, "New host " ++ PeerName ++ " accept") end. known_host_key(#ssh{opts = Opts, key_cb = Mod, peer = Peer} = Ssh, @@ -749,10 +753,10 @@ known_host_key(#ssh{opts = Opts, key_cb = Mod, peer = Peer} = Ssh, true -> ok; false -> - case accepted_host(Ssh, PeerName, Opts) of - yes -> + case accepted_host(Ssh, PeerName, Public, Opts) of + true -> Mod:add_host_key(PeerName, Public, Opts); - no -> + false -> {error, rejected} end end. |