aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/org/connectbot/transport
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2016-02-07 14:18:39 -0800
committerKenny Root <kenny@the-b.org>2016-02-21 14:43:32 -0800
commitac40fcb2412142ac2bca7d2ae27a838dd09f78bc (patch)
treed7b1248a82857a5d57af434ccfe9c5de01a0c82a /app/src/main/java/org/connectbot/transport
parentf7190764fd2329f258717625f165b034d7d204f3 (diff)
downloadconnectbot-ac40fcb2412142ac2bca7d2ae27a838dd09f78bc.tar.gz
connectbot-ac40fcb2412142ac2bca7d2ae27a838dd09f78bc.tar.bz2
connectbot-ac40fcb2412142ac2bca7d2ae27a838dd09f78bc.zip
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.
Diffstat (limited to 'app/src/main/java/org/connectbot/transport')
-rw-r--r--app/src/main/java/org/connectbot/transport/SSH.java18
1 files changed, 16 insertions, 2 deletions
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<String> 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() {