gsasl

Name

gsasl -- GNU Simple Authentication and Security Layer Library.

Synopsis



#define     GSASL_VERSION
extern      const char *GSASL_VALID_MECHANISM_CHARACTERS;
enum        Gsasl_qop;
enum        Gsasl_cipher;
int         gsasl_init                      (Gsasl_ctx **ctx);
void        gsasl_done                      (Gsasl_ctx *ctx);
const char* gsasl_check_version             (const char *req_version);
char*       gsasl_stringprep_nfkc           (const char *in,
                                             ssize_t len);
char*       gsasl_stringprep_saslprep       (const char *in,
                                             int *stringprep_rc);
char*       gsasl_stringprep_trace          (const char *in,
                                             int *stringprep_rc);
void        gsasl_application_data_set      (Gsasl_ctx *ctx,
                                             void *application_data);
void*       gsasl_application_data_get      (Gsasl_ctx *ctx);
int         gsasl_client_listmech           (Gsasl_ctx *ctx,
                                             char *out,
                                             size_t *outlen);
int         gsasl_client_support_p          (Gsasl_ctx *ctx,
                                             const char *name);
const char* gsasl_client_suggest_mechanism  (Gsasl_ctx *ctx,
                                             const char *mechlist);
int         gsasl_server_listmech           (Gsasl_ctx *ctx,
                                             char *out,
                                             size_t *outlen);
int         gsasl_server_support_p          (Gsasl_ctx *ctx,
                                             const char *name);
const char* gsasl_server_suggest_mechanism  (Gsasl_ctx *ctx,
                                             const char *mechlist);
int         gsasl_client_start              (Gsasl_ctx *ctx,
                                             const char *mech,
                                             Gsasl_session_ctx **sctx);
int         gsasl_client_step               (Gsasl_session_ctx *sctx,
                                             const char *input,
                                             size_t input_len,
                                             char *output,
                                             size_t *output_len);
int         gsasl_client_step_base64        (Gsasl_session_ctx *sctx,
                                             const char *b64input,
                                             char *b64output,
                                             size_t b64output_len);
void        gsasl_client_finish             (Gsasl_session_ctx *sctx);
int         gsasl_server_start              (Gsasl_ctx *ctx,
                                             const char *mech,
                                             Gsasl_session_ctx **sctx);
int         gsasl_server_step               (Gsasl_session_ctx *sctx,
                                             const char *input,
                                             size_t input_len,
                                             char *output,
                                             size_t *output_len);
int         gsasl_server_step_base64        (Gsasl_session_ctx *sctx,
                                             const char *b64input,
                                             char *b64output,
                                             size_t b64output_len);
void        gsasl_server_finish             (Gsasl_session_ctx *sctx);
int         gsasl_encode                    (Gsasl_session_ctx *sctx,
                                             const char *input,
                                             size_t input_len,
                                             char *output,
                                             size_t *output_len);
int         gsasl_decode                    (Gsasl_session_ctx *sctx,
                                             const char *input,
                                             size_t input_len,
                                             char *output,
                                             size_t *output_len);
const char* gsasl_strerror                  (int err);
int         gsasl_base64_encode             (char const *src,
                                             size_t srclength,
                                             char *target,
                                             size_t targsize);
int         gsasl_base64_decode             (char const *src,
                                             char *target,
                                             size_t targsize);
void        gsasl_hexdump                   (FILE *fh,
                                             const char *buffer,
                                             size_t len);
int         gsasl_md5pwd_get_password       (const char *filename,
                                             const char *username,
                                             char *key,
                                             size_t *keylen);
int         (*Gsasl_client_callback_anonymous)
                                            (Gsasl_session_ctx *sctx,
                                             char *out,
                                             size_t *outlen);
int         (*Gsasl_client_callback_authentication_id)
                                            (Gsasl_session_ctx *sctx,
                                             char *out,
                                             size_t *outlen);
int         (*Gsasl_client_callback_authorization_id)
                                            (Gsasl_session_ctx *sctx,
                                             char *out,
                                             size_t *outlen);
int         (*Gsasl_client_callback_password)
                                            (Gsasl_session_ctx *sctx,
                                             char *out,
                                             size_t *outlen);
int         (*Gsasl_client_callback_passcode)
                                            (Gsasl_session_ctx *sctx,
                                             char *out,
                                             size_t *outlen);
int         (*Gsasl_client_callback_pin)    (Gsasl_session_ctx *sctx,
                                             char *suggestion,
                                             char *out,
                                             size_t *outlen);
int         (*Gsasl_client_callback_service)
                                            (Gsasl_session_ctx *sctx,
                                             char *service,
                                             size_t *servicelen,
                                             char *hostname,
                                             size_t *hostnamelen,
                                             char *servicename,
                                             size_t *servicenamelen);
Gsasl_qop   (*Gsasl_client_callback_qop)    (Gsasl_session_ctx *sctx,
                                             Gsasl_qop serverqops);
int         (*Gsasl_client_callback_realm)  (Gsasl_session_ctx *sctx,
                                             char *out,
                                             size_t *outlen);
int         (*Gsasl_server_callback_retrieve)
                                            (Gsasl_session_ctx *sctx,
                                             const char *authentication_id,
                                             const char *authorization_id,
                                             const char *realm,
                                             char *key,
                                             size_t *keylen);
int         (*Gsasl_server_callback_validate)
                                            (Gsasl_session_ctx *sctx,
                                             const char *authorization_id,
                                             const char *authentication_id,
                                             const char *password);
int         (*Gsasl_server_callback_gssapi) (Gsasl_session_ctx *sctx,
                                             const char *clientname,
                                             const char *authentication_id);
int         (*Gsasl_server_callback_securid)
                                            (Gsasl_session_ctx *sctx,
                                             const char *authentication_id,
                                             const char *authorization_id,
                                             const char *passcode,
                                             char *pin,
                                             char *suggestpin,
                                             size_t *suggestpinlen);
int         (*Gsasl_server_callback_cram_md5)
                                            (Gsasl_session_ctx *sctx,
                                             char *username,
                                             char *challenge,
                                             char *response);
int         (*Gsasl_server_callback_digest_md5)
                                            (Gsasl_session_ctx *sctx,
                                             char *username,
                                             char *realm,
                                             char *secrethash);
int         (*Gsasl_server_callback_service)
                                            (Gsasl_session_ctx *sctx,
                                             char *service,
                                             size_t *servicelen,
                                             char *hostname,
                                             size_t *hostnamelen);
int         (*Gsasl_server_callback_external)
                                            (Gsasl_session_ctx *sctx);
int         (*Gsasl_server_callback_anonymous)
                                            (Gsasl_session_ctx *sctx,
                                             const char *token);
int         (*Gsasl_server_callback_realm)  (Gsasl_session_ctx *sctx,
                                             char *out,
                                             size_t *outlen,
                                             size_t nth);
Gsasl_qop   (*Gsasl_server_callback_qop)    (Gsasl_session_ctx *sctx);
Gsasl_cipher (*Gsasl_server_callback_cipher)
                                            (Gsasl_session_ctx *sctx);
Gsasl_ctx*  gsasl_client_ctx_get            (Gsasl_session_ctx *sctx);
void        gsasl_client_application_data_set
                                            (Gsasl_session_ctx *sctx,
                                             void *application_data);
void*       gsasl_client_application_data_get
                                            (Gsasl_session_ctx *sctx);
void        gsasl_client_callback_authorization_id_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_authorization_idcb);
Gsasl_client_callback_authorization_id gsasl_client_callback_authorization_id_get
                                            (Gsasl_ctx *ctx);
void        gsasl_client_callback_authentication_id_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_authentication_idcb);
Gsasl_client_callback_authentication_id gsasl_client_callback_authentication_id_get
                                            (Gsasl_ctx *ctx);
void        gsasl_client_callback_anonymous_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_anonymouscb);
Gsasl_client_callback_anonymous gsasl_client_callback_anonymous_get
                                            (Gsasl_ctx *ctx);
void        gsasl_client_callback_password_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_passwordcb);
Gsasl_client_callback_password gsasl_client_callback_password_get
                                            (Gsasl_ctx *ctx);
void        gsasl_client_callback_passcode_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_passcodecb);
Gsasl_client_callback_passcode gsasl_client_callback_passcode_get
                                            (Gsasl_ctx *ctx);
void        gsasl_client_callback_pin_set   (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_pin cb);
Gsasl_client_callback_pin gsasl_client_callback_pin_get
                                            (Gsasl_ctx *ctx);
void        gsasl_client_callback_service_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_servicecb);
Gsasl_client_callback_service gsasl_client_callback_service_get
                                            (Gsasl_ctx *ctx);
void        gsasl_client_callback_qop_set   (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_qop cb);
Gsasl_client_callback_qop gsasl_client_callback_qop_get
                                            (Gsasl_ctx *ctx);
void        gsasl_client_callback_maxbuf_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_maxbufcb);
Gsasl_client_callback_maxbuf gsasl_client_callback_maxbuf_get
                                            (Gsasl_ctx *ctx);
void        gsasl_client_callback_realm_set (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_realmcb);
Gsasl_client_callback_realm gsasl_client_callback_realm_get
                                            (Gsasl_ctx *ctx);
Gsasl_ctx*  gsasl_server_ctx_get            (Gsasl_session_ctx *sctx);
void        gsasl_server_application_data_set
                                            (Gsasl_session_ctx *sctx,
                                             void *application_data);
void*       gsasl_server_application_data_get
                                            (Gsasl_session_ctx *sctx);
void        gsasl_server_callback_validate_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_validatecb);
Gsasl_server_callback_validate gsasl_server_callback_validate_get
                                            (Gsasl_ctx *ctx);
void        gsasl_server_callback_retrieve_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_retrievecb);
Gsasl_server_callback_retrieve gsasl_server_callback_retrieve_get
                                            (Gsasl_ctx *ctx);
void        gsasl_server_callback_cram_md5_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_cram_md5cb);
Gsasl_server_callback_cram_md5 gsasl_server_callback_cram_md5_get
                                            (Gsasl_ctx *ctx);
void        gsasl_server_callback_digest_md5_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_digest_md5cb);
Gsasl_server_callback_digest_md5 gsasl_server_callback_digest_md5_get
                                            (Gsasl_ctx *ctx);
void        gsasl_server_callback_external_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_externalcb);
Gsasl_server_callback_external gsasl_server_callback_external_get
                                            (Gsasl_ctx *ctx);
void        gsasl_server_callback_anonymous_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_anonymouscb);
Gsasl_server_callback_anonymous gsasl_server_callback_anonymous_get
                                            (Gsasl_ctx *ctx);
void        gsasl_server_callback_realm_set (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_realmcb);
Gsasl_server_callback_realm gsasl_server_callback_realm_get
                                            (Gsasl_ctx *ctx);
void        gsasl_server_callback_qop_set   (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_qop cb);
Gsasl_server_callback_qop gsasl_server_callback_qop_get
                                            (Gsasl_ctx *ctx);
void        gsasl_server_callback_maxbuf_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_maxbufcb);
Gsasl_server_callback_maxbuf gsasl_server_callback_maxbuf_get
                                            (Gsasl_ctx *ctx);
void        gsasl_server_callback_cipher_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_ciphercb);
Gsasl_server_callback_cipher gsasl_server_callback_cipher_get
                                            (Gsasl_ctx *ctx);
void        gsasl_server_callback_securid_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_securidcb);
Gsasl_server_callback_securid gsasl_server_callback_securid_get
                                            (Gsasl_ctx *ctx);
void        gsasl_server_callback_gssapi_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_gssapicb);
Gsasl_server_callback_gssapi gsasl_server_callback_gssapi_get
                                            (Gsasl_ctx *ctx);
void        gsasl_server_callback_service_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_servicecb);
Gsasl_server_callback_service gsasl_server_callback_service_get
                                            (Gsasl_ctx *ctx);

Description

GNU SASL is an implementation of the Simple Authentication and Security Layer framework and a few common SASL mechanisms. SASL is used by network servers (e.g., IMAP, SMTP) to request authentication from clients, and in clients to authenticate against servers. GNU SASL contains a library (`libgsasl'), a command line utility (`gsasl') to access the library from the shell, and a manual.

Details

GSASL_VERSION

#define GSASL_VERSION "0.0.8"


GSASL_VALID_MECHANISM_CHARACTERS

  extern const char *GSASL_VALID_MECHANISM_CHARACTERS;


enum Gsasl_qop

  typedef enum
  {
    GSASL_QOP_AUTH = 1,
    GSASL_QOP_AUTH_INT = 2,
    GSASL_QOP_AUTH_CONF = 4
  } Gsasl_qop;


enum Gsasl_cipher

  typedef enum
  {
    GSASL_CIPHER_DES = 1,
    GSASL_CIPHER_3DES = 2,
    GSASL_CIPHER_RC4 = 4,
    GSASL_CIPHER_RC4_40 = 8,
    GSASL_CIPHER_RC4_56 = 16,
    GSASL_CIPHER_AES = 32
  } Gsasl_cipher;


gsasl_init ()

int         gsasl_init                      (Gsasl_ctx **ctx);

This functions initializes libgsasl. The handle pointed to by ctx is valid for use with other libgsasl functions iff this function is successful.

ctx :

pointer to libgsasl handle.

Returns :

GSASL_OK iff successful, otherwise GSASL_MALLOC_ERROR.


gsasl_done ()

void        gsasl_done                      (Gsasl_ctx *ctx);

This function destroys a libgsasl handle. The handle must not be used with other libgsasl functions after this call.

ctx :

libgsasl handle.


gsasl_check_version ()

const char* gsasl_check_version             (const char *req_version);

Check library version.

req_version :

version string to compare with, or NULL

Returns :

Check that the the version of the library is at minimum the one given as a string in req_version and return the actual version string of the library; return NULL if the condition is not met. If NULL is passed to this function no check is done and only the version string is returned. It is a pretty good idea to run this function as soon as possible, because it may also intializes some subsystems. In a multithreaded environment if should be called before any more threads are created.


gsasl_stringprep_nfkc ()

char*       gsasl_stringprep_nfkc           (const char *in,
                                             ssize_t len);

Converts a string into canonical form, standardizing such issues as whether a character with an accent is represented as a base character and combining accent or as a single precomposed character.

The normalization mode is NFKC (ALL COMPOSE). It standardizes differences that do not affect the text content, such as the above-mentioned accent representation. It standardizes the "compatibility" characters in Unicode, such as SUPERSCRIPT THREE to the standard forms (in this case DIGIT THREE). Formatting information may be lost but for most text operations such characters should be considered the same. It returns a result with composed forms rather than a maximally decomposed form.

in :

a UTF-8 encoded string.

len :

length of str, in bytes, or -1 if str is nul-terminated.

Returns :

Return a newly allocated string, that is the NFKC normalized form of str, o NULL on error.


gsasl_stringprep_saslprep ()

char*       gsasl_stringprep_saslprep       (const char *in,
                                             int *stringprep_rc);

Process a Unicode string for comparison, according to the "SASLprep" stringprep profile. This function is intended to be used by Simple Authentication and Security Layer (SASL) mechanisms (such as PLAIN, CRAM-MD5, and DIGEST-MD5) as well as other protocols exchanging user names and/or passwords.

in :

input ASCII or UTF-8 string with data to prepare according to SASLprep.

stringprep_rc :

pointer to output variable with stringprep error code, or NULL to indicate that you don't care about it.

Returns :

Return a newly allocated string that is the "SASLprep" processed form of the input string, or NULL on error, in which case stringprep_rc contain the stringprep library error code.


gsasl_stringprep_trace ()

char*       gsasl_stringprep_trace          (const char *in,
                                             int *stringprep_rc);

Process a Unicode string for use as trace information, according to the "trace" stringprep profile. The profile is designed for use with the SASL ANONYMOUS Mechanism.

in :

input ASCII or UTF-8 string with data to prepare according to "trace".

stringprep_rc :

pointer to output variable with stringprep error code, or NULL to indicate that you don't care about it.

Returns :

Return a newly allocated string that is the "trace" processed form of the input string, or NULL on error, in which case stringprep_rc contain the stringprep library error code.


gsasl_application_data_set ()

void        gsasl_application_data_set      (Gsasl_ctx *ctx,
                                             void *application_data);

Store application specific data in the libgsasl handle. The application data can be later (for instance, inside a callback) be retrieved by calling gsasl_application_data_get(). It is normally used by the application to maintain state between the main program and the callback.

ctx :

libgsasl handle.

application_data :

opaque pointer to application specific data.


gsasl_application_data_get ()

void*       gsasl_application_data_get      (Gsasl_ctx *ctx);

Retrieve application specific data from libgsasl handle. The application data is set using gsasl_application_data_set(). It is normally used by the application to maintain state between the main program and the callback.

ctx :

libgsasl handle.


gsasl_client_listmech ()

int         gsasl_client_listmech           (Gsasl_ctx *ctx,
                                             char *out,
                                             size_t *outlen);

Write SASL names, separated by space, of mechanisms supported by the libgsasl client to the output array. To find out how large the output array must be, call this function with out=NULL.

ctx :

libgsasl handle.

out :

output character array.

outlen :

input maximum size of output character array, on output contains actual length of output array.

Returns :

Returns GSASL_OK if successful, or error code.


gsasl_client_support_p ()

int         gsasl_client_support_p          (Gsasl_ctx *ctx,
                                             const char *name);

ctx :

libgsasl handle.

name :

name of SASL mechanism.

Returns :

Returns 1 if the libgsasl client supports the named mechanism, otherwise 0.


gsasl_client_suggest_mechanism ()

const char* gsasl_client_suggest_mechanism  (Gsasl_ctx *ctx,
                                             const char *mechlist);

ctx :

libgsasl handle.

mechlist :

input character array with SASL mechanism names, separated by invalid characters (e.g. SPC).

Returns :

Returns name of "best" SASL mechanism supported by the libgsasl client which is present in the input string.


gsasl_server_listmech ()

int         gsasl_server_listmech           (Gsasl_ctx *ctx,
                                             char *out,
                                             size_t *outlen);

Write SASL names, separated by space, of mechanisms supported by the libgsasl server to the output array. To find out how large the output array must be, call this function with out=NULL.

ctx :

libgsasl handle.

out :

output character array.

outlen :

input maximum size of output character array, on output contains actual length of output array.

Returns :

Returns GSASL_OK if successful, or error code.


gsasl_server_support_p ()

int         gsasl_server_support_p          (Gsasl_ctx *ctx,
                                             const char *name);

ctx :

libgsasl handle.

name :

name of SASL mechanism.

Returns :

Returns 1 if the libgsasl server supports the named mechanism, otherwise 0.


gsasl_server_suggest_mechanism ()

const char* gsasl_server_suggest_mechanism  (Gsasl_ctx *ctx,
                                             const char *mechlist);

ctx :

libgsasl handle.

mechlist :

input character array with SASL mechanism names, separated by invalid characters (e.g. SPC).

Returns :

Returns name of "best" SASL mechanism supported by the libgsasl server which is present in the input string.


gsasl_client_start ()

int         gsasl_client_start              (Gsasl_ctx *ctx,
                                             const char *mech,
                                             Gsasl_session_ctx **sctx);

This functions initiates a client SASL authentication. This function must be called before any other gsasl_client_*() function is called.

ctx :

libgsasl handle.

mech :

name of SASL mechanism.

sctx :

pointer to client handle.

Returns :

Returns GSASL_OK if successful, or error code.


gsasl_client_step ()

int         gsasl_client_step               (Gsasl_session_ctx *sctx,
                                             const char *input,
                                             size_t input_len,
                                             char *output,
                                             size_t *output_len);

Perform one step of SASL authentication in client. This reads data from server (specified with input and input_len), processes it (potentially invoking callbacks to the application), and writes data to server (into variables output and output_len).

The contents of the output buffer is unspecified if this functions returns anything other than GSASL_NEEDS_MORE.

sctx :

libgsasl client handle.

input :

input byte array.

input_len :

size of input byte array.

output :

output byte array.

output_len :

size of output byte array.

Returns :

Returns GSASL_OK if authenticated terminated successfully, GSASL_NEEDS_MORE if more data is needed, or error code.


gsasl_client_step_base64 ()

int         gsasl_client_step_base64        (Gsasl_session_ctx *sctx,
                                             const char *b64input,
                                             char *b64output,
                                             size_t b64output_len);

This is a simple wrapper around gsasl_client_step() that base64 decodes the input and base64 encodes the output.

sctx :

libgsasl client handle.

b64input :

input base64 encoded byte array.

b64output :

output base64 encoded byte array.

b64output_len :

size of output base64 encoded byte array.

Returns :

See gsasl_client_step().


gsasl_client_finish ()

void        gsasl_client_finish             (Gsasl_session_ctx *sctx);

Destroy a libgsasl client handle. The handle must not be used with other libgsasl functions after this call.

sctx :

libgsasl client handle.


gsasl_server_start ()

int         gsasl_server_start              (Gsasl_ctx *ctx,
                                             const char *mech,
                                             Gsasl_session_ctx **sctx);

This functions initiates a server SASL authentication. This function must be called before any other gsasl_server_*() function is called.

ctx :

libgsasl handle.

mech :

name of SASL mechanism.

sctx :

pointer to server handle.

Returns :

Returns GSASL_OK if successful, or error code.


gsasl_server_step ()

int         gsasl_server_step               (Gsasl_session_ctx *sctx,
                                             const char *input,
                                             size_t input_len,
                                             char *output,
                                             size_t *output_len);

Perform one step of SASL authentication in server. This reads data from client (specified with input and input_len), processes it (potentially invoking callbacks to the application), and writes data to client (into variables output and output_len).

The contents of the output buffer is unspecified if this functions returns anything other than GSASL_NEEDS_MORE.

sctx :

libgsasl server handle.

input :

input byte array.

input_len :

size of input byte array.

output :

output byte array.

output_len :

size of output byte array.

Returns :

Returns GSASL_OK if authenticated terminated successfully, GSASL_NEEDS_MORE if more data is needed, or error code.


gsasl_server_step_base64 ()

int         gsasl_server_step_base64        (Gsasl_session_ctx *sctx,
                                             const char *b64input,
                                             char *b64output,
                                             size_t b64output_len);

This is a simple wrapper around gsasl_server_step() that base64 decodes the input and base64 encodes the output.

sctx :

libgsasl server handle.

b64input :

input base64 encoded byte array.

b64output :

output base64 encoded byte array.

b64output_len :

size of output base64 encoded byte array.

Returns :

See gsasl_server_step().


gsasl_server_finish ()

void        gsasl_server_finish             (Gsasl_session_ctx *sctx);

Destroy a libgsasl server handle. The handle must not be used with other libgsasl functions after this call.

sctx :

libgsasl server handle.


gsasl_encode ()

int         gsasl_encode                    (Gsasl_session_ctx *sctx,
                                             const char *input,
                                             size_t input_len,
                                             char *output,
                                             size_t *output_len);

Encode data according to negotiated SASL mechanism. This might mean that data is integrity or privacy protected.

sctx :

libgsasl session handle.

input :

input byte array.

input_len :

size of input byte array.

output :

output byte array.

output_len :

size of output byte array.

Returns :

Returns GSASL_OK if encoding was successful, otherwise an error code.


gsasl_decode ()

int         gsasl_decode                    (Gsasl_session_ctx *sctx,
                                             const char *input,
                                             size_t input_len,
                                             char *output,
                                             size_t *output_len);

Decode data according to negotiated SASL mechanism. This might mean that data is integrity or privacy protected.

sctx :

libgsasl session handle.

input :

input byte array.

input_len :

size of input byte array.

output :

output byte array.

output_len :

size of output byte array.

Returns :

Returns GSASL_OK if encoding was successful, otherwise an error code.


gsasl_strerror ()

const char* gsasl_strerror                  (int err);

err :

libgsasl error code

Returns :

Returns a pointer to a statically allocated string containing a description of the error with the error value err. This string can be used to output a diagnostic message to the user.


gsasl_base64_encode ()

int         gsasl_base64_encode             (char const *src,
                                             size_t srclength,
                                             char *target,
                                             size_t targsize);

Encode data as base64. Converts characters, three at a time, starting at src into four base64 characters in the target area until the entire input buffer is encoded.

src :

input byte array

srclength :

size of input byte array

target :

output byte array

targsize :

size of output byte array

Returns :

Returns the number of data bytes stored at the target, or -1 on error.


gsasl_base64_decode ()

int         gsasl_base64_decode             (char const *src,
                                             char *target,
                                             size_t targsize);

Decode Base64 data. Skips all whitespace anywhere. Converts characters, four at a time, starting at (or after) src from Base64 numbers into three 8 bit bytes in the target area.

src :

input byte array

target :

output byte array

targsize :

size of output byte array

Returns :

Returns the number of data bytes stored at the target, or -1 on error.


gsasl_hexdump ()

void        gsasl_hexdump                   (FILE *fh,
                                             const char *buffer,
                                             size_t len);

Print a byte array to given file handle, mostly for debugging purposes.

fh :

file handle

buffer :

input byte array

len :

size of input byte array


gsasl_md5pwd_get_password ()

int         gsasl_md5pwd_get_password       (const char *filename,
                                             const char *username,
                                             char *key,
                                             size_t *keylen);

Retrieve password for user from specified file. To find out how large the output array must be, call this function with out=NULL.

The file should be on the UoW "MD5 Based Authentication" format, which means it is in text format with comments denoted by # first on the line, with user entries looking as username\tpassword. This function removes \r and \n at the end of lines before processing.

filename :

filename of file containing passwords.

username :

username string.

key :

output character array.

keylen :

input maximum size of output character array, on output contains actual length of output array.

Returns :

Return GSASL_OK if output buffer contains the password, GSASL_AUTHENTICATION_ERROR if the user could not be found, or other error code.


Gsasl_client_callback_anonymous ()

int         (*Gsasl_client_callback_anonymous)
                                            (Gsasl_session_ctx *sctx,
                                             char *out,
                                             size_t *outlen);

sctx :

out :

outlen :

Returns :


Gsasl_client_callback_authentication_id ()

int         (*Gsasl_client_callback_authentication_id)
                                            (Gsasl_session_ctx *sctx,
                                             char *out,
                                             size_t *outlen);

sctx :

out :

outlen :

Returns :


Gsasl_client_callback_authorization_id ()

int         (*Gsasl_client_callback_authorization_id)
                                            (Gsasl_session_ctx *sctx,
                                             char *out,
                                             size_t *outlen);

sctx :

out :

outlen :

Returns :


Gsasl_client_callback_password ()

int         (*Gsasl_client_callback_password)
                                            (Gsasl_session_ctx *sctx,
                                             char *out,
                                             size_t *outlen);

sctx :

out :

outlen :

Returns :


Gsasl_client_callback_passcode ()

int         (*Gsasl_client_callback_passcode)
                                            (Gsasl_session_ctx *sctx,
                                             char *out,
                                             size_t *outlen);

sctx :

out :

outlen :

Returns :


Gsasl_client_callback_pin ()

int         (*Gsasl_client_callback_pin)    (Gsasl_session_ctx *sctx,
                                             char *suggestion,
                                             char *out,
                                             size_t *outlen);

sctx :

suggestion :

out :

outlen :

Returns :


Gsasl_client_callback_service ()

int         (*Gsasl_client_callback_service)
                                            (Gsasl_session_ctx *sctx,
                                             char *service,
                                             size_t *servicelen,
                                             char *hostname,
                                             size_t *hostnamelen,
                                             char *servicename,
                                             size_t *servicenamelen);

sctx :

service :

servicelen :

hostname :

hostnamelen :

servicename :

servicenamelen :

Returns :


Gsasl_client_callback_qop ()

Gsasl_qop   (*Gsasl_client_callback_qop)    (Gsasl_session_ctx *sctx,
                                             Gsasl_qop serverqops);

sctx :

serverqops :

Returns :


Gsasl_client_callback_realm ()

int         (*Gsasl_client_callback_realm)  (Gsasl_session_ctx *sctx,
                                             char *out,
                                             size_t *outlen);

sctx :

out :

outlen :

Returns :


Gsasl_server_callback_retrieve ()

int         (*Gsasl_server_callback_retrieve)
                                            (Gsasl_session_ctx *sctx,
                                             const char *authentication_id,
                                             const char *authorization_id,
                                             const char *realm,
                                             char *key,
                                             size_t *keylen);

sctx :

authentication_id :

authorization_id :

realm :

key :

keylen :

Returns :


Gsasl_server_callback_validate ()

int         (*Gsasl_server_callback_validate)
                                            (Gsasl_session_ctx *sctx,
                                             const char *authorization_id,
                                             const char *authentication_id,
                                             const char *password);

sctx :

authorization_id :

authentication_id :

password :

Returns :


Gsasl_server_callback_gssapi ()

int         (*Gsasl_server_callback_gssapi) (Gsasl_session_ctx *sctx,
                                             const char *clientname,
                                             const char *authentication_id);

sctx :

clientname :

authentication_id :

Returns :


Gsasl_server_callback_securid ()

int         (*Gsasl_server_callback_securid)
                                            (Gsasl_session_ctx *sctx,
                                             const char *authentication_id,
                                             const char *authorization_id,
                                             const char *passcode,
                                             char *pin,
                                             char *suggestpin,
                                             size_t *suggestpinlen);

sctx :

authentication_id :

authorization_id :

passcode :

pin :

suggestpin :

suggestpinlen :

Returns :


Gsasl_server_callback_cram_md5 ()

int         (*Gsasl_server_callback_cram_md5)
                                            (Gsasl_session_ctx *sctx,
                                             char *username,
                                             char *challenge,
                                             char *response);

sctx :

username :

challenge :

response :

Returns :


Gsasl_server_callback_digest_md5 ()

int         (*Gsasl_server_callback_digest_md5)
                                            (Gsasl_session_ctx *sctx,
                                             char *username,
                                             char *realm,
                                             char *secrethash);

sctx :

username :

realm :

secrethash :

Returns :


Gsasl_server_callback_service ()

int         (*Gsasl_server_callback_service)
                                            (Gsasl_session_ctx *sctx,
                                             char *service,
                                             size_t *servicelen,
                                             char *hostname,
                                             size_t *hostnamelen);

sctx :

service :

servicelen :

hostname :

hostnamelen :

Returns :


Gsasl_server_callback_external ()

int         (*Gsasl_server_callback_external)
                                            (Gsasl_session_ctx *sctx);

sctx :

Returns :


Gsasl_server_callback_anonymous ()

int         (*Gsasl_server_callback_anonymous)
                                            (Gsasl_session_ctx *sctx,
                                             const char *token);

sctx :

token :

Returns :


Gsasl_server_callback_realm ()

int         (*Gsasl_server_callback_realm)  (Gsasl_session_ctx *sctx,
                                             char *out,
                                             size_t *outlen,
                                             size_t nth);

sctx :

out :

outlen :

nth :

Returns :


Gsasl_server_callback_qop ()

Gsasl_qop   (*Gsasl_server_callback_qop)    (Gsasl_session_ctx *sctx);

sctx :

Returns :


Gsasl_server_callback_cipher ()

Gsasl_cipher (*Gsasl_server_callback_cipher)
                                            (Gsasl_session_ctx *sctx);

sctx :

Returns :


gsasl_client_ctx_get ()

Gsasl_ctx*  gsasl_client_ctx_get            (Gsasl_session_ctx *sctx);

sctx :

libgsasl client handle

Returns :

Returns the libgsasl handle given a libgsasl client handle.


gsasl_client_application_data_set ()

void        gsasl_client_application_data_set
                                            (Gsasl_session_ctx *sctx,
                                             void *application_data);

Store application specific data in the libgsasl client handle. The application data can be later (for instance, inside a callback) be retrieved by calling gsasl_client_application_data_get(). It is normally used by the application to maintain state between the main program and the callback.

sctx :

libgsasl client handle.

application_data :

opaque pointer to application specific data.


gsasl_client_application_data_get ()

void*       gsasl_client_application_data_get
                                            (Gsasl_session_ctx *sctx);

Retrieve application specific data from libgsasl client handle. The application data is set using gsasl_client_application_data_set(). It is normally used by the application to maintain state between the main program and the callback.

sctx :

libgsasl client handle.


gsasl_client_callback_authorization_id_set ()

void        gsasl_client_callback_authorization_id_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_authorization_idcb);

