Top |
int | (*Gsasl_init_function) () |
void | (*Gsasl_done_function) () |
int | (*Gsasl_start_function) () |
int | (*Gsasl_step_function) () |
void | (*Gsasl_finish_function) () |
int | (*Gsasl_code_function) () |
int | gsasl_register () |
The builtin mechanisms should suffice for most applications.
Applications can register a new mechanism in the library using
application-supplied functions. The mechanism will operate as the
builtin mechanisms, and the supplied functions will be invoked when
necessary. The application uses the normal logic, e.g., calls
gsasl_client_start()
followed by a sequence of calls to
gsasl_step()
and finally gsasl_finish()
.
int
(*Gsasl_init_function) (Gsasl *ctx
);
The implementation of this function pointer should fail if the mechanism for some reason is not available for further use.
void
(*Gsasl_done_function) (Gsasl *ctx
);
The implementation of this function pointer deallocate all resources associated with the mechanism.
int (*Gsasl_start_function) (Gsasl_session *sctx
,void **mech_data
);
The implementation of this function should start a new authentication process.
sctx |
a |
|
mech_data |
pointer to void* with mechanism-specific data. |
int (*Gsasl_step_function) (Gsasl_session *sctx
,void *mech_data
,const char *input
,size_t input_len
,char **output
,size_t *output_len
);
The implementation of this function should perform one step of the authentication process.
This reads data from the other end (from input
and input_len
),
processes it (potentially invoking callbacks to the application),
and writes data to server (into newly allocated variable output
and output_len
that indicate the length of output
).
The contents of the output
buffer is unspecified if this functions
returns anything other than GSASL_OK
or GSASL_NEEDS_MORE
. If
this function return GSASL_OK
or GSASL_NEEDS_MORE
, however, the
output
buffer is allocated by this function, and it is the
responsibility of caller to deallocate it by calling
gsasl_free(output
).
sctx |
a |
|
mech_data |
pointer to void* with mechanism-specific data. |
|
input |
input byte array. |
|
input_len |
size of input byte array. |
|
output |
newly allocated output byte array. |
|
output_len |
pointer to output variable with size of output byte array. |
Returns GSASL_OK
if authenticated terminated
successfully, GSASL_NEEDS_MORE
if more data is needed, or error
code.
void (*Gsasl_finish_function) (Gsasl_session *sctx
,void *mech_data
);
The implementation of this function should release all resources associated with the particular authentication process.
sctx |
a |
|
mech_data |
pointer to void* with mechanism-specific data. |
int (*Gsasl_code_function) (Gsasl_session *sctx
,void *mech_data
,const char *input
,size_t input_len
,char **output
,size_t *output_len
);
The implementation of this function should perform data encoding or decoding for the mechanism, after authentication has completed. This might mean that data is integrity or privacy protected.
The output
buffer is allocated by this function, and it is the
responsibility of caller to deallocate it by calling
gsasl_free(output
).
sctx |
a |
|
mech_data |
pointer to void* with mechanism-specific data. |
|
input |
input byte array. |
|
input_len |
size of input byte array. |
|
output |
newly allocated output byte array. |
|
output_len |
pointer to output variable with size of output byte array. |
int gsasl_register (Gsasl *ctx
,const Gsasl_mechanism *mech
);
This function initialize given mechanism, and if successful, add it to the list of plugins that is used by the library.
Since: 0.2.0
struct Gsasl_mechanism_functions { Gsasl_init_function init; Gsasl_done_function done; Gsasl_start_function start; Gsasl_step_function step; Gsasl_finish_function finish; Gsasl_code_function encode; Gsasl_code_function decode; };
Holds all function pointers to implement a mechanism, in either client or server mode.
Gsasl_init_function |
||
Gsasl_done_function |
||
Gsasl_start_function |
||
Gsasl_step_function |
||
Gsasl_finish_function |
||
Gsasl_code_function |
||
Gsasl_code_function |
struct Gsasl_mechanism { const char *name; struct Gsasl_mechanism_functions client; struct Gsasl_mechanism_functions server; };
Holds all implementation details about a mechanism.
string holding name of mechanism, e.g., "PLAIN". |
||
struct Gsasl_mechanism_functions |
client-side Gsasl_mechanism_functions structure. |
|
struct Gsasl_mechanism_functions |
server-side Gsasl_mechanism_functions structure. |