我正在实现一个java网关,以实现webrtc和sip之间的兼容性。我已经完成了sdp交换部分。但现在我陷入了媒体部分。到目前为止,我假设我需要实现 dtls-srtp 握手,然后是加密、解密部分。那么任何人都可以建议任何java库
- DTLS 握手
- SRTP <--> RTP 转换
或者具体的方法来做到这一点。
编辑:我正在使用JsSIP进行webrtc sip结束。以及用于 sip 客户端的 Pangolin。
最佳答案
我以前做过这个。查看我的项目 jPhoneLite。它使用 BouncyCaSTLe 作为 DTLS 部分。
https://github.com/pquiring/javaforce/blob/master/src/javaforce/voip/SRTPChannel.java
但我想将其转换为 Java9,现在包含 DTLS,但我不确定它是否有效。
DTLS 实际上并不用于传输任何数据。客户端/服务器连接、协商 key ,然后使用 key 在正常 RTP channel 中对数据进行编码。一旦交换 key ,DTLS 连接就会断开。
请参阅 RFC 5705,其中 DTLS 仅用于获取我的代码支持的 key 。
请参阅 RFC 5764,其中 DTLS“用于”发送/接收实际数据。我的代码目前不支持此方法。
关于encryption - 用于 webrtc <--> sip 通信的 Java 网关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49108597/