Specify the callback function to use in the client to set the authorization identity. The function can be later retrieved using gsasl_client_callback_authorization_id_get().

ctx :

libgsasl handle.

Param2 :


gsasl_client_callback_authorization_id_get ()

Gsasl_client_callback_authorization_id gsasl_client_callback_authorization_id_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_client_callback_authorization_id_set().


gsasl_client_callback_authentication_id_set ()

void        gsasl_client_callback_authentication_id_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_authentication_idcb);

Specify the callback function to use in the client to set the authentication identity. The function can be later retrieved using gsasl_client_callback_authentication_id_get().

ctx :

libgsasl handle.

Param2 :


gsasl_client_callback_authentication_id_get ()

Gsasl_client_callback_authentication_id gsasl_client_callback_authentication_id_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_client_callback_authentication_id_set().


gsasl_client_callback_anonymous_set ()

void        gsasl_client_callback_anonymous_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_anonymouscb);

Specify the callback function to use in the client to set the anonymous token, which usually is the users email address. The function can be later retrieved using gsasl_client_callback_anonymous_get().

ctx :

libgsasl handle.

Param2 :


gsasl_client_callback_anonymous_get ()

Gsasl_client_callback_anonymous gsasl_client_callback_anonymous_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_client_callback_anonymous_set().


