Friday September 05 2014 12:39, Ivan Agarkov wrote to Yuri Myakotin: YM>> Я потихоньку там в вики описание протокола набиваю, но пока там YM>> только малая часть - описание команд. Еще как минимум все YM>> используемые структуры описать надо будет, систему приоритетов YM>> команд, и вообще механику сессии - как происходит логин, как YM>> происходит передача эхомейла, алгоритм получения хеша для логина YM>> и ключа/вектора инициализации для шифрования etc etc etc.
IA> Я бы предложил по блокам расписывать и я это буду к себе добавлять. IA> Формат сообщения - 32 бита хидер, из которых 8 старших бит - тип IA> пакета, а остальное - длинна. Кстати зачем 8 бит, если там и в 4 всё IA> уложится? :-) Hа будущее. Запас. К примеру, можно будет добавить подписку-отписку-создание эх-фреки-etc в виде служебных сообщений, а не нетмейла к ареафиксу.
IA> Hо не суть. Дальше сервер посылает какой-то хэш а клиент IA> посылает пароли - так? Сервер посылает инфу о себе (CMD_SRV_FIRST) - версию протокола, флаги (на данный момент реализован 1-битный флаг включения шифрования и 2-битный флаг приема нетмейла на непарольной сессии), рандомный хэш 32 байта, количество AKA и их список, плюс пакованный блок текстовой инфы (5 юникод-строк: название софта, станции, имя сисопа, местоположение и прочая инфа).
Клиент проверяет соответствие фидо-адреса сервера ожидаемому адресу линка, если да - отвечает точно таким же пакетом (СMD_CLIENT_FIRST) со своими данными, вычисляя функцией kessak_256 ответный хеш из: 32 байт хеша сервера, после которых идет юникод-пароль на сессию.