Linphone返回nil ZRTP SAS(身份验证令牌)

时间:2017-05-09 11:15:17

标签: ios encryption voip linphone linphone-sdk

我正在使用Linphone SDK构建安全的VoIP iOS应用程序。

我在应用启动时立即设置媒体加密:

linphone_core_set_media_encryption(theLinphone.lc, LinphoneMediaEncryptionZRTP)

我正试图像这样检索SAS:

linphone_call_get_authentication_token(Call.current())

大部分时间它返回零。但偶尔会返回一个十六进制值,如0x35422f6e6f697461

我甚至得到这个日志: ortp-message-ZRTP secrets on: SAS is xxxx previously verified no是“xxxx”正确的SAS。

1 个答案:

答案 0 :(得分:0)

所以我弄清楚发生了什么。

我在呼叫状态更改为linphone_call_get_authentication_token(Call.current())后立即呼叫LinphoneCallOutgoingProgress。我需要做的就是修复它是为了启动一个Timer,当呼叫状态变为LinphoneCallOutgoingProgress时,每1秒调用一次方法,因为看起来需要一段时间才能生成SAS。这对我有用:

timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) {

    DispatchQueue.main.async {

        let sas = linphone_call_get_authentication_token(Call.current())

        if sas != nil {

            self!.sasLabel.text = String(cString: sas!)
            timer.invalidate()
        }
    }
}