Если на * в sip.conf у абонента не указан secret, то обычного сообщения с заголовком REGISTER достаточно. Но если пассворд указан, все несколько сложнее.
На попытку REGISTER мне * отвечает: "401 Unautorized", и в одном из полей присылает строку следующего содержания:
WWW-Authenticate: Digest realm="asterisk", nonce="5ca095d4"
где nonce - это уникальная комбинация для каждой сессии, это понятно. Запускаем tcpdump и наблюдаем, что клиент (в моем конкретном случае - Phoner) отвечает:
Authorization: Digest username="501", realm="asterisk", nonce="5ca095d4", uri="sip:192.168.1.46", response="9619ee960379f024f07042081daf8fdc", algorithm=MD5
Где response - это (читаем у Гольдштейна):
<цитата>
Строка, состоящая из 32 шестнадцатиричных разрядов и удостоверяющая, что пользователю известен пароль. Формируется с помошью применения функции хеширования к значениям nonce, nc, cnonce, qop, uri, username, realm, типу запроса и паролю password. По умолчанию хеширование производится по алгоритму MD5.
</цитата>
А теперь собственно вопрос: Что, в каком порядке и каким образом мне нужно собрать в строку, пропустить через МД5, чтобы на выходе получилось 9619ee960379f024f07042081daf8fdc? Или хотя бы где это описано? № RFC?