telegram-mt-node
Telegram Mobile Protocol (MTProto) unofficial library in pure javascript on the Node.js platform
About MTProto..
MTProto is the Telegram Messenger protocol "designed for access to a server API from applications running on mobile devices".
The Mobile Protocol is subdivided into three components (from the official site):
-
High-level component (API query language): defines the method whereby API queries and responses are converted to binary messages.
-
Cryptographic (authorization) layer: defines the method by which messages are encrypted prior to being transmitted through the transport protocol.
-
Transport component: defines the method for the client and the server to transmit messages over some other existing network protocol (such as, http, https, tcp, udp).
telegram-mt-node in short..
The telegram-mt-node library implements the Mobile Protocol and provides the following features:
-
Both TCP and HTTP connections implemented in the transport layer
-
A cipher implementation for AES and RSA encryption in the security layer
-
Both plain-text and encrypted message to communicate data with the server
-
Diffie-Hellman key exchange supported by the prime factorization function implemented in the security layer
-
MTProto TL-Schema compilation as javascript classes and functions via telegram-tl-node dependency
telegram.link main project depends by this library.
Installation
$ git clone --branch=master git://github.com/enricostara/telegram-mt-node.git$ cd telegram-mt-node$ npm install
Unit Testing
$ npm test
Example
You can find an example where take an auth key on the fly and ask what is the nearest DataCenter:
$ npm run-script example
Dependencies
-
telegram-tl-node: a Telegram TypeLanguage library
-
get-log: a Node.js Logging Utility, easy to use and ready for production.
-
jsbn: a portable implementation of large-number math in pure JavaScript, enabling public-key crypto and other applications on desktop and mobile browsers.
-
bigint-node: the Leemon Baird BigInteger javascript library ported to Node.js
-
node-cryptojs-aes: A minimalist port of cryptojs javascript library to node.js, that supports AES symmetric key cryptography
License
The project is released under the Mit License