diff options
author | pukkandan <pukkandan.ytdlp@gmail.com> | 2021-09-18 00:51:27 +0530 |
---|---|---|
committer | pukkandan <pukkandan.ytdlp@gmail.com> | 2021-09-18 00:55:58 +0530 |
commit | edf65256aa630a5ce011138e8957c95c9bef0584 (patch) | |
tree | fa1f3c3b18db2afb6f47081355c4fd23f4ae975b /yt_dlp/downloader/external.py | |
parent | 7303f84abeeb283b15806f7ef47bfe694f55b99c (diff) | |
download | hypervideo-pre-edf65256aa630a5ce011138e8957c95c9bef0584.tar.lz hypervideo-pre-edf65256aa630a5ce011138e8957c95c9bef0584.tar.xz hypervideo-pre-edf65256aa630a5ce011138e8957c95c9bef0584.zip |
[hls,aes] Fallback to native implementation for AES-CBC
and detect `Cryptodome` in addition to `Crypto`
Closes #935
Related: #938
Diffstat (limited to 'yt_dlp/downloader/external.py')
-rw-r--r-- | yt_dlp/downloader/external.py | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/yt_dlp/downloader/external.py b/yt_dlp/downloader/external.py index 9db248df4..1057382e0 100644 --- a/yt_dlp/downloader/external.py +++ b/yt_dlp/downloader/external.py @@ -6,13 +6,8 @@ import subprocess import sys import time -try: - from Crypto.Cipher import AES - can_decrypt_frag = True -except ImportError: - can_decrypt_frag = False - from .common import FileDownloader +from ..aes import aes_cbc_decrypt_bytes from ..compat import ( compat_setenv, compat_str, @@ -164,8 +159,7 @@ class ExternalFD(FileDownloader): decrypt_info['KEY'] = decrypt_info.get('KEY') or self.ydl.urlopen( self._prepare_url(info_dict, info_dict.get('_decryption_key_url') or decrypt_info['URI'])).read() encrypted_data = src.read() - decrypted_data = AES.new( - decrypt_info['KEY'], AES.MODE_CBC, iv).decrypt(encrypted_data) + decrypted_data = aes_cbc_decrypt_bytes(encrypted_data, decrypt_info['KEY'], iv) dest.write(decrypted_data) else: fragment_data = src.read() |