TgCrypto2


NameTgCrypto2 JSON
Version 1.3.4 PyPI version JSON
download
home_pageNone
SummaryFast and Portable Cryptography Extension Library for Pyrogram
upload_time2025-09-01 19:14:43
maintainerNone
docs_urlNone
authorNone
requires_python>=3.7
licenseNone
keywords pyrogram telegram crypto cryptography encryption mtproto extension library aes
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # TgCrypto2

> Fast and Portable Cryptography Extension Library for Pyrogram

**TgCrypto2** is a Cryptography Library written in C as a Python extension. It is designed to be portable, fast,
easy to install and use. TgCrypto2 is intended for [Pyrogram](https://github.com/pyrogram/pyrogram) and implements the
cryptographic algorithms Telegram requires, namely:

- **`AES-256-IGE`** - used in [MTProto v2.0](https://core.telegram.org/mtproto).
- **`AES-256-CTR`** - used for [CDN encrypted files](https://core.telegram.org/cdn).
- **`AES-256-CBC`** - used for [encrypted passport credentials](https://core.telegram.org/passport).

## Requirements

- Python 3.7 or higher.

## Installation

``` bash
$ pip3 install -U tgcrypto2
```

## API

TgCrypto2 API consists of these six methods:

```python
def ige256_encrypt(data: bytes, key: bytes, iv: bytes) -> bytes: ...
def ige256_decrypt(data: bytes, key: bytes, iv: bytes) -> bytes: ...

def ctr256_encrypt(data: bytes, key: bytes, iv: bytes, state: bytes) -> bytes: ...
def ctr256_decrypt(data: bytes, key: bytes, iv: bytes, state: bytes) -> bytes: ...

def cbc256_encrypt(data: bytes, key: bytes, iv: bytes) -> bytes: ...
def cbc256_decrypt(data: bytes, key: bytes, iv: bytes) -> bytes: ...
```

## Usage

### IGE Mode

**Note**: Data must be padded to match a multiple of the block size (16 bytes).

``` python
import os

import tgcrypto2

data = os.urandom(10 * 1024 * 1024 + 7)  # 10 MB of random data + 7 bytes to show padding
key = os.urandom(32)  # Random Key
iv = os.urandom(32)  # Random IV

# Pad with zeroes: -7 % 16 = 9
data += bytes(-len(data) % 16)

ige_encrypted = tgcrypto2.ige256_encrypt(data, key, iv)
ige_decrypted = tgcrypto2.ige256_decrypt(ige_encrypted, key, iv)

print(data == ige_decrypted)  # True
```
    
### CTR Mode (single chunk)

``` python
import os

import tgcrypto2

data = os.urandom(10 * 1024 * 1024)  # 10 MB of random data

key = os.urandom(32)  # Random Key

enc_iv = bytearray(os.urandom(16))  # Random IV
dec_iv = enc_iv.copy()  # Keep a copy for decryption

ctr_encrypted = tgcrypto2.ctr256_encrypt(data, key, enc_iv, bytes(1))
ctr_decrypted = tgcrypto2.ctr256_decrypt(ctr_encrypted, key, dec_iv, bytes(1))

print(data == ctr_decrypted)  # True
```

### CTR Mode (stream)

``` python
import os
from io import BytesIO

import tgcrypto2

data = BytesIO(os.urandom(10 * 1024 * 1024))  # 10 MB of random data

key = os.urandom(32)  # Random Key

enc_iv = bytearray(os.urandom(16))  # Random IV
dec_iv = enc_iv.copy()  # Keep a copy for decryption

enc_state = bytes(1)  # Encryption state, starts from 0
dec_state = bytes(1)  # Decryption state, starts from 0

encrypted_data = BytesIO()  # Encrypted data buffer
decrypted_data = BytesIO()  # Decrypted data buffer

while True:
    chunk = data.read(1024)

    if not chunk:
        break

    # Write 1K encrypted bytes into the encrypted data buffer
    encrypted_data.write(tgcrypto2.ctr256_encrypt(chunk, key, enc_iv, enc_state))

# Reset position. We need to read it now
encrypted_data.seek(0)

while True:
    chunk = encrypted_data.read(1024)

    if not chunk:
        break

    # Write 1K decrypted bytes into the decrypted data buffer
    decrypted_data.write(tgcrypto2.ctr256_decrypt(chunk, key, dec_iv, dec_state))

print(data.getvalue() == decrypted_data.getvalue())  # True
```

### CBC Mode

**Note**: Data must be padded to match a multiple of the block size (16 bytes).

``` python
import os

import tgcrypto2

data = os.urandom(10 * 1024 * 1024 + 7)  # 10 MB of random data + 7 bytes to show padding
key = os.urandom(32)  # Random Key

enc_iv = bytearray(os.urandom(16))  # Random IV
dec_iv = enc_iv.copy()  # Keep a copy for decryption

# Pad with zeroes: -7 % 16 = 9
data += bytes(-len(data) % 16)

cbc_encrypted = tgcrypto2.cbc256_encrypt(data, key, enc_iv)
cbc_decrypted = tgcrypto2.cbc256_decrypt(cbc_encrypted, key, dec_iv)

print(data == cbc_decrypted)  # True
```

## Testing

1. Clone this repository: `git clone https://github.com/tboy1337/tgcrypto2`.
2. Enter the directory: `cd tgcrypto2`.
3. Install `tox`: `pip3 install tox`
4. Run tests: `tox`.

## License

[LGPLv3+](COPYING.lesser) © 2017-present [Dan](https://github.com/delivrance)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "TgCrypto2",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "pyrogram, telegram, crypto, cryptography, encryption, mtproto, extension, library, aes",
    "author": null,
    "author_email": "Dan <dan@pyrogram.org>",
    "download_url": null,
    "platform": null,
    "description": "# TgCrypto2\n\n> Fast and Portable Cryptography Extension Library for Pyrogram\n\n**TgCrypto2** is a Cryptography Library written in C as a Python extension. It is designed to be portable, fast,\neasy to install and use. TgCrypto2 is intended for [Pyrogram](https://github.com/pyrogram/pyrogram) and implements the\ncryptographic algorithms Telegram requires, namely:\n\n- **`AES-256-IGE`** - used in [MTProto v2.0](https://core.telegram.org/mtproto).\n- **`AES-256-CTR`** - used for [CDN encrypted files](https://core.telegram.org/cdn).\n- **`AES-256-CBC`** - used for [encrypted passport credentials](https://core.telegram.org/passport).\n\n## Requirements\n\n- Python 3.7 or higher.\n\n## Installation\n\n``` bash\n$ pip3 install -U tgcrypto2\n```\n\n## API\n\nTgCrypto2 API consists of these six methods:\n\n```python\ndef ige256_encrypt(data: bytes, key: bytes, iv: bytes) -> bytes: ...\ndef ige256_decrypt(data: bytes, key: bytes, iv: bytes) -> bytes: ...\n\ndef ctr256_encrypt(data: bytes, key: bytes, iv: bytes, state: bytes) -> bytes: ...\ndef ctr256_decrypt(data: bytes, key: bytes, iv: bytes, state: bytes) -> bytes: ...\n\ndef cbc256_encrypt(data: bytes, key: bytes, iv: bytes) -> bytes: ...\ndef cbc256_decrypt(data: bytes, key: bytes, iv: bytes) -> bytes: ...\n```\n\n## Usage\n\n### IGE Mode\n\n**Note**: Data must be padded to match a multiple of the block size (16 bytes).\n\n``` python\nimport os\n\nimport tgcrypto2\n\ndata = os.urandom(10 * 1024 * 1024 + 7)  # 10 MB of random data + 7 bytes to show padding\nkey = os.urandom(32)  # Random Key\niv = os.urandom(32)  # Random IV\n\n# Pad with zeroes: -7 % 16 = 9\ndata += bytes(-len(data) % 16)\n\nige_encrypted = tgcrypto2.ige256_encrypt(data, key, iv)\nige_decrypted = tgcrypto2.ige256_decrypt(ige_encrypted, key, iv)\n\nprint(data == ige_decrypted)  # True\n```\n    \n### CTR Mode (single chunk)\n\n``` python\nimport os\n\nimport tgcrypto2\n\ndata = os.urandom(10 * 1024 * 1024)  # 10 MB of random data\n\nkey = os.urandom(32)  # Random Key\n\nenc_iv = bytearray(os.urandom(16))  # Random IV\ndec_iv = enc_iv.copy()  # Keep a copy for decryption\n\nctr_encrypted = tgcrypto2.ctr256_encrypt(data, key, enc_iv, bytes(1))\nctr_decrypted = tgcrypto2.ctr256_decrypt(ctr_encrypted, key, dec_iv, bytes(1))\n\nprint(data == ctr_decrypted)  # True\n```\n\n### CTR Mode (stream)\n\n``` python\nimport os\nfrom io import BytesIO\n\nimport tgcrypto2\n\ndata = BytesIO(os.urandom(10 * 1024 * 1024))  # 10 MB of random data\n\nkey = os.urandom(32)  # Random Key\n\nenc_iv = bytearray(os.urandom(16))  # Random IV\ndec_iv = enc_iv.copy()  # Keep a copy for decryption\n\nenc_state = bytes(1)  # Encryption state, starts from 0\ndec_state = bytes(1)  # Decryption state, starts from 0\n\nencrypted_data = BytesIO()  # Encrypted data buffer\ndecrypted_data = BytesIO()  # Decrypted data buffer\n\nwhile True:\n    chunk = data.read(1024)\n\n    if not chunk:\n        break\n\n    # Write 1K encrypted bytes into the encrypted data buffer\n    encrypted_data.write(tgcrypto2.ctr256_encrypt(chunk, key, enc_iv, enc_state))\n\n# Reset position. We need to read it now\nencrypted_data.seek(0)\n\nwhile True:\n    chunk = encrypted_data.read(1024)\n\n    if not chunk:\n        break\n\n    # Write 1K decrypted bytes into the decrypted data buffer\n    decrypted_data.write(tgcrypto2.ctr256_decrypt(chunk, key, dec_iv, dec_state))\n\nprint(data.getvalue() == decrypted_data.getvalue())  # True\n```\n\n### CBC Mode\n\n**Note**: Data must be padded to match a multiple of the block size (16 bytes).\n\n``` python\nimport os\n\nimport tgcrypto2\n\ndata = os.urandom(10 * 1024 * 1024 + 7)  # 10 MB of random data + 7 bytes to show padding\nkey = os.urandom(32)  # Random Key\n\nenc_iv = bytearray(os.urandom(16))  # Random IV\ndec_iv = enc_iv.copy()  # Keep a copy for decryption\n\n# Pad with zeroes: -7 % 16 = 9\ndata += bytes(-len(data) % 16)\n\ncbc_encrypted = tgcrypto2.cbc256_encrypt(data, key, enc_iv)\ncbc_decrypted = tgcrypto2.cbc256_decrypt(cbc_encrypted, key, dec_iv)\n\nprint(data == cbc_decrypted)  # True\n```\n\n## Testing\n\n1. Clone this repository: `git clone https://github.com/tboy1337/tgcrypto2`.\n2. Enter the directory: `cd tgcrypto2`.\n3. Install `tox`: `pip3 install tox`\n4. Run tests: `tox`.\n\n## License\n\n[LGPLv3+](COPYING.lesser) \u00a9 2017-present [Dan](https://github.com/delivrance)\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Fast and Portable Cryptography Extension Library for Pyrogram",
    "version": "1.3.4",
    "project_urls": {
        "Community": "https://t.me/pyrogram",
        "Documentation": "https://docs.pyrogram.org",
        "Download": "https://github.com/pyrogram/tgcrypto/releases/latest",
        "Homepage": "https://github.com/pyrogram",
        "Source": "https://github.com/pyrogram/tgcrypto",
        "Tracker": "https://github.com/pyrogram/tgcrypto/issues"
    },
    "split_keywords": [
        "pyrogram",
        " telegram",
        " crypto",
        " cryptography",
        " encryption",
        " mtproto",
        " extension",
        " library",
        " aes"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a7cbed635a8cea5e13881795d998eadd7749294320ec28d6d40111cb89258e72",
                "md5": "c6a8fbda814aab9f54622c99e4f571ae",
                "sha256": "b365619a605ab44154dbaa9f4b637e6b14ed628294fa8cc127c74e479a5a0b72"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp310-cp310-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "c6a8fbda814aab9f54622c99e4f571ae",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 50815,
            "upload_time": "2025-09-01T19:14:43",
            "upload_time_iso_8601": "2025-09-01T19:14:43.121089Z",
            "url": "https://files.pythonhosted.org/packages/a7/cb/ed635a8cea5e13881795d998eadd7749294320ec28d6d40111cb89258e72/tgcrypto2-1.3.4-cp310-cp310-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1d265e12f8c8a05f8173a690270635b12df7fb66d98130b8691128dd40a6f3a5",
                "md5": "4d70f913492b7738ab4c8a7ad3577f3a",
                "sha256": "cf5041492059faa2b1bcc7363446539e5a221ad5149f07635c36b611c8cecab1"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4d70f913492b7738ab4c8a7ad3577f3a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 35119,
            "upload_time": "2025-09-01T19:14:44",
            "upload_time_iso_8601": "2025-09-01T19:14:44.167092Z",
            "url": "https://files.pythonhosted.org/packages/1d/26/5e12f8c8a05f8173a690270635b12df7fb66d98130b8691128dd40a6f3a5/tgcrypto2-1.3.4-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9ee31e33164baf83fe712d23a920079f0e8c61111a1fe6c5a6c31cc7c7111838",
                "md5": "ee3631b512dbb7340fdd8671ee282827",
                "sha256": "196da0c7da710bbe239854046715ff0df2a0e094388ebccca533a573406a9749"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "ee3631b512dbb7340fdd8671ee282827",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 35238,
            "upload_time": "2025-09-01T19:14:44",
            "upload_time_iso_8601": "2025-09-01T19:14:44.903236Z",
            "url": "https://files.pythonhosted.org/packages/9e/e3/1e33164baf83fe712d23a920079f0e8c61111a1fe6c5a6c31cc7c7111838/tgcrypto2-1.3.4-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6bd0d89cd25549ddf378b84fe76d46b99468597c4b4333679541790567f1f026",
                "md5": "364ab63544abe8d539fa9e7e36962f1b",
                "sha256": "628ebee988fa6616ce1e00446128bbf2acf31f7a1b0ea0a1902dc75f20a5de22"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "364ab63544abe8d539fa9e7e36962f1b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 51478,
            "upload_time": "2025-09-01T19:14:45",
            "upload_time_iso_8601": "2025-09-01T19:14:45.960234Z",
            "url": "https://files.pythonhosted.org/packages/6b/d0/d89cd25549ddf378b84fe76d46b99468597c4b4333679541790567f1f026/tgcrypto2-1.3.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f8d3891f0bd0031836a86efbb4532b001066d8669c7c7e4b588a1b5b40aa15a7",
                "md5": "a009d2b44d7a8849be1abd4f43a29986",
                "sha256": "80df098bce32f07c629da19e1a1da5ab41e9282cc9004df16a2eda5b92d9125a"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "a009d2b44d7a8849be1abd4f43a29986",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 51438,
            "upload_time": "2025-09-01T19:14:46",
            "upload_time_iso_8601": "2025-09-01T19:14:46.721531Z",
            "url": "https://files.pythonhosted.org/packages/f8/d3/891f0bd0031836a86efbb4532b001066d8669c7c7e4b588a1b5b40aa15a7/tgcrypto2-1.3.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9e4eeb56c084514ba9082cd3e93d215e0c309988fa9287711a5c06334fb9f0ce",
                "md5": "a089f557cad481bfab782d1f0e7244c0",
                "sha256": "151e90d7b55d017f108a55ee3e2236b7ffea4abc9c7c1d36488f233407ed08a9"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp310-cp310-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "a089f557cad481bfab782d1f0e7244c0",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 49407,
            "upload_time": "2025-09-01T19:14:47",
            "upload_time_iso_8601": "2025-09-01T19:14:47.845056Z",
            "url": "https://files.pythonhosted.org/packages/9e/4e/eb56c084514ba9082cd3e93d215e0c309988fa9287711a5c06334fb9f0ce/tgcrypto2-1.3.4-cp310-cp310-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "03786a8183ca1788e5c1b5fa10ac8d7d266348f27b2653e2b8bc9c4574364c30",
                "md5": "67ec08ebb25d8949e8242d5a0a9cd66b",
                "sha256": "415b2722babb36815e97c9a29347bab71c7e2e1f3b5285cce18154b505ef851f"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp310-cp310-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "67ec08ebb25d8949e8242d5a0a9cd66b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 51203,
            "upload_time": "2025-09-01T19:14:48",
            "upload_time_iso_8601": "2025-09-01T19:14:48.921084Z",
            "url": "https://files.pythonhosted.org/packages/03/78/6a8183ca1788e5c1b5fa10ac8d7d266348f27b2653e2b8bc9c4574364c30/tgcrypto2-1.3.4-cp310-cp310-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2d3a62fa93f01241e5707d7e92bea301892a93f0bfe4cc0f01826472dae2616a",
                "md5": "9eb6603a18825d35ef2aa291a170dc0e",
                "sha256": "a826f81bd9f1f2068e5ab8908c1ad18e64feddf667ba6b6d1918b25c5534b4fb"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp310-cp310-win32.whl",
            "has_sig": false,
            "md5_digest": "9eb6603a18825d35ef2aa291a170dc0e",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 36468,
            "upload_time": "2025-09-01T19:14:50",
            "upload_time_iso_8601": "2025-09-01T19:14:50.040442Z",
            "url": "https://files.pythonhosted.org/packages/2d/3a/62fa93f01241e5707d7e92bea301892a93f0bfe4cc0f01826472dae2616a/tgcrypto2-1.3.4-cp310-cp310-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "affcb8567a1df1b9659f246591e51767f01dd1cc94672d57ac13fb0d894d1ca7",
                "md5": "c133c297d2c183c86c09db5f24ab0121",
                "sha256": "3cfa919e525b2225ac2261e82be10c0623d48a8b11fac8a50dd5481cf77dbded"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "c133c297d2c183c86c09db5f24ab0121",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 37195,
            "upload_time": "2025-09-01T19:14:51",
            "upload_time_iso_8601": "2025-09-01T19:14:51.057648Z",
            "url": "https://files.pythonhosted.org/packages/af/fc/b8567a1df1b9659f246591e51767f01dd1cc94672d57ac13fb0d894d1ca7/tgcrypto2-1.3.4-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ca0b41de6246414d56ee351620cfa4622285cfdbf99b7629d9dc77ad9593c2b2",
                "md5": "f4ac0efcf9f0a835c1ce42aa933c6f00",
                "sha256": "3d9239ab3b8e6d97dce90b5fbcc1b99f995da21105b0f89a56a2c3ba1e62171b"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp311-cp311-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "f4ac0efcf9f0a835c1ce42aa933c6f00",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 50815,
            "upload_time": "2025-09-01T19:14:52",
            "upload_time_iso_8601": "2025-09-01T19:14:52.095271Z",
            "url": "https://files.pythonhosted.org/packages/ca/0b/41de6246414d56ee351620cfa4622285cfdbf99b7629d9dc77ad9593c2b2/tgcrypto2-1.3.4-cp311-cp311-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1e6811dc6841c6f0a3815d5365756462cf5ba5e3593da42f73600dbf2995405c",
                "md5": "a4055fbdbc790613b9d1ca358c135065",
                "sha256": "4a4f0b00cd8f702cd96ff26f15d9d7376581e381660a49afb5c23c7f4b67a21c"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a4055fbdbc790613b9d1ca358c135065",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 35119,
            "upload_time": "2025-09-01T19:14:53",
            "upload_time_iso_8601": "2025-09-01T19:14:53.275581Z",
            "url": "https://files.pythonhosted.org/packages/1e/68/11dc6841c6f0a3815d5365756462cf5ba5e3593da42f73600dbf2995405c/tgcrypto2-1.3.4-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0edc6e5cdf32bcbb0ec2879407a02467a46ba7684d1c563e6086fa84e5ffa282",
                "md5": "327ced0335adf9a6b26baeebd93f25f3",
                "sha256": "a323ed05c2d0dc08de861a515af635777c7019b47f6f49c857ea297ee1bb384e"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "327ced0335adf9a6b26baeebd93f25f3",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 35240,
            "upload_time": "2025-09-01T19:14:54",
            "upload_time_iso_8601": "2025-09-01T19:14:54.042642Z",
            "url": "https://files.pythonhosted.org/packages/0e/dc/6e5cdf32bcbb0ec2879407a02467a46ba7684d1c563e6086fa84e5ffa282/tgcrypto2-1.3.4-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "579a2f933ee090ac5ebc657ffcaa1bd76a688136077f2fe6f16eba54ed123580",
                "md5": "107cb0d4da8c634aa06cf3770ea46168",
                "sha256": "a56448e139950015aa7d6da8b9163978332cfbf8a35d029dc5a366639a137a56"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "107cb0d4da8c634aa06cf3770ea46168",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 52271,
            "upload_time": "2025-09-01T19:14:54",
            "upload_time_iso_8601": "2025-09-01T19:14:54.747497Z",
            "url": "https://files.pythonhosted.org/packages/57/9a/2f933ee090ac5ebc657ffcaa1bd76a688136077f2fe6f16eba54ed123580/tgcrypto2-1.3.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d41ab872c655d4d03e75b401687fe43beed941a06f142060a3c13b1e94af4095",
                "md5": "559705c1c08f24f536458ba991b3958d",
                "sha256": "9436612d02f824868c403d6622266b2c6286dec59c5d624e7c090e0c47776722"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "559705c1c08f24f536458ba991b3958d",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 52169,
            "upload_time": "2025-09-01T19:14:55",
            "upload_time_iso_8601": "2025-09-01T19:14:55.494061Z",
            "url": "https://files.pythonhosted.org/packages/d4/1a/b872c655d4d03e75b401687fe43beed941a06f142060a3c13b1e94af4095/tgcrypto2-1.3.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f5ae389c9dfa714d95074b8e51df7718621037711d4ee9f9d2a4ca2a477155b3",
                "md5": "197f1c02225c0c1d8c4e53fe20b22a48",
                "sha256": "f9d44c57152db7024425e6e51245cbe65776f56b6e0d48ebd7ec38c25f29ddbd"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp311-cp311-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "197f1c02225c0c1d8c4e53fe20b22a48",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 50203,
            "upload_time": "2025-09-01T19:14:56",
            "upload_time_iso_8601": "2025-09-01T19:14:56.282764Z",
            "url": "https://files.pythonhosted.org/packages/f5/ae/389c9dfa714d95074b8e51df7718621037711d4ee9f9d2a4ca2a477155b3/tgcrypto2-1.3.4-cp311-cp311-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ffcb0e730cdc8dd07ca7bd8d8080baa4d891747378f82fb31f303781fc1f31c6",
                "md5": "14faef92191a0483acd0e95538118180",
                "sha256": "508feb9b6f4c3e2d58836c82ae72f085ce1f1344e5f2cd7ac804413dc4966cf4"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp311-cp311-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "14faef92191a0483acd0e95538118180",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 52001,
            "upload_time": "2025-09-01T19:14:57",
            "upload_time_iso_8601": "2025-09-01T19:14:57.052187Z",
            "url": "https://files.pythonhosted.org/packages/ff/cb/0e730cdc8dd07ca7bd8d8080baa4d891747378f82fb31f303781fc1f31c6/tgcrypto2-1.3.4-cp311-cp311-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d44a82b88497a7468d004c4badde77c93323653c6310054c4cdbef03e3b0e9cf",
                "md5": "2c218de623ac334f72e730384eb88484",
                "sha256": "685b14fc83e7f2267aca599a11545cabb3f376cc66c9f4195f21b6f53483a4b6"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp311-cp311-win32.whl",
            "has_sig": false,
            "md5_digest": "2c218de623ac334f72e730384eb88484",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 36470,
            "upload_time": "2025-09-01T19:14:58",
            "upload_time_iso_8601": "2025-09-01T19:14:58.110175Z",
            "url": "https://files.pythonhosted.org/packages/d4/4a/82b88497a7468d004c4badde77c93323653c6310054c4cdbef03e3b0e9cf/tgcrypto2-1.3.4-cp311-cp311-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bd1a439ca4bcae0f45758126aa1b2143a74115b8066b7b9f5cb083fbd3183658",
                "md5": "a5d0eabf13b2fb320345148f577c7acf",
                "sha256": "60d7a4616093a8169e55f29cf5c252fd0ec93504d2b11926743b043113bbf0fd"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "a5d0eabf13b2fb320345148f577c7acf",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 37199,
            "upload_time": "2025-09-01T19:14:58",
            "upload_time_iso_8601": "2025-09-01T19:14:58.822796Z",
            "url": "https://files.pythonhosted.org/packages/bd/1a/439ca4bcae0f45758126aa1b2143a74115b8066b7b9f5cb083fbd3183658/tgcrypto2-1.3.4-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8c0e31d518b8b330d76ac07f7c444d1b33ce108754835bcd30510b0d3676fb41",
                "md5": "4c5a0b17674130ed205debbb4d1578b0",
                "sha256": "b8062a4fe58ae4225e116fa1c6b9d15877e4facac082659607d0fc043e8c8c7d"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp312-cp312-macosx_10_13_universal2.whl",
            "has_sig": false,
            "md5_digest": "4c5a0b17674130ed205debbb4d1578b0",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 50808,
            "upload_time": "2025-09-01T19:14:59",
            "upload_time_iso_8601": "2025-09-01T19:14:59.866640Z",
            "url": "https://files.pythonhosted.org/packages/8c/0e/31d518b8b330d76ac07f7c444d1b33ce108754835bcd30510b0d3676fb41/tgcrypto2-1.3.4-cp312-cp312-macosx_10_13_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9ba652c61d0ba34c05c2e6702777c4a6934fc837eab8c4793a1de715624ec15c",
                "md5": "64c85fa4245e69ee8a2b7daa6778a700",
                "sha256": "7c40aa42fdc5ea9d3386decb2954fddfefdc657b170f2ccb754864ecea8c3b20"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp312-cp312-macosx_10_13_x86_64.whl",
            "has_sig": false,
            "md5_digest": "64c85fa4245e69ee8a2b7daa6778a700",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 35115,
            "upload_time": "2025-09-01T19:15:01",
            "upload_time_iso_8601": "2025-09-01T19:15:01.029922Z",
            "url": "https://files.pythonhosted.org/packages/9b/a6/52c61d0ba34c05c2e6702777c4a6934fc837eab8c4793a1de715624ec15c/tgcrypto2-1.3.4-cp312-cp312-macosx_10_13_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "050ddfbf5fb7717762e1e479a15f105bc0b4fd161cdbd70be431ba68138ee160",
                "md5": "fc3e88a6b6ffbc36a49362d601797589",
                "sha256": "01119513c65e33196116baa6900b6cf348d10212e6579480607326b8ee8132b6"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "fc3e88a6b6ffbc36a49362d601797589",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 35236,
            "upload_time": "2025-09-01T19:15:01",
            "upload_time_iso_8601": "2025-09-01T19:15:01.740060Z",
            "url": "https://files.pythonhosted.org/packages/05/0d/dfbf5fb7717762e1e479a15f105bc0b4fd161cdbd70be431ba68138ee160/tgcrypto2-1.3.4-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3420a4687358075e8248c5271a00418cd566c02661df9b04e7b8999dbbe5c116",
                "md5": "5d555ed4b2a6d1fe8ed5435a8ebe64c5",
                "sha256": "066569d7c1e43b103fdfb7a035db5d1b8f6ded7b77da7e856dec900a64bb3bef"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5d555ed4b2a6d1fe8ed5435a8ebe64c5",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 51899,
            "upload_time": "2025-09-01T19:15:02",
            "upload_time_iso_8601": "2025-09-01T19:15:02.462018Z",
            "url": "https://files.pythonhosted.org/packages/34/20/a4687358075e8248c5271a00418cd566c02661df9b04e7b8999dbbe5c116/tgcrypto2-1.3.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8cf64aab6c442a7b6d82fec43aa96b961ec80921ef12d103b4fae05659fd8f44",
                "md5": "3d180290db8c7f9cce4bba8990c14118",
                "sha256": "759654dc62180e63df4411cbf1e3584acba576d3250275b37c329fdb42fcf2cb"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "3d180290db8c7f9cce4bba8990c14118",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 51822,
            "upload_time": "2025-09-01T19:15:03",
            "upload_time_iso_8601": "2025-09-01T19:15:03.547738Z",
            "url": "https://files.pythonhosted.org/packages/8c/f6/4aab6c442a7b6d82fec43aa96b961ec80921ef12d103b4fae05659fd8f44/tgcrypto2-1.3.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5bc3fc1c1acf740bcdb6d9fbf02b3333606b977fcf9f752ed82125f89acd21dc",
                "md5": "25d60028584e7848b6761aca97a08c18",
                "sha256": "66a35eb889852cdae5ad852cc1e837b282f4f0a16560c683c35045219afdc878"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp312-cp312-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "25d60028584e7848b6761aca97a08c18",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 49844,
            "upload_time": "2025-09-01T19:15:04",
            "upload_time_iso_8601": "2025-09-01T19:15:04.295262Z",
            "url": "https://files.pythonhosted.org/packages/5b/c3/fc1c1acf740bcdb6d9fbf02b3333606b977fcf9f752ed82125f89acd21dc/tgcrypto2-1.3.4-cp312-cp312-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "53f834ba4eeeb80338eeede3f3f52f8a2e69f9e250b61cb5d00e32d2f2ceea1b",
                "md5": "94abde643f78bdaff1d7b947f283ce62",
                "sha256": "c19fd5f6de279dd8c45408515534ec7158a9172e4c86c8025a995d83881fea7d"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp312-cp312-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "94abde643f78bdaff1d7b947f283ce62",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 51655,
            "upload_time": "2025-09-01T19:15:05",
            "upload_time_iso_8601": "2025-09-01T19:15:05.393078Z",
            "url": "https://files.pythonhosted.org/packages/53/f8/34ba4eeeb80338eeede3f3f52f8a2e69f9e250b61cb5d00e32d2f2ceea1b/tgcrypto2-1.3.4-cp312-cp312-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "dec17e6635395731d51dcb395150e3c7e1475788a1e0542b7ef368e32c38b56b",
                "md5": "5c8ac85061d9459534746415caf91f93",
                "sha256": "c97c9a517247cf4a0b63947378ddef0800081ad24687d6690f5f581e065fa285"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp312-cp312-win32.whl",
            "has_sig": false,
            "md5_digest": "5c8ac85061d9459534746415caf91f93",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 36468,
            "upload_time": "2025-09-01T19:15:06",
            "upload_time_iso_8601": "2025-09-01T19:15:06.673049Z",
            "url": "https://files.pythonhosted.org/packages/de/c1/7e6635395731d51dcb395150e3c7e1475788a1e0542b7ef368e32c38b56b/tgcrypto2-1.3.4-cp312-cp312-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "312e9f4682c2f37077c306d585abe6e9f5964a32d2dbed2c4c5d856fea1fb01e",
                "md5": "83e034ef3f7c9612d664ce7fc825d6ca",
                "sha256": "6e92d60e8dddb27f2553cbc34d72d125923f0f62c8a6c3451dc4053c082d3310"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "83e034ef3f7c9612d664ce7fc825d6ca",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 37199,
            "upload_time": "2025-09-01T19:15:07",
            "upload_time_iso_8601": "2025-09-01T19:15:07.705432Z",
            "url": "https://files.pythonhosted.org/packages/31/2e/9f4682c2f37077c306d585abe6e9f5964a32d2dbed2c4c5d856fea1fb01e/tgcrypto2-1.3.4-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f01f44cf138dcf496e488d7fef21ae9b544644afa5b1fda33e50eef02f4fe8ce",
                "md5": "0e69b1f69a1a793b022068a3e4e59238",
                "sha256": "3f1642f318d0a616f1ef66b0018dc9e5547832bb6e0cfa3b5204c4b654d35f0b"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp313-cp313-macosx_10_13_universal2.whl",
            "has_sig": false,
            "md5_digest": "0e69b1f69a1a793b022068a3e4e59238",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.7",
            "size": 50816,
            "upload_time": "2025-09-01T19:15:08",
            "upload_time_iso_8601": "2025-09-01T19:15:08.388987Z",
            "url": "https://files.pythonhosted.org/packages/f0/1f/44cf138dcf496e488d7fef21ae9b544644afa5b1fda33e50eef02f4fe8ce/tgcrypto2-1.3.4-cp313-cp313-macosx_10_13_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "366fe3e9992e9832d30f333b28b4956bcfaf8f39d98eb0e23eff85a097100ec1",
                "md5": "5f4a3f300cca5dca78bcc7c406aa15ff",
                "sha256": "b0cf463d5d3721c77314c035efb74f4db2f7b40df492b9dd4b97754176220474"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp313-cp313-macosx_10_13_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5f4a3f300cca5dca78bcc7c406aa15ff",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.7",
            "size": 35120,
            "upload_time": "2025-09-01T19:15:09",
            "upload_time_iso_8601": "2025-09-01T19:15:09.506993Z",
            "url": "https://files.pythonhosted.org/packages/36/6f/e3e9992e9832d30f333b28b4956bcfaf8f39d98eb0e23eff85a097100ec1/tgcrypto2-1.3.4-cp313-cp313-macosx_10_13_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a07e3b7ea5c6bf4f8f4aac2f312e2a35587cd21ad33f8e2df73807324f9be3ea",
                "md5": "6a930d0fb2001d3ba426dc6fae04cc1f",
                "sha256": "7e0be6677dd4321ff71870330e7c832293ff33eacdcc26d6abb690519889fb16"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "6a930d0fb2001d3ba426dc6fae04cc1f",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.7",
            "size": 35237,
            "upload_time": "2025-09-01T19:15:10",
            "upload_time_iso_8601": "2025-09-01T19:15:10.246965Z",
            "url": "https://files.pythonhosted.org/packages/a0/7e/3b7ea5c6bf4f8f4aac2f312e2a35587cd21ad33f8e2df73807324f9be3ea/tgcrypto2-1.3.4-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0b8b8e5f52f20e70929b2cbad982608e009097f533287de48943b873237727e9",
                "md5": "9708ffadf49f5a8e387b4c9a9e82623e",
                "sha256": "eb9b4f2975b8190f9b35ea3ef082c3f8509b936ae2a730c55170b48d2049696d"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9708ffadf49f5a8e387b4c9a9e82623e",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.7",
            "size": 51830,
            "upload_time": "2025-09-01T19:15:11",
            "upload_time_iso_8601": "2025-09-01T19:15:11.074767Z",
            "url": "https://files.pythonhosted.org/packages/0b/8b/8e5f52f20e70929b2cbad982608e009097f533287de48943b873237727e9/tgcrypto2-1.3.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d26aa78e38f8d162106a5f2683e0805d39296bd5b3ea96358ae26b830c4880ea",
                "md5": "78a706e702aae5b7b7052758e4ab80c6",
                "sha256": "46e70fc2baab078f2d65167d19a022e4e7c07d2e460cc7a748666dd362aeb32b"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "78a706e702aae5b7b7052758e4ab80c6",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.7",
            "size": 51763,
            "upload_time": "2025-09-01T19:15:11",
            "upload_time_iso_8601": "2025-09-01T19:15:11.864215Z",
            "url": "https://files.pythonhosted.org/packages/d2/6a/a78e38f8d162106a5f2683e0805d39296bd5b3ea96358ae26b830c4880ea/tgcrypto2-1.3.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "37ed01e370ec2656d4cbe5bb803be8f45cc1e45596c3fcc00ca7feb7a99bb5e5",
                "md5": "1738bf98958d77775a730e44d9326e0d",
                "sha256": "5ed71db7b0f284b5166bcd462834a4a99f6bcacbb5cf14b33814008ac4674212"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp313-cp313-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "1738bf98958d77775a730e44d9326e0d",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.7",
            "size": 49887,
            "upload_time": "2025-09-01T19:15:12",
            "upload_time_iso_8601": "2025-09-01T19:15:12.958276Z",
            "url": "https://files.pythonhosted.org/packages/37/ed/01e370ec2656d4cbe5bb803be8f45cc1e45596c3fcc00ca7feb7a99bb5e5/tgcrypto2-1.3.4-cp313-cp313-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "01128ac46c04488db8c4e320a82da6e1f4b8e74878eedb7821e54c32190ca3be",
                "md5": "ae807953677be1354bc48ce0c7eed377",
                "sha256": "e5b5d1e4267ad06a10ab31eeb6d29b1025db73dc6fdf1268997544ee41eac4f1"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp313-cp313-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ae807953677be1354bc48ce0c7eed377",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.7",
            "size": 51707,
            "upload_time": "2025-09-01T19:15:14",
            "upload_time_iso_8601": "2025-09-01T19:15:14.085023Z",
            "url": "https://files.pythonhosted.org/packages/01/12/8ac46c04488db8c4e320a82da6e1f4b8e74878eedb7821e54c32190ca3be/tgcrypto2-1.3.4-cp313-cp313-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "13902af8ed8271882f4129cdca2f4391965cb5b9b5bbb37b58c0a992fa22d2f6",
                "md5": "2d76faddc9dc3ae4f98c7aeac89d0c27",
                "sha256": "489f34f07a5caeb74dd2cb77e1bdf350b4134bacb77e285c46936279abf3cf2c"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp313-cp313-win32.whl",
            "has_sig": false,
            "md5_digest": "2d76faddc9dc3ae4f98c7aeac89d0c27",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.7",
            "size": 36467,
            "upload_time": "2025-09-01T19:15:14",
            "upload_time_iso_8601": "2025-09-01T19:15:14.843984Z",
            "url": "https://files.pythonhosted.org/packages/13/90/2af8ed8271882f4129cdca2f4391965cb5b9b5bbb37b58c0a992fa22d2f6/tgcrypto2-1.3.4-cp313-cp313-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d4ce3210a42b4b5b37988bc80f3c99c7547c028aa14582b7c2f62c2ced098797",
                "md5": "8d0795b8f4b20f43cdbbc0fad296b866",
                "sha256": "c26c165701a5d296ca16c85b9ea63521df1b25a1541b8dc9148986b50da18079"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "8d0795b8f4b20f43cdbbc0fad296b866",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.7",
            "size": 37199,
            "upload_time": "2025-09-01T19:15:16",
            "upload_time_iso_8601": "2025-09-01T19:15:16.079277Z",
            "url": "https://files.pythonhosted.org/packages/d4/ce/3210a42b4b5b37988bc80f3c99c7547c028aa14582b7c2f62c2ced098797/tgcrypto2-1.3.4-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "40d3462ff26df43f4ae67565d2c2424e250e07610b34b91f729a682f027fdb7c",
                "md5": "c099db3f0c953ec0a40cae4be1a26b14",
                "sha256": "7128039af91185d72c91fd0d5c49a945ef220734e2747bf159a1a4935dce129c"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp39-cp39-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "c099db3f0c953ec0a40cae4be1a26b14",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 50815,
            "upload_time": "2025-09-01T19:15:17",
            "upload_time_iso_8601": "2025-09-01T19:15:17.140671Z",
            "url": "https://files.pythonhosted.org/packages/40/d3/462ff26df43f4ae67565d2c2424e250e07610b34b91f729a682f027fdb7c/tgcrypto2-1.3.4-cp39-cp39-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e9f6cfc07edd9e0a6489151b012c82ee2ce04230edc6b13800cc578fe006f980",
                "md5": "5054c9ade7a186f9561338157643b352",
                "sha256": "6503d39ac3213b4e3c879bbb9c564573cc6402c11864c7c8f0172e3577ed5544"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5054c9ade7a186f9561338157643b352",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 35110,
            "upload_time": "2025-09-01T19:15:17",
            "upload_time_iso_8601": "2025-09-01T19:15:17.932072Z",
            "url": "https://files.pythonhosted.org/packages/e9/f6/cfc07edd9e0a6489151b012c82ee2ce04230edc6b13800cc578fe006f980/tgcrypto2-1.3.4-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "977aa0396a46011010c091e6d8df0f0ec0ff55145e0d8ccf93e1b5387a4be95b",
                "md5": "17a7cd971e4c67f754a098a64261db9b",
                "sha256": "a6a603703c44463067ef050ff91131a013f38405ff3384f6076fa98bbd8800f0"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "17a7cd971e4c67f754a098a64261db9b",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 35239,
            "upload_time": "2025-09-01T19:15:18",
            "upload_time_iso_8601": "2025-09-01T19:15:18.662853Z",
            "url": "https://files.pythonhosted.org/packages/97/7a/a0396a46011010c091e6d8df0f0ec0ff55145e0d8ccf93e1b5387a4be95b/tgcrypto2-1.3.4-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e98c6025e4f8c8a613462f953f2794c8df0a4afdd4ccb82522d19498aa55da9f",
                "md5": "6f92da1d9dcf21c2aa642dbb0eb274db",
                "sha256": "1f8695f50b117114095195571a73aaccd3f885f49628ecec6467e658c32acbe1"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6f92da1d9dcf21c2aa642dbb0eb274db",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 51269,
            "upload_time": "2025-09-01T19:15:19",
            "upload_time_iso_8601": "2025-09-01T19:15:19.387664Z",
            "url": "https://files.pythonhosted.org/packages/e9/8c/6025e4f8c8a613462f953f2794c8df0a4afdd4ccb82522d19498aa55da9f/tgcrypto2-1.3.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0844d042b4fd22004b86abe3266fe2c1d7c747d5deca4b81a788761dde26eee2",
                "md5": "a89a31d27c6989d66364e509bcd200f1",
                "sha256": "19f7b5c6aacf5181d35d543f2fa33272b096dc3e21eb2a325adaf1c21664335b"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "a89a31d27c6989d66364e509bcd200f1",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 51266,
            "upload_time": "2025-09-01T19:15:20",
            "upload_time_iso_8601": "2025-09-01T19:15:20.160004Z",
            "url": "https://files.pythonhosted.org/packages/08/44/d042b4fd22004b86abe3266fe2c1d7c747d5deca4b81a788761dde26eee2/tgcrypto2-1.3.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a77fdddf801cc3fa866239b45cfc3e5e31655d31b0bafa3c8837026c2634b231",
                "md5": "6d95b8c7a38bb649a0ed5b23f4537af1",
                "sha256": "7ded6cf06c4b43450859f0119bb984623581ddbd73e15d9b45acf4d3dad7666b"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp39-cp39-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "6d95b8c7a38bb649a0ed5b23f4537af1",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 49232,
            "upload_time": "2025-09-01T19:15:20",
            "upload_time_iso_8601": "2025-09-01T19:15:20.942874Z",
            "url": "https://files.pythonhosted.org/packages/a7/7f/dddf801cc3fa866239b45cfc3e5e31655d31b0bafa3c8837026c2634b231/tgcrypto2-1.3.4-cp39-cp39-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fc221c2b758316bfdf43facd24054c387c3ba0347d2b0e43d6d60591d056a55b",
                "md5": "2716966777907eb61a3848c57419c0e8",
                "sha256": "0faa7a7ff07154b23efa710cc4371c4bf578ab99202ea63b434686f70856a581"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp39-cp39-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2716966777907eb61a3848c57419c0e8",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 51024,
            "upload_time": "2025-09-01T19:15:21",
            "upload_time_iso_8601": "2025-09-01T19:15:21.680970Z",
            "url": "https://files.pythonhosted.org/packages/fc/22/1c2b758316bfdf43facd24054c387c3ba0347d2b0e43d6d60591d056a55b/tgcrypto2-1.3.4-cp39-cp39-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8f20fcef85e0c3c170b266e23828d858e0d6e60b89ccbaff1429950f7f186fff",
                "md5": "eeb2e3cfd9acdde1402a76ae85cf91f8",
                "sha256": "55a336a105779b5e19c84d66f1504bc8b5dcdf5948978fdeedceac7f9af3e088"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp39-cp39-win32.whl",
            "has_sig": false,
            "md5_digest": "eeb2e3cfd9acdde1402a76ae85cf91f8",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 36466,
            "upload_time": "2025-09-01T19:15:22",
            "upload_time_iso_8601": "2025-09-01T19:15:22.828415Z",
            "url": "https://files.pythonhosted.org/packages/8f/20/fcef85e0c3c170b266e23828d858e0d6e60b89ccbaff1429950f7f186fff/tgcrypto2-1.3.4-cp39-cp39-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f88046a8c27bd2e00ab138faa8ddd13f9c528670ce6a484feeced96c35d77614",
                "md5": "544e853c8aabd92d5d067d1eb254c296",
                "sha256": "edb9f869f08ce51d4358ac16d82b4384181b399ae415083ce5c48e81a417d658"
            },
            "downloads": -1,
            "filename": "tgcrypto2-1.3.4-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "544e853c8aabd92d5d067d1eb254c296",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 37185,
            "upload_time": "2025-09-01T19:15:23",
            "upload_time_iso_8601": "2025-09-01T19:15:23.900802Z",
            "url": "https://files.pythonhosted.org/packages/f8/80/46a8c27bd2e00ab138faa8ddd13f9c528670ce6a484feeced96c35d77614/tgcrypto2-1.3.4-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-01 19:14:43",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "pyrogram",
    "github_project": "tgcrypto",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "tgcrypto2"
}
        
Elapsed time: 1.30843s