1. В логе Asterisk выпадает:
sdp_crypto_process: Unsupported crypto suite: AES_CM_256_HMAC_SHA1_80
chan_sip.c:10384 process_sdp: Rejecting secure audio stream without encryption details: audio 16406 RTP/SAVP 18 9 8 0 101 13
2. Устанавливается соединение между телефонами, голос идет нормально. Wireshark спокойно извлекает голос из потока.
У телефона стоит encryption=yes, и если на телефоне вообще отключить шифрование, то звонок отбивается как и положено (HANGUPCAUSE=5
Дальнейший раскур логов показал следующее. У телефона есть два режима.
1. Retry with RTP. В этом случае в пределах одной сессии телефон сначала запрашивает SRTP (и не получает его с отлупом unsupported crypto suite) и, НЕ РАЗРЫВАЯ СЕССИИ сразу же шлет повторный INVITE с SDP, в котором предлагает RTP/AVP. Asterisk (мое мнение) в этом случае считает что шифрование было предложено, и канал не разрывает. Но голос между устройствами идет нешифрованный.
2. Offer SRTP and RTP. В этом случае в SDP предлагается и то, и другое. Asterisk радостно рапортует о том, что девайс не поддерживает SRTP и звонок сбрасывается с HANGUPCAUSE=58.
Самое неприятное в первом случае заключается в том, что sip show channel %peername% показывает что шифрование в ходе разговора включено, хотя на самом деле это не так.
Соответственно, попытка добавить в макрос диалплана проверку CHANNEL(secure_media) бесполезна - она возвращает единицу даже тогда, когда сниффер может спокойно прослушать поток.
В виду того, что пользоваться приходится именно этой моделью телефонов, возникает вопрос - можно ли как-то проверить, шифруется ли поток в ходе установления звонка?
_________________
платный суппорт по мере возможностей