gsasl_client_callback_password_set ()

void        gsasl_client_callback_password_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_passwordcb);

Specify the callback function to use in the client to set the password. The function can be later retrieved using gsasl_client_callback_password_get().

ctx :

libgsasl handle.

Param2 :


gsasl_client_callback_password_get ()

Gsasl_client_callback_password gsasl_client_callback_password_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_client_callback_password_set().


gsasl_client_callback_passcode_set ()

void        gsasl_client_callback_passcode_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_passcodecb);

Specify the callback function to use in the client to set the passcode. The function can be later retrieved using gsasl_client_callback_passcode_get().

ctx :

libgsasl handle.

Param2 :


gsasl_client_callback_passcode_get ()

Gsasl_client_callback_passcode gsasl_client_callback_passcode_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_client_callback_passcode_set().


gsasl_client_callback_pin_set ()

void        gsasl_client_callback_pin_set   (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_pin cb);

Specify the callback function to use in the client to chose a new pin, possibly suggested by the server, for the SECURID mechanism. This is not normally invoked, but only when the server requests it. The function can be later retrieved using gsasl_client_callback_pin_get().

ctx :

libgsasl handle.

cb :

callback function


gsasl_client_callback_pin_get ()

Gsasl_client_callback_pin gsasl_client_callback_pin_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_client_callback_pin_set().


