Commit 05cf0889 authored by Sylvain Berfini's avatar Sylvain Berfini 🎩

Revert to old auth_info_requested callback and added a new one instead

parent b98e8518
......@@ -109,7 +109,7 @@ static char **linephonec_readline_completion(const char *text,
#endif
/* These are callback for linphone core */
static void linphonec_prompt_for_auth(LinphoneCore *lc, const char *realm, const char *username, const char *domain, LinphoneAuthMethod method);
static void linphonec_prompt_for_auth(LinphoneCore *lc, const char *realm, const char *username, const char *domain);
static void linphonec_display_refer (LinphoneCore * lc, const char *refer_to);
static void linphonec_display_something (LinphoneCore * lc, const char *something);
static void linphonec_display_url (LinphoneCore * lc, const char *something, const char *url);
......@@ -249,7 +249,7 @@ linphonec_display_url (LinphoneCore * lc, const char *something, const char *url
* Linphone core callback
*/
static void
linphonec_prompt_for_auth(LinphoneCore *lc, const char *realm, const char *username, const char *domain, LinphoneAuthMethod method)
linphonec_prompt_for_auth(LinphoneCore *lc, const char *realm, const char *username, const char *domain)
{
/* no prompt possible when using pipes or tcp mode*/
if (unix_socket){
......
......@@ -50,10 +50,10 @@ LinphoneAuthInfo *linphone_auth_info_clone(const LinphoneAuthInfo *ai){
if (ai->ha1) obj->ha1 = ms_strdup(ai->ha1);
if (ai->realm) obj->realm = ms_strdup(ai->realm);
if (ai->domain) obj->domain = ms_strdup(ai->domain);
if (ai->tls_cert) obj->domain = ms_strdup(ai->tls_cert);
if (ai->tls_key) obj->domain = ms_strdup(ai->tls_key);
if (ai->tls_cert_path) obj->domain = ms_strdup(ai->tls_cert_path);
if (ai->tls_key_path) obj->domain = ms_strdup(ai->tls_key_path);
if (ai->tls_cert) obj->tls_cert = ms_strdup(ai->tls_cert);
if (ai->tls_key) obj->tls_key = ms_strdup(ai->tls_key);
if (ai->tls_cert_path) obj->tls_cert_path = ms_strdup(ai->tls_cert_path);
if (ai->tls_key_path) obj->tls_key_path = ms_strdup(ai->tls_key_path);
return obj;
}
......@@ -402,8 +402,7 @@ void linphone_core_add_auth_info(LinphoneCore *lc, const LinphoneAuthInfo *info)
bool_t updating=FALSE;
if (info->ha1==NULL && info->passwd==NULL){
ms_error("linphone_core_add_auth_info(): info supplied with empty password or ha1.");
return;
ms_warning("linphone_core_add_auth_info(): info supplied with empty password or ha1.");
}
/* find if we are attempting to modify an existing auth info */
ai=(LinphoneAuthInfo*)linphone_core_find_auth_info(lc,info->realm,info->username,info->domain);
......
......@@ -977,9 +977,13 @@ static void auth_failure(SalOp *op, SalAuthInfo* info) {
ai = (LinphoneAuthInfo*)_linphone_core_find_auth_info(lc, info->realm, info->username, info->domain, TRUE);
if (ai){
LinphoneAuthMethod method = info->mode == SalAuthModeHttpDigest ? LinphoneAuthHttpDigest : LinphoneAuthTls;
LinphoneAuthInfo *auth_info = linphone_core_create_auth_info(lc, info->username, NULL, NULL, NULL, info->realm, info->domain);
ms_message("%s/%s/%s/%s authentication fails.", info->realm, info->username, info->domain, info->mode == SalAuthModeHttpDigest ? "HttpDigest" : "Tls");
/*ask again for password if auth info was already supplied but apparently not working*/
linphone_core_notify_auth_info_requested(lc, info->realm, info->username, info->domain, method);
linphone_core_notify_authentication_requested(lc, auth_info, method);
linphone_auth_info_destroy(auth_info);
// Deprecated
linphone_core_notify_auth_info_requested(lc, info->realm, info->username, info->domain);
}
}
}
......@@ -1238,7 +1242,11 @@ static bool_t auth_requested(Sal* sal, SalAuthInfo* sai) {
return TRUE;
} else {
LinphoneAuthMethod method = sai->mode == SalAuthModeHttpDigest ? LinphoneAuthHttpDigest : LinphoneAuthTls;
linphone_core_notify_auth_info_requested(lc, sai->realm, sai->username, sai->domain, method);
LinphoneAuthInfo *ai = linphone_core_create_auth_info(lc, sai->username, NULL, NULL, NULL, sai->realm, sai->domain);
linphone_core_notify_authentication_requested(lc, ai, method);
linphone_auth_info_destroy(ai);
// Deprecated
linphone_core_notify_auth_info_requested(lc, sai->realm, sai->username, sai->domain);
if (fill_auth_info(lc, sai)) {
return TRUE;
}
......
......@@ -33,6 +33,7 @@ import org.linphone.core.LinphoneCore.GlobalState;
import org.linphone.core.LinphoneCore.LogCollectionUploadState;
import org.linphone.core.LinphoneCore.RegistrationState;
import org.linphone.core.LinphoneCore.RemoteProvisioningState;
import org.linphone.core.LinphoneAuthInfo;
import org.linphone.core.LinphoneCoreException;
import org.linphone.core.LinphoneCoreFactory;
import org.linphone.core.LinphoneCoreListener;
......@@ -298,10 +299,16 @@ public class TutorialBuddyStatus implements LinphoneCoreListener {
@Override
public void authInfoRequested(LinphoneCore lc, String realm,
String username, String Domain, LinphoneCore.AuthMethod method) {
String username, String domain) {
// TODO Auto-generated method stub
}
@Override
public void authenticationRequested(LinphoneCore lc,
LinphoneAuthInfo authInfo, LinphoneCore.AuthMethod method) {
// TODO Auto-generated method stub
}
@Override
public void fileTransferProgressIndication(LinphoneCore lc,
......
......@@ -33,6 +33,7 @@ import org.linphone.core.LinphoneCore.GlobalState;
import org.linphone.core.LinphoneCore.LogCollectionUploadState;
import org.linphone.core.LinphoneCore.RegistrationState;
import org.linphone.core.LinphoneCore.RemoteProvisioningState;
import org.linphone.core.LinphoneAuthInfo;
import org.linphone.core.LinphoneCoreException;
import org.linphone.core.LinphoneCoreFactory;
import org.linphone.core.LinphoneCoreListener;
......@@ -77,7 +78,8 @@ public class TutorialChatRoom implements LinphoneCoreListener, LinphoneChatMessa
public void show(LinphoneCore lc) {}
public void byeReceived(LinphoneCore lc, String from) {}
public void authInfoRequested(LinphoneCore lc, String realm, String username, String domain, LinphoneCore.AuthMethod method) {}
public void authInfoRequested(LinphoneCore lc, String realm, String username, String domain) {}
public void authenticationRequested(LinphoneCore lc, LinphoneAuthInfo authInfo, LinphoneCore.AuthMethod method) {}
public void displayStatus(LinphoneCore lc, String message) {}
public void displayMessage(LinphoneCore lc, String message) {}
public void displayWarning(LinphoneCore lc, String message) {}
......
......@@ -33,6 +33,7 @@ import org.linphone.core.LinphoneCore.GlobalState;
import org.linphone.core.LinphoneCore.LogCollectionUploadState;
import org.linphone.core.LinphoneCore.RegistrationState;
import org.linphone.core.LinphoneCore.RemoteProvisioningState;
import org.linphone.core.LinphoneAuthInfo;
import org.linphone.core.LinphoneCoreException;
import org.linphone.core.LinphoneCoreFactory;
import org.linphone.core.LinphoneCoreListener;
......@@ -71,7 +72,8 @@ public class TutorialHelloWorld implements LinphoneCoreListener {
public void show(LinphoneCore lc) {}
public void byeReceived(LinphoneCore lc, String from) {}
public void authInfoRequested(LinphoneCore lc, String realm, String username, String domain, LinphoneCore.AuthMethod method) {}
public void authInfoRequested(LinphoneCore lc, String realm, String username, String domain) {}
public void authenticationRequested(LinphoneCore lc, LinphoneAuthInfo authInfo, LinphoneCore.AuthMethod method) {}
public void displayStatus(LinphoneCore lc, String message) {}
public void displayMessage(LinphoneCore lc, String message) {}
public void displayWarning(LinphoneCore lc, String message) {}
......
......@@ -33,6 +33,7 @@ import org.linphone.core.LinphoneCore.GlobalState;
import org.linphone.core.LinphoneCore.LogCollectionUploadState;
import org.linphone.core.LinphoneCore.RegistrationState;
import org.linphone.core.LinphoneCore.RemoteProvisioningState;
import org.linphone.core.LinphoneAuthInfo;
import org.linphone.core.LinphoneCoreException;
import org.linphone.core.LinphoneCoreFactory;
import org.linphone.core.LinphoneCoreListener;
......@@ -82,7 +83,8 @@ public class TutorialRegistration implements LinphoneCoreListener {
public void show(LinphoneCore lc) {}
public void byeReceived(LinphoneCore lc, String from) {}
public void authInfoRequested(LinphoneCore lc, String realm, String username, String domain, LinphoneCore.AuthMethod method) {}
public void authInfoRequested(LinphoneCore lc, String realm, String username, String domain) {}
public void authenticationRequested(LinphoneCore lc, LinphoneAuthInfo authInfo, LinphoneCore.AuthMethod method) {}
public void displayStatus(LinphoneCore lc, String message) {}
public void displayMessage(LinphoneCore lc, String message) {}
public void displayWarning(LinphoneCore lc, String message) {}
......
......@@ -2025,10 +2025,19 @@ typedef void (*LinphoneCoreNewSubscriptionRequestedCb)(LinphoneCore *lc, Linphon
* @param lc the LinphoneCore
* @param realm the realm (domain) on which authentication is required.
* @param username the username that needs to be authenticated.
* @param domain the domain on which authentication is required.
* Application shall reply to this callback using linphone_core_add_auth_info().
*/
typedef void (*LinphoneCoreAuthInfoRequestedCb)(LinphoneCore *lc, const char *realm, const char *username, const char *domain);
/**
* Callback for requesting authentication information to application or user.
* @param lc the LinphoneCore
* @param auth_info a LinphoneAuthInfo pre-filled with username, realm and domain values as much as possible
* @param method the type of authentication requested
* Application shall reply to this callback using linphone_core_add_auth_info().
*/
typedef void (*LinphoneCoreAuthInfoRequestedCb)(LinphoneCore *lc, const char *realm, const char *username, const char *domain, LinphoneAuthMethod method);
typedef void (*LinphoneCoreAuthenticationRequestedCb)(LinphoneCore *lc, LinphoneAuthInfo *auth_info, LinphoneAuthMethod method);
/**
* Callback to notify a new call-log entry has been added.
......@@ -2209,7 +2218,8 @@ typedef struct _LinphoneCoreVTable{
LinphoneCoreNotifyPresenceReceivedCb notify_presence_received; /**< Notify received presence events*/
LinphoneCoreNotifyPresenceReceivedForUriOrTelCb notify_presence_received_for_uri_or_tel; /**< Notify received presence events*/
LinphoneCoreNewSubscriptionRequestedCb new_subscription_requested; /**< Notify about pending presence subscription request */
LinphoneCoreAuthInfoRequestedCb auth_info_requested; /**< Ask the application some authentication information */
LINPHONE_DEPRECATED LinphoneCoreAuthInfoRequestedCb auth_info_requested; /**< @deprecated Use authentication_requested instead. Ask the application some authentication information */
LinphoneCoreAuthenticationRequestedCb authentication_requested; /**< Ask the application some authentication information */
LinphoneCoreCallLogUpdatedCb call_log_updated; /**< Notifies that call log list has been updated */
LinphoneCoreMessageReceivedCb message_received; /**< a message is received, can be text or external body*/
LinphoneCoreIsComposingReceivedCb is_composing_received; /**< An is-composing notification has been received */
......@@ -2228,7 +2238,7 @@ typedef struct _LinphoneCoreVTable{
LINPHONE_DEPRECATED DisplayMessageCb display_message;/**< @deprecated Callback to display a message to the user */
LINPHONE_DEPRECATED DisplayMessageCb display_warning;/**< @deprecated Callback to display a warning to the user */
LINPHONE_DEPRECATED DisplayUrlCb display_url; /**< @deprecated */
LINPHONE_DEPRECATED ShowInterfaceCb show; /**< @deprecated Notifies the application that it should show up*/
LINPHONE_DEPRECATED ShowInterfaceCb show; /**< vNotifies the application that it should show up*/
LINPHONE_DEPRECATED LinphoneCoreTextMessageReceivedCb text_received; /**< @deprecated, use #message_received instead <br> A text message has been received */
LINPHONE_DEPRECATED LinphoneCoreFileTransferRecvCb file_transfer_recv; /**< @deprecated Callback to store file received attached to a #LinphoneChatMessage */
LINPHONE_DEPRECATED LinphoneCoreFileTransferSendCb file_transfer_send; /**< @deprecated Callback to collect file chunk to be sent for a #LinphoneChatMessage */
......
......@@ -247,7 +247,8 @@ public:
/*void newSubscriptionRequest(LinphoneCore lc, LinphoneFriend lf, String url)*/
newSubscriptionRequestId = env->GetMethodID(listenerClass,"newSubscriptionRequest","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneFriend;Ljava/lang/String;)V");
authInfoRequestedId = env->GetMethodID(listenerClass,"authInfoRequested","(Lorg/linphone/core/LinphoneCore;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/linphone/core/LinphoneCore$AuthMethod;)V");
authInfoRequestedId = env->GetMethodID(listenerClass,"authInfoRequested","(Lorg/linphone/core/LinphoneCore;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
authenticationRequestedId = env->GetMethodID(listenerClass,"authenticationRequested","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneAuthInfo;Lorg/linphone/core/LinphoneCore$AuthMethod;)V");
/*void notifyPresenceReceived(LinphoneCore lc, LinphoneFriend lf);*/
notifyPresenceReceivedId = env->GetMethodID(listenerClass,"notifyPresenceReceived","(Lorg/linphone/core/LinphoneCore;Lorg/linphone/core/LinphoneFriend;)V");
......@@ -287,6 +288,9 @@ public:
chatMessageStateClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneChatMessage$State"));
chatMessageStateFromIntId = env->GetStaticMethodID(chatMessageStateClass,"fromInt","(I)Lorg/linphone/core/LinphoneChatMessage$State;");
authInfoClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneAuthInfoImpl"));
authInfoCtrId = env->GetMethodID(authInfoClass,"<init>", "(J)V");
proxyClass = (jclass)env->NewGlobalRef(env->FindClass("org/linphone/core/LinphoneProxyConfigImpl"));
proxyCtrId = env->GetMethodID(proxyClass,"<init>", "(Lorg/linphone/core/LinphoneCoreImpl;J)V");
......@@ -359,6 +363,7 @@ public:
env->DeleteGlobalRef(registrationStateClass);
env->DeleteGlobalRef(callStateClass);
env->DeleteGlobalRef(chatMessageStateClass);
env->DeleteGlobalRef(authInfoClass);
env->DeleteGlobalRef(proxyClass);
env->DeleteGlobalRef(callClass);
env->DeleteGlobalRef(chatMessageClass);
......@@ -391,6 +396,7 @@ public:
jmethodID infoReceivedId;
jmethodID subscriptionStateId;
jmethodID authInfoRequestedId;
jmethodID authenticationRequestedId;
jmethodID publishStateId;
jmethodID notifyRecvId;
......@@ -426,6 +432,9 @@ public:
jclass ecCalibratorStatusClass;
jmethodID ecCalibrationStatusId;
jmethodID ecCalibratorStatusFromIntId;
jclass authInfoClass;
jmethodID authInfoCtrId;
jclass proxyClass;
jmethodID proxyCtrId;
......@@ -517,6 +526,16 @@ jobject getProxy(JNIEnv *env, LinphoneProxyConfig *proxy, jobject core){
return jobj;
}
jobject getAuthInfo(JNIEnv *env, LinphoneCore *lc, LinphoneAuthInfo *authInfo, jobject core){
jobject jobj = 0;
if (authInfo && lc) {
LinphoneJavaBindings *ljb = (LinphoneJavaBindings *)linphone_core_get_user_data(lc);
jobj = env->NewObject(ljb->authInfoClass, ljb->authInfoCtrId, core, (jlong)authInfo);
}
return jobj;
}
jobject getCall(JNIEnv *env, LinphoneCall *call){
jobject jobj=0;
......@@ -770,6 +789,10 @@ public:
if (ljb->authInfoRequestedId) {
vTable->auth_info_requested = authInfoRequested;
}
if (ljb->authenticationRequestedId) {
vTable->authentication_requested = authenticationRequested;
}
if (ljb->notifyPresenceReceivedId) {
vTable->notify_presence_received = notify_presence_received;
......@@ -864,7 +887,7 @@ public:
env->DeleteLocalRef(msg);
}
}
static void authInfoRequested(LinphoneCore *lc, const char *realm, const char *username, const char *domain, LinphoneAuthMethod method) {
static void authInfoRequested(LinphoneCore *lc, const char *realm, const char *username, const char *domain) {
JNIEnv *env = 0;
jint result = jvm->AttachCurrentThread(&env,NULL);
if (result != 0) {
......@@ -883,8 +906,7 @@ public:
lcData->core,
r,
u,
d,
env->CallStaticObjectMethod(ljb->authMethodClass,ljb->authMethodFromIntId,(jint)method)
d
);
handle_possible_java_exception(env, lcData->listener);
if (r) {
......@@ -897,6 +919,25 @@ public:
env->DeleteLocalRef(d);
}
}
static void authenticationRequested(LinphoneCore *lc, LinphoneAuthInfo *auth_info, LinphoneAuthMethod method) {
JNIEnv *env = 0;
jint result = jvm->AttachCurrentThread(&env,NULL);
if (result != 0) {
ms_error("cannot attach VM");
return;
}
LinphoneJavaBindings *ljb = (LinphoneJavaBindings *)linphone_core_get_user_data(lc);
LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc);
LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table);
env->CallVoidMethod(lcData->listener,
ljb->authenticationRequestedId,
lcData->core,
getAuthInfo(env, lc, auth_info, lcData->core),
env->CallStaticObjectMethod(ljb->authMethodClass,ljb->authMethodFromIntId,(jint)method)
);
handle_possible_java_exception(env, lcData->listener);
}
static void setCoreIfNotDone(JNIEnv *env, jobject jcore, LinphoneCore *lc){
jclass objClass = env->GetObjectClass(jcore);
jfieldID myFieldID = env->GetFieldID(objClass, "nativePtr", "J");
......
......@@ -1501,7 +1501,8 @@ void linphone_core_notify_display_url(LinphoneCore *lc, const char *message, con
void linphone_core_notify_notify_presence_received(LinphoneCore *lc, LinphoneFriend * lf);
void linphone_core_notify_notify_presence_received_for_uri_or_tel(LinphoneCore *lc, LinphoneFriend *lf, const char *uri_or_tel, const LinphonePresenceModel *presence_model);
void linphone_core_notify_new_subscription_requested(LinphoneCore *lc, LinphoneFriend *lf, const char *url);
void linphone_core_notify_auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain, LinphoneAuthMethod method);
void linphone_core_notify_auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain);
void linphone_core_notify_authentication_requested(LinphoneCore *lc, LinphoneAuthInfo *auth_info, LinphoneAuthMethod method);
void linphone_core_notify_call_log_updated(LinphoneCore *lc, LinphoneCallLog *newcl);
void linphone_core_notify_text_message_received(LinphoneCore *lc, LinphoneChatRoom *room, const LinphoneAddress *from, const char *message);
void linphone_core_notify_message_received(LinphoneCore *lc, LinphoneChatRoom *room, LinphoneChatMessage *message);
......
......@@ -143,8 +143,13 @@ void linphone_core_notify_new_subscription_requested(LinphoneCore *lc, LinphoneF
cleanup_dead_vtable_refs(lc);
}
void linphone_core_notify_auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain, LinphoneAuthMethod method) {
NOTIFY_IF_EXIST(auth_info_requested, lc, realm, username, domain, method);
void linphone_core_notify_auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain) {
NOTIFY_IF_EXIST(auth_info_requested, lc, realm, username, domain);
cleanup_dead_vtable_refs(lc);
}
void linphone_core_notify_authentication_requested(LinphoneCore *lc, LinphoneAuthInfo *ai, LinphoneAuthMethod method) {
NOTIFY_IF_EXIST(authentication_requested, lc, ai, method);
cleanup_dead_vtable_refs(lc);
}
......
......@@ -68,7 +68,7 @@ static void linphone_gtk_global_state_changed(LinphoneCore *lc, LinphoneGlobalSt
static void linphone_gtk_registration_state_changed(LinphoneCore *lc, LinphoneProxyConfig *cfg, LinphoneRegistrationState rs, const char *msg);
static void linphone_gtk_notify_recv(LinphoneCore *lc, LinphoneFriend * fid);
static void linphone_gtk_new_unknown_subscriber(LinphoneCore *lc, LinphoneFriend *lf, const char *url);
static void linphone_gtk_auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain, LinphoneAuthMethod method);
static void linphone_gtk_auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain);
static void linphone_gtk_configuring_status(LinphoneCore *lc, LinphoneConfiguringState status, const char *message);
static void linphone_gtk_call_log_updated(LinphoneCore *lc, LinphoneCallLog *cl);
static void linphone_gtk_call_state_changed(LinphoneCore *lc, LinphoneCall *call, LinphoneCallState cs, const char *msg);
......@@ -1135,7 +1135,7 @@ void linphone_gtk_password_ok(GtkWidget *w){
gtk_widget_destroy(window);
}
static void linphone_gtk_auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain, LinphoneAuthMethod method){
static void linphone_gtk_auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain){
GtkWidget *w=linphone_gtk_create_window("password", the_ui);
GtkWidget *label=linphone_gtk_get_widget(w,"message");
LinphoneAuthInfo *info;
......
......@@ -27,9 +27,19 @@ import java.nio.ByteBuffer;
*/
public interface LinphoneCoreListener {
/**< Ask the application some authentication information
* @return */
void authInfoRequested(LinphoneCore lc, String realm, String username, String Domain, LinphoneCore.AuthMethod method);
/**
* @deprecated
* Ask the application some authentication information
**/
void authInfoRequested(LinphoneCore lc, String realm, String username, String domain);
/**
* Ask the application some authentication information
* @param lc the LinphoneCore
* @param authInfo a LinphoneAuthInfo pre-filled with username, realm and domain values as much as possible
* @param method the type of authentication requested (HttpDigest, Tls, ...)
**/
void authenticationRequested(LinphoneCore lc, LinphoneAuthInfo authInfo, LinphoneCore.AuthMethod method);
/**
* Call stats notification
......
......@@ -13,10 +13,16 @@ public class LinphoneCoreListenerBase implements LinphoneCoreListener {
@Override
public void authInfoRequested(LinphoneCore lc, String realm,
String username, String Domain, LinphoneCore.AuthMethod method) {
String username, String domain) {
// TODO Auto-generated method stub
}
@Override
public void authenticationRequested(LinphoneCore lc,
LinphoneAuthInfo authInfo, LinphoneCore.AuthMethod method) {
// TODO Auto-generated method stub
}
@Override
public void callStatsUpdated(LinphoneCore lc, LinphoneCall call,
......
......@@ -117,7 +117,7 @@ static void account_created_on_server_cb(LinphoneCore *lc, LinphoneProxyConfig *
// TEMPORARY CODE: remove function below when flexisip is updated, this is not needed anymore!
// The new flexisip now answer "200 Test account created" when creating a test account, and do not
// challenge authentication anymore! so this code is not used for newer version
static void account_created_auth_requested_cb(LinphoneCore *lc, const char *username, const char *realm, const char *domain, LinphoneAuthMethod method){
static void account_created_auth_requested_cb(LinphoneCore *lc, const char *username, const char *realm, const char *domain){
Account *account=(Account*)linphone_core_get_user_data(lc);
account->created=1;
}
......
......@@ -277,7 +277,7 @@ static void text_message_within_call_dialog(void) {
}
static LinphoneAuthInfo* text_message_with_credential_from_auth_cb_auth_info;
static void text_message_with_credential_from_auth_cb_auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain, LinphoneAuthMethod method) {
static void text_message_with_credential_from_auth_cb_auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain) {
ms_message("text_message_with_credential_from_auth_callback:Auth info requested for user id [%s] at realm [%s]\n"
,username
,realm);
......
......@@ -22,26 +22,28 @@
#include "liblinphone_tester.h"
static void auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain, LinphoneAuthMethod method) {
static void auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain) {
LinphoneAuthInfo *info;
info=linphone_auth_info_new(test_username,NULL,test_password,NULL,realm,domain); /*create authentication structure from identity*/
linphone_core_add_auth_info(lc,info); /*add authentication info to LinphoneCore*/
info=linphone_auth_info_new(test_username,NULL,test_password,NULL,realm,domain);
linphone_core_add_auth_info(lc,info);
}
static void authentication_requested(LinphoneCore *lc, LinphoneAuthInfo *auth_info, LinphoneAuthMethod method) {
linphone_auth_info_set_passwd(auth_info, test_password);
linphone_core_add_auth_info(lc, auth_info); /*add authentication info to LinphoneCore*/
}
static LinphoneCoreManager* create_lcm_with_auth(unsigned int with_auth) {
LinphoneCoreManager* lcm=linphone_core_manager_new(NULL);
LinphoneCoreManager* lcm = linphone_core_manager_new(NULL);
if (with_auth) {
LinphoneCoreVTable* vtable = linphone_core_v_table_new();
vtable->auth_info_requested=auth_info_requested;
linphone_core_add_listener(lcm->lc,vtable);
vtable->authentication_requested = authentication_requested;
linphone_core_add_listener(lcm->lc, vtable);
}
/*to allow testing with 127.0.0.1*/
linphone_core_set_network_reachable(lcm->lc,TRUE);
linphone_core_set_network_reachable(lcm->lc, TRUE);
return lcm;
}
......@@ -1024,6 +1026,70 @@ static void tls_auth_info_client_cert_api_path(void) {
}
}
static void authentication_requested_2(LinphoneCore *lc, LinphoneAuthInfo *auth_info, LinphoneAuthMethod method) {
char *cert = bc_tester_res("certificates/client/cert.pem");
char *key = bc_tester_res("certificates/client/key.pem");
BC_ASSERT_EQUAL(method, LinphoneAuthTls, int, "%i");
linphone_auth_info_set_tls_cert_path(auth_info, cert);
linphone_auth_info_set_tls_key_path(auth_info, key);
linphone_core_add_auth_info(lc, auth_info);
ms_free(cert);
ms_free(key);
}
static void tls_auth_info_client_cert_cb(void) {
if (transport_supported(LinphoneTransportTls)) {
LinphoneCoreManager *lcm;
LinphoneCoreVTable* vtable = linphone_core_v_table_new();
stats* counters;
lcm = linphone_core_manager_new(NULL);
vtable->authentication_requested=authentication_requested_2;
linphone_core_add_listener(lcm->lc,vtable);
counters= get_stats(lcm->lc);
counters->number_of_auth_info_requested=0;
register_with_refresh(lcm,FALSE,auth_domain,"sip2.linphone.org:5063;transport=tls");
BC_ASSERT_EQUAL(counters->number_of_auth_info_requested,1, int, "%d");
linphone_core_manager_destroy(lcm);
}
}
static void authentication_requested_3(LinphoneCore *lc, LinphoneAuthInfo *auth_info, LinphoneAuthMethod method) {
char *cert_path = bc_tester_res("certificates/client/cert.pem");
char *key_path = bc_tester_res("certificates/client/key.pem");
char *cert = read_file(cert_path);
char *key = read_file(key_path);
BC_ASSERT_EQUAL(method, LinphoneAuthTls, int, "%i");
linphone_auth_info_set_tls_cert(auth_info, cert);
linphone_auth_info_set_tls_key(auth_info, key);
linphone_core_add_auth_info(lc, auth_info);
ms_free(cert);
ms_free(key);
ms_free(cert_path);
ms_free(key_path);
}
static void tls_auth_info_client_cert_cb_2(void) {
if (transport_supported(LinphoneTransportTls)) {
LinphoneCoreManager *lcm;
LinphoneCoreVTable* vtable = linphone_core_v_table_new();
stats* counters;
lcm = linphone_core_manager_new(NULL);
vtable->authentication_requested=authentication_requested_3;
linphone_core_add_listener(lcm->lc,vtable);
counters= get_stats(lcm->lc);
counters->number_of_auth_info_requested=0;
register_with_refresh(lcm,FALSE,auth_domain,"sip2.linphone.org:5063;transport=tls");
BC_ASSERT_EQUAL(counters->number_of_auth_info_requested,1, int, "%d");
linphone_core_manager_destroy(lcm);
}
}
test_t register_tests[] = {
TEST_NO_TAG("Simple register", simple_register),
TEST_NO_TAG("Simple register unregister", simple_unregister),
......@@ -1065,6 +1131,8 @@ test_t register_tests[] = {
TEST_NO_TAG("Global TLS client certificate authentication using API 2", tls_auth_global_client_cert_api_path),
TEST_NO_TAG("AuthInfo TLS client certificate authentication using API", tls_auth_info_client_cert_api),
TEST_NO_TAG("AuthInfo TLS client certificate authentication using API 2", tls_auth_info_client_cert_api_path),
TEST_NO_TAG("AuthInfo TLS client certificate authentication in callback", tls_auth_info_client_cert_cb),
TEST_NO_TAG("AuthInfo TLS client certificate authentication in callback 2", tls_auth_info_client_cert_cb_2),
};
test_suite_t register_test_suite = {"Register", NULL, NULL, liblinphone_tester_before_each, liblinphone_tester_after_each,
......
......@@ -98,7 +98,7 @@ LinphoneAddress * create_linphone_address(const char * domain) {
return addr;
}
static void auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain, LinphoneAuthMethod method) {
static void auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain) {
stats* counters;
ms_message("Auth info requested for user id [%s] at realm [%s]\n"
,username
......
......@@ -68,7 +68,7 @@ static void on_msg_state_changed(LinphoneChatMessage *msg, LinphoneChatMessageSt
}
}
static void auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain, LinphoneAuthMethod method){
static void auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain){
running = FALSE;
if (passwd){
fprintf(stderr, "Server rejected the supplied username or password\n");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment