gsasl
1.8.0
|
#include <stdio.h>
#include <stddef.h>
#include <unistd.h>
#include <gsasl-mech.h>
#include <gsasl-compat.h>
Go to the source code of this file.
#define GSASL_VERSION "1.8.0" |
GSASL_VERSION
Pre-processor symbol with a string that describe the header file version number. Used together with gsasl_check_version() to verify header file and run-time library consistency.
#define GSASL_VERSION_MAJOR 1 |
#define GSASL_VERSION_MINOR 8 |
#define GSASL_VERSION_NUMBER 0x010800 |
#define GSASL_VERSION_PATCH 0 |
typedef int(* Gsasl_callback_function)(Gsasl *ctx, Gsasl_session *sctx, Gsasl_property prop) |
Gsasl_callback_function:
ctx | libgsasl handle. |
sctx | session handle, may be NULL. |
prop | enumerated value of Gsasl_property type. |
Prototype of function that the application should implement. Use gsasl_callback_set() to inform the library about your callback function.
It is called by the SASL library when it need some information from the application. Depending on the value of , it should either set some property (e.g., username or password) using gsasl_property_set(), or it should extract some properties (e.g., authentication and authorization identities) using gsasl_property_fast() and use them to make a policy decision, perhaps returning GSASL_AUTHENTICATION_ERROR or GSASL_OK depending on whether the policy permitted the operation.
Return value: Any valid return code, the interpretation of which depend on the value.
Since: 0.2.0
typedef struct Gsasl_session Gsasl_session |
anonymous enum |
enum Gsasl_cipher |
Gsasl_cipher:
GSASL_CIPHER_DES | Cipher DES. |
GSASL_CIPHER_3DES | Cipher 3DES. |
GSASL_CIPHER_RC4 | Cipher RC4. |
GSASL_CIPHER_RC4_40 | Cipher RC4 with 40-bit keys. |
GSASL_CIPHER_RC4_56 | Cipher RC4 with 56-bit keys. |
GSASL_CIPHER_AES | Cipher AES. |
Encryption types (DIGEST-MD5) for confidentiality services of application data. We recommend that you use TLS instead as it is generally more secure and have better chance of working.
enum Gsasl_property |
Gsasl_property:
GSASL_AUTHID | Authentication identity (username). |
GSASL_AUTHZID | Authorization identity. |
GSASL_PASSWORD | Password. |
GSASL_ANONYMOUS_TOKEN | Anonymous identifier. |
GSASL_SERVICE | Service name |
GSASL_HOSTNAME | Host name. |
GSASL_GSSAPI_DISPLAY_NAME | GSS-API credential principal name. |
GSASL_PASSCODE | SecurID passcode. |
GSASL_SUGGESTED_PIN | SecurID suggested PIN. |
GSASL_PIN | SecurID PIN. |
GSASL_REALM | User realm. |
GSASL_DIGEST_MD5_HASHED_PASSWORD | Pre-computed hashed DIGEST-MD5 password, to avoid storing passwords in the clear. |
GSASL_QOPS | Set of quality-of-protection values. |
GSASL_QOP | Quality-of-protection value. |
GSASL_SCRAM_ITER | Number of iterations in password-to-key hashing. |
GSASL_SCRAM_SALT | Salt for password-to-key hashing. |
GSASL_SCRAM_SALTED_PASSWORD | Pre-computed salted SCRAM key, to avoid re-computation and storing passwords in the clear. |
GSASL_CB_TLS_UNIQUE | Base64 encoded tls-unique channel binding. |
GSASL_SAML20_IDP_IDENTIFIER | SAML20 user IdP URL. |
GSASL_SAML20_REDIRECT_URL | SAML 2.0 URL to access in browser. |
GSASL_OPENID20_REDIRECT_URL | OpenID 2.0 URL to access in browser. |
GSASL_OPENID20_OUTCOME_DATA | OpenID 2.0 authentication outcome data. |
GSASL_SAML20_AUTHENTICATE_IN_BROWSER | Request to perform SAML 2.0 authentication in browser. |
GSASL_OPENID20_AUTHENTICATE_IN_BROWSER | Request to perform OpenID 2.0 authentication in browser. |
GSASL_VALIDATE_SIMPLE | Request for simple validation. |
GSASL_VALIDATE_EXTERNAL | Request for validation of EXTERNAL. |
GSASL_VALIDATE_ANONYMOUS | Request for validation of ANONYMOUS. |
GSASL_VALIDATE_GSSAPI | Request for validation of GSSAPI/GS2. |
GSASL_VALIDATE_SECURID | Reqest for validation of SecurID. |
GSASL_VALIDATE_SAML20 | Reqest for validation of SAML20. |
GSASL_VALIDATE_OPENID20 | Reqest for validation of OpenID 2.0 login. |
Callback/property types.
enum Gsasl_qop |
Gsasl_qop:
GSASL_QOP_AUTH | Authentication only. |
GSASL_QOP_AUTH_INT | Authentication and integrity. |
GSASL_QOP_AUTH_CONF | Authentication, integrity and confidentiality. |
Quality of Protection types (DIGEST-MD5 and GSSAPI). The integrity and confidentiality values is about application data wrapping. We recommend that you use with TLS as that combination is generally more secure and have better chance of working than the integrity/confidentiality layers of SASL.
enum Gsasl_rc |
Gsasl_rc:
GSASL_OK | Successful return code, guaranteed to be always 0. |
GSASL_NEEDS_MORE | Mechanism expects another round-trip. |
GSASL_UNKNOWN_MECHANISM | Application requested an unknown mechanism. |
GSASL_MECHANISM_CALLED_TOO_MANY_TIMES | Application requested too many round trips from mechanism. |
GSASL_MALLOC_ERROR | Memory allocation failed. |
GSASL_BASE64_ERROR | Base64 encoding/decoding failed. |
GSASL_CRYPTO_ERROR | Cryptographic error. |
GSASL_SASLPREP_ERROR | Failed to prepare internationalized string. |
GSASL_MECHANISM_PARSE_ERROR | Mechanism could not parse input. |
GSASL_AUTHENTICATION_ERROR | Authentication has failed. |
GSASL_INTEGRITY_ERROR | Application data integrity check failed. |
GSASL_NO_CLIENT_CODE | Library was built with client functionality. |
GSASL_NO_SERVER_CODE | Library was built with server functionality. |
GSASL_NO_CALLBACK | Application did not provide a callback. |
GSASL_NO_ANONYMOUS_TOKEN | Could not get required anonymous token. |
GSASL_NO_AUTHID | Could not get required authentication identity (username). |
GSASL_NO_AUTHZID | Could not get required authorization identity. |
GSASL_NO_PASSWORD | Could not get required password. |
GSASL_NO_PASSCODE | Could not get required SecurID PIN. |
GSASL_NO_PIN | Could not get required SecurID PIN. |
GSASL_NO_SERVICE | Could not get required service name. |
GSASL_NO_HOSTNAME | Could not get required hostname. |
GSASL_NO_CB_TLS_UNIQUE | Could not get required tls-unique CB. |
GSASL_NO_SAML20_IDP_IDENTIFIER | Could not get required SAML IdP. |
GSASL_NO_SAML20_REDIRECT_URL | Could not get required SAML redirect URL. |
GSASL_NO_OPENID20_REDIRECT_URL | Could not get required OpenID redirect URL. |
GSASL_GSSAPI_RELEASE_BUFFER_ERROR | GSS-API library call error. |
GSASL_GSSAPI_IMPORT_NAME_ERROR | GSS-API library call error. |
GSASL_GSSAPI_INIT_SEC_CONTEXT_ERROR | GSS-API library call error. |
GSASL_GSSAPI_ACCEPT_SEC_CONTEXT_ERROR | GSS-API library call error. |
GSASL_GSSAPI_UNWRAP_ERROR | GSS-API library call error. |
GSASL_GSSAPI_WRAP_ERROR | GSS-API library call error. |
GSASL_GSSAPI_ACQUIRE_CRED_ERROR | GSS-API library call error. |
GSASL_GSSAPI_DISPLAY_NAME_ERROR | GSS-API library call error. |
GSASL_GSSAPI_UNSUPPORTED_PROTECTION_ERROR | An unsupported quality-of-protection layer was requeted. |
GSASL_GSSAPI_ENCAPSULATE_TOKEN_ERROR | GSS-API library call error. |
GSASL_GSSAPI_DECAPSULATE_TOKEN_ERROR | GSS-API library call error. |
GSASL_GSSAPI_INQUIRE_MECH_FOR_SASLNAME_ERROR | GSS-API library call error. |
GSASL_GSSAPI_TEST_OID_SET_MEMBER_ERROR | GSS-API library call error. |
GSASL_GSSAPI_RELEASE_OID_SET_ERROR | GSS-API library call error. |
GSASL_KERBEROS_V5_INIT_ERROR | Init error in KERBEROS_V5. |
GSASL_KERBEROS_V5_INTERNAL_ERROR | General error in KERBEROS_V5. |
GSASL_SHISHI_ERROR | Same as GSASL_KERBEROS_V5_INTERNAL_ERROR. |
GSASL_SECURID_SERVER_NEED_ADDITIONAL_PASSCODE | SecurID mechanism needs an additional passcode. |
GSASL_SECURID_SERVER_NEED_NEW_PIN | SecurID mechanism needs an new PIN. |
Error codes for library functions.
enum Gsasl_saslprep_flags |
Gsasl_saslprep_flags:
GSASL_ALLOW_UNASSIGNED | Allow unassigned code points. |
Flags for the SASLprep function, see gsasl_saslprep(). For background, see the GNU Libidn documentation.
GSASL_API int gsasl_base64_from | ( | const char * | in, |
size_t | inlen, | ||
char ** | out, | ||
size_t * | outlen | ||
) |
gsasl_base64_from:
in | input byte array |
inlen | size of input byte array |
out | pointer to newly allocated output byte array |
outlen | pointer to size of newly allocated output byte array |
Decode Base64 data. The buffer must be deallocated by the caller.
Return value: Returns GSASL_OK on success, GSASL_BASE64_ERROR if input was invalid, and GSASL_MALLOC_ERROR on memory allocation errors.
Since: 0.2.2
GSASL_API int gsasl_base64_to | ( | const char * | in, |
size_t | inlen, | ||
char ** | out, | ||
size_t * | outlen | ||
) |
gsasl_base64_to:
in | input byte array |
inlen | size of input byte array |
out | pointer to newly allocated output byte array |
outlen | pointer to size of newly allocated output byte array |
Encode data as base64. The string is zero terminated, and holds the length excluding the terminating zero. The buffer must be deallocated by the caller.
Return value: Returns GSASL_OK on success, or GSASL_MALLOC_ERROR if input was too large or memory allocation fail.
Since: 0.2.2
GSASL_API int gsasl_callback | ( | Gsasl * | ctx, |
Gsasl_session * | sctx, | ||
Gsasl_property | prop | ||
) |
gsasl_callback:
ctx | handle received from gsasl_init(), may be NULL to derive it from . |
sctx | session handle. |
prop | enumerated value of Gsasl_property type. |
Invoke the application callback. The value indicate what the callback is expected to do. For example, for GSASL_ANONYMOUS_TOKEN, the function is expected to invoke gsasl_property_set(, GSASL_ANONYMOUS_TOKEN, "token") where "token" is the anonymous token the application wishes the SASL mechanism to use. See the manual for the meaning of all parameters.
Note that if no callback has been set by the application, but the obsolete callback interface has been used, this function will translate the old callback interface into the new. This interface should be sufficient to invoke all callbacks, both new and old.
Return value: Returns whatever the application callback returns, or GSASL_NO_CALLBACK if no application was known.
Since: 0.2.0
Definition at line 75 of file callback.c.
GSASL_API void* gsasl_callback_hook_get | ( | Gsasl * | ctx | ) |
gsasl_callback_hook_get:
ctx | libgsasl handle. |
Retrieve application specific data from libgsasl handle.
The application data is set using gsasl_callback_hook_set(). This is normally used by the application to maintain a global state between the main program and callbacks.
Return value: Returns the application specific data, or NULL.
Since: 0.2.0
Definition at line 128 of file callback.c.
GSASL_API void gsasl_callback_hook_set | ( | Gsasl * | ctx, |
void * | hook | ||
) |
gsasl_callback_hook_set:
ctx | libgsasl handle. |
hook | opaque pointer to application specific 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_callback_hook_get(). This is normally used by the application to maintain a global state between the main program and callbacks.
Since: 0.2.0
Definition at line 108 of file callback.c.
GSASL_API void gsasl_callback_set | ( | Gsasl * | ctx, |
Gsasl_callback_function | cb | ||
) |
gsasl_callback_set:
ctx | handle received from gsasl_init(). |
cb | pointer to function implemented by application. |
Store the pointer to the application provided callback in the library handle. The callback will be used, via gsasl_callback(), by mechanisms to discover various parameters (such as username and passwords). The callback function will be called with a Gsasl_property value indicating the requested behaviour. For example, for GSASL_ANONYMOUS_TOKEN, the function is expected to invoke gsasl_property_set(, GSASL_ANONYMOUS_TOKEN, "token") where "token" is the anonymous token the application wishes the SASL mechanism to use. See the manual for the meaning of all parameters.
Since: 0.2.0
Definition at line 44 of file callback.c.
GSASL_API const char* gsasl_check_version | ( | const char * | req_version | ) |
gsasl_check_version:
req_version | version string to compare with, or NULL. |
Check GNU SASL Library version.
See GSASL_VERSION for a suitable string.
This function is one of few in the library that can be used without a successful call to gsasl_init().
Return value: Check that the version of the library is at minimum the one given as a string in 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.
GSASL_API int gsasl_client_mechlist | ( | Gsasl * | ctx, |
char ** | out | ||
) |
gsasl_client_mechlist:
ctx | libgsasl handle. |
out | newly allocated output character array. |
Return a newly allocated string containing SASL names, separated by space, of mechanisms supported by the libgsasl client. is allocated by this function, and it is the responsibility of caller to deallocate it.
Return value: Returns GSASL_OK if successful, or error code.
Definition at line 74 of file listmech.c.
GSASL_API int gsasl_client_start | ( | Gsasl * | ctx, |
const char * | mech, | ||
Gsasl_session ** | sctx | ||
) |
gsasl_client_start:
ctx | libgsasl handle. |
mech | name of SASL mechanism. |
sctx | pointer to client handle. |
This functions initiates a client SASL authentication. This function must be called before any other gsasl_client_*() function is called.
Return value: Returns GSASL_OK if successful, or error code.
GSASL_API const char* gsasl_client_suggest_mechanism | ( | Gsasl * | ctx, |
const char * | mechlist | ||
) |
gsasl_client_suggest_mechanism:
ctx | libgsasl handle. |
mechlist | input character array with SASL mechanism names, separated by invalid characters (e.g. SPC). |
Given a list of mechanisms, suggest which to use.
Return value: Returns name of "best" SASL mechanism supported by the libgsasl client which is present in the input string, or NULL if no supported mechanism is found.
GSASL_API int gsasl_client_support_p | ( | Gsasl * | ctx, |
const char * | name | ||
) |
gsasl_client_support_p:
ctx | libgsasl handle. |
name | name of SASL mechanism. |
Decide whether there is client-side support for a specified mechanism.
Return value: Returns 1 if the libgsasl client supports the named mechanism, otherwise 0.
Definition at line 49 of file supportp.c.
GSASL_API int gsasl_decode | ( | Gsasl_session * | sctx, |
const char * | input, | ||
size_t | input_len, | ||
char ** | output, | ||
size_t * | output_len | ||
) |
gsasl_decode:
sctx | libgsasl session handle. |
input | input byte array. |
input_len | size of input byte array. |
output | newly allocated output byte array. |
output_len | size of output byte array. |
Decode data according to negotiated SASL mechanism. This might mean that data is integrity or privacy protected.
The buffer is allocated by this function, and it is the responsibility of caller to deallocate it by calling free().
Return value: Returns GSASL_OK if encoding was successful, otherwise an error code.
GSASL_API void gsasl_done | ( | Gsasl * | ctx | ) |
GSASL_API int gsasl_encode | ( | Gsasl_session * | sctx, |
const char * | input, | ||
size_t | input_len, | ||
char ** | output, | ||
size_t * | output_len | ||
) |
gsasl_encode:
sctx | libgsasl session handle. |
input | input byte array. |
input_len | size of input byte array. |
output | newly allocated output byte array. |
output_len | size of output byte array. |
Encode data according to negotiated SASL mechanism. This might mean that data is integrity or privacy protected.
The buffer is allocated by this function, and it is the responsibility of caller to deallocate it by calling free().
Return value: Returns GSASL_OK if encoding was successful, otherwise an error code.
GSASL_API void gsasl_finish | ( | Gsasl_session * | sctx | ) |
GSASL_API void gsasl_free | ( | void * | ptr | ) |
gsasl_free:
ptr | memory pointer |
Invoke free() to de-allocate memory pointer. Typically used on strings allocated by other libgsasl functions.
This is useful on Windows where libgsasl is linked to one CRT and the application is linked to another CRT. Then malloc/free will not use the same heap. This happens if you build libgsasl using mingw32 and the application with Visual Studio.
Since: 0.2.19
Definition at line 41 of file src/free.c.
GSASL_API int gsasl_hmac_md5 | ( | const char * | key, |
size_t | keylen, | ||
const char * | in, | ||
size_t | inlen, | ||
char * | outhash[16] | ||
) |
gsasl_hmac_md5:
key | input character array with key to use. |
keylen | length of input character array with key to use. |
in | input character array of data to hash. |
inlen | length of input character array of data to hash. |
outhash | newly allocated character array with keyed hash of data. |
Compute keyed checksum of data using HMAC-MD5. The buffer must be deallocated by the caller.
Return value: Returns GSASL_OK iff successful.
GSASL_API int gsasl_hmac_sha1 | ( | const char * | key, |
size_t | keylen, | ||
const char * | in, | ||
size_t | inlen, | ||
char * | outhash[20] | ||
) |
gsasl_hmac_sha1:
key | input character array with key to use. |
keylen | length of input character array with key to use. |
in | input character array of data to hash. |
inlen | length of input character array of data to hash. |
outhash | newly allocated character array with keyed hash of data. |
Compute keyed checksum of data using HMAC-SHA1. The buffer must be deallocated by the caller.
Return value: Returns GSASL_OK iff successful.
Since: 1.3
GSASL_API int gsasl_init | ( | Gsasl ** | ctx | ) |
gsasl_init:
ctx | pointer to libgsasl handle. |
This functions initializes libgsasl. The handle pointed to by ctx is valid for use with other libgsasl functions iff this function is successful. It also register all builtin SASL mechanisms, using gsasl_register().
Return value: GSASL_OK iff successful, otherwise GSASL_MALLOC_ERROR.
GSASL_API int gsasl_md5 | ( | const char * | in, |
size_t | inlen, | ||
char * | out[16] | ||
) |
gsasl_md5:
in | input character array of data to hash. |
inlen | length of input character array of data to hash. |
out | newly allocated character array with hash of data. |
Compute hash of data using MD5. The buffer must be deallocated by the caller.
Return value: Returns GSASL_OK iff successful.
GSASL_API const char* gsasl_mechanism_name | ( | Gsasl_session * | sctx | ) |
gsasl_mechanism_name:
sctx | libgsasl session handle. |
This function returns the name of the SASL mechanism used in the session.
Return value: Returns a zero terminated character array with the name of the SASL mechanism, or NULL if not known.
Since: 0.2.28
Definition at line 38 of file mechname.c.
GSASL_API int gsasl_nonce | ( | char * | data, |
size_t | datalen | ||
) |
GSASL_API const char* gsasl_property_fast | ( | Gsasl_session * | sctx, |
Gsasl_property | prop | ||
) |
gsasl_property_fast:
sctx | session handle. |
prop | enumerated value of Gsasl_property type, indicating the type of data in . |
Retrieve the data stored in the session handle for given property .
The pointer is to live data, and must not be deallocated or modified in any way.
This function will not invoke the application callback.
Return value: Return property value, if known, or NULL if no value known.
Since: 0.2.0
Definition at line 218 of file property.c.
GSASL_API const char* gsasl_property_get | ( | Gsasl_session * | sctx, |
Gsasl_property | prop | ||
) |
gsasl_property_get:
sctx | session handle. |
prop | enumerated value of Gsasl_property type, indicating the type of data in . |
Retrieve the data stored in the session handle for given property , possibly invoking the application callback to get the value.
The pointer is to live data, and must not be deallocated or modified in any way.
This function will invoke the application callback, using gsasl_callback(), when a property value is not known.
If no value is known, and no callback is specified or if the callback fail to return data, and if any obsolete callback functions has been set by the application, this function will try to call these obsolete callbacks, and store the returned data as the corresponding property. This behaviour of this function will be removed when the obsolete callback interfaces are removed.
Return value: Return data for property, or NULL if no value known.
Since: 0.2.0
Definition at line 255 of file property.c.
GSASL_API void gsasl_property_set | ( | Gsasl_session * | sctx, |
Gsasl_property | prop, | ||
const char * | data | ||
) |
gsasl_property_set:
sctx | session handle. |
prop | enumerated value of Gsasl_property type, indicating the type of data in . |
data | zero terminated character string to store. |
Make a copy of and store it in the session handle for the indicated property .
You can immediately deallocate after calling this function, without affecting the data stored in the session handle.
Since: 0.2.0
Definition at line 150 of file property.c.
GSASL_API void gsasl_property_set_raw | ( | Gsasl_session * | sctx, |
Gsasl_property | prop, | ||
const char * | data, | ||
size_t | len | ||
) |
gsasl_property_set_raw:
sctx | session handle. |
prop | enumerated value of Gsasl_property type, indicating the type of data in . |
data | character string to store. |
len | length of character string to store. |
Make a copy of sized and store a zero terminated version of it in the session handle for the indicated property .
You can immediately deallocate after calling this function, without affecting the data stored in the session handle.
Except for the length indicator, this function is identical to gsasl_property_set.
Since: 0.2.0
Definition at line 176 of file property.c.
GSASL_API int gsasl_random | ( | char * | data, |
size_t | datalen | ||
) |
GSASL_API int gsasl_saslprep | ( | const char * | in, |
Gsasl_saslprep_flags | flags, | ||
char ** | out, | ||
int * | stringpreprc | ||
) |
gsasl_saslprep:
in | a UTF-8 encoded string. |
flags | any SASLprep flag, e.g., GSASL_ALLOW_UNASSIGNED. |
out | on exit, contains newly allocated output string. |
stringpreprc | if non-NULL, will hold precise stringprep return code. |
Prepare string using SASLprep. On success, the variable must be deallocated by the caller.
Return value: Returns GSASL_OK on success, or GSASL_SASLPREP_ERROR on error.
Since: 0.2.3
Definition at line 48 of file saslprep.c.
GSASL_API int gsasl_server_mechlist | ( | Gsasl * | ctx, |
char ** | out | ||
) |
gsasl_server_mechlist:
ctx | libgsasl handle. |
out | newly allocated output character array. |
Return a newly allocated string containing SASL names, separated by space, of mechanisms supported by the libgsasl server. is allocated by this function, and it is the responsibility of caller to deallocate it.
Return value: Returns GSASL_OK if successful, or error code.
Definition at line 93 of file listmech.c.
GSASL_API int gsasl_server_start | ( | Gsasl * | ctx, |
const char * | mech, | ||
Gsasl_session ** | sctx | ||
) |
gsasl_server_start:
ctx | libgsasl handle. |
mech | name of SASL mechanism. |
sctx | pointer to server handle. |
This functions initiates a server SASL authentication. This function must be called before any other gsasl_server_*() function is called.
Return value: Returns GSASL_OK if successful, or error code.
GSASL_API int gsasl_server_support_p | ( | Gsasl * | ctx, |
const char * | name | ||
) |
gsasl_server_support_p:
ctx | libgsasl handle. |
name | name of SASL mechanism. |
Decide whether there is server-side support for a specified mechanism.
Return value: Returns 1 if the libgsasl server supports the named mechanism, otherwise 0.
Definition at line 66 of file supportp.c.
GSASL_API void* gsasl_session_hook_get | ( | Gsasl_session * | sctx | ) |
gsasl_session_hook_get:
sctx | libgsasl session handle. |
Retrieve application specific data from libgsasl session handle.
The application data is set using gsasl_callback_hook_set(). This is normally used by the application to maintain a per-session state between the main program and callbacks.
Return value: Returns the application specific data, or NULL.
Since: 0.2.14
Definition at line 168 of file callback.c.
GSASL_API void gsasl_session_hook_set | ( | Gsasl_session * | sctx, |
void * | hook | ||
) |
gsasl_session_hook_set:
sctx | libgsasl session handle. |
hook | opaque pointer to application specific data. |
Store application specific data in the libgsasl session handle.
The application data can be later (for instance, inside a callback) be retrieved by calling gsasl_session_hook_get(). This is normally used by the application to maintain a per-session state between the main program and callbacks.
Since: 0.2.14
Definition at line 148 of file callback.c.
GSASL_API int gsasl_sha1 | ( | const char * | in, |
size_t | inlen, | ||
char * | out[20] | ||
) |
gsasl_sha1:
in | input character array of data to hash. |
inlen | length of input character array of data to hash. |
out | newly allocated character array with hash of data. |
Compute hash of data using SHA1. The buffer must be deallocated by the caller.
Return value: Returns GSASL_OK iff successful.
Since: 1.3
GSASL_API int gsasl_simple_getpass | ( | const char * | filename, |
const char * | username, | ||
char ** | key | ||
) |
gsasl_simple_getpass:
filename | filename of file containing passwords. |
username | username string. |
key | newly allocated output character array. |
Retrieve password for user from specified file. The buffer contain the password if this function is successful. The caller is responsible for deallocating it.
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 "usernameTABpassword". This function removes CR and LF at the end of lines before processing. TAB, CR, and LF denote ASCII values 9, 13, and 10, respectively.
Return value: Return GSASL_OK if output buffer contains the password, GSASL_AUTHENTICATION_ERROR if the user could not be found, or other error code.
GSASL_API int gsasl_step | ( | Gsasl_session * | sctx, |
const char * | input, | ||
size_t | input_len, | ||
char ** | output, | ||
size_t * | output_len | ||
) |
gsasl_step:
sctx | libgsasl session handle. |
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. |
Perform one step of SASL authentication. This reads data from the other end (from and ), processes it (potentially invoking callbacks to the application), and writes data to server (into newly allocated variable and that indicate the length of ).
The contents of the 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 buffer is allocated by this function, and it is the responsibility of caller to deallocate it by calling free ().
Return value: Returns GSASL_OK if authenticated terminated successfully, GSASL_NEEDS_MORE if more data is needed, or error code.
GSASL_API int gsasl_step64 | ( | Gsasl_session * | sctx, |
const char * | b64input, | ||
char ** | b64output | ||
) |
gsasl_step64:
sctx | libgsasl client handle. |
b64input | input base64 encoded byte array. |
b64output | newly allocated output base64 encoded byte array. |
This is a simple wrapper around gsasl_step() that base64 decodes the input and base64 encodes the output.
The contents of the 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 buffer is allocated by this function, and it is the responsibility of caller to deallocate it by calling free ().
Return value: Returns GSASL_OK if authenticated terminated successfully, GSASL_NEEDS_MORE if more data is needed, or error code.
GSASL_API const char* gsasl_strerror | ( | int | err | ) |
gsasl_strerror:
err | libgsasl error code |
Convert return code to human readable string explanation of the reason for the particular error code.
This string can be used to output a diagnostic message to the user.
This function is one of few in the library that can be used without a successful call to gsasl_init().
Return value: Returns a pointer to a statically allocated string containing an explanation of the error code .
GSASL_API const char* gsasl_strerror_name | ( | int | err | ) |
gsasl_strerror_name:
err | libgsasl error code |
Convert return code to human readable string representing the error code symbol itself. For example, gsasl_strerror_name(GSASL_OK) returns the string "GSASL_OK".
This string can be used to output a diagnostic message to the user.
This function is one of few in the library that can be used without a successful call to gsasl_init().
Return value: Returns a pointer to a statically allocated string containing a string version of the error code , or NULL if the error code is not known.
Since: 0.2.29
GSASL_API const char* GSASL_VALID_MECHANISM_CHARACTERS |