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
`static class` `AuthenticationPlugin.AuthStatus` Status of authentication.

### Method Summary

All Methods Instance Methods Abstract Methods
`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.