Package org.firebirdsql.gds.ng.wire.auth

## Interface AuthenticationPlugin

-     public interface AuthenticationPlugin

  Plugin for Firebird authentication.
  Since:
    3.0
  Author:
    Mark Rotteveel

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface | Description
    --- | --- | ---
    `static class` | `AuthenticationPlugin.AuthStatus` | Status of authentication.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `AuthenticationPlugin.AuthStatus` | `authenticate​(ClientAuthBlock clientAuthBlock)` | Authenticate using the plugin.
    `boolean` | `generatesSessionKey()` |
    `byte[]` | `getClientData()` |
    `java.lang.String` | `getName()` |
    `byte[]` | `getSessionKey()` | Session key for encryption.
    `boolean` | `hasServerData()` |
    `void` | `setServerData​(byte[] serverData)` | Sets data received from the server.

- - ### Method Detail

    - #### getName

          java.lang.String getName()

      Returns:
        Name of the plugin as used by Firebird

    - #### authenticate

          AuthenticationPlugin.AuthStatus authenticate​(ClientAuthBlock clientAuthBlock)
                                                throws java.sql.SQLException

      Authenticate using the plugin.

      The data generated by this method should be stored and available for calls from `getClientData()`.

      The method authenticate may be called multiple times depending on the state of the authentication (as indicated by the returned `AuthenticationPlugin.AuthStatus`.

      Parameters:
        `clientAuthBlock` - Client authentication block.
      Returns:
        Status of the authentication
      Throws:
        `java.sql.SQLException` - For authentication failures

    - #### getClientData

          byte[] getClientData()

      Returns:
        The data generated by a call to `authenticate(ClientAuthBlock)`.

    - #### setServerData

          void setServerData​(byte[] serverData)

      Sets data received from the server.
      Parameters:
        `serverData` - Server data

    - #### hasServerData

          boolean hasServerData()

      Returns:
        `true` if plugin has non-null and non-empty server data

    - #### generatesSessionKey

          boolean generatesSessionKey()

      Returns:
        `true` if the plugin generates a session key

    - #### getSessionKey

          byte[] getSessionKey()
                        throws java.sql.SQLException

      Session key for encryption.
      Returns:
        Session key
      Throws:
        `java.sql.SQLException` - If there is currently no session key or the authentication plugin doesn't support session key generation.