gsasl_client_callback_service_set ()

void        gsasl_client_callback_service_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_servicecb);

Specify the callback function to use in the client to set the name of the service. The service buffer should be a registered GSSAPI host-based service name, hostname the name of the server. Servicename is used by DIGEST-MD5 and should be the name of generic server in case of a replicated service. The function can be later retrieved using gsasl_client_callback_service_get().

ctx :

libgsasl handle.

Param2 :


gsasl_client_callback_service_get ()

Gsasl_client_callback_service gsasl_client_callback_service_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_client_callback_service_set().


gsasl_client_callback_qop_set ()

void        gsasl_client_callback_qop_set   (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_qop cb);

Specify the callback function to use in the client to determine the qop to use after looking at what the server offered. The function can be later retrieved using gsasl_client_callback_qop_get().

ctx :

libgsasl handle.

cb :

callback function


gsasl_client_callback_qop_get ()

Gsasl_client_callback_qop gsasl_client_callback_qop_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_client_callback_qop_set().


gsasl_client_callback_maxbuf_set ()

void        gsasl_client_callback_maxbuf_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_maxbufcb);

Specify the callback function to use in the client to inform the server of the largest buffer the client is able to receive when using the DIGEST-MD5 "auth-int" or "auth-conf" Quality of Protection (qop). If this directive is missing, the default value 65536 will be assumed. The function can be later retrieved using gsasl_client_callback_maxbuf_get().

