mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-04-21 04:38:29 +00:00
implement tls and dscp options
This commit is contained in:
parent
fc7925235e
commit
84dc96eccb
3 changed files with 50 additions and 10 deletions
|
|
@ -17,9 +17,14 @@ along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "sal_impl.h"
|
#include "sal_impl.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void set_tls_properties(Sal *ctx);
|
||||||
|
|
||||||
void _belle_sip_log(belle_sip_log_level lev, const char *fmt, va_list args) {
|
void _belle_sip_log(belle_sip_log_level lev, const char *fmt, va_list args) {
|
||||||
int ortp_level;
|
int ortp_level;
|
||||||
switch(lev) {
|
switch(lev) {
|
||||||
|
|
@ -384,6 +389,8 @@ Sal * sal_init(){
|
||||||
listener_callbacks.process_auth_requested=process_auth_requested;
|
listener_callbacks.process_auth_requested=process_auth_requested;
|
||||||
sal->listener=belle_sip_listener_create_from_callbacks(&listener_callbacks,sal);
|
sal->listener=belle_sip_listener_create_from_callbacks(&listener_callbacks,sal);
|
||||||
belle_sip_provider_add_sip_listener(sal->prov,sal->listener);
|
belle_sip_provider_add_sip_listener(sal->prov,sal->listener);
|
||||||
|
sal->tls_verify=TRUE;
|
||||||
|
sal->tls_verify_cn=TRUE;
|
||||||
return sal;
|
return sal;
|
||||||
}
|
}
|
||||||
void sal_set_user_pointer(Sal *sal, void *user_data){
|
void sal_set_user_pointer(Sal *sal, void *user_data){
|
||||||
|
|
@ -445,6 +452,7 @@ void sal_uninit(Sal* sal){
|
||||||
belle_sip_object_unref(sal->prov);
|
belle_sip_object_unref(sal->prov);
|
||||||
belle_sip_object_unref(sal->stack);
|
belle_sip_object_unref(sal->stack);
|
||||||
belle_sip_object_unref(sal->listener);
|
belle_sip_object_unref(sal->listener);
|
||||||
|
if (sal->root_ca) ms_free(sal->root_ca);
|
||||||
ms_free(sal);
|
ms_free(sal);
|
||||||
return ;
|
return ;
|
||||||
};
|
};
|
||||||
|
|
@ -458,11 +466,13 @@ int sal_add_listen_port(Sal *ctx, SalAddress* addr){
|
||||||
if (lp) {
|
if (lp) {
|
||||||
belle_sip_listening_point_set_keep_alive(lp,ctx->keep_alive);
|
belle_sip_listening_point_set_keep_alive(lp,ctx->keep_alive);
|
||||||
result = belle_sip_provider_add_listening_point(ctx->prov,lp);
|
result = belle_sip_provider_add_listening_point(ctx->prov,lp);
|
||||||
|
set_tls_properties(ctx);
|
||||||
} else {
|
} else {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sal_listen_port(Sal *ctx, const char *addr, int port, SalTransport tr, int is_secure) {
|
int sal_listen_port(Sal *ctx, const char *addr, int port, SalTransport tr, int is_secure) {
|
||||||
SalAddress* sal_addr = sal_address_new(NULL);
|
SalAddress* sal_addr = sal_address_new(NULL);
|
||||||
int result;
|
int result;
|
||||||
|
|
@ -538,16 +548,41 @@ void sal_use_101(Sal *ctx, bool_t use_101){
|
||||||
ms_warning("sal_use_101 is deprecated");
|
ms_warning("sal_use_101 is deprecated");
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void set_tls_properties(Sal *ctx){
|
||||||
|
belle_sip_listening_point_t *lp=belle_sip_provider_get_listening_point(ctx->prov,"TLS");
|
||||||
|
if (lp){
|
||||||
|
belle_sip_tls_listening_point_t *tlp=BELLE_SIP_TLS_LISTENING_POINT(lp);
|
||||||
|
int verify_exceptions=0;
|
||||||
|
|
||||||
|
if (!ctx->tls_verify) verify_exceptions=BELLE_SIP_TLS_LISTENING_POINT_BADCERT_ANY_REASON;
|
||||||
|
else if (!ctx->tls_verify_cn) verify_exceptions=BELLE_SIP_TLS_LISTENING_POINT_BADCERT_CN_MISMATCH;
|
||||||
|
|
||||||
|
belle_sip_tls_listening_point_set_root_ca(tlp,ctx->root_ca);
|
||||||
|
belle_sip_tls_listening_point_set_verify_exceptions(tlp,verify_exceptions);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void sal_set_root_ca(Sal* ctx, const char* rootCa){
|
void sal_set_root_ca(Sal* ctx, const char* rootCa){
|
||||||
ms_error("sal_set_root_ca not implemented yet");
|
if (ctx->root_ca){
|
||||||
|
ms_free(ctx->root_ca);
|
||||||
|
ctx->root_ca=NULL;
|
||||||
|
}
|
||||||
|
if (rootCa)
|
||||||
|
ctx->root_ca=ms_strdup(rootCa);
|
||||||
|
set_tls_properties(ctx);
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sal_verify_server_certificates(Sal *ctx, bool_t verify){
|
void sal_verify_server_certificates(Sal *ctx, bool_t verify){
|
||||||
ms_error("sal_verify_server_certificates not implemented yet");
|
ctx->tls_verify=verify;
|
||||||
|
set_tls_properties(ctx);
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sal_verify_server_cn(Sal *ctx, bool_t verify){
|
void sal_verify_server_cn(Sal *ctx, bool_t verify){
|
||||||
ms_error("sal_verify_server_cn not implemented yet");
|
ctx->tls_verify_cn=verify;
|
||||||
|
set_tls_properties(ctx);
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -569,21 +604,23 @@ MSList * sal_get_pending_auths(Sal *sal){
|
||||||
/*misc*/
|
/*misc*/
|
||||||
void sal_get_default_local_ip(Sal *sal, int address_family, char *ip, size_t iplen){
|
void sal_get_default_local_ip(Sal *sal, int address_family, char *ip, size_t iplen){
|
||||||
strncpy(ip,address_family==AF_INET6 ? "::1" : "127.0.0.1",iplen);
|
strncpy(ip,address_family==AF_INET6 ? "::1" : "127.0.0.1",iplen);
|
||||||
ms_error("Could not find default routable ip address !");
|
ms_error("sal_get_default_local_ip() is deprecated.");
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *sal_get_root_ca(Sal* ctx) {
|
const char *sal_get_root_ca(Sal* ctx) {
|
||||||
ms_fatal("sal_get_root_ca not implemented yet");
|
return ctx->root_ca;
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int sal_reset_transports(Sal *ctx){
|
int sal_reset_transports(Sal *ctx){
|
||||||
ms_message("reseting transport");
|
ms_message("reseting transports");
|
||||||
belle_sip_provider_clean_channels(ctx->prov);
|
belle_sip_provider_clean_channels(ctx->prov);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sal_set_dscp(Sal *ctx, int dscp){
|
void sal_set_dscp(Sal *ctx, int dscp){
|
||||||
ms_warning("sal_set_dscp not implemented");
|
belle_sip_stack_set_default_dscp(ctx->stack,dscp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sal_set_send_error(Sal *sal,int value) {
|
void sal_set_send_error(Sal *sal,int value) {
|
||||||
belle_sip_stack_set_send_error(sal->stack,value);
|
belle_sip_stack_set_send_error(sal->stack,value);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,9 +36,12 @@ struct Sal{
|
||||||
void *up; /*user pointer*/
|
void *up; /*user pointer*/
|
||||||
int session_expires;
|
int session_expires;
|
||||||
unsigned int keep_alive;
|
unsigned int keep_alive;
|
||||||
|
char *root_ca;
|
||||||
bool_t one_matching_codec;
|
bool_t one_matching_codec;
|
||||||
bool_t use_tcp_tls_keep_alive;
|
bool_t use_tcp_tls_keep_alive;
|
||||||
bool_t nat_helper_enabled;
|
bool_t nat_helper_enabled;
|
||||||
|
bool_t tls_verify;
|
||||||
|
bool_t tls_verify_cn;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum SalOpSate {
|
typedef enum SalOpSate {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue