Skip to main content

hermes_tdata/
lib.rs

1//! # hermes-tdata
2//!
3//! A pure Rust library for parsing Telegram Desktop `tdata` folders and converting
4//! them to grammers sessions.
5//!
6//! ## Features
7//!
8//! - Parse `tdata` folders from Telegram Desktop
9//! - Extract authorization keys (auth_key) and datacenter IDs
10//! - Convert to grammers session format
11//! - Support for password-protected tdata (Local Passcode)
12//! - Zero Python dependencies
13//!
14//! ## Example
15//!
16//! ```rust,no_run
17//! use hermes_tdata::TDesktop;
18//!
19//! fn main() -> Result<(), hermes_tdata::Error> {
20//!     // Load tdata from default location
21//!     let tdesktop = TDesktop::from_path("/path/to/tdata")?;
22//!     
23//!     // Get the main account's session
24//!     if let Some(account) = tdesktop.main_account() {
25//!         let session_data = account.to_grammers_session_data();
26//!         println!("SessionData prepared for DC {}", session_data.home_dc);
27//!     }
28//!     
29//!     Ok(())
30//! }
31//! ```
32
33mod account;
34mod error;
35mod storage;
36mod tdesktop;
37
38/// Cryptographic primitives for tdata encryption/decryption
39pub mod crypto;
40
41/// Qt DataStream binary format parser
42pub mod qdatastream;
43
44pub use account::Account;
45pub use error::{Error, Result};
46pub use tdesktop::TDesktop;
47
48/// Auth key size in bytes (256 bytes = 2048 bits)
49pub const AUTH_KEY_SIZE: usize = 256;
50
51/// Default key file name
52pub const DEFAULT_KEY_FILE: &str = "data";
53
54/// Maximum number of accounts supported by Telegram Desktop
55pub const MAX_ACCOUNTS: usize = 3;