Liblinphone
5.3.0
|
Managing authentication: userid and passwords. More...
Typedefs | |
typedef struct _LinphoneAuthInfo | LinphoneAuthInfo |
Object holding authentication information. More... | |
Functions | |
void | linphone_core_add_auth_info (LinphoneCore *core, const LinphoneAuthInfo *info) |
Adds authentication information to the LinphoneCore. More... | |
void | linphone_core_remove_auth_info (LinphoneCore *core, const LinphoneAuthInfo *info) |
Removes an authentication information object. More... | |
const bctbx_list_t * | linphone_core_get_auth_info_list (const LinphoneCore *core) |
Returns an unmodifiable list of currently entered LinphoneAuthInfo. More... | |
const LinphoneAuthInfo * | linphone_core_find_auth_info (LinphoneCore *core, const char *realm, const char *username, const char *sip_domain) |
Find authentication info matching realm, username, domain criteria. More... | |
void | linphone_core_clear_all_auth_info (LinphoneCore *core) |
Clear all authentication information. More... | |
void | linphone_core_set_digest_authentication_policy (LinphoneCore *core, LinphoneDigestAuthenticationPolicy *policy) |
Setup a new digest authentication policy applicable for SIP and HTTP. More... | |
const LinphoneDigestAuthenticationPolicy * | linphone_core_get_digest_authentication_policy (const LinphoneCore *core) |
Get the current digest authentication policy applicable for SIP and HTTP. More... | |
MS2_DEPRECATED LinphoneAuthInfo * | linphone_core_create_auth_info (LinphoneCore *core, const char *username, const char *userid, const char *passwd, const char *ha1, const char *realm, const char *domain) |
Create an authentication information with default values from Linphone core. More... | |
LinphoneAuthInfo * | linphone_auth_info_new (const char *username, const char *userid, const char *passwd, const char *ha1, const char *realm, const char *domain) |
Safely cast a belle_sip_object_t into LinphoneAuthInfo. | |
LinphoneAuthInfo * | linphone_auth_info_new_for_algorithm (const char *username, const char *userid, const char *passwd, const char *ha1, const char *realm, const char *domain, const char *algorithm) |
LinphoneAuthInfo * | linphone_auth_info_clone (const LinphoneAuthInfo *auth_info) |
Instantiates a new auth info with values from source. More... | |
LinphoneAuthInfo * | linphone_auth_info_ref (LinphoneAuthInfo *auth_info) |
Take a reference on a LinphoneAuthInfo. More... | |
void | linphone_auth_info_unref (LinphoneAuthInfo *auth_info) |
Release a LinphoneAuthInfo. More... | |
void | linphone_auth_info_set_password (LinphoneAuthInfo *auth_info, const char *password) |
Sets the password. More... | |
void | linphone_auth_info_set_username (LinphoneAuthInfo *auth_info, const char *username) |
Sets the username. More... | |
void | linphone_auth_info_set_algorithm (LinphoneAuthInfo *auth_info, const char *algorithm) |
Sets the algorithm to use. More... | |
void | linphone_auth_info_set_available_algorithms (LinphoneAuthInfo *auth_info, const bctbx_list_t *algorithms) |
Sets the available algorithms list without testing unicity. More... | |
void | linphone_auth_info_add_available_algorithm (LinphoneAuthInfo *auth_info, const char *algorithm) |
Add an unique algorithm in the the available algorithms list : Algorithms that already exist will not be added. More... | |
void | linphone_auth_info_set_userid (LinphoneAuthInfo *auth_info, const char *user_id) |
Sets the user ID. More... | |
void | linphone_auth_info_set_realm (LinphoneAuthInfo *auth_info, const char *realm) |
Sets the realm. More... | |
void | linphone_auth_info_set_domain (LinphoneAuthInfo *auth_info, const char *domain) |
Sets the domain for which this authentication is valid. More... | |
void | linphone_auth_info_set_ha1 (LinphoneAuthInfo *auth_info, const char *ha1) |
Sets the ha1. More... | |
void | linphone_auth_info_set_tls_cert (LinphoneAuthInfo *auth_info, const char *tls_cert) |
Sets the TLS certificate. More... | |
void | linphone_auth_info_set_tls_key (LinphoneAuthInfo *auth_info, const char *tls_key) |
Sets the TLS key. More... | |
void | linphone_auth_info_set_tls_cert_path (LinphoneAuthInfo *auth_info, const char *tls_cert_path) |
Sets the TLS certificate path. More... | |
void | linphone_auth_info_set_tls_key_path (LinphoneAuthInfo *auth_info, const char *tls_key_path) |
Sets the TLS key path. More... | |
void | linphone_auth_info_clear_available_algorithms (LinphoneAuthInfo *auth_info) |
Remove all algorithms from the available algorithms list. More... | |
void | linphone_auth_info_set_tls_key_password (LinphoneAuthInfo *auth_info, const char *tls_key_password) |
const char * | linphone_auth_info_get_username (const LinphoneAuthInfo *auth_info) |
Gets the username. More... | |
const char * | linphone_auth_info_get_algorithm (const LinphoneAuthInfo *auth_info) |
Gets the algorithm. More... | |
bctbx_list_t * | linphone_auth_info_get_available_algorithms (const LinphoneAuthInfo *auth_info) |
Gets all available algorithms. More... | |
const char * | linphone_auth_info_get_password (const LinphoneAuthInfo *auth_info) |
Gets the password. More... | |
const char * | linphone_auth_info_get_userid (const LinphoneAuthInfo *auth_info) |
Gets the user id. More... | |
const char * | linphone_auth_info_get_realm (const LinphoneAuthInfo *auth_info) |
Gets the realm. More... | |
const char * | linphone_auth_info_get_domain (const LinphoneAuthInfo *auth_info) |
Gets the domain. More... | |
const char * | linphone_auth_info_get_ha1 (const LinphoneAuthInfo *auth_info) |
Gets the ha1. More... | |
const char * | linphone_auth_info_get_tls_cert (const LinphoneAuthInfo *auth_info) |
Gets the TLS certificate. More... | |
const char * | linphone_auth_info_get_tls_key (const LinphoneAuthInfo *auth_info) |
Gets the TLS key. More... | |
const char * | linphone_auth_info_get_tls_cert_path (const LinphoneAuthInfo *auth_info) |
Gets the TLS certificate path. More... | |
const char * | linphone_auth_info_get_tls_key_path (const LinphoneAuthInfo *auth_info) |
Gets the TLS key path. More... | |
const char * | linphone_auth_info_get_tls_key_password (const LinphoneAuthInfo *auth_info) |
bool_t | linphone_auth_info_is_equal_but_algorithms (const LinphoneAuthInfo *auth_info_1, const LinphoneAuthInfo *auth_info_2) |
Check if Authinfos are the same without taking account algorithms. More... | |
MS2_DEPRECATED void | linphone_auth_info_destroy (LinphoneAuthInfo *auth_info) |
Destroys the auth info. More... | |
void | linphone_auth_info_write_config (LinphoneConfig *config, LinphoneAuthInfo *auth_info, int pos) |
LinphoneAuthInfo * | linphone_auth_info_new_from_config_file (LinphoneConfig *config, int pos) |
MS2_DEPRECATED void | linphone_auth_info_set_passwd (LinphoneAuthInfo *auth_info, const char *passwd) |
Sets the password. More... | |
MS2_DEPRECATED const char * | linphone_auth_info_get_passwd (const LinphoneAuthInfo *auth_info) |
Gets the password. More... | |
LinphoneDigestAuthenticationPolicy * | linphone_digest_authentication_policy_ref (LinphoneDigestAuthenticationPolicy *policy) |
Acquire a reference. More... | |
void | linphone_digest_authentication_policy_unref (LinphoneDigestAuthenticationPolicy *policy) |
Release reference. More... | |
void | linphone_digest_authentication_policy_set_allow_md5 (LinphoneDigestAuthenticationPolicy *policy, bool_t value) |
Set whether MD5 hash algorithm is allowed. More... | |
bool_t | linphone_digest_authentication_policy_get_allow_md5 (const LinphoneDigestAuthenticationPolicy *policy) |
Get whether MD5 hash algorithm is allowed. More... | |
void | linphone_digest_authentication_policy_set_allow_no_qop (LinphoneDigestAuthenticationPolicy *policy, bool_t value) |
Set whether digest authentication without 'qop=auth' mode is allowed. More... | |
bool_t | linphone_digest_authentication_policy_get_allow_no_qop (const LinphoneDigestAuthenticationPolicy *policy) |
Get whether digest authentication without 'qop=auth' mode is allowed. More... | |
void * | linphone_digest_authentication_policy_get_user_data (const LinphoneDigestAuthenticationPolicy *policy) |
Retrieve the user pointer associated with the LinphoneDigestAuthenticationPolicy object. More... | |
void | linphone_digest_authentication_policy_set_user_data (LinphoneDigestAuthenticationPolicy *policy, void *user_data) |
Assign a user pointer to the LinphoneDigestAuthenticationPolicy object. More... | |
Managing authentication: userid and passwords.
typedef struct _LinphoneAuthInfo LinphoneAuthInfo |
Object holding authentication information.
In most case, authentication information consists of a username and password. If realm isn't set, it will be deduced automatically from the first authentication challenge as for the hash algorithm. Sometimes, a userid is required by the proxy and then domain can be useful to discriminate different credentials. You can also use this object if you need to use a client certificate.
Once created and filled, a LinphoneAuthInfo must be added to the LinphoneCore in order to become known and used automatically when needed. Use linphone_core_add_auth_info() for that purpose.
The LinphoneCore object can take the initiative to request authentication information when needed to the application through the authentication_requested() callback of it's LinphoneCoreCbs.
The application can respond to this information request later using linphone_core_add_auth_info(). This will unblock all pending authentication transactions and retry them with authentication headers.
void linphone_auth_info_add_available_algorithm | ( | LinphoneAuthInfo * | auth_info, |
const char * | algorithm | ||
) |
Add an unique algorithm in the the available algorithms list : Algorithms that already exist will not be added.
auth_info | The LinphoneAuthInfo object. |
algorithm | The algorithm to add. |
void linphone_auth_info_clear_available_algorithms | ( | LinphoneAuthInfo * | auth_info | ) |
Remove all algorithms from the available algorithms list.
auth_info | The LinphoneAuthInfo object. |
LinphoneAuthInfo* linphone_auth_info_clone | ( | const LinphoneAuthInfo * | auth_info | ) |
Instantiates a new auth info with values from source.
auth_info | The LinphoneAuthInfo object to be cloned. |
MS2_DEPRECATED void linphone_auth_info_destroy | ( | LinphoneAuthInfo * | auth_info | ) |
Destroys the auth info.
auth_info | The LinphoneAuthInfo object. |
const char* linphone_auth_info_get_algorithm | ( | const LinphoneAuthInfo * | auth_info | ) |
bctbx_list_t* linphone_auth_info_get_available_algorithms | ( | const LinphoneAuthInfo * | auth_info | ) |
Gets all available algorithms.
auth_info | The LinphoneAuthInfo object. |
const char* linphone_auth_info_get_domain | ( | const LinphoneAuthInfo * | auth_info | ) |
const char* linphone_auth_info_get_ha1 | ( | const LinphoneAuthInfo * | auth_info | ) |
MS2_DEPRECATED const char* linphone_auth_info_get_passwd | ( | const LinphoneAuthInfo * | auth_info | ) |
Gets the password.
auth_info | The LinphoneAuthInfo object. |
const char* linphone_auth_info_get_password | ( | const LinphoneAuthInfo * | auth_info | ) |
const char* linphone_auth_info_get_realm | ( | const LinphoneAuthInfo * | auth_info | ) |
const char* linphone_auth_info_get_tls_cert | ( | const LinphoneAuthInfo * | auth_info | ) |
Gets the TLS certificate.
auth_info | The LinphoneAuthInfo object. |
const char* linphone_auth_info_get_tls_cert_path | ( | const LinphoneAuthInfo * | auth_info | ) |
Gets the TLS certificate path.
auth_info | The LinphoneAuthInfo object. |
const char* linphone_auth_info_get_tls_key | ( | const LinphoneAuthInfo * | auth_info | ) |
const char* linphone_auth_info_get_tls_key_path | ( | const LinphoneAuthInfo * | auth_info | ) |
const char* linphone_auth_info_get_userid | ( | const LinphoneAuthInfo * | auth_info | ) |
const char* linphone_auth_info_get_username | ( | const LinphoneAuthInfo * | auth_info | ) |
bool_t linphone_auth_info_is_equal_but_algorithms | ( | const LinphoneAuthInfo * | auth_info_1, |
const LinphoneAuthInfo * | auth_info_2 | ||
) |
Check if Authinfos are the same without taking account algorithms.
auth_info_1 | The first LinphoneAuthInfo object. |
auth_info_2 | The second LinphoneAuthInfo object. |
LinphoneAuthInfo* linphone_auth_info_ref | ( | LinphoneAuthInfo * | auth_info | ) |
Take a reference on a LinphoneAuthInfo.
auth_info | The LinphoneAuthInfo object. |
void linphone_auth_info_set_algorithm | ( | LinphoneAuthInfo * | auth_info, |
const char * | algorithm | ||
) |
Sets the algorithm to use.
auth_info | The LinphoneAuthInfo object. |
algorithm | The algorithm. |
void linphone_auth_info_set_available_algorithms | ( | LinphoneAuthInfo * | auth_info, |
const bctbx_list_t * | algorithms | ||
) |
Sets the available algorithms list without testing unicity.
auth_info | The LinphoneAuthInfo object. |
algorithms | The available algorithms list. |
void linphone_auth_info_set_domain | ( | LinphoneAuthInfo * | auth_info, |
const char * | domain | ||
) |
Sets the domain for which this authentication is valid.
auth_info | The LinphoneAuthInfo object. |
domain | The domain. This should not be necessary because realm is supposed to be unique and sufficient. However, many SIP servers don't set realm correctly, then domain has to be used to distinguish between several SIP account bearing the same username. |
void linphone_auth_info_set_ha1 | ( | LinphoneAuthInfo * | auth_info, |
const char * | ha1 | ||
) |
Sets the ha1.
auth_info | The LinphoneAuthInfo object. |
ha1 | The ha1. |
MS2_DEPRECATED void linphone_auth_info_set_passwd | ( | LinphoneAuthInfo * | auth_info, |
const char * | passwd | ||
) |
Sets the password.
auth_info | The LinphoneAuthInfo object. |
passwd | The password. |
void linphone_auth_info_set_password | ( | LinphoneAuthInfo * | auth_info, |
const char * | password | ||
) |
Sets the password.
auth_info | The LinphoneAuthInfo object. |
password | The password. |
void linphone_auth_info_set_realm | ( | LinphoneAuthInfo * | auth_info, |
const char * | realm | ||
) |
Sets the realm.
auth_info | The LinphoneAuthInfo object. |
realm | The realm. |
void linphone_auth_info_set_tls_cert | ( | LinphoneAuthInfo * | auth_info, |
const char * | tls_cert | ||
) |
Sets the TLS certificate.
auth_info | The LinphoneAuthInfo object. |
tls_cert | The TLS certificate. |
void linphone_auth_info_set_tls_cert_path | ( | LinphoneAuthInfo * | auth_info, |
const char * | tls_cert_path | ||
) |
Sets the TLS certificate path.
auth_info | The LinphoneAuthInfo object. |
tls_cert_path | The TLS certificate path. |
void linphone_auth_info_set_tls_key | ( | LinphoneAuthInfo * | auth_info, |
const char * | tls_key | ||
) |
Sets the TLS key.
auth_info | The LinphoneAuthInfo object. |
tls_key | The TLS key. |
void linphone_auth_info_set_tls_key_path | ( | LinphoneAuthInfo * | auth_info, |
const char * | tls_key_path | ||
) |
Sets the TLS key path.
auth_info | The LinphoneAuthInfo object. |
tls_key_path | The TLS key path. |
void linphone_auth_info_set_userid | ( | LinphoneAuthInfo * | auth_info, |
const char * | user_id | ||
) |
Sets the user ID.
auth_info | The LinphoneAuthInfo object. |
user_id | The userid. |
void linphone_auth_info_set_username | ( | LinphoneAuthInfo * | auth_info, |
const char * | username | ||
) |
Sets the username.
auth_info | The LinphoneAuthInfo object. |
username | The username. |
void linphone_auth_info_unref | ( | LinphoneAuthInfo * | auth_info | ) |
Release a LinphoneAuthInfo.
auth_info | The LinphoneAuthInfo object. |
void linphone_core_add_auth_info | ( | LinphoneCore * | core, |
const LinphoneAuthInfo * | info | ||
) |
Adds authentication information to the LinphoneCore.
That piece of information will be used during all SIP transactions that require authentication.
core | The LinphoneCore. |
info | The LinphoneAuthInfo to add. |
void linphone_core_clear_all_auth_info | ( | LinphoneCore * | core | ) |
Clear all authentication information.
core | the LinphoneCore |
MS2_DEPRECATED LinphoneAuthInfo* linphone_core_create_auth_info | ( | LinphoneCore * | core, |
const char * | username, | ||
const char * | userid, | ||
const char * | passwd, | ||
const char * | ha1, | ||
const char * | realm, | ||
const char * | domain | ||
) |
Create an authentication information with default values from Linphone core.
core | LinphoneCore object |
username | String containing the username part of the authentication credentials |
userid | String containing the username to use to calculate the authentication digest (optional) |
passwd | String containing the password of the authentication credentials (optional, either passwd or ha1 must be set) |
ha1 | String containing a ha1 hash of the password (optional, either passwd or ha1 must be set) |
realm | String used to discriminate different SIP authentication domains (optional) |
domain | String containing the SIP domain for which this authentication information is valid, if it has to be restricted for a single SIP domain. |
const LinphoneAuthInfo* linphone_core_find_auth_info | ( | LinphoneCore * | core, |
const char * | realm, | ||
const char * | username, | ||
const char * | sip_domain | ||
) |
Find authentication info matching realm, username, domain criteria.
First of all, (realm,username) pair are searched. If multiple results (which should not happen because realm are supposed to be unique), then domain is added to the search.
core | the LinphoneCore |
realm | the authentication 'realm' (optional) |
username | the SIP username to be authenticated (mandatory) |
sip_domain | the SIP domain name (optional) |
const bctbx_list_t* linphone_core_get_auth_info_list | ( | const LinphoneCore * | core | ) |
Returns an unmodifiable list of currently entered LinphoneAuthInfo.
core | The LinphoneCore object. |
const LinphoneDigestAuthenticationPolicy* linphone_core_get_digest_authentication_policy | ( | const LinphoneCore * | core | ) |
Get the current digest authentication policy applicable for SIP and HTTP.
Get the current digest authentication policy applicable for SIP and HTTP.
core | the LinphoneCore |
void linphone_core_remove_auth_info | ( | LinphoneCore * | core, |
const LinphoneAuthInfo * | info | ||
) |
Removes an authentication information object.
core | The LinphoneCore from which the LinphoneAuthInfo will be removed. |
info | The LinphoneAuthInfo to remove. |
void linphone_core_set_digest_authentication_policy | ( | LinphoneCore * | core, |
LinphoneDigestAuthenticationPolicy * | policy | ||
) |
Setup a new digest authentication policy applicable for SIP and HTTP.
Setup a new digest authentication policy applicable for SIP and HTTP.
core | the LinphoneCore |
policy | a LinphoneDigestAuthenticationPolicy |
bool_t linphone_digest_authentication_policy_get_allow_md5 | ( | const LinphoneDigestAuthenticationPolicy * | policy | ) |
Get whether MD5 hash algorithm is allowed.
The default value is TRUE, in order to maximize interoperability. MD5 is considered as a weak algorithm, some might want to disable it, in which case SHA-256 will be required to perform digest authentication.
policy | The LinphoneDigestAuthenticationPolicy object. |
bool_t linphone_digest_authentication_policy_get_allow_no_qop | ( | const LinphoneDigestAuthenticationPolicy * | policy | ) |
Get whether digest authentication without 'qop=auth' mode is allowed.
The default value is TRUE, in order to maximize interoperability. 'qop=auth' mode enforces security thanks to the use of a client nonce, which makes password brute forcing more difficult. When set to FALSE, linphone will refuse to authenticate to servers that are not implementing the qop=auth mode.
policy | The LinphoneDigestAuthenticationPolicy object. |
void* linphone_digest_authentication_policy_get_user_data | ( | const LinphoneDigestAuthenticationPolicy * | policy | ) |
Retrieve the user pointer associated with the LinphoneDigestAuthenticationPolicy object.
policy | The LinphoneDigestAuthenticationPolicy object. |
LinphoneDigestAuthenticationPolicy* linphone_digest_authentication_policy_ref | ( | LinphoneDigestAuthenticationPolicy * | policy | ) |
Acquire a reference.
policy | The LinphoneDigestAuthenticationPolicy object. |
void linphone_digest_authentication_policy_set_allow_md5 | ( | LinphoneDigestAuthenticationPolicy * | policy, |
bool_t | value | ||
) |
Set whether MD5 hash algorithm is allowed.
The default value is TRUE, in order to maximize interoperability. MD5 is considered as a weak algorithm, some might want to disable it, in which case SHA-256 will be required to perform digest authentication.
policy | The LinphoneDigestAuthenticationPolicy object. |
value | a boolean value. |
void linphone_digest_authentication_policy_set_allow_no_qop | ( | LinphoneDigestAuthenticationPolicy * | policy, |
bool_t | value | ||
) |
Set whether digest authentication without 'qop=auth' mode is allowed.
The default value is TRUE, in order to maximize interoperability. 'qop=auth' mode enforces security thanks to the use of a client nonce, which makes password brute forcing more difficult. When set to FALSE, linphone will refuse to authenticate to servers that are not implementing the qop=auth mode.
policy | The LinphoneDigestAuthenticationPolicy object. |
value | a boolean value. |
void linphone_digest_authentication_policy_set_user_data | ( | LinphoneDigestAuthenticationPolicy * | policy, |
void * | user_data | ||
) |
Assign a user pointer to the LinphoneDigestAuthenticationPolicy object.
policy | The LinphoneDigestAuthenticationPolicy object. |
user_data | The user pointer. |
void linphone_digest_authentication_policy_unref | ( | LinphoneDigestAuthenticationPolicy * | policy | ) |
Release reference.
policy | The LinphoneDigestAuthenticationPolicy object. |