mirror of
https://github.com/chris2511/xca.git
synced 2026-09-12 19:51:05 +05:00
Close #536: macos include OpenSSL legacy provider
Put it into the "PlugIns" directory and load it from there. Show whether the legacy-provider was loaded in the About-Dialog. CmakeLists.txt: Improve OpenSSL Major version detection and replace the foreach() loop in misc/CMakeLists.txt by the simpler list(TRANSFORM ...)
This commit is contained in:
parent
c0df4b5740
commit
b395eaa5cc
@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.16.0)
|
||||
cmake_minimum_required(VERSION 3.19.0)
|
||||
|
||||
project(xca
|
||||
DESCRIPTION "X Certificate and Key management"
|
||||
@ -87,6 +87,11 @@ add_executable(xcadoc ${PROJECT_BINARY_DIR}/local.h)
|
||||
|
||||
include_directories(${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR})
|
||||
|
||||
if (NOT OPENSSL_VERSION)
|
||||
# Educated guess
|
||||
set(OPENSSL_VERSION 3.0.0)
|
||||
endif()
|
||||
|
||||
if (APPLE)
|
||||
execute_process(COMMAND brew --prefix OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
OUTPUT_VARIABLE BREW_PREFIX ERROR_QUIET)
|
||||
@ -98,8 +103,10 @@ elseif(WIN32)
|
||||
if (NOT CMAKE_PREFIX_PATH)
|
||||
set(CMAKE_PREFIX_PATH $ENV{UserProfile} $ENV{PROGRAMFILES}/OpenSSL-Win64)
|
||||
endif()
|
||||
if (NOT OPENSSL_LIBRARY_MAJOR)
|
||||
set(OPENSSL_LIBRARY_MAJOR 3) # For OpenSSL 1.1.1 use "1_1"
|
||||
if (OPENSSL_VERSION VERSION_GREATER_EQUAL 3.0.0)
|
||||
set(OPENSSL_LIBRARY_MAJOR "3")
|
||||
else()
|
||||
set(OPENSSL_LIBRARY_MAJOR "1_1")
|
||||
endif()
|
||||
file(TO_CMAKE_PATH $ENV{WINDIR}/system32 SYSTEM32)
|
||||
endif()
|
||||
@ -119,6 +126,7 @@ get_filename_component(_qt_bin_dir "${qmake_executable}" DIRECTORY)
|
||||
if (NOT OPENSSL_ROOT_DIR)
|
||||
get_filename_component(OPENSSL_ROOT_DIR ${OPENSSL_INCLUDE_DIR} DIRECTORY)
|
||||
endif()
|
||||
file(TO_CMAKE_PATH ${OPENSSL_ROOT_DIR} OPENSSL_ROOT_DIR)
|
||||
|
||||
target_link_libraries(xcalib
|
||||
OpenSSL::Crypto
|
||||
@ -204,6 +212,13 @@ if(APPLE)
|
||||
-always-overwrite ${APPSTORE}
|
||||
COMMENT "Running macdeployqt..."
|
||||
)
|
||||
if (OPENSSL_VERSION VERSION_GREATER_EQUAL 3.0.0)
|
||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
||||
COMMAND cmake -E copy ${OPENSSL_ROOT_DIR}/lib/ossl-modules/legacy.dylib
|
||||
$<TARGET_FILE_DIR:${PROJECT_NAME}>/../PlugIns/
|
||||
COMMENT "Install OpenSSL legacy provider"
|
||||
)
|
||||
endif()
|
||||
if (PROVISIONPROFILE)
|
||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
||||
COMMAND cmake -E copy ${PROVISIONPROFILE}
|
||||
@ -269,7 +284,7 @@ elseif(WIN32)
|
||||
${OPENSSL_ROOT_DIR}/bin/libcrypto-${OPENSSL_LIBRARY_MAJOR}-x64.dll
|
||||
DESTINATION ${RUNTIME_DEST}
|
||||
)
|
||||
if (OPENSSL_LIBRARY_MAJOR EQUAL 3)
|
||||
if (OPENSSL_VERSION VERSION_GREATER_EQUAL 3.0.0)
|
||||
install(FILES ${OPENSSL_ROOT_DIR}/lib/ossl-modules/legacy.dll
|
||||
DESTINATION ${RUNTIME_DEST})
|
||||
endif()
|
||||
|
||||
17
lib/main.cpp
17
lib/main.cpp
@ -119,13 +119,20 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
#if (OPENSSL_VERSION_NUMBER >= 0x30000000L)
|
||||
{
|
||||
QString path;
|
||||
#if defined(Q_OS_WIN32)
|
||||
OSSL_PROVIDER_set_default_search_path(NULL,
|
||||
QCoreApplication::applicationDirPath().toUtf8().data());
|
||||
qDebug() << "OSSL_PROVIDER_set_default_search_path"
|
||||
<< QCoreApplication::applicationDirPath();
|
||||
path = QCoreApplication::applicationDirPath();
|
||||
#elif defined(Q_OS_MACOS)
|
||||
path = QCoreApplication::applicationDirPath() + "/../PlugIns";
|
||||
#endif
|
||||
if (OSSL_PROVIDER_try_load(0, "legacy", 1))
|
||||
if (!path.isEmpty()) {
|
||||
OSSL_PROVIDER_set_default_search_path(NULL, path.toUtf8().data());
|
||||
qDebug() << "OSSL_PROVIDER_set_default_search_path" << path;
|
||||
}
|
||||
}
|
||||
MainWindow::legacy_loaded = OSSL_PROVIDER_try_load(0, "legacy", 1);
|
||||
if (MainWindow::legacy_loaded)
|
||||
qDebug() << "Legacy provider loaded";
|
||||
else
|
||||
qWarning() << "Legacy provider NOT loaded";
|
||||
|
||||
@ -14,10 +14,8 @@ set_property(TARGET ${PROJECT_NAME}
|
||||
PROPERTY MACOSX_BUNDLE_INFO_PLIST ${D}/Info.plist)
|
||||
|
||||
##### XCA Templates
|
||||
set(TEMPLATES CA.xca TLS_server.xca TLS_client.xca)
|
||||
foreach(templ ${TEMPLATES})
|
||||
list(APPEND XCA_TEMPLATES ${S}/${templ})
|
||||
endforeach()
|
||||
list(APPEND XCA_TEMPLATES CA.xca TLS_server.xca TLS_client.xca)
|
||||
list(TRANSFORM XCA_TEMPLATES PREPEND ${S}/)
|
||||
target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${XCA_TEMPLATES})
|
||||
list(APPEND APP_RESOURCES "${XCA_TEMPLATES}")
|
||||
|
||||
|
||||
@ -106,7 +106,7 @@ void MainWindow::about()
|
||||
"<p>Copyright 2001 - 2024 by Christian Hohnstädt\n"
|
||||
"<p>Version: %3<p>%1" /* commithash, OpenSSL & Qt Version */
|
||||
"<p><a href=\"https://hohnstaedt.de/xca\">https://hohnstaedt.de/xca</a>"
|
||||
"<p>Entropy strength: %2"
|
||||
"<p>OpenSSL legacy provider%2 loaded"
|
||||
"<p><table border=\"0\">"
|
||||
"<tr><td>Installation path:</td><td>%4</td></tr>"
|
||||
"<tr><td>User settings path:</td><td>%5</td></tr>"
|
||||
@ -120,7 +120,7 @@ void MainWindow::about()
|
||||
"</table><hr><center><u><b>Maintained Translations</b></u></center>"
|
||||
"<p><table><tr>%8</tr></table>")
|
||||
.arg(version)
|
||||
.arg(Entropy::strength())
|
||||
.arg(legacy_loaded ? "" : " not")
|
||||
.arg(version_str(true))
|
||||
.arg(nativeSeparator(QCoreApplication::applicationDirPath()))
|
||||
.arg(nativeSeparator(getUserSettingsDir()))
|
||||
|
||||
@ -47,6 +47,7 @@
|
||||
|
||||
OidResolver *MainWindow::resolver;
|
||||
MainWindow *mainwin;
|
||||
bool MainWindow::legacy_loaded;
|
||||
|
||||
void MainWindow::enableTokenMenu(bool enable)
|
||||
{
|
||||
|
||||
@ -89,6 +89,7 @@ class MainWindow: public QMainWindow, public Ui::MainWindow
|
||||
void showDatabaseName();
|
||||
|
||||
public:
|
||||
static bool legacy_loaded;
|
||||
int exitApp;
|
||||
QLabel *dbindex;
|
||||
Help *helpdlg;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user