From c515e26cd6b5e6363a4ce4f4e5c062044c1779d4 Mon Sep 17 00:00:00 2001 From: Tamas Kocsis Date: Tue, 3 Nov 2020 02:51:42 +0100 Subject: [PATCH] Fix OpenSSL dll/so location find patcher --- src/Crypt/CryptBitcoin.py | 2 ++ src/util/OpensslFindPatch.py | 22 +++++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/Crypt/CryptBitcoin.py b/src/Crypt/CryptBitcoin.py index 518d6420..68b2caa2 100644 --- a/src/Crypt/CryptBitcoin.py +++ b/src/Crypt/CryptBitcoin.py @@ -7,6 +7,8 @@ import hashlib from util.Electrum import dbl_format from Config import config +import util.OpensslFindPatch + lib_verify_best = "sslcrypto" from lib import sslcrypto diff --git a/src/util/OpensslFindPatch.py b/src/util/OpensslFindPatch.py index 80987876..fe13bcbf 100644 --- a/src/util/OpensslFindPatch.py +++ b/src/util/OpensslFindPatch.py @@ -1,11 +1,12 @@ import logging import os import sys -from ctypes.util import find_library -from lib.sslcrypto.openssl import discovery +import ctypes.util from Config import config +find_library_original = ctypes.util.find_library + def getOpensslPath(): if config.openssl_lib_file: @@ -47,11 +48,22 @@ def getOpensslPath(): logging.debug("OpenSSL lib not found in: %s (%s)" % (path, err)) lib_path = ( - find_library('ssl.so') or find_library('ssl') or - find_library('crypto') or find_library('libcrypto') or 'libeay32' + ctypes.util.find_library('ssl.so') or ctypes.util.find_library('ssl') or + ctypes.util.find_library('crypto') or ctypes.util.find_library('libcrypto') or 'libeay32' ) return lib_path -discovery.discover = getOpensslPath +def patchCtypesOpensslFindLibrary(): + def findLibraryPatched(name): + if name in ("ssl", "crypto", "libeay32"): + lib_path = getOpensslPath() + return lib_path + else: + return find_library_original(name) + + ctypes.util.find_library = findLibraryPatched + + +patchCtypesOpensslFindLibrary()