# Dependencies

## aes

Needed for its AES-256 cipher, which is used to build the AES-IGE mode used by Telegram.

## getrandom

Used to generate secure padding when encrypting outgoing messages.

## num-bigint

Used for hand-rolled RSA encryption, which is used during the generation of an authorization key.

This *may* make the second part of the authorization key vulnerable to a certain type of timing
attack, although I'm not sure how dangerous it is in practice.

If this concerns you, please propose a fix and send a pull request.

## sha1

Used in certain functions that require a certain AES key.

## sha2

Used for calculating the AES key given an authorization key, and also for 2FA.

## pbkdf2

Used for methods relied on by the 2-factor offered by Telegram.

## hmac

Used for methods relied on by the 2-factor offered by Telegram.

## glass_pumpkin

Used for methods relied on by the 2-factor offered by Telegram.

## bencher

Used for benchmarking the encryption and decryption methods.

## num-traits

Used for methods relied on by the 2-factor offered by Telegram.

## toml

Used to test that this file lists all dependencies from `Cargo.toml`.

## ctr

Used for the AES-CTR mode needed for the obfuscated MTProto transport.
