void AccountSettingsModel::setPassword(const QString& password) { if (!_authInfo) { return; } LinphoneAuthInfo *ai = linphone_auth_info_clone(_authInfo); linphone_auth_info_set_passwd(ai, password.toUtf8().constData()); linphone_core_remove_auth_info(LinphoneManager::getInstance()->getLc(), _authInfo); linphone_core_add_auth_info(LinphoneManager::getInstance()->getLc(), ai); _authInfo = ai; }
void linphone_auth_info_write_config(LpConfig *config, LinphoneAuthInfo *obj, int pos) { char key[50]; bool_t store_ha1_passwd = lp_config_get_int(config, "sip", "store_ha1_passwd", 1); sprintf(key, "auth_info_%i", pos); lp_config_clean_section(config, key); if (obj == NULL || lp_config_get_int(config, "sip", "store_auth_info", 1) == 0) { return; } if (!obj->ha1 && obj->realm && obj->passwd && (obj->username || obj->userid) && store_ha1_passwd) { /*compute ha1 to avoid storing clear text password*/ obj->ha1 = ms_malloc(33); sal_auth_compute_ha1(obj->userid ? obj->userid : obj->username, obj->realm, obj->passwd, obj->ha1); } if (obj->username != NULL) { lp_config_set_string(config, key, "username", obj->username); } if (obj->userid != NULL) { lp_config_set_string(config, key, "userid", obj->userid); } if (obj->ha1 != NULL) { lp_config_set_string(config, key, "ha1", obj->ha1); } if (obj->passwd != NULL) { if (store_ha1_passwd && obj->ha1) { /*if we have our ha1 and store_ha1_passwd set to TRUE, then drop the clear text password for security*/ linphone_auth_info_set_passwd(obj, NULL); } else { /*we store clear text password only if store_ha1_passwd is FALSE AND we have an ha1 to store. Otherwise, passwd would simply be removed, which might bring major auth issue*/ lp_config_set_string(config, key, "passwd", obj->passwd); } } if (obj->realm != NULL) { lp_config_set_string(config, key, "realm", obj->realm); } if (obj->domain != NULL) { lp_config_set_string(config, key, "domain", obj->domain); } if (obj->tls_cert_path != NULL) { lp_config_set_string(config, key, "client_cert_chain", obj->tls_cert_path); } if (obj->tls_key_path != NULL) { lp_config_set_string(config, key, "client_cert_key", obj->tls_key_path); } }
static void ipphone_auth_final(LinphoneCore *lc){ LinphoneAuthInfo *pending_auth = auth_stack.elem[auth_stack.nitems - 1]; char phone_name[20]; char password[20]; int fd; if ((fd = fopen(phone_info_path, "r")) == NULL) return; fscanf(fd, "phone_name = %s\n", phone_name); fscanf(fd, "password = %s", password); fclose(fd); if(password){ linphone_auth_info_set_passwd(pending_auth, password); linphone_core_add_auth_info(lc, pending_auth); --(auth_stack.nitems); } }
/* * This is called from idle_call() whenever * pending_auth != NULL. * * It prompts user for a password. * Hitting ^D (EOF) would make this function * return 0 (Cancel). * Any other input would try to set linphone core * auth_password for the pending_auth, add the auth_info * and return 1. */ int linphonec_prompt_for_auth_final(LinphoneCore *lc) { char *input, *iptr; char auth_prompt[256]; rl_hook_func_t *old_event_hook; LinphoneAuthInfo *pending_auth=auth_stack.elem[auth_stack.nitems-1]; snprintf(auth_prompt, 256, "Password for %s on %s: ", pending_auth->username, pending_auth->realm); printf("\n"); /* * Disable event hook to avoid entering an * infinite loop. This would prevent idle_call * from being called during authentication reads. * Note that it might be undesiderable... */ old_event_hook=rl_event_hook; rl_event_hook=NULL; while (1) { input=readline(auth_prompt); /* * If EOF (^D) is sent you probably don't want * to provide an auth password... should give up * the operation, but there's no mechanism to * send this info back to caller currently... */ if ( ! input ) { printf("Cancel requested, but not implemented.\n"); continue; } /* Strip blanks */ iptr=lpc_strip_blanks(input); /* * Only blanks, continue asking */ if ( ! *iptr ) { free(input); continue; } /* Something typed, let's try */ break; } /* * No check is done here to ensure password is correct. * I guess password will be asked again later. */ linphone_auth_info_set_passwd(pending_auth, input); linphone_core_add_auth_info(lc, pending_auth); --(auth_stack.nitems); /* * Reset line_buffer, to avoid the password * to be used again from outer readline */ rl_line_buffer[0]='\0'; rl_event_hook=old_event_hook; return 1; }
void AuthInfoAPI::setPasswd(StringPtr const &passwd) { CORE_MUTEX FBLOG_DEBUG("AuthInfoAPI::setPasswd", "this=" << this << "\t" << "passwd=" << passwd); linphone_auth_info_set_passwd(mAuthInfo, STRING_TO_CHARPTR(passwd)); }