mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-08-08 04:52:30 +00:00
Revert "Use tgcrypto if available (#1715)"
This reverts commit 42cc9e61fb
.
tgcrypto was made for Pyrogram, and seeing it used elsewhere
without much credit "hurts" the author. I personally do not endorse
its use, hence the lack of attention or notes in the documentation.
People who still want to benefit from the speed boost should go
out of their way to discover, install and patch Telethon's aes.py
module instead, all while complying with the respective license
(another reason to avoid said code in Telethon, which is under the
much more permissive MIT license).
People using tgcrypto for anything other than Pyrogram will do so
knowing full-well that this was not the library's intended usage.
This commit is contained in:
@@ -2,19 +2,6 @@
|
||||
This module holds the AESModeCTR wrapper class.
|
||||
"""
|
||||
import pyaes
|
||||
import logging
|
||||
|
||||
|
||||
__log__ = logging.getLogger(__name__)
|
||||
|
||||
|
||||
try:
|
||||
import tgcrypto
|
||||
__log__.debug('tgcrypto detected, it will be used for ctr encryption')
|
||||
except ImportError:
|
||||
tgcrypto = None
|
||||
__log__.debug('tgcrypto module not installed, '
|
||||
'falling back to (slower) Python encryption')
|
||||
|
||||
|
||||
class AESModeCTR:
|
||||
@@ -29,15 +16,12 @@ class AESModeCTR:
|
||||
:param iv: the bytes initialization vector. Must have a length of 16.
|
||||
"""
|
||||
# TODO Use libssl if available
|
||||
if tgcrypto:
|
||||
self._aes = (key, iv, bytearray(1))
|
||||
else:
|
||||
assert isinstance(key, bytes)
|
||||
self._aes = pyaes.AESModeOfOperationCTR(key)
|
||||
assert isinstance(key, bytes)
|
||||
self._aes = pyaes.AESModeOfOperationCTR(key)
|
||||
|
||||
assert isinstance(iv, bytes)
|
||||
assert len(iv) == 16
|
||||
self._aes._counter._counter = list(iv)
|
||||
assert isinstance(iv, bytes)
|
||||
assert len(iv) == 16
|
||||
self._aes._counter._counter = list(iv)
|
||||
|
||||
def encrypt(self, data):
|
||||
"""
|
||||
@@ -46,8 +30,6 @@ class AESModeCTR:
|
||||
:param data: the plain text to be encrypted.
|
||||
:return: the encrypted cipher text.
|
||||
"""
|
||||
if tgcrypto:
|
||||
return tgcrypto.ctr256_encrypt(data, *self._aes)
|
||||
return self._aes.encrypt(data)
|
||||
|
||||
def decrypt(self, data):
|
||||
@@ -57,6 +39,4 @@ class AESModeCTR:
|
||||
:param data: the cipher text to be decrypted.
|
||||
:return: the decrypted plain text.
|
||||
"""
|
||||
if tgcrypto:
|
||||
return tgcrypto.ctr256_decrypt(data, *self._aes)
|
||||
return self._aes.decrypt(data)
|
||||
|
Reference in New Issue
Block a user