Вверх ↑
Этот топик читают: Гость
Ответов: 65
Рейтинг: 2
#1: 2012-02-13 23:12:42 ЛС | профиль | цитата
Добрый вечер, пытаюсь сделать 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:
Уже вторая моя тема дохнет, это игнор в мой ник? обидно даже((

карма: 1

0
файлы: 2code_26527.txt [1.8KB] [122], code_26860.txt [2.5KB] [113]
Ответов: 5446
Рейтинг: 323
#2: 2012-02-13 23:28:30 ЛС | профиль | цитата
geniy3dmax, в HiAsm уже есть компоненты для XMPP (Вкладка Интернет, группа Jabber).
карма: 1

0
Ответов: 65
Рейтинг: 2
#3: 2012-02-14 00:03:11 ЛС | профиль | цитата
Странно у меня нет,версия 4.4 +обновление по svn =
Юзал эти компаненты,мне нужена возможность подключения к vk.com по протоколу XMPP.
Стандартные компаненты ведут себя не очень одекватно,после авторизации и получения списка контактов
конектиться заного до бесконечности =
------------ Дoбавленo в 23.53:
последняя вкладка у меня MRA=(
------------ Дoбавленo в 00.03:
Так... компаненты оказывается есть,посмотрел по .pas но в среде на палитре их нет=
Как исправить?
карма: 1

0
Ответов: 1821
Рейтинг: 168
#4: 2012-02-14 00:13:01 ЛС | профиль | цитата
geniy3dmax, SVN, или обновитесь по ночным сборкам.
карма: 5

0
Ответов: 16884
Рейтинг: 1240
#5: 2012-02-14 00:18:24 ЛС | профиль | цитата
geniy3dmax писал(а):
Так... компаненты оказывается есть,посмотрел по .pas но в среде на палитре их нет=

Перетяни их ini на значок HiAsm
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 65
Рейтинг: 2
#6: 2012-02-14 01:06:44 ЛС | профиль | цитата
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;
тоже самое в hiasm или запихать это в IC?
карма: 1

0
6
Сообщение
...
Прикрепленные файлы
(файлы не залиты)