Добрый вечер, пытаюсь сделать XMPP клиент на Hiasm'e пользуясь статьей http://forum.antichat.ru/showthread.php?t=123963
Знающие помогите реализовать Алгоритм вычисления response.
Код на delphi
code_26860.txt
Помогите пожалуйста сделать тоже самое в hiasm, Спасибо всем кто чем то поможет.
------------ Дoбавленo в 20.24:
Эммм... code_26527.txt не знаю как это сюда попало =\
------------ Дoбавленo в 23.12:
Уже вторая моя тема дохнет, это игнор в мой ник? обидно даже((
Этот топик читают: Гость
|
Ответов: 65
Рейтинг: 2
|
|||
| карма: 1 |
| ||
| файлы: 2 | code_26527.txt [1.8KB] [122], code_26860.txt [2.5KB] [113] |
|
Ответов: 5446
Рейтинг: 323
|
|||
|
geniy3dmax, в HiAsm уже есть компоненты для XMPP (Вкладка Интернет, группа Jabber).
|
|||
| карма: 1 |
|
|
Ответов: 65
Рейтинг: 2
|
|||
|
Странно у меня нет,версия 4.4 +обновление по svn =
Юзал эти компаненты,мне нужена возможность подключения к vk.com по протоколу XMPP. Стандартные компаненты ведут себя не очень одекватно,после авторизации и получения списка контактов конектиться заного до бесконечности = ------------ Дoбавленo в 23.53: последняя вкладка у меня MRA=( ------------ Дoбавленo в 00.03: Так... компаненты оказывается есть,посмотрел по .pas но в среде на палитре их нет= Как исправить? |
|||
| карма: 1 |
|
|
Ответов: 1821
Рейтинг: 168
|
|||
|
geniy3dmax, SVN, или обновитесь по ночным сборкам.
|
|||
| карма: 5 |
|
|
Ответов: 16884
Рейтинг: 1240
|
|||
|
geniy3dmax писал(а): Так... компаненты оказывается есть,посмотрел по .pas но в среде на палитре их нет=Перетяни их ini на значок HiAsm |
|||
| карма: 25 |
|
|
Ответов: 65
Рейтинг: 2
|
|||
|
Tad, Спасибо
------------ Дoбавленo в 01.06: Ладно вопрос подругому, Возможно ли вообще повторить #pas
function GenResponse(UserName, realm, digest_uri, Pass, nonce, cnonce : String) : string; const nc = '00000001'; gop = 'auth'; var A2, HA1, HA2, sJID : String; Razdel : Byte; Context : TMD5Context; DigestJID : TMD5Digest; DigestHA1 : TMD5Digest; DigestHA2 : TMD5Digest; DigestResponse : TMD5Digest; begin Razdel := Ord(':'); // ВЫЧИСЛЯЕМ А1 по формуле RFC 2831 // A1 = { H( { username-value, ":", realm-value, ":", passwd } ), // ":", nonce-value, ":", cnonce-value, ":", authzid-value } sJID := format('%S:%S:%S', [username, realm, Pass]); MD5Init(Context); MD5UpdateBuffer(Context, PByteArray(@sJID[1]) , Length(sJID)); MD5Final(DigestJID, Context); MD5Init(Context); MD5UpdateBuffer(Context, PByteArray(@DigestJID),SizeOf(TMD5Digest)); MD5UpdateBuffer(Context, @Razdel , SizeOf(Razdel)); MD5UpdateBuffer(Context, PByteArray(@nonce[1]) , Length(nonce)); MD5UpdateBuffer(Context, @Razdel , SizeOf(Razdel)); MD5UpdateBuffer(Context, PByteArray(@cnonce[1]) , Length(cnonce)); MD5Final(DigestHA1, Context); // ВЫЧИСЛЯЕМ А2 по формуле RFC 2831 // A2 = { "AUTHENTICATE:", digest-uri-value } A2 := format('AUTHENTICATE:%S', [digest_uri]); MD5Init(Context); MD5UpdateBuffer(Context, PByteArray(@A2[1]) , Length(A2)); MD5Final(DigestHA2, Context); // ВЫЧИСЛЯЕМ RESPONSE по формуле RFC 2831 // HEX( KD ( HEX(H(A1)), // { nonce-value, ":" nc-value, ":", // cnonce-value, ":", qop-value, ":", HEX(H(A2)) })) HA1 := LowerCase( PacketToHex(@DigestHA1, SizeOf(TMD5Digest))); HA2 := LowerCase( PacketToHex(@DigestHA2, SizeOf(TMD5Digest))); MD5Init(Context); MD5UpdateBuffer(Context, PByteArray(@HA1[1]),Length(HA1)); MD5UpdateBuffer(Context, @Razdel , SizeOf(Razdel)); MD5UpdateBuffer(Context, PByteArray(@nonce[1]) , Length(nonce)); MD5UpdateBuffer(Context, @Razdel , SizeOf(Razdel)); MD5UpdateBuffer(Context, PByteArray(@nc[1]) , Length(nc)); MD5UpdateBuffer(Context, @Razdel , SizeOf(Razdel)); MD5UpdateBuffer(Context, PByteArray(@cnonce[1]) , Length(cnonce)); MD5UpdateBuffer(Context, @Razdel , SizeOf(Razdel)); MD5UpdateBuffer(Context, PByteArray(@gop[1]) , Length(gop)); MD5UpdateBuffer(Context, @Razdel , SizeOf(Razdel)); MD5UpdateBuffer(Context, PByteArray(@HA2[1]),Length(HA2)); MD5Final(DigestResponse, Context); Result := LowerCase( PacketToHex(@DigestResponse, SizeOf(TMD5Digest)) ) end; |
|||
| карма: 1 |
|
6



Поиск
Друзья
Администрация