Co-authored-by: Adriano Caloiaro <code@adriano.fyi>
This commit is contained in:
parent
d5473f1db0
commit
b84cf9aeb8
|
@ -124,11 +124,27 @@ if iswindows:
|
||||||
except ImportError:
|
except ImportError:
|
||||||
import _winreg as winreg
|
import _winreg as winreg
|
||||||
|
|
||||||
|
def get_fake_windows_libcrypto_path():
|
||||||
|
# There seems to be a bug in Wine where a `find_library('libcrypto-1_1')`
|
||||||
|
# will not return the path to the libcrypto-1_1.dll file.
|
||||||
|
# So if we're on Windows, and we didn't find the libcrypto the normal way,
|
||||||
|
# lets try a hack-y workaround. It's already over anyways at this
|
||||||
|
# point, can't really make it worse.
|
||||||
|
import sys, os
|
||||||
|
for p in sys.path:
|
||||||
|
if os.path.isfile(os.path.join(p, "libcrypto-1_1.dll")):
|
||||||
|
return os.path.join(p, "libcrypto-1_1.dll")
|
||||||
|
if os.path.isfile(os.path.join(p, "libeay32.dll")):
|
||||||
|
return os.path.join(p, "libeay.dll")
|
||||||
|
return None
|
||||||
|
|
||||||
def _load_crypto_libcrypto():
|
def _load_crypto_libcrypto():
|
||||||
from ctypes.util import find_library
|
from ctypes.util import find_library
|
||||||
libcrypto = find_library('libcrypto-1_1')
|
libcrypto = find_library('libcrypto-1_1')
|
||||||
if libcrypto is None:
|
if libcrypto is None:
|
||||||
libcrypto = find_library('libeay32')
|
libcrypto = find_library('libeay32')
|
||||||
|
if libcrypto is None:
|
||||||
|
libcrypto = get_fake_windows_libcrypto_path()
|
||||||
if libcrypto is None:
|
if libcrypto is None:
|
||||||
raise ADEPTError('libcrypto not found')
|
raise ADEPTError('libcrypto not found')
|
||||||
libcrypto = CDLL(libcrypto)
|
libcrypto = CDLL(libcrypto)
|
||||||
|
@ -170,7 +186,10 @@ if iswindows:
|
||||||
return AES
|
return AES
|
||||||
|
|
||||||
def _load_crypto_pycrypto():
|
def _load_crypto_pycrypto():
|
||||||
|
try:
|
||||||
from Crypto.Cipher import AES as _AES
|
from Crypto.Cipher import AES as _AES
|
||||||
|
except (ImportError, ModuleNotFoundError):
|
||||||
|
from Cryptodome.Cipher import AES as _AES
|
||||||
class AES(object):
|
class AES(object):
|
||||||
def __init__(self, key):
|
def __init__(self, key):
|
||||||
self._aes = _AES.new(key, _AES.MODE_CBC, b'\x00'*16)
|
self._aes = _AES.new(key, _AES.MODE_CBC, b'\x00'*16)
|
||||||
|
@ -184,7 +203,7 @@ if iswindows:
|
||||||
try:
|
try:
|
||||||
AES = loader()
|
AES = loader()
|
||||||
break
|
break
|
||||||
except (ImportError, ADEPTError):
|
except (ImportError, ModuleNotFoundError, ADEPTError):
|
||||||
pass
|
pass
|
||||||
return AES
|
return AES
|
||||||
|
|
||||||
|
@ -396,7 +415,7 @@ if iswindows:
|
||||||
try:
|
try:
|
||||||
regkey = winreg.OpenKey(cuser, DEVICE_KEY_PATH)
|
regkey = winreg.OpenKey(cuser, DEVICE_KEY_PATH)
|
||||||
device = winreg.QueryValueEx(regkey, 'key')[0]
|
device = winreg.QueryValueEx(regkey, 'key')[0]
|
||||||
except WindowsError:
|
except WindowsError, FileNotFoundError:
|
||||||
raise ADEPTError("Adobe Digital Editions not activated")
|
raise ADEPTError("Adobe Digital Editions not activated")
|
||||||
keykey = CryptUnprotectData(device, entropy)
|
keykey = CryptUnprotectData(device, entropy)
|
||||||
userkey = None
|
userkey = None
|
||||||
|
@ -404,7 +423,7 @@ if iswindows:
|
||||||
names = []
|
names = []
|
||||||
try:
|
try:
|
||||||
plkroot = winreg.OpenKey(cuser, PRIVATE_LICENCE_KEY_PATH)
|
plkroot = winreg.OpenKey(cuser, PRIVATE_LICENCE_KEY_PATH)
|
||||||
except WindowsError:
|
except WindowsError, FileNotFoundError:
|
||||||
raise ADEPTError("Could not locate ADE activation")
|
raise ADEPTError("Could not locate ADE activation")
|
||||||
|
|
||||||
i = -1
|
i = -1
|
||||||
|
|
|
@ -1132,7 +1132,7 @@ class AddAdeptDialog():
|
||||||
|
|
||||||
defaultkeys, defaultnames = adeptkeys()
|
defaultkeys, defaultnames = adeptkeys()
|
||||||
else: # linux
|
else: # linux
|
||||||
from .wineutils import WineGetKeys
|
from wineutils import WineGetKeys
|
||||||
|
|
||||||
scriptpath = os.path.join(parent.parent.alfdir,"adobekey.py")
|
scriptpath = os.path.join(parent.parent.alfdir,"adobekey.py")
|
||||||
defaultkeys, defaultnames = WineGetKeys(scriptpath, ".der",parent.getwineprefix())
|
defaultkeys, defaultnames = WineGetKeys(scriptpath, ".der",parent.getwineprefix())
|
||||||
|
@ -1228,7 +1228,7 @@ class AddKindleDialog(QDialog):
|
||||||
|
|
||||||
defaultkeys = kindlekeys()
|
defaultkeys = kindlekeys()
|
||||||
else: # linux
|
else: # linux
|
||||||
from .wineutils import WineGetKeys
|
from wineutils import WineGetKeys
|
||||||
|
|
||||||
scriptpath = os.path.join(parent.parent.alfdir,"kindlekey.py")
|
scriptpath = os.path.join(parent.parent.alfdir,"kindlekey.py")
|
||||||
defaultkeys = WineGetKeys(scriptpath, ".k4i",parent.getwineprefix())
|
defaultkeys = WineGetKeys(scriptpath, ".k4i",parent.getwineprefix())
|
||||||
|
|
Loading…
Reference in New Issue