]>
Commit | Line | Data |
---|---|---|
768a0017 | 1 | import types |
2 | ||
f6a765ce | 3 | try: |
4 | import Cryptodome as _parent | |
5 | except ImportError: | |
6 | try: | |
7 | import Crypto as _parent | |
8 | except (ImportError, SyntaxError): # Old Crypto gives SyntaxError in newer Python | |
768a0017 | 9 | _parent = types.ModuleType('no_Cryptodome') |
f6a765ce | 10 | __bool__ = lambda: False |
11 | ||
65f6e807 | 12 | __version__ = '' |
13 | AES = PKCS1_v1_5 = Blowfish = PKCS1_OAEP = SHA1 = CMAC = RSA = None | |
14 | try: | |
15 | if _parent.__name__ == 'Cryptodome': | |
16 | from Cryptodome import __version__ | |
5b28cef7 | 17 | from Cryptodome.Cipher import AES, PKCS1_OAEP, Blowfish, PKCS1_v1_5 |
18 | from Cryptodome.Hash import CMAC, SHA1 | |
65f6e807 | 19 | from Cryptodome.PublicKey import RSA |
20 | elif _parent.__name__ == 'Crypto': | |
21 | from Crypto import __version__ | |
5b28cef7 | 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 | |
65f6e807 | 25 | except ImportError: |
26 | __version__ = f'broken {__version__}'.strip() | |
f6a765ce | 27 | |
28 | ||
65f6e807 | 29 | _yt_dlp__identifier = _parent.__name__ |
30 | if AES and _yt_dlp__identifier == 'Crypto': | |
31 | try: | |
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') | |
35 | except TypeError: | |
36 | _yt_dlp__identifier = 'pycrypto' |