Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.sshtools.j2ssh.transport
Class AbstractKnownHostsKeyVerification

    java.lang.Object
      com.sshtools.j2ssh.transport.AbstractKnownHostsKeyVerification

All Implemented Interfaces:
  HostKeyVerification

Direct Known Subclasses:
  ConsoleKnownHostsKeyVerification, DialogKnownHostsKeyVerification

public abstract class AbstractKnownHostsKeyVerification
extends java.lang.Object
implements HostKeyVerification

An abstract `HostKeyVerification` class providing validation against the known_hosts format.

Since:
  0.2.0

Constructor Summary
`AbstractKnownHostsKeyVerification(java.lang.String knownhosts)` Constructs a host key verification instance reading the specified known_hosts file.

Method Summary
`java.util.Map` | `allowedHosts()` Returns a Map of the allowed hosts.
`void` | `allowHost(java.lang.String host, SshPublicKey pk, boolean always)` Allows a host key, optionally recording the key to the known_hosts file.
`boolean` | `isHostFileWriteable()` Determines whether the host file is writable.
`abstract void` | `onHostKeyMismatch(java.lang.String host, SshPublicKey allowedHostKey, SshPublicKey actualHostKey)` Called by the `verifyHost` method when the host key supplied by the host does not match the current key recording in the known hosts file.
`abstract void` | `onUnknownHost(java.lang.String host, SshPublicKey key)` Called by the `verifyHost` method when the host key supplied is not recorded in the known_hosts file.
`void` | `removeAllowedHost(java.lang.String host)` Removes an allowed host.
`void` | `saveHostFile()` Save's the host key file to be saved.
`java.lang.String` | `toString()` Outputs the allowed hosts in the known_hosts file format.
`boolean` | `verifyHost(java.lang.String host, SshPublicKey pk)` Verifies a host key against the list of known_hosts.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### AbstractKnownHostsKeyVerification

    public AbstractKnownHostsKeyVerification(java.lang.String knownhosts)
                                      throws InvalidHostFileException

  Constructs a host key verification instance reading the specified known_hosts file.

Parameters:
  `knownhosts` - the path of the known_hosts file
Throws:
  `InvalidHostFileException` - if the known_hosts file is invalid
Since:
  0.2.0

Method Detail

### isHostFileWriteable

    public boolean isHostFileWriteable()

  Determines whether the host file is writable.

  Returns:
    true if the host file is writable, otherwise false
  Since:
    0.2.0

### onHostKeyMismatch

    public abstract void onHostKeyMismatch(java.lang.String host,
                                           SshPublicKey allowedHostKey,
                                           SshPublicKey actualHostKey)
                                    throws TransportProtocolException

  Called by the `verifyHost` method when the host key supplied by the host does not match the current key recording in the known hosts file.

  Parameters:
    `host` - the name of the host
    `allowedHostKey` - the current key recorded in the known_hosts file.
    `actualHostKey` - the actual key supplied by the user
  Throws:
    `TransportProtocolException` - if an error occurs
  Since:
    0.2.0

### onUnknownHost

    public abstract void onUnknownHost(java.lang.String host,
                                       SshPublicKey key)
                                throws TransportProtocolException

  Called by the `verifyHost` method when the host key supplied is not recorded in the known_hosts file.

  Parameters:
    `host` - the name of the host
    `key` - the public key supplied by the host
  Throws:
    `TransportProtocolException` - if an error occurs
  Since:
    0.2.0

### allowHost

    public void allowHost(java.lang.String host,
                          SshPublicKey pk,
                          boolean always)
                   throws InvalidHostFileException

  Allows a host key, optionally recording the key to the known_hosts file.

  Parameters:
    `host` - the name of the host
    `pk` - the public key to allow
    `always` - true if the key should be written to the known_hosts file
  Throws:
    `InvalidHostFileException` - if the host file cannot be written
  Since:
    0.2.0

### allowedHosts

    public java.util.Map allowedHosts()

  Returns a Map of the allowed hosts.

  The keys of the returned Map are comma separated strings of "hostname,ipaddress". The value objects are Maps containing a string key of the public key alogorithm name and the public key as the value.

  Returns:
    the allowed hosts
  Since:
    0.2.0

### removeAllowedHost

    public void removeAllowedHost(java.lang.String host)

  Removes an allowed host.

  Parameters:
    `host` - the host to remove
  Since:
    0.2.0

### verifyHost

    public boolean verifyHost(java.lang.String host,
                              SshPublicKey pk)
                       throws TransportProtocolException

  Verifies a host key against the list of known_hosts.

  If the host unknown or the key does not match the currently allowed host key the abstract `onUnknownHost` or `onHostKeyMismatch` methods are called so that the caller may identify and allow the host.

  Specified by:
    `verifyHost` in interface `HostKeyVerification`
  Parameters:
    `host` - the name of the host
    `pk` - the host key supplied
  Returns:
    true if the host is accepted, otherwise false
  Throws:
    `TransportProtocolException` - if an error occurs
  Since:
    0.2.0

### saveHostFile

    public void saveHostFile()
                      throws InvalidHostFileException

  Save's the host key file to be saved.

  Throws:
    `InvalidHostFileException` - if the host file is invalid
  Since:
    0.2.0

### toString

    public java.lang.String toString()

  Outputs the allowed hosts in the known_hosts file format.

  The format consists of any number of lines each representing one key for a single host.

  `titan,192.168.1.12 ssh-dss AAAAB3NzaC1kc3MAAACBAP1/U4Ed..... titan,192.168.1.12 ssh-rsa AAAAB3NzaC1kc3MAAACBAP1/U4Ed..... einstein,192.168.1.40 ssh-dss AAAAB3NzaC1kc3MAAACBAP1/U4Ed.....`

  Returns:
  Since:
    0.2.0

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD