Difference between revisions of "Product key"

From Ace Stream Wiki
Jump to: navigation, search
(Новая страница: «Начиная с версии 2.1.0 движок работает по API только с авторизированными клиентами. Авторизац…»)
(No difference)

Revision as of 13:38, 15 April 2013

Начиная с версии 2.1.0 движок работает по API только с авторизированными клиентами. Авторизация выполняется на этапе рукопожатия. Для успешной авторизации у клиента должен быть ключ продукта. Ключ продукта можно получить бесплатно, заполнив форму здесь

Авторизация клиента

  • клиент отсылает сообщение
HELLOBG version=api_version
  • движок отсылает в ответ
HELLOTS version=engine_version key=request_key
  • клиент формирует ответный ключ и отсылает его движку
READY key=response_key

Если авторизация прошла нормально, то движок продолжит работу с клиентом, отослав событие AUTH (уровень авторизации пользователя).

Если авторизация не прошла, движок отправит клиенту событие NOTREADY. Это же событие будет отправляться в ответ на любые команды от неавторизированного клиента, кроме команд HELLOBG, READY и SHUTDOWN.

request_key
представляет собой буквенно-цифровую строку, сгенерированную случайным образом
response_key
формируется из request_key и ключа продукта по следующему алгоритму, представленного в виде псевдокода:
signature = hex(sha1(request_key + product_key)); // сгенерировать подпись запроса
x = product_key.split("-")[0];                    // вырезаем все символы до первого знака "-" из ключа продукта
response_key = x + "-" + signature;               // отправляем движку вырезанную на предыдущем этапе строку и подпись, разделенные знаком "-"

Пример

Для примера предположим, что клиент использует ключ продукта 123456-111111-222222-333333

Подпись для response_key в данном примере формируется так: hex(sha1("5eb1f78f123456-111111-222222-333333")) == fd2a247d83adffed56d82cca150d5fab225f1408


>>HELLOBG version=4
<<HELLOTS version=2.1.0 key=5eb1f78f
>>READY key=123456-fd2a247d83adffed56d82cca150d5fab225f1408
<<AUTH 1