49 lines
1.9 KiB
C
49 lines
1.9 KiB
C
#pragma once
|
|
|
|
#include "netlink_xfrm.h"
|
|
|
|
struct volte_states {
|
|
pj_sockaddr local_addr_c, remote_addr_s;
|
|
pj_sockaddr remote_addr_c, local_addr_s;
|
|
uint32_t local_spi_c, remote_spi_s;
|
|
uint32_t remote_spi_c, local_spi_s;
|
|
pj_bool_t local_sa_c_set, remote_sa_s_set;
|
|
pj_bool_t remote_sa_c_set, local_sa_s_set;
|
|
pj_bool_t local_sp_c_set, remote_sp_s_set;
|
|
pj_bool_t remote_sp_c_set, local_sp_s_set;
|
|
|
|
char security_server[1024];
|
|
};
|
|
|
|
struct security_server {
|
|
pj_str_t q;
|
|
pj_str_t prot;
|
|
pj_str_t mod;
|
|
pj_str_t spi_c;
|
|
pj_str_t spi_s;
|
|
pj_str_t port_c;
|
|
pj_str_t port_s;
|
|
pj_str_t alg;
|
|
pj_str_t ealg;
|
|
};
|
|
|
|
pj_status_t g_volte_init(void);
|
|
void g_volte_exit(void);
|
|
|
|
void volte_cleanup_xfrm(struct volte_states *volte);
|
|
pj_status_t volte_alloc_spi(struct volte_states *volte);
|
|
|
|
pj_status_t volte_add_sec_agree(pjsip_tx_data *tdata);
|
|
pj_status_t volte_init_authorization(pjsip_tx_data *tdata, const char *fromdomain, const char *username);
|
|
pj_status_t volte_del_authorization(pjsip_tx_data *tdata);
|
|
pj_status_t volte_reset_transport(struct volte_states *volte, pjsip_tx_data *tdata);
|
|
pj_status_t volte_add_security_client(struct volte_states *volte, pjsip_tx_data *tdata, int port_c, int port_s);
|
|
pj_status_t volte_set_transport(struct volte_states *volte, pjsip_tx_data *tdata, const pj_str_t *alg,
|
|
const pj_str_t *ealg, uint8_t *ik, uint32_t remote_spi_c, uint32_t remote_spi_s,
|
|
uint16_t remote_port_c, uint16_t remote_port_s);
|
|
pj_status_t volte_get_security_server(struct volte_states *volte, pjsip_rx_data *rdata, struct security_server *sec);
|
|
pj_status_t volte_add_security_verify(struct volte_states *volte, pjsip_tx_data *tdata);
|
|
pj_status_t volte_authenticate(struct volte_states *volte, pjsip_rx_data *rdata, pjsip_hdr_e auth_type,
|
|
const char *opc_str, const char *k_str, const char *sqn_str, uint8_t *out_res,
|
|
uint8_t *out_ik, uint8_t *out_ck, uint8_t *out_auts);
|