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