我希望在通过rtp发送之前在pjsip lib中使用Bouncy Castle
加密数据。谁曾经和pjsip合作过,请帮助我,我对C不友好,所以我应该在哪里做。在对pjsip lib文件进行一些研究之后,我找到了带有函数的“transport.c”文件:
static void ice_on_rx_data(pj_ice_strans *ice_st, unsigned comp_id,
void *pkt, pj_size_t size,
const pj_sockaddr_t *src_addr,
unsigned src_addr_len)
我是正确的吗?
答案 0 :(得分:4)
在pjsip中查找pjmedia/src/pjmedia/transport_udp.c
。
用于发送UDP包pjsip使用此功能..
static pj_status_t transport_send_rtp( pjmedia_transport *tp,
const void *pkt,
pj_size_t size)
所以你必须在这个函数中加密你的数据包。所以取pkt
并加密它。如果你允许rtcp,那么你可能需要加密rtcp数据包。那里也可以找到这个功能。名字是......
static pj_status_t transport_send_rtcp2(pjmedia_transport *tp,
const pj_sockaddr_t *addr,
unsigned addr_len,
const void *pkt,
pj_size_t size)
因此可以在transport_udp.c
目录的pjmedia/src/pjmedia/
中找到这些函数。
因此,如果您想要发送加密打包,您可以在那里加密数据包。此外,对于解密收到的加密数据包,您可以使用这些功能..
static void on_rx_rtp( pj_ioqueue_key_t *key,
pj_ioqueue_op_key_t *op_key,
pj_ssize_t bytes_read);
static void on_rx_rtcp(pj_ioqueue_key_t *key,
pj_ioqueue_op_key_t *op_key,
pj_ssize_t bytes_read);
你可以在那里解密。