Skip to content

Connicpu/mtproto-rs

MTProto-rs

MTProto protocol and schema implementation in Rust.

Intended to provide low-level features to create a robust foundation for higher-level libraries such as telegram-rs.

Supports Rust 1.19 or newer. Older versions may work, but not guaranteed to.

Features

Currently implemented and planned features include:

  • Code autogeneration for TL-schema (implemented in tl_codegen)
  • MTProto binary [de]serialization (handled by serde_mtproto)
  • Encryption facilities which enforce security guidelines
  • Key exchange
  • Seamless RPC:
    • Schema functions are modeled as structs
    • Sending requests and receiving responses are automatically provided by associated methods
  • Handling sessions and messages

Examples

There are 3 examples which you can build and run:

tcp_auth

Fetches authorization key over TCP. Supports 3 modes: abridged, intermediate and full (this example uses all three).

Based on tokio.

$ cargo run --example tcp_auth
# For verbose output use
$ RUST_LOG=tcp_auth=info cargo run --example tcp_auth

http_auth

Same as tcp_auth but over HTTP which only has 1 mode.

Based on tokio and hyper.

$ cargo run --example http_auth
# For verbose output use
$ RUST_LOG=http_auth=info cargo run --example http_auth

dynamic

Dynamic typing using TLObject in action.

$ cargo run --example dynamic
# For verbose output use
$ RUST_LOG=dynamic=info cargo run --example dynamic

You can also look at tests for more use cases which are automatically tested.

License

MTProto-rs is licensed under either of

at your option.

About

No description, website, or topics provided.

Resources

License

Unknown and 2 other licenses found

Licenses found

Unknown
LICENSE
Apache-2.0
LICENSE_APACHE
MIT
LICENSE_MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages