]>
jfr.im git - yt-dlp.git/blob - yt_dlp/dependencies/Cryptodome.py
4 import Cryptodome
as _parent
7 import Crypto
as _parent
8 except (ImportError, SyntaxError): # Old Crypto gives SyntaxError in newer Python
9 _parent
= types
.ModuleType('no_Cryptodome')
10 __bool__
= lambda: False
13 AES
= PKCS1_v1_5
= Blowfish
= PKCS1_OAEP
= SHA1
= CMAC
= RSA
= None
15 if _parent
.__name
__ == 'Cryptodome':
16 from Cryptodome
import __version__
17 from Cryptodome
.Cipher
import AES
, PKCS1_OAEP
, Blowfish
, PKCS1_v1_5
18 from Cryptodome
.Hash
import CMAC
, SHA1
19 from Cryptodome
.PublicKey
import RSA
20 elif _parent
.__name
__ == 'Crypto':
21 from Crypto
import __version__
22 from Crypto
.Cipher
import AES
, PKCS1_OAEP
, Blowfish
, PKCS1_v1_5
# noqa: F401
23 from Crypto
.Hash
import CMAC
, SHA1
# noqa: F401
24 from Crypto
.PublicKey
import RSA
# noqa: F401
26 __version__
= f
'broken {__version__}'.strip()
29 _yt_dlp__identifier
= _parent
.__name
__
30 if AES
and _yt_dlp__identifier
== 'Crypto':
32 # In pycrypto, mode defaults to ECB. See:
33 # https://www.pycryptodome.org/en/latest/src/vs_pycrypto.html#:~:text=not%20have%20ECB%20as%20default%20mode
34 AES
.new(b
'abcdefghijklmnop')
36 _yt_dlp__identifier
= 'pycrypto'