view src/net/sourceforge/jsocks/Authentication.java @ 250:2bf2724d8610

add range checking on get/set fields
author Carl Byington <carl@five-ten-sg.com>
date Mon, 14 Jul 2014 12:21:43 -0700
parents 0ce5cc452d02
children 205ee2873330
line wrap: on
line source

package net.sourceforge.jsocks;

/**
 The Authentication interface provides for performing method specific
 authentication for SOCKS5 connections.
*/
public interface Authentication {
    /**
      This method is called when SOCKS5 server have selected a particular
      authentication method, for whch an implementaion have been registered.

      <p>
      This method should return an array {inputstream,outputstream
      [,UDPEncapsulation]}. The reason for that is that SOCKS5 protocol
      allows to have method specific encapsulation of data on the socket for
      purposes of integrity or security. And this encapsulation should be
      performed by those streams returned from the method. It is also possible
      to encapsulate datagrams. If authentication method supports such
      encapsulation an instance of the UDPEncapsulation interface should be
      returned as third element of the array, otherwise either null should be
      returned as third element, or array should contain only 2 elements.

      @param methodId Authentication method selected by the server.
      @param proxySocket Socket used to conect to the proxy.
      @return Two or three element array containing
              Input/Output streams which should be used on this connection.
              Third argument is optional and should contain an instance
              of UDPEncapsulation. It should be provided if the authentication
              method used requires any encapsulation to be done on the
              datagrams.
    */
    Object[] doSocksAuthentication(int methodId, java.net.Socket proxySocket)
    throws java.io.IOException;
}