mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-03-21 18:34:43 +03:00
Reuse the AESModeCTR class on CdnDecrypter
This commit is contained in:
parent
5404670469
commit
bc72e52834
|
@ -12,18 +12,10 @@ class AESModeCTR:
|
||||||
|
|
||||||
assert isinstance(iv, bytes)
|
assert isinstance(iv, bytes)
|
||||||
assert len(iv) == 16
|
assert len(iv) == 16
|
||||||
self.iv = iv
|
self._aes._counter._counter = list(iv)
|
||||||
self._aes._counter._counter = list(self.iv)
|
|
||||||
|
|
||||||
def reset(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def encrypt(self, data):
|
def encrypt(self, data):
|
||||||
result = self._aes.encrypt(data)
|
return self._aes.encrypt(data)
|
||||||
self.reset()
|
|
||||||
return result
|
|
||||||
|
|
||||||
def decrypt(self, data):
|
def decrypt(self, data):
|
||||||
result = self._aes.decrypt(data)
|
return self._aes.decrypt(data)
|
||||||
self.reset()
|
|
||||||
return result
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
from hashlib import sha256
|
from hashlib import sha256
|
||||||
import pyaes
|
|
||||||
|
|
||||||
from ..tl import JsonSession
|
from ..tl import JsonSession
|
||||||
from ..tl.functions.upload import GetCdnFileRequest, ReuploadCdnFileRequest
|
from ..tl.functions.upload import GetCdnFileRequest, ReuploadCdnFileRequest
|
||||||
from ..tl.types.upload import CdnFileReuploadNeeded
|
from ..tl.types.upload import CdnFileReuploadNeeded
|
||||||
|
from ..crypto import AESModeCTR
|
||||||
from ..errors import CdnFileTamperedError
|
from ..errors import CdnFileTamperedError
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,13 +29,9 @@ class CdnDecrypter:
|
||||||
"""
|
"""
|
||||||
# TODO Avoid the need for 'client_cls=TelegramBareClient'
|
# TODO Avoid the need for 'client_cls=TelegramBareClient'
|
||||||
# https://core.telegram.org/cdn
|
# https://core.telegram.org/cdn
|
||||||
# TODO Use libssl if available
|
cdn_aes = AESModeCTR(
|
||||||
cdn_aes = pyaes.AESModeOfOperationCTR(cdn_redirect.encryption_key)
|
key=cdn_redirect.encryption_key,
|
||||||
|
iv=cdn_redirect.encryption_iv[:12] + (offset >> 4).to_bytes(4, 'big')
|
||||||
# The returned IV is the counter used on CTR
|
|
||||||
cdn_aes._counter._counter = list(
|
|
||||||
cdn_redirect.encryption_iv[:12] +
|
|
||||||
(offset >> 4).to_bytes(4, 'big')
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Create a new client on said CDN
|
# Create a new client on said CDN
|
||||||
|
|
Loading…
Reference in New Issue
Block a user