My name is Alexandr Akulich and this year I’m accepted for GSoC 2014 to work on Qt-based Telegram Connection Manager for KDE Telepathy.
In this post I’ll tell you about my goals and let you know, what is already done.
Creation of Qt-based Telegram CM for KDE Telepathy is a task, that requires work throughout the entire stack, so I split task into three smaller and easier to handle.
Only small high-level part will depend on KDE, while most of that stack is shared between several operation systems and desktop environments, so it will work for Jolla, Empathy, Ubuntu’s IM client and any other software, powered by Telepathy.
On lower level, I decide to develop some core library, named libTelegramQt. This library will transparently do all low-level tasks (establish connection to Telegram server, handle data centers, do all cryptographic and RPC stuff) and provide convenient API for messaging, files transferring, contact-list operations and other actions.
On medium level, I have to implement connection manager itself. This sub-task is complicated due to lack of TelepathyQt Service bindings operability and documentation. For our luck, there is a branch with all needed stuff. With big support from my fantastic, excellent and irreplaceable mentor, David Edmundson, this branch is going to be tested and merged into master.
On high level, there will be plugin for KDE Telepathy, which will provide Telegram accounts setup. This task have need some trick, because Telegram requires confirmation code to be obtaining via SMS. My plan is to provide DBus method (like “send auth code to <phone number>”) in Connection Manager and to invoke it from KDE Control Module.
What is done by now:
Implemented supporting app to generate enum with Telegram Schema constants.
Implemented authorization key creation. It means, that library is able to talk with server in Diffie-Hellman encrypted session to get it’s secret numbers to turn on primary AES encryption. (passed all this stuff)
As next step, implemented package’s AES encryption/decryption with control sums checking. To test that thing, implemented Data Centers configuration obtaining, but that config is not used yet.
To be able to rely on quality of the library and to simplify refactor and porting to new platforms, I implemented automatic tests, which already saved me few hours of manual testing.
As means to test the library in real action, I created small application that connects to the server, passes authentication and gets the DC Config.
My next steps are to implement DC configuration usage, send acknowledgment packages and, finally, to send request for SMS with confirmation code.
Thank you for reading and stay tuned to know about Telegram Connection Manager progress.
Links: telegram-qt repository