blob: 6ce67a2746009a68490c500039e87423fcbd5013 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
/*
* Copyright (c) 2006-2011 Christian Plattner. All rights reserved.
* Please refer to the LICENSE.txt for licensing details.
*/
import ch.ethz.ssh2.KnownHosts;
import ch.ethz.ssh2.ServerHostKeyVerifier;
class SimpleVerifier implements ServerHostKeyVerifier
{
KnownHosts database;
/*
* This class is being used by the UsingKnownHosts.java example.
*/
public SimpleVerifier(KnownHosts database)
{
if (database == null)
throw new IllegalArgumentException();
this.database = database;
}
public boolean verifyServerHostKey(String hostname, int port, String serverHostKeyAlgorithm, byte[] serverHostKey)
throws Exception
{
int result = database.verifyHostkey(hostname, serverHostKeyAlgorithm, serverHostKey);
switch (result)
{
case KnownHosts.HOSTKEY_IS_OK:
return true; // We are happy
case KnownHosts.HOSTKEY_IS_NEW:
// Unknown host? Blindly accept the key and put it into the cache.
// Well, you definitely can do better (e.g., ask the user).
// The following call will ONLY put the key into the memory cache!
// To save it in a known hosts file, also call "KnownHosts.addHostkeyToFile(...)"
database.addHostkey(new String[] { hostname }, serverHostKeyAlgorithm, serverHostKey);
return true;
case KnownHosts.HOSTKEY_HAS_CHANGED:
// Close the connection if the hostkey has changed.
// Better: ask user and add new key to database.
return false;
default:
throw new IllegalStateException();
}
}
}
|