blob: 2d501ae168b6796f1011550dd27701ea54176b9b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
/**
* The Authenticator interface provides methods for authenticating a user over an established protocol connection.
*/
interface Authenticator {
/**
* Authenticate a user identified by the given [username] and whose authenticity is confirmed by the given [key].
* The authentication protocol can read and write data within the underlying connection using [readFun] and
* [writeFun].
*
* @param username The name the user goes by.
* @param key The confirmation of the user's identity and authenticity. It could be any public, private, or derived
* (e.g. mixed with something else or hashed) datum, possibly shared between the server and the client, such as a
* UTF-8-encoded password or a raw public key.
* @param readFun A function to read incoming data from the underlying connection.
* @param writeFun A function to write outgoing data into the underlying connection.
* @throws except.FailedAuthenticationException if the authentication could not be performed. A human-readable
* reason for the failure can be provided if necessary.
*/
fun authenticate(username: String, key: List<UByte>, readFun: () -> List<UByte>, writeFun: (b: List<UByte>) -> Unit)
}
|