From ac40fcb2412142ac2bca7d2ae27a838dd09f78bc Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Sun, 7 Feb 2016 14:18:39 -0800 Subject: Support multiple known keys per host This will allow hosts we originally saw with a certain hostkey algorithm to continue to use those keys without warning us. --- app/src/main/java/org/connectbot/transport/SSH.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'app/src/main/java/org/connectbot/transport/SSH.java') diff --git a/app/src/main/java/org/connectbot/transport/SSH.java b/app/src/main/java/org/connectbot/transport/SSH.java index 158b2c9..cb6703e 100644 --- a/app/src/main/java/org/connectbot/transport/SSH.java +++ b/app/src/main/java/org/connectbot/transport/SSH.java @@ -62,10 +62,10 @@ import com.trilead.ssh2.Connection; import com.trilead.ssh2.ConnectionInfo; import com.trilead.ssh2.ConnectionMonitor; import com.trilead.ssh2.DynamicPortForwarder; +import com.trilead.ssh2.ExtendedServerHostKeyVerifier; import com.trilead.ssh2.InteractiveCallback; import com.trilead.ssh2.KnownHosts; import com.trilead.ssh2.LocalPortForwarder; -import com.trilead.ssh2.ServerHostKeyVerifier; import com.trilead.ssh2.Session; import com.trilead.ssh2.crypto.PEMDecoder; import com.trilead.ssh2.signature.DSASHA1Verify; @@ -136,7 +136,7 @@ public class SSH extends AbsTransport implements ConnectionMonitor, InteractiveC private String useAuthAgent = HostDatabase.AUTHAGENT_NO; private String agentLockPassphrase; - public class HostKeyVerifier implements ServerHostKeyVerifier { + public class HostKeyVerifier extends ExtendedServerHostKeyVerifier { public boolean verifyServerHostKey(String hostname, int port, String serverHostKeyAlgorithm, byte[] serverHostKey) throws IOException { @@ -209,6 +209,20 @@ public class SSH extends AbsTransport implements ConnectionMonitor, InteractiveC } } + @Override + public List getKnownKeyAlgorithmsForHost(String host, int port) { + return manager.hostdb.getHostKeyAlgorithmsForHost(host, port); + } + + @Override + public void removeServerHostKey(String host, int port, String algorithm, byte[] hostKey) { + manager.hostdb.removeKnownHost(host, port, algorithm, hostKey); + } + + @Override + public void addServerHostKey(String host, int port, String algorithm, byte[] hostKey) { + manager.hostdb.saveKnownHost(host, port, algorithm, hostKey); + } } private void authenticate() { -- cgit v1.2.3