blob: 8189fb8dd8b1eac82b3a73f459426976888cf664 [file] [log] [blame]
import com.trilead.ssh2.KnownHosts;
import com.trilead.ssh2.ServerHostKeyVerifier;
/**
* This example hostkey verifier is used by the
* UsingKnownHosts.java example.
*
* @author Christian Plattner, plattner@trilead.com
* @version $Id: SimpleVerifier.java,v 1.4 2007/10/15 12:49:57 cplattne Exp $
*/
class SimpleVerifier implements ServerHostKeyVerifier
{
KnownHosts database;
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();
}
}
}