Class WinPipeConnector

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, Connector

    public class WinPipeConnector
    extends AbstractConnector
    A connector based on JNA using Windows' named pipes to communicate with an ssh agent. This is used by Microsoft's Win32-OpenSSH port.
    • Constructor Detail

      • WinPipeConnector

        public WinPipeConnector​(java.lang.String pipeName)
        Creates a WinPipeConnector for the given named pipe.
        Parameters:
        pipeName - to connect to
    • Method Detail

      • connect

        public boolean connect()
                        throws java.io.IOException
        Description copied from interface: Connector
        Connects to an SSH agent if there is one running. If called when already connected just returns true.
        Returns:
        true if an SSH agent is available and connected, if no SSH agent is available
        Throws:
        java.io.IOException - if connecting to the SSH agent failed
      • close

        public void close()
                   throws java.io.IOException
        Throws:
        java.io.IOException
      • rpc

        public byte[] rpc​(byte command,
                          byte[] message)
                   throws java.io.IOException
        Description copied from interface: Connector
        Performs a remote call to the SSH agent and returns the result.
        Parameters:
        command - to send
        message - to send; must have at least 5 bytes, and must have 5 unused bytes at the front.
        Returns:
        the result received
        Throws:
        java.io.IOException - if an error occurs
      • writeFully

        private void writeFully​(LibraryHolder libs,
                                com.sun.jna.platform.win32.WinNT.HANDLE file,
                                byte[] message)
                         throws java.io.IOException
        Throws:
        java.io.IOException
      • readFully

        private void readFully​(LibraryHolder libs,
                               com.sun.jna.platform.win32.WinNT.HANDLE file,
                               byte[] data)
                        throws java.io.IOException
        Throws:
        java.io.IOException
      • read

        private int read​(LibraryHolder libs,
                         com.sun.jna.platform.win32.WinNT.HANDLE file,
                         byte[] buffer,
                         int offset,
                         int length)
                  throws java.io.IOException
        Throws:
        java.io.IOException