<!-- ##### SECTION Title ##### -->
gsasl

<!-- ##### SECTION Short_Description ##### -->


<!-- ##### SECTION Long_Description ##### -->
<para>

</para>


<!-- ##### SECTION See_Also ##### -->
<para>

</para>


<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### MACRO GSASL_VERSION ##### -->
<para>

</para>



<!-- ##### VARIABLE GSASL_VALID_MECHANISM_CHARACTERS ##### -->
<para>

</para>


<!-- ##### ENUM Gsasl_rc ##### -->
<para>

</para>

@GSASL_OK: 
@GSASL_NEEDS_MORE: 
@GSASL_UNKNOWN_MECHANISM: 
@GSASL_MECHANISM_CALLED_TOO_MANY_TIMES: 
@GSASL_MALLOC_ERROR: 
@GSASL_BASE64_ERROR: 
@GSASL_CRYPTO_ERROR: 
@GSASL_SASLPREP_ERROR: 
@GSASL_MECHANISM_PARSE_ERROR: 
@GSASL_AUTHENTICATION_ERROR: 
@GSASL_INTEGRITY_ERROR: 
@GSASL_NO_CLIENT_CODE: 
@GSASL_NO_SERVER_CODE: 
@GSASL_NO_CALLBACK: 
@GSASL_NO_ANONYMOUS_TOKEN: 
@GSASL_NO_AUTHID: 
@GSASL_NO_AUTHZID: 
@GSASL_NO_PASSWORD: 
@GSASL_NO_PASSCODE: 
@GSASL_NO_PIN: 
@GSASL_NO_SERVICE: 
@GSASL_NO_HOSTNAME: 
@GSASL_GSSAPI_RELEASE_BUFFER_ERROR: 
@GSASL_GSSAPI_IMPORT_NAME_ERROR: 
@GSASL_GSSAPI_INIT_SEC_CONTEXT_ERROR: 
@GSASL_GSSAPI_ACCEPT_SEC_CONTEXT_ERROR: 
@GSASL_GSSAPI_UNWRAP_ERROR: 
@GSASL_GSSAPI_WRAP_ERROR: 
@GSASL_GSSAPI_ACQUIRE_CRED_ERROR: 
@GSASL_GSSAPI_DISPLAY_NAME_ERROR: 
@GSASL_GSSAPI_UNSUPPORTED_PROTECTION_ERROR: 
@GSASL_KERBEROS_V5_INIT_ERROR: 
@GSASL_KERBEROS_V5_INTERNAL_ERROR: 
@GSASL_SHISHI_ERROR: 
@GSASL_SECURID_SERVER_NEED_ADDITIONAL_PASSCODE: 
@GSASL_SECURID_SERVER_NEED_NEW_PIN: 

<!-- ##### ENUM Gsasl_qop ##### -->
<para>

</para>

@GSASL_QOP_AUTH: 
@GSASL_QOP_AUTH_INT: 
@GSASL_QOP_AUTH_CONF: 

<!-- ##### ENUM Gsasl_cipher ##### -->
<para>

</para>

@GSASL_CIPHER_DES: 
@GSASL_CIPHER_3DES: 
@GSASL_CIPHER_RC4: 
@GSASL_CIPHER_RC4_40: 
@GSASL_CIPHER_RC4_56: 
@GSASL_CIPHER_AES: 

<!-- ##### ENUM Gsasl_saslprep_flags ##### -->
<para>

</para>

@GSASL_ALLOW_UNASSIGNED: 

<!-- ##### TYPEDEF Gsasl ##### -->
<para>

</para>


<!-- ##### TYPEDEF Gsasl_session ##### -->
<para>

</para>


<!-- ##### ENUM Gsasl_property ##### -->
<para>

</para>

@GSASL_AUTHID: 
@GSASL_AUTHZID: 
@GSASL_PASSWORD: 
@GSASL_ANONYMOUS_TOKEN: 
@GSASL_SERVICE: 
@GSASL_HOSTNAME: 
@GSASL_GSSAPI_DISPLAY_NAME: 
@GSASL_PASSCODE: 
@GSASL_SUGGESTED_PIN: 
@GSASL_PIN: 
@GSASL_REALM: 
@GSASL_VALIDATE_SIMPLE: 
@GSASL_VALIDATE_EXTERNAL: 
@GSASL_VALIDATE_ANONYMOUS: 
@GSASL_VALIDATE_GSSAPI: 
@GSASL_VALIDATE_SECURID: 

<!-- ##### USER_FUNCTION Gsasl_callback_function ##### -->
<para>

</para>

@ctx: 
@sctx: 
@prop: 
@Returns: 


<!-- ##### FUNCTION gsasl_init ##### -->
<para>

</para>

@ctx: 
@Returns: 


<!-- ##### FUNCTION gsasl_done ##### -->
<para>

</para>

@ctx: 


<!-- ##### FUNCTION gsasl_check_version ##### -->
<para>

</para>

@req_version: 
@Returns: 


<!-- ##### FUNCTION gsasl_callback_set ##### -->
<para>

</para>

@ctx: 
@cb: 


<!-- ##### FUNCTION gsasl_callback ##### -->
<para>

</para>

@ctx: 
@sctx: 
@prop: 
@Returns: 


<!-- ##### FUNCTION gsasl_callback_hook_set ##### -->
<para>

</para>

@ctx: 
@hook: 


<!-- ##### FUNCTION gsasl_callback_hook_get ##### -->
<para>

</para>

@ctx: 
@Returns: 


<!-- ##### FUNCTION gsasl_session_hook_set ##### -->
<para>

</para>

@sctx: 
@hook: 


<!-- ##### FUNCTION gsasl_session_hook_get ##### -->
<para>

</para>

@sctx: 
@Returns: 


<!-- ##### FUNCTION gsasl_property_set ##### -->
<para>

</para>

@sctx: 
@prop: 
@data: 


<!-- ##### FUNCTION gsasl_property_set_raw ##### -->
<para>

</para>

@sctx: 
@prop: 
@data: 
@len: 


<!-- ##### FUNCTION gsasl_property_get ##### -->
<para>

</para>

@sctx: 
@prop: 
@Returns: 


<!-- ##### FUNCTION gsasl_property_fast ##### -->
<para>

</para>

@sctx: 
@prop: 
@Returns: 


<!-- ##### FUNCTION gsasl_client_mechlist ##### -->
<para>

</para>

@ctx: 
@out: 
@Returns: 


<!-- ##### FUNCTION gsasl_client_support_p ##### -->
<para>

</para>

@ctx: 
@name: 
@Returns: 


<!-- ##### FUNCTION gsasl_client_suggest_mechanism ##### -->
<para>

</para>

@ctx: 
@mechlist: 
@Returns: 


<!-- ##### FUNCTION gsasl_server_mechlist ##### -->
<para>

</para>

@ctx: 
@out: 
@Returns: 


<!-- ##### FUNCTION gsasl_server_support_p ##### -->
<para>

</para>

@ctx: 
@name: 
@Returns: 


<!-- ##### FUNCTION gsasl_client_start ##### -->
<para>

</para>

@ctx: 
@mech: 
@sctx: 
@Returns: 


<!-- ##### FUNCTION gsasl_server_start ##### -->
<para>

</para>

@ctx: 
@mech: 
@sctx: 
@Returns: 


<!-- ##### FUNCTION gsasl_step ##### -->
<para>

</para>

@sctx: 
@input: 
@input_len: 
@output: 
@output_len: 
@Returns: 


<!-- ##### FUNCTION gsasl_step64 ##### -->
<para>

</para>

@sctx: 
@b64input: 
@b64output: 
@Returns: 


<!-- ##### FUNCTION gsasl_finish ##### -->
<para>

</para>

@sctx: 


<!-- ##### FUNCTION gsasl_encode ##### -->
<para>

</para>

@sctx: 
@input: 
@input_len: 
@output: 
@output_len: 
@Returns: 


<!-- ##### FUNCTION gsasl_decode ##### -->
<para>

</para>

@sctx: 
@input: 
@input_len: 
@output: 
@output_len: 
@Returns: 


<!-- ##### FUNCTION gsasl_strerror ##### -->
<para>

</para>

@err: 
@Returns: 


<!-- ##### FUNCTION gsasl_saslprep ##### -->
<para>

</para>

@in: 
@flags: 
@out: 
@stringpreprc: 
@Returns: 


<!-- ##### FUNCTION gsasl_simple_getpass ##### -->
<para>

</para>

@filename: 
@username: 
@key: 
@Returns: 


<!-- ##### FUNCTION gsasl_base64_to ##### -->
<para>

</para>

@in: 
@inlen: 
@out: 
@outlen: 
@Returns: 


<!-- ##### FUNCTION gsasl_base64_from ##### -->
<para>

</para>

@in: 
@inlen: 
@out: 
@outlen: 
@Returns: 


<!-- ##### FUNCTION gsasl_nonce ##### -->
<para>

</para>

@data: 
@datalen: 
@Returns: 


<!-- ##### FUNCTION gsasl_random ##### -->
<para>

</para>

@data: 
@datalen: 
@Returns: 


<!-- ##### FUNCTION gsasl_md5 ##### -->
<para>

</para>

@in: 
@inlen: 
@out: 
@Returns: 


<!-- ##### FUNCTION gsasl_hmac_md5 ##### -->
<para>

</para>

@key: 
@keylen: 
@in: 
@inlen: 
@outhash: 
@Returns: 


<!-- ##### FUNCTION gsasl_free ##### -->
<para>

</para>

@ptr: 


