Class SshAgentClient

java.lang.Object
com.sshtools.agent.client.SshAgentClient
All Implemented Interfaces:
com.sshtools.common.publickey.SignatureGenerator, Closeable, AutoCloseable

public class SshAgentClient extends Object implements com.sshtools.common.publickey.SignatureGenerator, Closeable
Maintain the public keys for SshConnection
Author:
Aruna Abesekara
  • Field Details

    • HASH_AND_SIGN

      public static final String HASH_AND_SIGN
      See Also:
    • WINDOWS_SSH_AGENT_SERVICE

      public static String WINDOWS_SSH_AGENT_SERVICE
  • Constructor Details

  • Method Details

    • isRFCAgent

      public boolean isRFCAgent()
    • connectOpenSSHAgent

      public static SshAgentClient connectOpenSSHAgent(String application) throws AgentNotAvailableException, IOException
      Throws:
      AgentNotAvailableException
      IOException
    • connectOpenSSHAgent

      public static SshAgentClient connectOpenSSHAgent(String application, String location) throws AgentNotAvailableException, IOException
      Determines operating system type (windows or not) and connects using the appropriate socket type for the platform.
      Parameters:
      application -
      location -
      Returns:
      Throws:
      AgentNotAvailableException
      IOException
    • connectLocalAgent

      public static SshAgentClient connectLocalAgent(String application, String location, AgentSocketType type, boolean RFCAgent) throws AgentNotAvailableException, IOException
      Connect to the local agent.
      Parameters:
      application - the application connecting
      location - the location of the agent, in the form "localhost:port"
      Returns:
      a connected agent client
      Throws:
      AgentNotAvailableException - if the agent is not available at the location specified
      IOException - if an IO error occurs
    • close

      public void close()
      Close the agent
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
    • ping

      public void ping(byte[] padding) throws IOException
      Ping the remote side with some random padding data
      Parameters:
      padding - the padding data
      Throws:
      IOException - if an IO error occurs
    • registerMessages

      protected void registerMessages()
    • sendForwardingNotice

      protected void sendForwardingNotice() throws IOException
      Send a forwarding notice.
      Throws:
      IOException - if an IO error occurs
    • sendMessage

      protected void sendMessage(AgentMessage msg) throws IOException
      Send a subsystem message
      Parameters:
      msg - the message to send
      Throws:
      IOException - if an IO error occurs
    • sendVersionRequest

      protected void sendVersionRequest(String application) throws IOException
      Request the agent version.
      Parameters:
      application - the application connecting
      Throws:
      IOException - if an IO error occurs
    • deleteAllKeys

      public void deleteAllKeys() throws IOException
      Delete all the keys held by the agent.
      Throws:
      IOException - if an IO error occurs
    • readMessage

      protected AgentMessage readMessage() throws InvalidMessageException
      Read a single message from the inputstream and convert into a valid subsystem message
      Returns:
      the next available subsystem message
      Throws:
      InvalidMessageException - if the message received is invalid
    • addKey

      public void addKey(com.sshtools.common.ssh.components.SshPrivateKey prvkey, com.sshtools.common.ssh.components.SshPublicKey pubkey, String description, KeyConstraints constraints) throws IOException
      Add a key to the agent
      Parameters:
      prvkey - the private key to add
      pubkey - the private keys public key
      description - a description of the key
      constraints - a set of contraints for key use
      Throws:
      IOException - if an IO error occurs
    • listKeys

      public Map<com.sshtools.common.ssh.components.SshPublicKey,String> listKeys() throws IOException
      List all the keys on the agent.
      Returns:
      a map of public keys and descriptions
      Throws:
      IOException - if an IO error occurs
    • lockAgent

      public boolean lockAgent(String password) throws IOException
      Lock the agent
      Parameters:
      password - password that will be required to unlock
      Returns:
      true if the agent was locked, otherwise false
      Throws:
      IOException - if an IO error occurs
    • unlockAgent

      public boolean unlockAgent(String password) throws IOException
      Unlock the agent
      Parameters:
      password - the password to unlock
      Returns:
      true if the agent was unlocked, otherwise false
      Throws:
      IOException - if an IO error occurs
    • getRandomData

      public byte[] getRandomData(int count) throws IOException
      Request some random data from the remote side
      Parameters:
      count - the number of bytes needed
      Returns:
      the random data received
      Throws:
      IOException - if an IO error occurs
    • deleteKey

      public void deleteKey(com.sshtools.common.ssh.components.SshPublicKey key, String description) throws IOException
      Delete a key held by the agent
      Parameters:
      key - the public key of the private key to delete
      description - the description of the key
      Throws:
      IOException - if an IO error occurs
    • hashAndSign

      public byte[] hashAndSign(com.sshtools.common.ssh.components.SshPublicKey key, String signingAlgorithm, byte[] data) throws IOException
      Request a hash and sign operation be performed for a given public key.
      Parameters:
      key - the public key of the required private key
      data - the data to has and sign
      Returns:
      the hashed and signed data
      Throws:
      IOException - if an IO error occurs
    • sign

      public byte[] sign(com.sshtools.common.ssh.components.SshPublicKey key, String signingAlgorithm, byte[] data) throws com.sshtools.common.ssh.SshException
      Specified by:
      sign in interface com.sshtools.common.publickey.SignatureGenerator
      Throws:
      com.sshtools.common.ssh.SshException
    • getPublicKeys

      public Collection<com.sshtools.common.ssh.components.SshPublicKey> getPublicKeys() throws IOException
      Specified by:
      getPublicKeys in interface com.sshtools.common.publickey.SignatureGenerator
      Throws:
      IOException
    • getEnvironmentSocket

      public static String getEnvironmentSocket() throws AgentNotAvailableException
      Throws:
      AgentNotAvailableException