генерирование дайжеста

Пожалуйста помогите!

Я начал писать jabber-клиент на PHP.
Бьюсь над следующей проблемой уже несколько дней - не могу авторизоваться.

Насколько я понял, схема авторизации такая:

1. Клиент здоровается с сервером
<?xml version='1.0'?><stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" to="myserver.ru">

2. В ответ сервер отправляет пакет
<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='813681717' from='myserver.ru' xml:lang='en'>
id - важный параметр, идентификатор соединения, который потом понадобится

3. Клиент представляется
<iq type="get" id="auth_1" to="myserver.ru" ><query xmlns="jabber:iq:auth">&ltusername>user1</username></query></iq>

4. Если нужно сервер запрашивает пароль
<iq type='result' from='myserver.ru' id='auth_1'><query xmlns='jabber:iq:auth>><username>user1</username><password/><digest/><resource/></query></iq>

5. Клиент передаёт хэш пароля внутри тегов <digest>
<iq type="set" id="auth_2" to="myserver.ru" ><query xmlns="jabber:iq:auth"><username>user1</username><digest>3ea2e9e66e316769319da75d1bb9a639fc85c783</digest><resource>Psi<

6. Сервер сверяет хэш, с сгенерированным у себя в случае успеха говорит клиенту, что он авторизован
<iq type='result' from='isib.ru' id='auth_2'/>

Рылся-рылся в спецификации XMPP, так и не нашёл каким именно образом генерируется хэш между тегами <digest>
Нашёл где-то в интернете несколько классов - клиентов джаббера, они не работают, в исходниках увидел, что хэш генерится:
SHA1(id.passwd) //id - идентификатор соединения созданный сервером
Но почему-то не работает.

Может всё не так работает?

Syndicate content