android – 使用pjsua中的Tls设置注册pjsip帐户

我正在使用Pjusa用于Voip,我已经通过UDP和TCP进行了通信,但无法通过TLS设置进行通信

TlsConfig tlsConfig = new TlsConfig();
File cacheDir = new File(ctx.getCacheDir(), "ca");
InputStream input = ctx.getResources().openRawResource(R.raw.ca);
tlsConfig.setCaListFile(cacheDir.getPath());
input = ctx.getResources().openRawResource(R.raw.secure);
cacheDir = new File(ctx.getCacheDir(), "secure");
tlsConfig.setCertFile(cacheDir.getPath());
tlsConfig.setMethod(pjsip_ssl_method.PJSIP_SSLV23_METHOD);` 

我已经附加了CaListFile和setCertFile文件,就像那个方法和设置工作,但当我建立一个调用,然后我发现这样的错误

tlsc0x9e7db014 TLS connect() error: Connection refused

tsx0x9d945864 Failed to send Request msg INVITE/cseq=25416 (tdta0x9d991000)! err=120111 (Connection refused)

在IOS中,我发现了更多TLS设置,但无法在PJSUA中实现
任何人都可以帮助我在PJSUA库中使用android中的那段代码

 pj_sockaddr_in remote;
pjsip_transport *transport;
remote.sin_family = pj_AF_INET();
remote.sin_zero_len   =   0;
remote.sin_addr.s_addr = pj_inet_addr(@"xxx.xx.xx.xx").s_addr;
remote.sin_addr.s_addr = INADDR_ANY;
bzero(&(remote.sin_zero),sizeof(remote.sin_zero));

app_config->cfg.use_srtp = PJMEDIA_SRTP_MANDATORY;
app_config->cfg.srtp_secure_signaling = 1;

提前致谢

最佳答案

TlsConfig tlsConfig = new TlsConfig();

tlsConfig.setCertFile(certFile);

sipTpConfig.setTlsConfig(tlsConfig);
tlsConfig.setCaListFile(caListFile);

我通过网络搜索和阅读SIP和PJSIP的文件进行了R& D,然后我找到了对于PJMEDIA_SRTP_MANDATORY和setSrtpSecureSignaling(1)的accountConfig,通过以下方式提供

accCfg.getMediaConfig().setSrtpUse(pjmedia_srtp_use.PJMEDIA_SRTP_MANDATORY);
accCfg.getMediaConfig().setSrtpSecureSignaling(1);

因此TLS使用CAListFile和CertificateFile

点赞