加密数据(pjsip)

Encrypt data (pjsip)

我想在通过 rtp 发送之前在 pjsip 库中使用 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)

我走对了吗?

在 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)

所以你必须在这个函数中加密你的数据包。因此,如果您允许 rtcp,则采用 pkt 并加密 it.Also,那么您可能还必须在那里找到加密 rtcp packet.That 功能。名字是..

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)

所以这些函数可以在pjmedia/src/pjmedia/目录下的transport_udp.c中找到。

所以如果你想发送加密包,你可以在那里加密数据包。此外,为了解密收到的加密数据包,您可以使用这些功能..

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

你可以在那里解密。