ctx :

libgsasl handle.

Param2 :


gsasl_client_callback_maxbuf_get ()

Gsasl_client_callback_maxbuf gsasl_client_callback_maxbuf_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_client_callback_maxbuf_set().


gsasl_client_callback_realm_set ()

void        gsasl_client_callback_realm_set (Gsasl_ctx *ctx,
                                             Gsasl_client_callback_realmcb);

Specify the callback function to use in the client to know which realm it belongs to. The realm is used by the server to determine which username and password to use. The function can be later retrieved using gsasl_client_callback_realm_get().

ctx :

libgsasl handle.

Param2 :


gsasl_client_callback_realm_get ()

Gsasl_client_callback_realm gsasl_client_callback_realm_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_client_callback_realm_set().


gsasl_server_ctx_get ()

Gsasl_ctx*  gsasl_server_ctx_get            (Gsasl_session_ctx *sctx);

sctx :

libgsasl server handle

Returns :

Returns the libgsasl handle given a libgsasl server handle.


gsasl_server_application_data_set ()

void        gsasl_server_application_data_set
                                            (Gsasl_session_ctx *sctx,
                                             void *application_data);

Store application specific data in the libgsasl server handle. The application data can be later (for instance, inside a callback) be retrieved by calling gsasl_server_application_data_get(). It is normally used by the application to maintain state between the main program and the callback.

sctx :

libgsasl server handle.

application_data :

opaque pointer to application specific data.


gsasl_server_application_data_get ()

void*       gsasl_server_application_data_get
                                            (Gsasl_session_ctx *sctx);

Retrieve application specific data from libgsasl server handle. The application data is set using gsasl_server_application_data_set(). It is normally used by the application to maintain state between the main program and the callback.

sctx :

libgsasl server handle.


gsasl_server_callback_validate_set ()

void        gsasl_server_callback_validate_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_validatecb);

Specify the callback function to use in the server for deciding if user is authenticated using authentication identity, authorization identity and password. The function can be later retrieved using gsasl_server_callback_validate_get().

ctx :

libgsasl handle.

Param2 :


gsasl_server_callback_validate_get ()

Gsasl_server_callback_validate gsasl_server_callback_validate_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_server_callback_validate_set().


gsasl_server_callback_retrieve_set ()

void        gsasl_server_callback_retrieve_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_retrievecb);

Specify the callback function to use in the server for deciding if user is authenticated using authentication identity, authorization identity and password. The function can be later retrieved using gsasl_server_callback_retrieve_get().

ctx :

libgsasl handle.

Param2 :


gsasl_server_callback_retrieve_get ()

Gsasl_server_callback_retrieve gsasl_server_callback_retrieve_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_server_callback_retrieve_set().


gsasl_server_callback_cram_md5_set ()

void        gsasl_server_callback_cram_md5_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_cram_md5cb);

Specify the callback function to use in the server for deciding if user is authenticated using CRAM-MD5 challenge and response. The function can be later retrieved using gsasl_server_callback_cram_md5_get().

ctx :

libgsasl handle.

Param2 :


gsasl_server_callback_cram_md5_get ()

Gsasl_server_callback_cram_md5 gsasl_server_callback_cram_md5_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_server_callback_cram_md5_set().


gsasl_server_callback_digest_md5_set ()

void        gsasl_server_callback_digest_md5_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_digest_md5cb);

Specify the callback function to use in the server for retrieving the secret hash of the username, realm and password for use in the DIGEST-MD5 mechanism. The function can be later retrieved using gsasl_server_callback_digest_md5_get().

ctx :

libgsasl handle.

Param2 :


gsasl_server_callback_digest_md5_get ()

Gsasl_server_callback_digest_md5 gsasl_server_callback_digest_md5_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Return the callback earlier set by calling gsasl_server_callback_digest_md5_set().


gsasl_server_callback_external_set ()

void        gsasl_server_callback_external_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_externalcb);

Specify the callback function to use in the server for deciding if user is authenticated out of band. The function can be later retrieved using gsasl_server_callback_external_get().

ctx :

libgsasl handle.

Param2 :


gsasl_server_callback_external_get ()

Gsasl_server_callback_external gsasl_server_callback_external_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_server_callback_external_set().


gsasl_server_callback_anonymous_set ()

void        gsasl_server_callback_anonymous_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_anonymouscb);

Specify the callback function to use in the server for deciding if user is permitted anonymous access. The function can be later retrieved using gsasl_server_callback_anonymous_get().

ctx :

libgsasl handle.

Param2 :


gsasl_server_callback_anonymous_get ()

Gsasl_server_callback_anonymous gsasl_server_callback_anonymous_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_server_callback_anonymous_set().


gsasl_server_callback_realm_set ()

void        gsasl_server_callback_realm_set (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_realmcb);

Specify the callback function to use in the server to know which realm it serves. The realm is used by the user to determine which username and password to use. The function can be later retrieved using gsasl_server_callback_realm_get().

ctx :

libgsasl handle.

Param2 :


gsasl_server_callback_realm_get ()

Gsasl_server_callback_realm gsasl_server_callback_realm_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_server_callback_realm_set().


gsasl_server_callback_qop_set ()

void        gsasl_server_callback_qop_set   (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_qop cb);

Specify the callback function to use in the server to know which quality of protection it accepts. The quality of protection eventually used is selected by the client though. It is currently used by the DIGEST-MD5 mechanism. The function can be later retrieved using gsasl_server_callback_qop_get().

ctx :

libgsasl handle.

cb :

callback function


gsasl_server_callback_qop_get ()

Gsasl_server_callback_qop gsasl_server_callback_qop_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_server_callback_qop_set().


gsasl_server_callback_maxbuf_set ()

void        gsasl_server_callback_maxbuf_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_maxbufcb);

Specify the callback function to use in the server to inform the client of the largest buffer the server is able to receive when using the DIGEST-MD5 "auth-int" or "auth-conf" Quality of Protection (qop). If this directive is missing, the default value 65536 will be assumed. The function can be later retrieved using gsasl_server_callback_maxbuf_get().

ctx :

libgsasl handle.

Param2 :


gsasl_server_callback_maxbuf_get ()

Gsasl_server_callback_maxbuf gsasl_server_callback_maxbuf_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_server_callback_maxbuf_set().


gsasl_server_callback_cipher_set ()

void        gsasl_server_callback_cipher_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_ciphercb);

Specify the callback function to use in the server to inform the client of the cipher suites supported. The DES and 3DES ciphers must be supported for interoperability. It is currently used by the DIGEST-MD5 mechanism. The function can be later retrieved using gsasl_server_callback_cipher_get().

ctx :

libgsasl handle.

Param2 :


gsasl_server_callback_cipher_get ()

Gsasl_server_callback_cipher gsasl_server_callback_cipher_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_server_callback_cipher_set().


gsasl_server_callback_securid_set ()

void        gsasl_server_callback_securid_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_securidcb);

Specify the callback function to use in the server for validating a user via the SECURID mechanism. The function should return GSASL_OK if user authenticated successfully, GSASL_SECURID_SERVER_NEED_ADDITIONAL_PASSCODE if it wants another passcode, GSASL_SECURID_SERVER_NEED_NEW_PIN if it wants a PIN change, or an error. When (and only when) GSASL_SECURID_SERVER_NEED_NEW_PIN is returned, suggestpin can be populated with a PIN code the server suggests, and suggestpinlen set to the length of the PIN. The function can be later retrieved using gsasl_server_callback_securid_get().

ctx :

libgsasl handle.

Param2 :


gsasl_server_callback_securid_get ()

Gsasl_server_callback_securid gsasl_server_callback_securid_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_server_callback_securid_set().


gsasl_server_callback_gssapi_set ()

void        gsasl_server_callback_gssapi_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_gssapicb);

Specify the callback function to use in the server for checking if a GSSAPI user is authorized for username (by, e.g., calling krb5_userok()). The function should return GSASL_OK if the user should be permitted access, or an error code such as GSASL_AUTHENTICATION_ERROR on failure. The function can be later retrieved using gsasl_server_callback_gssapi_get().

ctx :

libgsasl handle.

Param2 :


gsasl_server_callback_gssapi_get ()

Gsasl_server_callback_gssapi gsasl_server_callback_gssapi_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_server_callback_gssapi_set().


gsasl_server_callback_service_set ()

void        gsasl_server_callback_service_set
                                            (Gsasl_ctx *ctx,
                                             Gsasl_server_callback_servicecb);

Specify the callback function to use in the server to set the name of the service. The service buffer should be a registered GSSAPI host-based service name, hostname the name of the server. The function can be later retrieved using gsasl_server_callback_service_get().

ctx :

libgsasl handle.

Param2 :


gsasl_server_callback_service_get ()

Gsasl_server_callback_service gsasl_server_callback_service_get
                                            (Gsasl_ctx *ctx);

ctx :

libgsasl handle.

Returns :

Returns the callback earlier set by calling gsasl_server_callback_service_set().