sasl_server_start(26 March 2000)

NAME
sasl_server_start - Begin an authentication negotiation

SYNOPSIS
#include <sasl.h>

int sasl_server_start(sasl_conn_t * conn,
		           const char * mech,
		           const char * clientin,
		           unsigned * clientinlen,
		           char ** serverout,
		           unsigned * serveroutlen,
		           const char ** errstr);

DESCRIPTION
sasl_server_start() begins the authentication with the mechanism specified with mech. This fails if the mechanism is not supported. SASL_OK is returned if the authentication is complete and the user is authenticated. SASL_CONTINUE is returned if one or more steps are still required in the authentication. All other return values indicate failure.

conn is the SASL context for this connection

mech is the mechanism name that the client requested

clientin is the client initial response, NULL if empty

clientinlen is the length of initial response

serverout is created by the plugin library. It is the initial server response to send to the client. This is allocated for by the library and it is the job of the client to send it over the network to the server. Also protocal specific encoding (such as base64 encoding) must needs to be done by the server.

serveroutlen is set to the length of initial server challenge

errstr is set to a string to send to the user on failure

RETURN VALUE
sasl_server_start returns an integer which corresponds to one of the following codes. SASL_OK indicates that authentication is completed successfully. SASL_CONTINUE indicates sucess and that there are more steps needed in the authentication. All other return codes indicate errors and should either be handled or the authentication session should be quit.

ERRORS

SASL_OK
    Success. Exchange is complete.

SASL_CONTINUE
    Success. Keep going.

SASL_INTERACT
    User interaction needed to fill in prompt_need list.

SASL_BADVERS
    Mechanism version mismatch.

SASL_BADPARAM
    Error in config file

SASL_NOMEM
    Not enough memory to complete operation

CONFORMING TO
RFC 2222

SEE ALSO
sasl(3), sasl_server_init(3), sasl_server_new(3), sasl_server_step(3)