diff options
author | Hans Nilsson <[email protected]> | 2017-02-10 14:37:41 +0100 |
---|---|---|
committer | Hans Nilsson <[email protected]> | 2017-02-14 16:24:16 +0100 |
commit | 9f23065062eb724e58f39a65e416e5b0e1e9d95d (patch) | |
tree | 287688dd9783ac8295a2c71677cb2cbf8b3ccd8a /lib/ssh/src/ssh.erl | |
parent | f7bae98de902c597d9f1e5861745e90aecc58191 (diff) | |
download | otp-9f23065062eb724e58f39a65e416e5b0e1e9d95d.tar.gz otp-9f23065062eb724e58f39a65e416e5b0e1e9d95d.tar.bz2 otp-9f23065062eb724e58f39a65e416e5b0e1e9d95d.zip |
ssh: allow a list of fingerprint algos in silently_accept_hosts option
Diffstat (limited to 'lib/ssh/src/ssh.erl')
-rw-r--r-- | lib/ssh/src/ssh.erl | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/lib/ssh/src/ssh.erl b/lib/ssh/src/ssh.erl index 31e343e81b..f408086c0f 100644 --- a/lib/ssh/src/ssh.erl +++ b/lib/ssh/src/ssh.erl @@ -620,11 +620,22 @@ handle_ssh_option({silently_accept_hosts, Value} = Opt) when is_boolean(Value) - handle_ssh_option({silently_accept_hosts, Value} = Opt) when is_function(Value,2) -> Opt; handle_ssh_option({silently_accept_hosts, {DigestAlg,Value}} = Opt) when is_function(Value,2) -> - case lists:member(DigestAlg, [md5, sha, sha224, sha256, sha384, sha512]) of - true -> - Opt; - false -> - throw({error, {eoptions, Opt}}) + Algs = if is_atom(DigestAlg) -> [DigestAlg]; + is_list(DigestAlg) -> DigestAlg; + true -> throw({error, {eoptions, Opt}}) + end, + case [A || A <- Algs, + not lists:member(A, [md5, sha, sha224, sha256, sha384, sha512])] of + [_|_] = UnSup1 -> + throw({error, {{eoptions, Opt}, {not_fingerprint_algos,UnSup1}}}); + [] -> + CryptoHashAlgs = proplists:get_value(hashs, crypto:supports(), []), + case [A || A <- Algs, + not lists:member(A, CryptoHashAlgs)] of + [_|_] = UnSup2 -> + throw({error, {{eoptions, Opt}, {unsupported_algo,UnSup2}}}); + [] -> Opt + end end; handle_ssh_option({user_interaction, Value} = Opt) when is_boolean(Value) -> Opt; |