Skip to content

Instantly share code, notes, and snippets.

@grigoriy
Created May 21, 2019 18:59
Show Gist options
  • Save grigoriy/42a8cfc97f355891d16be472c62a36bd to your computer and use it in GitHub Desktop.
Save grigoriy/42a8cfc97f355891d16be472c62a36bd to your computer and use it in GitHub Desktop.
Scala_test_upd.md

Тестовое задание для Scala

Написать примитивный mtproto сервер (два состояния) с помощью scodec, scalaz-zio (для хранения и обработки состояния) и java NIO 2 (TCP).

Сервер должен уметь выполнять первые 2 команды при инициализации DH-сессии: req_pq и req_DH_params.

На req_pq отдает res_pq со случайными данными и ждет req_DH_params на который закрывает коннект.

Валидация не нужна, используйте random данные и игнорируйте правила в документации какие значения полей должны быть. Проект нужен только как демонстрация scalaz-zio + nio2 + scodec.

Для сериализации TL string используйте scodec.codecs.ascii32. Числовые кодеки все big-endian.

Для req_DH_params нужен cipher: RSA/ECB/NoPadding.

Состояние сессии хранить в https://scalaz.github.io/scalaz-zio/datatypes/ref.html.

Документация по mtproto:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment