加密数据(pjsip)

时间:2016-01-19 13:51:25

标签: c rtp pjsip

我希望在通过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)

我是正确的吗?

1 个答案:

答案 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);

你可以在那里解密。