From c1e9a0f02151ac6c55636acbd422f155f4ace136 Mon Sep 17 00:00:00 2001 From: TheTank20 Date: Fri, 28 Jul 2023 18:10:25 -0500 Subject: [PATCH 01/41] add exclusions for FE and FF --- src/cli.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/cli.cpp b/src/cli.cpp index e79a425..cedf8b5 100644 --- a/src/cli.cpp +++ b/src/cli.cpp @@ -217,8 +217,10 @@ int CLI::validateCommandLine(Options* options, char *argv[], json *keys) { sscanf(options->binkid.c_str(), "%x", &intBinkID); if (intBinkID >= 0x40) { - // set bink2002 validate mode if in bink1998 validate mode, else set bink2002 generate mode - options->applicationMode = (options->applicationMode == MODE_BINK1998_VALIDATE) ? MODE_BINK2002_VALIDATE : MODE_BINK2002_GENERATE; + if (intBinkID != 0xFE && intBinkID != 0xFF) { // FE and FF are oddballs that are bink1998, this excludes them from being set to bink2002 + // set bink2002 validate mode if in bink1998 validate mode, else set bink2002 generate mode + options->applicationMode = (options->applicationMode == MODE_BINK1998_VALIDATE) ? MODE_BINK2002_VALIDATE : MODE_BINK2002_GENERATE; + } } if (options->channelID > 999) { From 03ae90163a155b2b665a47354ee1a131c2e2150e Mon Sep 17 00:00:00 2001 From: Neo <321592+Neo-Desktop@users.noreply.github.com> Date: Fri, 28 Jul 2023 16:15:37 -0700 Subject: [PATCH 02/41] cleaner cli.cpp fix --- src/cli.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/cli.cpp b/src/cli.cpp index cedf8b5..d407e9a 100644 --- a/src/cli.cpp +++ b/src/cli.cpp @@ -216,11 +216,8 @@ int CLI::validateCommandLine(Options* options, char *argv[], json *keys) { int intBinkID; sscanf(options->binkid.c_str(), "%x", &intBinkID); - if (intBinkID >= 0x40) { - if (intBinkID != 0xFE && intBinkID != 0xFF) { // FE and FF are oddballs that are bink1998, this excludes them from being set to bink2002 - // set bink2002 validate mode if in bink1998 validate mode, else set bink2002 generate mode - options->applicationMode = (options->applicationMode == MODE_BINK1998_VALIDATE) ? MODE_BINK2002_VALIDATE : MODE_BINK2002_GENERATE; - } + if (intBinkID >= 0x40 && intBinkID < 0xFE ) { // FE and FF are BINK 1998 + options->applicationMode = (options->applicationMode == MODE_BINK1998_VALIDATE) ? MODE_BINK2002_VALIDATE : MODE_BINK2002_GENERATE; } if (options->channelID > 999) { From a4cb524fed36a352085c9e5c436a1a7b86a9c044 Mon Sep 17 00:00:00 2001 From: Neo <321592+Neo-Desktop@users.noreply.github.com> Date: Fri, 28 Jul 2023 16:16:31 -0700 Subject: [PATCH 03/41] re-add removed comment --- src/cli.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cli.cpp b/src/cli.cpp index d407e9a..ac8fabf 100644 --- a/src/cli.cpp +++ b/src/cli.cpp @@ -217,6 +217,7 @@ int CLI::validateCommandLine(Options* options, char *argv[], json *keys) { sscanf(options->binkid.c_str(), "%x", &intBinkID); if (intBinkID >= 0x40 && intBinkID < 0xFE ) { // FE and FF are BINK 1998 + // set bink2002 validate mode if in bink1998 validate mode, else set bink2002 generate mode options->applicationMode = (options->applicationMode == MODE_BINK1998_VALIDATE) ? MODE_BINK2002_VALIDATE : MODE_BINK2002_GENERATE; } From 45004623be7a90a02054151e4edd8699a70d37ee Mon Sep 17 00:00:00 2001 From: Neo <321592+Neo-Desktop@users.noreply.github.com> Date: Fri, 28 Jul 2023 16:17:57 -0700 Subject: [PATCH 04/41] Why does the Github web editor commit tabs??? --- src/cli.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cli.cpp b/src/cli.cpp index ac8fabf..ed0e5f8 100644 --- a/src/cli.cpp +++ b/src/cli.cpp @@ -216,9 +216,9 @@ int CLI::validateCommandLine(Options* options, char *argv[], json *keys) { int intBinkID; sscanf(options->binkid.c_str(), "%x", &intBinkID); - if (intBinkID >= 0x40 && intBinkID < 0xFE ) { // FE and FF are BINK 1998 + if (intBinkID >= 0x40 && intBinkID < 0xFE ) { // FE and FF are BINK 1998 // set bink2002 validate mode if in bink1998 validate mode, else set bink2002 generate mode - options->applicationMode = (options->applicationMode == MODE_BINK1998_VALIDATE) ? MODE_BINK2002_VALIDATE : MODE_BINK2002_GENERATE; + options->applicationMode = (options->applicationMode == MODE_BINK1998_VALIDATE) ? MODE_BINK2002_VALIDATE : MODE_BINK2002_GENERATE; } if (options->channelID > 999) { From 9063e32a8948fc346468aa5689bff93580f3b65d Mon Sep 17 00:00:00 2001 From: WitherOrNot Date: Thu, 10 Aug 2023 09:49:04 -0400 Subject: [PATCH 05/41] Update CMakeLists.txt --- CMakeLists.txt | 70 +++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 63 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c80a12..8e3ec7e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,6 +45,31 @@ else() set(OPENSSL_MSVC_STATIC_RT TRUE) endif() +# if we found shared libraries - do the following: +string(REGEX MATCH "(\\.so|\\.dll|\\.dylib)$" OPENSSL_CRYPTO_SHARED "${OPENSSL_CRYPTO_LIBRARY}") +if(OPENSSL_CRYPTO_SHARED) + message(STATUS "[UMSKT] Detected Shared library version of OpenSSL") + set(BUILD_SHARED_LIBS ON) +else() + message(STATUS "[UMSKT] Detected Static Library version of OpenSSL") +endif() + +# if we're compiling with MSVC, respect the DEBUG compile option +if(MSVC) + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") + if(NOT BUILD_SHARED_LIBS) + set(CMAKE_CXX_FLAGS_RELEASE "/MT") + set(CMAKE_CXX_FLAGS_DEBUG "/MTd") + else() + set(CMAKE_CXX_FLAGS_RELEASE "/MD") + set(CMAKE_CXX_FLAGS_DEBUG "/MDd") + endif() + set(CMAKE_EXE_LINKER_FLAGS "/INCREMENTAL:NO /NODEFAULTLIB:MSVCRT") + set(CMAKE_ENABLE_EXPORTS ON) + set(UMSKT_EXE_WINDOWS_EXTRA src/windows/umskt.rc) + set(UMSKT_EXE_WINDOWS_DLL src/windows/dllmain.cpp) +endif() + if(MUSL_STATIC AND NOT UMSKT_USE_SHARED_OPENSSL) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc -static-libstdc++") @@ -78,10 +103,10 @@ CPMAddPackage( # For Emscripten builds, set CMAKE_TOOLCHAIN_FILE to the appropriate file set(EMSCRIPTEN_BUILD OFF CACHE BOOL "Build for Emscripten" FORCE) if(EMSCRIPTEN_BUILD) - set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/cmake/Emscripten.cmake" CACHE STRING "Emscripten toolchain file") + set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/cmake/Emscripten.cmake" CACHE string "Emscripten toolchain file") endif() -CMRC_ADD_RESOURCE_LIBRARY(umskt-rc ALIAS umskt::rc NAMESPACE umskt keys.json) +cmrc_add_resource_library(umskt-rc ALIAS umskt::rc NAMESPACE umskt keys.json) set(LIBUMSKT_SRC src/libumskt/libumskt.cpp @@ -100,10 +125,41 @@ else() add_library(_umskt STATIC ${LIBUMSKT_SRC}) endif() -target_include_directories(_umskt PUBLIC ${OPENSSL_INCLUDE_DIR}) -target_link_libraries(_umskt PRIVATE OpenSSL::Crypto fmt) +#### Separate Build Path for emscripten +if (EMSCRIPTEN) + add_executable(umskt ${LIBUMSKT_SRC}) + target_include_directories(umskt PUBLIC ${OPENSSL_INCLUDE_DIR}) + target_link_libraries(umskt -static OpenSSL::Crypto cryptopp::cryptopp fmt) + set(CMAKE_EXECUTABLE_SUFFIX ".html") -add_executable(umskt src/main.cpp src/cli.cpp ${UMSKT_EXE_WINDOWS_EXTRA}) + set_target_properties(umskt PROPERTIES COMPILE_FLAGS "-Os -sEXPORTED_RUNTIME_METHODS=ccall,cwrap") + set_target_properties(umskt PROPERTIES LINK_FLAGS "-Os -sWASM=1 -sEXPORT_ALL=1 -sEXPORTED_RUNTIME_METHODS=ccall,cwrap --no-entry") +else() + if(NOT UMSKT_USE_SHARED_OPENSSL) + ### Static library compilation + add_library(_umskt STATIC ${LIBUMSKT_SRC}) + target_include_directories(_umskt PUBLIC ${OPENSSL_INCLUDE_DIR}) + target_link_libraries(_umskt -static OpenSSL::Crypto fmt ${UMSKT_LINK_LIBS}) + else() + ### Shared library compilation + add_library(_umskt SHARED ${LIBUMSKT_SRC} ${UMSKT_EXE_WINDOWS_EXTRA} ${UMSKT_EXE_WINDOWS_DLL}) + target_include_directories(_umskt PUBLIC ${OPENSSL_INCLUDE_DIR}) + target_link_libraries(_umskt OpenSSL::Crypto fmt ${UMSKT_LINK_LIBS}) + target_link_directories(_umskt PUBLIC ${UMSKT_LINK_DIRS}) + endif() -target_include_directories(umskt PUBLIC ${OPENSSL_INCLUDE_DIR}) -target_link_libraries(umskt PRIVATE _umskt OpenSSL::Crypto fmt nlohmann_json::nlohmann_json umskt::rc) + ### UMSKT executable compilation + add_executable(umskt src/main.cpp src/cli.cpp ${UMSKT_EXE_WINDOWS_EXTRA}) + target_include_directories(umskt PUBLIC ${OPENSSL_INCLUDE_DIR}) + target_link_libraries(umskt _umskt OpenSSL::Crypto fmt nlohmann_json::nlohmann_json umskt::rc ${UMSKT_LINK_LIBS}) + target_link_directories(umskt PUBLIC ${UMSKT_LINK_DIRS}) + if(MSVC AND MSVC_MSDOS_STUB) + set_property(TARGET umskt APPEND PROPERTY LINK_FLAGS /STUB:${MSVC_MSDOS_STUB}) + endif() + + ### Copy Shared Libraries and dependency files + if (OPENSSL_CRYPTO_SHARED) + get_filename_component(OPENSSL_CRYPTO_LIBRARY_FILENAME ${OPENSSL_CRYPTO_LIBRARY} NAME) + configure_file(${OPENSSL_CRYPTO_LIBRARY} "${CMAKE_CURRENT_BINARY_DIR}/${OPENSSL_CRYPTO_LIBRARY_FILENAME}" COPYONLY) + endif() +endif() From 9f7920ca2d6b186ca0155b0f27ab674c13677e1a Mon Sep 17 00:00:00 2001 From: WitherOrNot Date: Thu, 10 Aug 2023 09:51:10 -0400 Subject: [PATCH 06/41] Update CMakeLists.txt --- CMakeLists.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e3ec7e..2031b22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -119,12 +119,6 @@ set(LIBUMSKT_SRC src/libumskt/debugoutput.cpp ) -if(UMSKT_USE_SHARED_OPENSSL) - add_library(_umskt SHARED ${LIBUMSKT_SRC}) -else() - add_library(_umskt STATIC ${LIBUMSKT_SRC}) -endif() - #### Separate Build Path for emscripten if (EMSCRIPTEN) add_executable(umskt ${LIBUMSKT_SRC}) From 11253c5e2ce75ba13f092453e72a7425081c2a19 Mon Sep 17 00:00:00 2001 From: WitherOrNot Date: Thu, 10 Aug 2023 09:59:20 -0400 Subject: [PATCH 07/41] Revert to old CMakeLists for now --- CMakeLists.txt | 234 ++++++++++++++++++++++++++----------------------- 1 file changed, 126 insertions(+), 108 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2031b22..36fda23 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,142 +18,160 @@ # @FileCreated by Andrew on 05/30/2023 # @Maintainer Neo -cmake_minimum_required(VERSION 3.12) +CMAKE_MINIMUM_REQUIRED(VERSION 3.12) +PROJECT(UMSKT) +SET(CMAKE_CXX_STANDARD 17) +SET(CMAKE_POSITION_INDEPENDENT_CODE ON) +OPTION(UMSKT_USE_SHARED_OPENSSL "Force linking against the system-wide OpenSSL library" OFF) +OPTION(MUSL_STATIC "Enable fully static builds in a muslc environment (i.e. Alpine Linux)" OFF) +OPTION(DJGPP_WATT32 "Enable compilation and linking with DJGPP/WATT32/OpenSSL" OFF) +OPTION(MSVC_MSDOS_STUB "Specify a custom MS-DOS stub for a 32-bit MSVC compilation" OFF) -project(UMSKT) -set(CMAKE_OSX_SYSROOT "macosx" CACHE PATH "macOS SDK path") +SET(UMSKT_LINK_LIBS ${UMSKT_LINK_LIBS}) +SET(UMSKT_LINK_DIRS ${UMSKT_LINK_DIRS}) -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) +IF(UMSKT_USE_SHARED_OPENSSL) + SET(OPENSSL_USE_STATIC_LIBS FALSE) + SET(OPENSSL_MSVC_STATIC_RT FALSE) + MESSAGE(WARNING "[UMSKT] Forcing shared OpenSSL runtime") +ELSE() + SET(OPENSSL_USE_STATIC_LIBS TRUE) + SET(OPENSSL_MSVC_STATIC_RT TRUE) +ENDIF() -option(UMSKT_USE_SHARED_OPENSSL "Force linking against the system-wide OpenSSL library" OFF) -option(MUSL_STATIC "Enable fully static builds in a muslc environment (i.e. Alpine Linux)" OFF) -option(DJGPP_WATT32 "Enable compilation and linking with DJGPP/WATT32/OpenSSL" OFF) -option(MSVC_MSDOS_STUB "Specify a custom MS-DOS stub for a 32-bit MSVC compilation" OFF) +IF(DJGPP_WATT32) + SET(CMAKE_SYSTEM_NAME MSDOS) + SET(UMSKT_LINK_LIBS ${UMSKT_LINK_LIBS} ${DJGPP_WATT32}) + SET(UMSKT_LINK_DIRS ${UMSKT_LINK_DIRS} ${WATT_ROOT}/lib) +ENDIF() -find_package(OpenSSL REQUIRED) - -if(NOT OpenSSL_FOUND) - message(FATAL_ERROR "OpenSSL Development Libraries Not Found. Please install the required OpenSSL development package.") -endif() - -if(UMSKT_USE_SHARED_OPENSSL) - set(OPENSSL_USE_STATIC_LIBS FALSE) - set(OPENSSL_MSVC_STATIC_RT FALSE) -else() - set(OPENSSL_USE_STATIC_LIBS TRUE) - set(OPENSSL_MSVC_STATIC_RT TRUE) -endif() +# find the system installed OpenSSL development library +FIND_PACKAGE(OpenSSL REQUIRED) +IF(NOT OPENSSL_FOUND) + MESSAGE(SEND_ERROR "OpenSSL Development Libraries Not Found") + MESSAGE(SEND_ERROR "Please consult your package manager of choice to install the prerequisite") + MESSAGE(SEND_ERROR "The package name is commonly called libssl-dev or openssl-dev depending on distribution") + MESSAGE(FATAL_ERROR "Can not continue without OpenSSL") +ENDIF() # if we found shared libraries - do the following: -string(REGEX MATCH "(\\.so|\\.dll|\\.dylib)$" OPENSSL_CRYPTO_SHARED "${OPENSSL_CRYPTO_LIBRARY}") -if(OPENSSL_CRYPTO_SHARED) - message(STATUS "[UMSKT] Detected Shared library version of OpenSSL") - set(BUILD_SHARED_LIBS ON) -else() - message(STATUS "[UMSKT] Detected Static Library version of OpenSSL") -endif() +STRING(REGEX MATCH "(\\.so|\\.dll|\\.dylib)$" OPENSSL_CRYPTO_SHARED "${OPENSSL_CRYPTO_LIBRARY}") +IF(OPENSSL_CRYPTO_SHARED) + MESSAGE(STATUS "[UMSKT] Detected Shared library version of OpenSSL") + SET(BUILD_SHARED_LIBS ON) +ELSE() + MESSAGE(STATUS "[UMSKT] Detected Static Library version of OpenSSL") +ENDIF() # if we're compiling with MSVC, respect the DEBUG compile option -if(MSVC) - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") - if(NOT BUILD_SHARED_LIBS) - set(CMAKE_CXX_FLAGS_RELEASE "/MT") - set(CMAKE_CXX_FLAGS_DEBUG "/MTd") - else() - set(CMAKE_CXX_FLAGS_RELEASE "/MD") - set(CMAKE_CXX_FLAGS_DEBUG "/MDd") - endif() - set(CMAKE_EXE_LINKER_FLAGS "/INCREMENTAL:NO /NODEFAULTLIB:MSVCRT") - set(CMAKE_ENABLE_EXPORTS ON) - set(UMSKT_EXE_WINDOWS_EXTRA src/windows/umskt.rc) - set(UMSKT_EXE_WINDOWS_DLL src/windows/dllmain.cpp) -endif() +IF(MSVC) + SET(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") + IF(NOT BUILD_SHARED_LIBS) + SET(CMAKE_CXX_FLAGS_RELEASE "/MT") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd") + ELSE() + SET(CMAKE_CXX_FLAGS_RELEASE "/MD") + SET(CMAKE_CXX_FLAGS_DEBUG "/MDd") + ENDIF() + SET(CMAKE_EXE_LINKER_FLAGS "/INCREMENTAL:NO /NODEFAULTLIB:MSVCRT") + SET(CMAKE_ENABLE_EXPORTS ON) + SET(UMSKT_EXE_WINDOWS_EXTRA src/windows/umskt.rc) + SET(UMSKT_EXE_WINDOWS_DLL src/windows/dllmain.cpp) +ENDIF() -if(MUSL_STATIC AND NOT UMSKT_USE_SHARED_OPENSSL) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc -static-libstdc++") - set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc -static-libstdc++") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++") -endif() +IF(MUSL_STATIC) + MESSAGE(STATUS "[UMSKT] Performing a fully static build using muslc") + SET(CMAKE_EXE_LINKER_FLAGS "-static -static-libgcc -static-libstdc++") + SET(CMAKE_SHARED_LINKER_FLAGS "-static -static-libgcc -static-libstdc++") + SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc -static-libstdc++") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++") +ENDIF() -include(cmake/CPM.cmake) +# initalize cpm.CMake +INCLUDE(cmake/CPM.cmake) +# fetch cpm.CMake dependencies +# Include JSON development library CPMAddPackage( - NAME nlohmann_json - GITHUB_REPOSITORY nlohmann/json - VERSION 3.11.2 + NAME nlohmann_json + GITHUB_REPOSITORY nlohmann/json + VERSION 3.11.2 ) +# Include fmt development library CPMAddPackage( - NAME fmt - GITHUB_REPOSITORY fmtlib/fmt - GIT_TAG 10.0.0 - VERSION 10.0.0 + NAME fmt + GITHUB_REPOSITORY fmtlib/fmt + GIT_TAG 10.0.0 + VERSION 10.0.0 ) +# Include cmrc resource compiler CPMAddPackage( - NAME cmrc - GITHUB_REPOSITORY vector-of-bool/cmrc - GIT_TAG 2.0.1 - VERSION 2.0.1 + NAME cmrc + GITHUB_REPOSITORY vector-of-bool/cmrc + GIT_TAG 2.0.1 + VERSION 2.0.1 ) -# For Emscripten builds, set CMAKE_TOOLCHAIN_FILE to the appropriate file -set(EMSCRIPTEN_BUILD OFF CACHE BOOL "Build for Emscripten" FORCE) -if(EMSCRIPTEN_BUILD) - set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/cmake/Emscripten.cmake" CACHE string "Emscripten toolchain file") -endif() +# Include Crypto++ development library +#CPMAddPackage( +# NAME cryptopp-cmake +# GITHUB_REPOSITORY abdes/cryptopp-cmake +# GIT_TAG CRYPTOPP_8_8_0 +# VERSION 8.8.0 +# OPTIONS "CRYPTOPP_BUILD_TESTING OFF" +#) -cmrc_add_resource_library(umskt-rc ALIAS umskt::rc NAMESPACE umskt keys.json) +#include googletest unit testing library +#CPMAddPackage( +# NAME googletest +# GITHUB_REPOSITORY google/googletest +# VERSION 1.13.0 +# OPTIONS "INSTALL_GTEST OFF" "gtest_force_shared_crt" +#) -set(LIBUMSKT_SRC - src/libumskt/libumskt.cpp - src/libumskt/pidgen3/BINK1998.cpp - src/libumskt/pidgen3/BINK2002.cpp - src/libumskt/pidgen3/key.cpp - src/libumskt/pidgen3/util.cpp - src/libumskt/confid/confid.cpp - src/libumskt/pidgen2/PIDGEN2.cpp - src/libumskt/debugoutput.cpp -) +### Resource compilation +CMRC_ADD_RESOURCE_LIBRARY(umskt-rc ALIAS umskt::rc NAMESPACE umskt keys.json) + +SET(LIBUMSKT_SRC src/libumskt/libumskt.cpp src/libumskt/pidgen3/BINK1998.cpp src/libumskt/pidgen3/BINK2002.cpp src/libumskt/pidgen3/key.cpp src/libumskt/pidgen3/util.cpp src/libumskt/confid/confid.cpp src/libumskt/pidgen2/PIDGEN2.cpp src/libumskt/debugoutput.cpp) #### Separate Build Path for emscripten -if (EMSCRIPTEN) - add_executable(umskt ${LIBUMSKT_SRC}) - target_include_directories(umskt PUBLIC ${OPENSSL_INCLUDE_DIR}) - target_link_libraries(umskt -static OpenSSL::Crypto cryptopp::cryptopp fmt) - set(CMAKE_EXECUTABLE_SUFFIX ".html") +IF (EMSCRIPTEN) + ADD_EXECUTABLE(umskt ${LIBUMSKT_SRC}) + TARGET_INCLUDE_DIRECTORIES(umskt PUBLIC ${OPENSSL_INCLUDE_DIR}) + TARGET_LINK_LIBRARIES(umskt -static OpenSSL::Crypto cryptopp::cryptopp fmt) + SET(CMAKE_EXECUTABLE_SUFFIX ".html") - set_target_properties(umskt PROPERTIES COMPILE_FLAGS "-Os -sEXPORTED_RUNTIME_METHODS=ccall,cwrap") - set_target_properties(umskt PROPERTIES LINK_FLAGS "-Os -sWASM=1 -sEXPORT_ALL=1 -sEXPORTED_RUNTIME_METHODS=ccall,cwrap --no-entry") -else() - if(NOT UMSKT_USE_SHARED_OPENSSL) + SET_TARGET_PROPERTIES(umskt PROPERTIES COMPILE_FLAGS "-Os -sEXPORTED_RUNTIME_METHODS=ccall,cwrap") + SET_TARGET_PROPERTIES(umskt PROPERTIES LINK_FLAGS "-Os -sWASM=1 -sEXPORT_ALL=1 -sEXPORTED_RUNTIME_METHODS=ccall,cwrap --no-entry") +ELSE() + IF(NOT UMSKT_USE_SHARED_OPENSSL) ### Static library compilation - add_library(_umskt STATIC ${LIBUMSKT_SRC}) - target_include_directories(_umskt PUBLIC ${OPENSSL_INCLUDE_DIR}) - target_link_libraries(_umskt -static OpenSSL::Crypto fmt ${UMSKT_LINK_LIBS}) - else() + ADD_LIBRARY(_umskt STATIC ${LIBUMSKT_SRC}) + TARGET_INCLUDE_DIRECTORIES(_umskt PUBLIC ${OPENSSL_INCLUDE_DIR}) + TARGET_LINK_LIBRARIES(_umskt -static OpenSSL::Crypto fmt ${UMSKT_LINK_LIBS}) + ELSE() ### Shared library compilation - add_library(_umskt SHARED ${LIBUMSKT_SRC} ${UMSKT_EXE_WINDOWS_EXTRA} ${UMSKT_EXE_WINDOWS_DLL}) - target_include_directories(_umskt PUBLIC ${OPENSSL_INCLUDE_DIR}) - target_link_libraries(_umskt OpenSSL::Crypto fmt ${UMSKT_LINK_LIBS}) - target_link_directories(_umskt PUBLIC ${UMSKT_LINK_DIRS}) - endif() + ADD_LIBRARY(_umskt SHARED ${LIBUMSKT_SRC} ${UMSKT_EXE_WINDOWS_EXTRA} ${UMSKT_EXE_WINDOWS_DLL}) + TARGET_INCLUDE_DIRECTORIES(_umskt PUBLIC ${OPENSSL_INCLUDE_DIR}) + TARGET_LINK_LIBRARIES(_umskt OpenSSL::Crypto fmt ${UMSKT_LINK_LIBS}) + TARGET_LINK_DIRECTORIES(_umskt PUBLIC ${UMSKT_LINK_DIRS}) + ENDIF() ### UMSKT executable compilation - add_executable(umskt src/main.cpp src/cli.cpp ${UMSKT_EXE_WINDOWS_EXTRA}) - target_include_directories(umskt PUBLIC ${OPENSSL_INCLUDE_DIR}) - target_link_libraries(umskt _umskt OpenSSL::Crypto fmt nlohmann_json::nlohmann_json umskt::rc ${UMSKT_LINK_LIBS}) - target_link_directories(umskt PUBLIC ${UMSKT_LINK_DIRS}) - if(MSVC AND MSVC_MSDOS_STUB) - set_property(TARGET umskt APPEND PROPERTY LINK_FLAGS /STUB:${MSVC_MSDOS_STUB}) - endif() + ADD_EXECUTABLE(umskt src/main.cpp src/cli.cpp ${UMSKT_EXE_WINDOWS_EXTRA}) + TARGET_INCLUDE_DIRECTORIES(umskt PUBLIC ${OPENSSL_INCLUDE_DIR}) + TARGET_LINK_LIBRARIES(umskt _umskt OpenSSL::Crypto fmt nlohmann_json::nlohmann_json umskt::rc ${UMSKT_LINK_LIBS}) + TARGET_LINK_DIRECTORIES(umskt PUBLIC ${UMSKT_LINK_DIRS}) + IF(MSVC AND MSVC_MSDOS_STUB) + SET_PROPERTY(TARGET umskt APPEND PROPERTY LINK_FLAGS /STUB:${MSVC_MSDOS_STUB}) + ENDIF() ### Copy Shared Libraries and dependency files - if (OPENSSL_CRYPTO_SHARED) - get_filename_component(OPENSSL_CRYPTO_LIBRARY_FILENAME ${OPENSSL_CRYPTO_LIBRARY} NAME) - configure_file(${OPENSSL_CRYPTO_LIBRARY} "${CMAKE_CURRENT_BINARY_DIR}/${OPENSSL_CRYPTO_LIBRARY_FILENAME}" COPYONLY) - endif() -endif() + IF (OPENSSL_CRYPTO_SHARED) + GET_FILENAME_COMPONENT(OPENSSL_CRYPTO_LIBRARY_FILENAME ${OPENSSL_CRYPTO_LIBRARY} NAME) + CONFIGURE_FILE(${OPENSSL_CRYPTO_LIBRARY} "${CMAKE_CURRENT_BINARY_DIR}/${OPENSSL_CRYPTO_LIBRARY_FILENAME}" COPYONLY) + ENDIF() +ENDIF() From d411d56d81790fb0ccbcb2e739c8e4dc830c5476 Mon Sep 17 00:00:00 2001 From: WitherOrNot Date: Thu, 10 Aug 2023 10:18:55 -0400 Subject: [PATCH 08/41] Update dos-djgpp.yml --- .github/workflows/dos-djgpp.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dos-djgpp.yml b/.github/workflows/dos-djgpp.yml index e16ee23..4d65b01 100644 --- a/.github/workflows/dos-djgpp.yml +++ b/.github/workflows/dos-djgpp.yml @@ -27,8 +27,8 @@ on: branches: [ "master" ] env: - CMAKE_C_COMPILER: ${{ github.workspace }}/djgpp/bin/i586-pc-msdosdjgpp-gcc - CMAKE_CXX_COMPILER: ${{ github.workspace }}/djgpp/bin/i586-pc-msdosdjgpp-g++ + CMAKE_C_COMPILER: ${{ github.workspace }}/djgpp/bin/i386-pc-msdosdjgpp-gcc + CMAKE_CXX_COMPILER: ${{ github.workspace }}/djgpp/bin/i386-pc-msdosdjgpp-g++ CMAKE_FIND_ROOT_PATH: ${{ github.workspace }}/djgpp CMAKE_FIND_ROOT_PATH_MODE_PROGRAM: NEVER CMAKE_FIND_ROOT_PATH_MODE_LIBRARY: ONLY @@ -47,9 +47,10 @@ jobs: - name: Download and Setup DJGPP Toolchain run: | - wget https://github.com/andrewwutw/build-djgpp/releases/download/v3.4/djgpp-linux64-gcc1220.tar.bz2 - tar xjf djgpp-linux64-gcc1220.tar.bz2 + mkdir ${{ github.workspace }}/djgpp cd ${{ github.workspace }}/djgpp + wget https://github.com/UMSKT/build-djgpp/releases/download/toolchain/toolchain.tar.gz + tar xzf toolchain.tar.gz git clone https://github.com/UMSKT/Watt-32.git watt32 cd watt32/util make clean && make linux @@ -67,7 +68,7 @@ jobs: ./Configure no-threads -DOPENSSL_DEV_NO_ATOMICS --prefix=${{ github.workspace }}/djgpp DJGPP make && make install popd - ls ${{ github.workspace }}/djgpp/i586-pc-msdosdjgpp/bin/ + ls ${{ github.workspace }}/djgpp/i386-pc-msdosdjgpp/bin/ - name: Checkout Source Tree uses: actions/checkout@v3 From 232be6aba2a2626cb412276699e51e96250e2343 Mon Sep 17 00:00:00 2001 From: TheTank20 Date: Thu, 10 Aug 2023 14:45:04 -0500 Subject: [PATCH 09/41] trigger GitHub Actions --- _dummy.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 _dummy.txt diff --git a/_dummy.txt b/_dummy.txt new file mode 100644 index 0000000..4dba588 --- /dev/null +++ b/_dummy.txt @@ -0,0 +1 @@ +I put this file in to get Actions to trigger. From c078247beab3fc4a7596d9fa0e7aa51426198c91 Mon Sep 17 00:00:00 2001 From: TheTank20 Date: Thu, 10 Aug 2023 14:46:11 -0500 Subject: [PATCH 10/41] Delete _dummy.txt --- _dummy.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 _dummy.txt diff --git a/_dummy.txt b/_dummy.txt deleted file mode 100644 index 4dba588..0000000 --- a/_dummy.txt +++ /dev/null @@ -1 +0,0 @@ -I put this file in to get Actions to trigger. From 46c39df15de643add214e86211a491782218e82c Mon Sep 17 00:00:00 2001 From: WitherOrNot Date: Thu, 10 Aug 2023 16:23:01 -0400 Subject: [PATCH 11/41] Update CMakeLists.txt --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 36fda23..7e7e307 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.12) PROJECT(UMSKT) SET(CMAKE_CXX_STANDARD 17) SET(CMAKE_POSITION_INDEPENDENT_CODE ON) +SET(CMAKE_OSX_SYSROOT "macosx" CACHE PATH "macOS SDK path") OPTION(UMSKT_USE_SHARED_OPENSSL "Force linking against the system-wide OpenSSL library" OFF) OPTION(MUSL_STATIC "Enable fully static builds in a muslc environment (i.e. Alpine Linux)" OFF) OPTION(DJGPP_WATT32 "Enable compilation and linking with DJGPP/WATT32/OpenSSL" OFF) From f43a2d5c37b82b1c636418ee7878d7010432de59 Mon Sep 17 00:00:00 2001 From: WitherOrNot Date: Thu, 10 Aug 2023 16:54:33 -0400 Subject: [PATCH 12/41] Update CMakeLists.txt --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e7e307..cb0aaed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,10 @@ ENDIF() IF(DJGPP_WATT32) SET(CMAKE_SYSTEM_NAME MSDOS) + SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) SET(UMSKT_LINK_LIBS ${UMSKT_LINK_LIBS} ${DJGPP_WATT32}) SET(UMSKT_LINK_DIRS ${UMSKT_LINK_DIRS} ${WATT_ROOT}/lib) ENDIF() From bde4371cbe7a408999cee1559ca6e7910311f3ff Mon Sep 17 00:00:00 2001 From: WitherOrNot Date: Thu, 10 Aug 2023 16:59:23 -0400 Subject: [PATCH 13/41] Update dos-djgpp.yml --- .github/workflows/dos-djgpp.yml | 56 ++++++++++++++------------------- 1 file changed, 23 insertions(+), 33 deletions(-) diff --git a/.github/workflows/dos-djgpp.yml b/.github/workflows/dos-djgpp.yml index 4d65b01..aaed076 100644 --- a/.github/workflows/dos-djgpp.yml +++ b/.github/workflows/dos-djgpp.yml @@ -21,74 +21,64 @@ name: C/C++ CI (DOS DJGPP) on: - push: - branches: [ "master" ] - pull_request: - branches: [ "master" ] + workflow_call: env: - CMAKE_C_COMPILER: ${{ github.workspace }}/djgpp/bin/i386-pc-msdosdjgpp-gcc - CMAKE_CXX_COMPILER: ${{ github.workspace }}/djgpp/bin/i386-pc-msdosdjgpp-g++ + CC: ${{ github.workspace }}/djgpp/bin/i586-pc-msdosdjgpp-gcc + CXX: ${{ github.workspace }}/djgpp/bin/i586-pc-msdosdjgpp-g++ CMAKE_FIND_ROOT_PATH: ${{ github.workspace }}/djgpp - CMAKE_FIND_ROOT_PATH_MODE_PROGRAM: NEVER - CMAKE_FIND_ROOT_PATH_MODE_LIBRARY: ONLY - CMAKE_FIND_ROOT_PATH_MODE_INCLUDE: ONLY - CMAKE_FIND_ROOT_PATH_MODE_PACKAGE: ONLY WATT_ROOT: ${{ github.workspace }}/djgpp/watt32 jobs: build: runs-on: ubuntu-latest steps: + - name: Checkout Source Tree + uses: actions/checkout@v3 + - name: Setup build environment run: | sudo apt -y update - sudo apt -y install build-essential cmake wget 7zip git flex nasm libslang2-dev pkg-config libslang2-modules gcc-multilib + sudo apt -y install build-essential cmake wget 7zip git flex libfl-dev nasm libslang2-dev pkg-config libslang2-modules gcc-multilib - name: Download and Setup DJGPP Toolchain run: | - mkdir ${{ github.workspace }}/djgpp + pushd ${{ github.workspace }} + wget https://github.com/andrewwutw/build-djgpp/releases/download/v3.4/djgpp-linux64-gcc1220.tar.bz2 + tar xjf djgpp-linux64-gcc1220.tar.bz2 cd ${{ github.workspace }}/djgpp - wget https://github.com/UMSKT/build-djgpp/releases/download/toolchain/toolchain.tar.gz - tar xzf toolchain.tar.gz git clone https://github.com/UMSKT/Watt-32.git watt32 cd watt32/util make clean && make linux cd ../src + source ${{ github.workspace }}/djgpp/setenv ./configur.sh djgpp make -f djgpp.mak - ln -s ${{ github.workspace }}/djgpp/watt32/lib/libwatt.a ${{ github.workspace }}/djgpp/lib + ln -s ${WATT_ROOT}/lib/libwatt.a ${{ github.workspace }}/djgpp/lib - - name: Checkout and Cross Compile OpenSSL 3.1 + - name: Checkout and Cross Compile OpenSSL 3.1.2 run: | git clone https://github.com/UMSKT/openssl.git openssl pushd openssl - git checkout openssl-3.1.1 source ${{ github.workspace }}/djgpp/setenv ./Configure no-threads -DOPENSSL_DEV_NO_ATOMICS --prefix=${{ github.workspace }}/djgpp DJGPP make && make install popd - ls ${{ github.workspace }}/djgpp/i386-pc-msdosdjgpp/bin/ - - - name: Checkout Source Tree - uses: actions/checkout@v3 - name: Build - uses: threeal/cmake-action@v1.2.0 - with: - c-compiler: gcc - cxx-compiler: g++ - options: OPENSSL_ROOT_DIR:string=${{ github.workspace }}/djgpp DJGPP_WATT32=ON - run-build: true - - - name: Test & Move files to correct directory run: | - mkdir -p build/actions_upload - mv build/umskt build/actions_upload/umskt + source ${{ github.workspace }}/djgpp/setenv + pushd build + cmake ../ -D DJGPP_WATT32=${WATT_ROOT}/lib/libwatt.a -D CMAKE_FIND_ROOT_PATH=${CMAKE_FIND_ROOT_PATH} + make + + - name: Move executable to upload directory + run: | + mkdir build/actions_upload + mv build/umskt.exe build/actions_upload/ - name: Upload build artifact uses: actions/upload-artifact@v3.1.2 with: - name: UMSKT-DOS-DJGPP + name: UMSKT-DOS path: build/actions_upload - From de09feb18f2ff5ade004ecf7436ca3a3b2c23ba8 Mon Sep 17 00:00:00 2001 From: WitherOrNot Date: Thu, 10 Aug 2023 17:00:49 -0400 Subject: [PATCH 14/41] Update dos-djgpp.yml --- .github/workflows/dos-djgpp.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dos-djgpp.yml b/.github/workflows/dos-djgpp.yml index aaed076..5410fb0 100644 --- a/.github/workflows/dos-djgpp.yml +++ b/.github/workflows/dos-djgpp.yml @@ -21,7 +21,10 @@ name: C/C++ CI (DOS DJGPP) on: - workflow_call: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] env: CC: ${{ github.workspace }}/djgpp/bin/i586-pc-msdosdjgpp-gcc From 9fec269ad03219b4353747568550639cfb846ac8 Mon Sep 17 00:00:00 2001 From: TheTank20 Date: Mon, 14 Aug 2023 21:35:42 -0400 Subject: [PATCH 15/41] Only show successful runs on links --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 61217f5..7f81a21 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ In light of the recent exponential interest in this project I've decided to put #### 1. Download the latest version of UMSKT * *(GitHub account required)* - * Download the latest experimental version using the Actions tab ([Windows](../../actions/workflows/windows.yml?query=branch%3Amaster), [Linux](../../actions/workflows/linux.yml?query=branch%3Amaster), [macOS](../../actions/workflows/macos.yml?query=branch%3Amaster), [FreeBSD](../../actions/workflows/freebsd.yml?query=branch%3Amaster), [DOS DJGPP](../../actions/workflows/.yml?qudos-djgppery=branch%3Amaster)) + * Download the latest experimental version using the Actions tab ([Windows](../../actions/workflows/windows.yml?query=branch%3Amaster+is%3Asuccess), [Linux](../../actions/workflows/linux.yml?query=branch%3Amaster+is%3Asuccess), [macOS](../../actions/workflows/macos.yml?query=branch%3Amaster+is%3Asuccess), [FreeBSD](../../actions/workflows/freebsd.yml?query=branch%3Amaster+is%3Asuccess), [DOS DJGPP](../../actions/workflows/dos-djgpp.yml?query=branch%3Amaster+is%3Asuccess)) * ~~*(GitHub account \*not\* required)*~~ From 13bf69c7e1633f7d98114a54e356a869b279c17f Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Mon, 28 Aug 2023 07:20:10 +1200 Subject: [PATCH 16/41] Add Office 2k3 and Works Suite 2003/2004 --- keys.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/keys.json b/keys.json index 6c174f7..09f13d1 100644 --- a/keys.json +++ b/keys.json @@ -45,6 +45,9 @@ "Office XP Applications": { "BINK": ["20", "21"] }, + "Works Suite 2003 and 2004": { + "BINK": ["20", "21"] + }, "Office XP": { "BINK": ["22", "23"] }, @@ -117,6 +120,9 @@ "Office 2003 Small Business": { "BINK": ["70", "71"] }, + "Office 2003 Student and Teacher": { + "BINK": ["70", "71"] + }, "Office 2003 Professional": { "BINK": ["72", "73"] }, @@ -1568,4 +1574,4 @@ "iid_key": "1513142771" } } -} \ No newline at end of file +} From a787fc8e85e24ee5dbe2c2f2cf5602cbc24c9e88 Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Fri, 1 Sep 2023 11:55:22 +1200 Subject: [PATCH 17/41] Fix Windows Build --- .github/workflows/windows.yml | 36 +++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 27a3d67..d930b8d 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -30,10 +30,27 @@ jobs: build-32bit: runs-on: windows-latest steps: - - name: Install v141_xp - uses: thepwrtank18/install-vs-components@v1.0.0 - with: - components: Microsoft.VisualStudio.Component.WinXP + # https://github.com/actions/runner-images/issues/6067#issuecomment-1213069040 + - name: Install Windows XP Support for Visual Studio + run: | + Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\" + $InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise" + $componentsToAdd = @( + "Microsoft.VisualStudio.Component.WinXP" + ) + [string]$workloadArgs = $componentsToAdd | ForEach-Object {" --add " + $_} + $Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache') + $process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden + if ($process.ExitCode -eq 0) + { + Write-Host "components have been successfully added" + Get-ChildItem C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.Windows.XPSupport.* + } + else + { + Write-Host "components were not installed" + exit 1 + } - name: Download And Install 32-bit OpenSSL 3.1.2 run: | @@ -64,7 +81,7 @@ jobs: - name: Build UMSKT working-directory: build - run: msbuild ALL_BUILD.vcxproj /P:Configuration=Release /P:XPDeprecationWarning=false + run: msbuild ALL_BUILD.vcxproj /P:Configuration=Release - name: Upload build artifact uses: actions/upload-artifact@v3.1.2 @@ -75,11 +92,6 @@ jobs: build-64bit: runs-on: windows-latest steps: - - name: Install v141_xp - uses: thepwrtank18/install-vs-components@v1.0.0 - with: - components: Microsoft.VisualStudio.Component.WinXP - - name: Download And Install 64-bit OpenSSL 3.1.2 run: | $installDir = "$Env:ProgramFiles\OpenSSL" @@ -103,11 +115,11 @@ jobs: uses: threeal/cmake-action@v1.2.0 with: generator: "Visual Studio 17 2022" - args: -A "x64" -T v141_xp + args: -A "x64" - name: Build UMSKT working-directory: build - run: msbuild ALL_BUILD.vcxproj /P:Configuration=Release /P:XPDeprecationWarning=false + run: msbuild ALL_BUILD.vcxproj /P:Configuration=Release - name: Upload build artifact uses: actions/upload-artifact@v3.1.2 From 1bb00cf53d6043248fd89951394fe88c4191ece9 Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Fri, 1 Sep 2023 11:56:37 +1200 Subject: [PATCH 18/41] Remove unnecessary zipping. --- .github/workflows/macos.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index ea3ae00..0623445 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -53,11 +53,6 @@ jobs: cd build/actions_upload ./umskt - - name: Zip artifact - run: | - cd build/actions_upload - zip -r UMSKT-macOS-${{ matrix.arch }}-static.zip umskt - - name: Upload build artifact uses: actions/upload-artifact@v3.1.2 with: From 453151f20faf312f6306510040ce52751bc91bea Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Fri, 1 Sep 2023 12:47:39 +1200 Subject: [PATCH 19/41] Add Tests for FreeBSD --- .github/workflows/freebsd.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/freebsd.yml b/.github/workflows/freebsd.yml index c8eaa49..00c2a05 100644 --- a/.github/workflows/freebsd.yml +++ b/.github/workflows/freebsd.yml @@ -48,6 +48,7 @@ jobs: cmake .. make ./umskt # Execute the test here + ./umskt -l - name: Move files to correct directory run: | From 06b9d937b1e2e502af48ae7234ee93555eb13061 Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Fri, 1 Sep 2023 20:14:46 +1200 Subject: [PATCH 20/41] Update freebsd.yml --- .github/workflows/freebsd.yml | 123 +++++++++++++++++----------------- 1 file changed, 61 insertions(+), 62 deletions(-) diff --git a/.github/workflows/freebsd.yml b/.github/workflows/freebsd.yml index 00c2a05..bb94049 100644 --- a/.github/workflows/freebsd.yml +++ b/.github/workflows/freebsd.yml @@ -1,62 +1,61 @@ -# This file is a part of the UMSKT Project -# -# Copyleft (C) 2019-2023 UMSKT Contributors (et.al.) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -# @FileCreated by techguy16 on 07/23/2023 -# @Maintainer techguy16 - -name: C/C++ CI (FreeBSD) - -on: - push: - branches: [ "master" ] - pull_request: - branches: [ "master" ] - -jobs: - build: - runs-on: macos-12 - name: build-x86_64 - steps: - - uses: actions/checkout@v3 - - - name: Build & Test in FreeBSD - id: test - uses: vmactions/freebsd-vm@v0 - with: - envs: 'MYTOKEN MYTOKEN2' - usesh: true - prepare: | - pkg install -y cmake openssl git bash - - run: | - mkdir build - cd build - cmake .. - make - ./umskt # Execute the test here - ./umskt -l - - - name: Move files to correct directory - run: | - mkdir -p build/actions_upload - mv build/umskt build/actions_upload/umskt - - - name: Upload build artifact - uses: actions/upload-artifact@v3.1.2 - with: - name: UMSKT-FreeBSD - path: build/actions_upload +# This file is a part of the UMSKT Project + # + # Copyleft (C) 2019-2023 UMSKT Contributors (et.al.) + # + # This program is free software: you can redistribute it and/or modify + # it under the terms of the GNU Affero General Public License as published by + # the Free Software Foundation, either version 3 of the License, or + # (at your option) any later version. + # + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU Affero General Public License for more details. + # + # You should have received a copy of the GNU Affero General Public License + # along with this program. If not, see . + # + # @FileCreated by techguy16 on 07/23/2023 + # @Maintainer techguy16 + + name: C/C++ CI (FreeBSD) + + on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + + jobs: + build: + runs-on: macos-12 + name: build-x86_64 + steps: + - uses: actions/checkout@v3 + + - name: Build & Test in FreeBSD + id: test + uses: vmactions/freebsd-vm@v0 + with: + envs: 'MYTOKEN MYTOKEN2' + usesh: true + prepare: | + pkg install -y cmake openssl git bash + + run: | + mkdir build + cd build + cmake .. + make + ./umskt # Execute the test here + + - name: Move files to correct directory + run: | + mkdir -p build/actions_upload + mv build/umskt build/actions_upload/umskt + + - name: Upload build artifact + uses: actions/upload-artifact@v3.1.2 + with: + name: UMSKT-FreeBSD + path: build/actions_upload \ No newline at end of file From 8619fccb111ad8db7ff3c3340b4c9d3bde11ee42 Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Sat, 2 Sep 2023 09:12:52 +1200 Subject: [PATCH 21/41] Update freebsd.yml --- .github/workflows/freebsd.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/freebsd.yml b/.github/workflows/freebsd.yml index bb94049..0dab457 100644 --- a/.github/workflows/freebsd.yml +++ b/.github/workflows/freebsd.yml @@ -28,7 +28,7 @@ jobs: build: - runs-on: macos-12 + runs-on: macos-latest name: build-x86_64 steps: - uses: actions/checkout@v3 @@ -58,4 +58,4 @@ uses: actions/upload-artifact@v3.1.2 with: name: UMSKT-FreeBSD - path: build/actions_upload \ No newline at end of file + path: build/actions_upload From 95803054badf4a80215c3ebab1898805dfcc9af6 Mon Sep 17 00:00:00 2001 From: techguy16 <88870951+techguy16@users.noreply.github.com> Date: Sat, 2 Sep 2023 09:46:19 +1200 Subject: [PATCH 22/41] Tidy up Readme - Order Operating Systems - Add separators - Fix build instructions (git clone doesn't just get the code, you need the url) --- README.md | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 7f81a21..abf00b0 100644 --- a/README.md +++ b/README.md @@ -6,17 +6,24 @@ [![libera.chat - #mspid](https://img.shields.io/badge/libera.chat-%23mspid-brightgreen)](https://web.libera.chat/gamja/?nick=Guest?#mspid) **Build status** -[![C/C++ CI (Linux)](https://github.com/UMSKT/UMSKT/actions/workflows/linux.yml/badge.svg)](../../actions/workflows/linux.yml) + [![C/C++ CI (Windows)](https://github.com/UMSKT/UMSKT/actions/workflows/windows.yml/badge.svg)](../../actions/workflows/windows.yml) + [![C/C++ CI (macOS)](https://github.com/UMSKT/UMSKT/actions/workflows/macos.yml/badge.svg)](../../actions/workflows/macos.yml) -[![C/C++ CI (DOS DJGPP)](https://github.com/UMSKT/UMSKT/actions/workflows/dos-djgpp.yml/badge.svg)](../../actions/workflows/freebsd.yml) + +[![C/C++ CI (Linux)](https://github.com/UMSKT/UMSKT/actions/workflows/linux.yml/badge.svg)](../../actions/workflows/linux.yml) + [![C/C++ CI (FreeBSD)](https://github.com/UMSKT/UMSKT/actions/workflows/freebsd.yml/badge.svg)](../../actions/workflows/dos-djgpp.yml) -Plan of Action / ToDo List +[![C/C++ CI (DOS DJGPP)](https://github.com/UMSKT/UMSKT/actions/workflows/dos-djgpp.yml/badge.svg)](../../actions/workflows/freebsd.yml) + +------ + +### Plan of Action / ToDo List In light of the recent exponential interest in this project I've decided to put updates of this project here: - Please see ticket #8 for more information +[Please see ticket #8 for more information](https://github.com/UMSKT/UMSKT/issues/8) ------ @@ -34,6 +41,7 @@ In light of the recent exponential interest in this project I've decided to put * It all comes down to four simple steps: +------ ### **Usage** #### 1. Download the latest version of UMSKT @@ -46,9 +54,9 @@ In light of the recent exponential interest in this project I've decided to put * ~~Download the latest release for your operating system and architecture from [the releases page](../../releases)~~ * No official releases right now, use the other method to get the latest version. -* **Note:** Before continuing, please ensure you have the `umskt` executable extracted. +* **Note:** Before continuing, please ensure you have the `umskt` executable extracted and on UNIX-like systems, have execution permissions (`chmod +x umskt`). -#### 2. Run `umskt` to generate a key, or add `--help` to see more options. +#### 2. Run `umskt` to generate a key, or add `--help` or `-h` to see more options. #### 3. *(Activation step for `Retail` and `OEM` only)* * After installation, you will be prompted to activate Windows. @@ -81,20 +89,26 @@ The list of people who have helped to bring the XP generation to where it is now ### **Development Requirements:** -* `CMake, make, gcc` (`build-essential`) +* `build-essential` + * `cmake` + * `make` + * `gcc` + * `g++` * `git` #### Build Steps: -1. `git clone` -2. `cd build/ && cmake ../ && make` +1. `git clone https://github.com/UMSKT/UMSKT` +2. `cd UMSKT/build` +3. `cmake ..` +4. `make` ----- ### **Known Ports** -| Language | Author | Repo URL | -|----------|-----------|-------------------------------------------------------| -| Rust | Alex Page | [anpage/umskt-rs](https://github.com/anpage/umskt-rs) | -| Python | techguy16 | [techguy16/umsktpy](https://github.com/techguy16/umsktpy) | +| Language | Author | Repo URL | +|----------|-----------|-----------------------------------------------------------| +| Rust | Alex Page | [anpage/umskt-rs](https://github.com/anpage/umskt-rs) | +| Python | techguy16 | [techguy16/umsktpy](https://github.com/techguy16/umsktpy) | From 93732e152bb955b80fbcd4af263f8b0aa4a24a4f Mon Sep 17 00:00:00 2001 From: TheTank20 Date: Fri, 1 Sep 2023 18:07:02 -0400 Subject: [PATCH 23/41] Add XP support for x64 --- .github/workflows/windows.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index d930b8d..aaa9f7d 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -92,6 +92,27 @@ jobs: build-64bit: runs-on: windows-latest steps: + - name: Install Windows XP Support for Visual Studio + run: | + Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\" + $InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise" + $componentsToAdd = @( + "Microsoft.VisualStudio.Component.WinXP" + ) + [string]$workloadArgs = $componentsToAdd | ForEach-Object {" --add " + $_} + $Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache') + $process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden + if ($process.ExitCode -eq 0) + { + Write-Host "components have been successfully added" + Get-ChildItem C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.Windows.XPSupport.* + } + else + { + Write-Host "components were not installed" + exit 1 + } + - name: Download And Install 64-bit OpenSSL 3.1.2 run: | $installDir = "$Env:ProgramFiles\OpenSSL" From 02c85b50b111b9c9f38f2d3158cb8ea249926cfe Mon Sep 17 00:00:00 2001 From: TheTank20 Date: Fri, 1 Sep 2023 18:08:53 -0400 Subject: [PATCH 24/41] Change build config to v141_xp --- .github/workflows/windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index aaa9f7d..32188c1 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -136,7 +136,7 @@ jobs: uses: threeal/cmake-action@v1.2.0 with: generator: "Visual Studio 17 2022" - args: -A "x64" + args: -A "x64" -T "v141_xp" - name: Build UMSKT working-directory: build From 1679583e6428bdfa4953bfdc9e255454ed349e5c Mon Sep 17 00:00:00 2001 From: TheTank20 Date: Fri, 1 Sep 2023 18:19:35 -0400 Subject: [PATCH 25/41] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index abf00b0..e2f2702 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,7 @@ The list of people who have helped to bring the XP generation to where it is now * TheTank20 * InvoxiPlayGames * brakmic +* techguy16 (the list will be updated to add more collaborators) From 161aa2de4c10b377ee76e22df573797c9aa5eff2 Mon Sep 17 00:00:00 2001 From: TheTank20 Date: Fri, 1 Sep 2023 18:37:12 -0400 Subject: [PATCH 26/41] put the working dir in the right place --- .github/workflows/windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 32188c1..83c2981 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -135,11 +135,11 @@ jobs: - name: Configure UMSKT uses: threeal/cmake-action@v1.2.0 with: + working-directory: build generator: "Visual Studio 17 2022" args: -A "x64" -T "v141_xp" - name: Build UMSKT - working-directory: build run: msbuild ALL_BUILD.vcxproj /P:Configuration=Release - name: Upload build artifact From 06ed5ef240edd2b595f5fb6d4f314f9c5d554c9c Mon Sep 17 00:00:00 2001 From: TheTank20 Date: Fri, 1 Sep 2023 18:50:59 -0400 Subject: [PATCH 27/41] Update windows.yml --- .github/workflows/windows.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 83c2981..237485a 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -74,7 +74,6 @@ jobs: - name: Configure UMSKT uses: threeal/cmake-action@v1.2.0 with: - working-directory: build generator: "Visual Studio 17 2022" options: CMAKE_SYSTEM_VERSION="5.1.2600" args: -A "Win32" -T v141_xp @@ -135,11 +134,11 @@ jobs: - name: Configure UMSKT uses: threeal/cmake-action@v1.2.0 with: - working-directory: build generator: "Visual Studio 17 2022" args: -A "x64" -T "v141_xp" - name: Build UMSKT + working-directory: build run: msbuild ALL_BUILD.vcxproj /P:Configuration=Release - name: Upload build artifact From 3620cf5af6b3ca559dcf71eee1d49ffee44ff15d Mon Sep 17 00:00:00 2001 From: TheTank20 Date: Fri, 1 Sep 2023 19:54:08 -0400 Subject: [PATCH 28/41] Update README.md --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e2f2702..408fcc3 100644 --- a/README.md +++ b/README.md @@ -56,9 +56,13 @@ In light of the recent exponential interest in this project I've decided to put * **Note:** Before continuing, please ensure you have the `umskt` executable extracted and on UNIX-like systems, have execution permissions (`chmod +x umskt`). -#### 2. Run `umskt` to generate a key, or add `--help` or `-h` to see more options. +#### 2. Install OpenSSL 3.1.2. +For Windows, click [here](https://slproweb.com/products/Win32OpenSSL.html) and choose the right version. For other operating systems, consult your package manager. +*Note: This only applies if the build you download has OpenSSL embedded (static library) or not. You can usually tell if the download size is measured in KB or MB. If it's MB, you don't need this.* -#### 3. *(Activation step for `Retail` and `OEM` only)* +#### 3. Run `umskt` to generate a key, or add `--help` or `-h` to see more options. + +#### 4. *(Activation step for `Retail` and `OEM` only)* * After installation, you will be prompted to activate Windows. From ae391a5e502edc897569bef2824610da3d69c177 Mon Sep 17 00:00:00 2001 From: WitherOrNot Date: Fri, 1 Sep 2023 22:43:32 -0400 Subject: [PATCH 29/41] Update cli.cpp --- src/cli.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/cli.cpp b/src/cli.cpp index ed0e5f8..1b3b608 100644 --- a/src/cli.cpp +++ b/src/cli.cpp @@ -216,7 +216,13 @@ int CLI::validateCommandLine(Options* options, char *argv[], json *keys) { int intBinkID; sscanf(options->binkid.c_str(), "%x", &intBinkID); - if (intBinkID >= 0x40 && intBinkID < 0xFE ) { // FE and FF are BINK 1998 + // FE and FF are BINK 1998, but do not generate valid keys, so we throw an error + if (intBinkID >= 0xFE) { + fmt::print("ERROR: Terminal Services BINKs (FE and FF) are unsupported at this time\n"); + return 1; + } + + if (intBinkID >= 0x40) { // set bink2002 validate mode if in bink1998 validate mode, else set bink2002 generate mode options->applicationMode = (options->applicationMode == MODE_BINK1998_VALIDATE) ? MODE_BINK2002_VALIDATE : MODE_BINK2002_GENERATE; } From b3f64e6330944fd872593c6de15d83a6b3fde0b5 Mon Sep 17 00:00:00 2001 From: WitherOrNot Date: Sat, 2 Sep 2023 00:59:34 -0400 Subject: [PATCH 30/41] fix typo --- keys.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keys.json b/keys.json index 09f13d1..3e6caef 100644 --- a/keys.json +++ b/keys.json @@ -1531,7 +1531,7 @@ } }, "Activation": { - "Windowws XP": { + "Windows XP": { "p": "102011604035381881", "x": { "0": "0", From 361a39e2047b863c06f72280998792b15311b4ed Mon Sep 17 00:00:00 2001 From: TheTank20 Date: Sat, 2 Sep 2023 09:20:54 -0400 Subject: [PATCH 31/41] Fix macOS compilation (Attempt 1) --- CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c80a12..9031fd9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,6 +45,12 @@ else() set(OPENSSL_MSVC_STATIC_RT TRUE) endif() +# macOS does not support static build +if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(OPENSSL_USE_STATIC_LIBS FALSE) + set(OPENSSL_MSVC_STATIC_RT FALSE) +endif() + if(MUSL_STATIC AND NOT UMSKT_USE_SHARED_OPENSSL) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc -static-libstdc++") From 492d245f86afd021a3a7fbf29d76cf3c5696705e Mon Sep 17 00:00:00 2001 From: pottzman Date: Sat, 2 Sep 2023 23:22:53 +1000 Subject: [PATCH 32/41] Update cli.cpp added CLI options for confirmation ID generation --- src/cli.cpp | 50 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/src/cli.cpp b/src/cli.cpp index 0592486..bf1b169 100644 --- a/src/cli.cpp +++ b/src/cli.cpp @@ -53,6 +53,8 @@ void CLI::showHelp(char *argv[]) { fmt::print("\t-n --number\tnumber of keys to generate (defaults to 1)\n"); fmt::print("\t-f --file\tspecify which keys file to load\n"); fmt::print("\t-i --instid\tinstallation ID used to generate confirmation ID\n"); + fmt::print("\t-m --mode\tproduct family to activate.\n\t\t\tvalid options are \"WINDOWS\", \"OFFICEXP\", \"OFFICE2K3\", \"OFFICE2K7\" or \"PLUSDME\"\n\t\t\t(defaults to \"WINDOWS\")\n"); + fmt::print("\t-p --productid\tthe product ID of the Program to activate. only required for Office 2K3 and Office 2K7 programs\n"); fmt::print("\t-b --binkid\tspecify which BINK identifier to load (defaults to 2E)\n"); fmt::print("\t-l --list\tshow which products/binks can be loaded\n"); fmt::print("\t-c --channelid\tspecify which Channel Identifier to use (defaults to 640)\n"); @@ -69,16 +71,18 @@ int CLI::parseCommandLine(int argc, char* argv[], Options* options) { "", "", "", + "", 640, 0, 1, - false, false, false, false, false, false, - MODE_BINK1998_GENERATE + false, + MODE_BINK1998_GENERATE, + WINDOWS }; for (int i = 1; i < argc; i++) { @@ -158,6 +162,27 @@ int CLI::parseCommandLine(int argc, char* argv[], Options* options) { options->instid = argv[i+1]; options->applicationMode = MODE_CONFIRMATION_ID; i++; + } else if (arg == "-m" || arg == "--mode") { + std::string mode = argv[i+1]; + char *p = &mode[0]; + for (int i = 0; *p; i++) { + *p+i = toupper((unsigned char)*p+i); + } + if (strcmp(p, "WINDOWS") == 0) { + options->activationMode = WINDOWS; + } else if (strcmp(p, "OFFICEXP") == 0) { + options->activationMode = OFFICE_XP; + } else if (strcmp(p, "OFFICE2K3") == 0) { + options->activationMode = OFFICE_2K3; + } else if (strcmp(p, "OFFICE2K7") == 0) { + options->activationMode = OFFICE_2K7; + } else if (strcmp(p, "PLUSDME") == 0) { + options->activationMode = PLUS_DME; + } + i++; + } else if (arg == "-p" || arg == "--productid") { + options->productid = argv[i+1]; + i++; } else if (arg == "-V" || arg == "--validate") { if (i == argc - 1) { options->error = true; @@ -172,6 +197,11 @@ int CLI::parseCommandLine(int argc, char* argv[], Options* options) { } } + // make sure that a product id is entered for OFFICE_2K3 or OFFICE_2K7 IIDs + if ((options->activationMode == OFFICE_2K3 || options->activationMode == OFFICE_2K7) && options->productid == "") { + return options->error = true; + } + return !options->error; } @@ -389,13 +419,8 @@ int CLI::BINK1998Generate() { // generate a key BN_sub(this->privateKey, this->genOrder, this->privateKey); - // Specify whether an upgrade version or not - bool bUpgrade = false; - if (options.upgrade == true) - bUpgrade = true; - for (int i = 0; i < this->total; i++) { - PIDGEN3::BINK1998::Generate(this->eCurve, this->genPoint, this->genOrder, this->privateKey, nRaw, bUpgrade, this->pKey); + PIDGEN3::BINK1998::Generate(this->eCurve, this->genPoint, this->genOrder, this->privateKey, nRaw, options.upgrade, this->pKey); bool isValid = PIDGEN3::BINK1998::Verify(this->eCurve, this->genPoint, this->pubPoint, this->pKey); if (isValid) { @@ -444,12 +469,7 @@ int CLI::BINK2002Generate() { fmt::print("> AuthInfo: {}\n", pAuthInfo); } - // Specify whether an upgrade version or not - bool bUpgrade = false; - if (options.upgrade == true) - bUpgrade = true; - - PIDGEN3::BINK2002::Generate(this->eCurve, this->genPoint, this->genOrder, this->privateKey, pChannelID, pAuthInfo, bUpgrade, this->pKey); + PIDGEN3::BINK2002::Generate(this->eCurve, this->genPoint, this->genOrder, this->privateKey, pChannelID, pAuthInfo, options.upgrade, this->pKey); bool isValid = PIDGEN3::BINK2002::Verify(this->eCurve, this->genPoint, this->pubPoint, this->pKey); if (isValid) { @@ -521,7 +541,7 @@ int CLI::BINK2002Validate() { int CLI::ConfirmationID() { char confirmation_id[49]; - int err = ConfirmationID::Generate(this->options.instid.c_str(), confirmation_id); + int err = ConfirmationID::Generate(this->options.instid.c_str(), confirmation_id, options.activationMode, options.productid); switch (err) { case ERR_TOO_SHORT: From 90e31b667a91c4935875a4f6aab725d1f9fb5515 Mon Sep 17 00:00:00 2001 From: pottzman Date: Sat, 2 Sep 2023 23:23:59 +1000 Subject: [PATCH 33/41] Update cli.h --- src/cli.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/cli.h b/src/cli.h index f2bc7a6..43b329d 100644 --- a/src/cli.h +++ b/src/cli.h @@ -36,10 +36,18 @@ CMRC_DECLARE(umskt); +enum ACTIVATION_ALGORITHM { + WINDOWS = 0, + OFFICE_XP = 1, + OFFICE_2K3 = 2, + OFFICE_2K7 = 3, + PLUS_DME = 4, +}; + enum MODE { MODE_BINK1998_GENERATE = 0, MODE_BINK2002_GENERATE = 1, - MODE_CONFIRMATION_ID = 2, + MODE_CONFIRMATION_ID = 2, MODE_BINK1998_VALIDATE = 3, MODE_BINK2002_VALIDATE = 4, }; @@ -49,6 +57,7 @@ struct Options { std::string keysFilename; std::string instid; std::string keyToCheck; + std::string productid; int channelID; int serial; int numKeys; @@ -60,6 +69,7 @@ struct Options { bool list; MODE applicationMode; + ACTIVATION_ALGORITHM activationMode; }; class CLI { From f65533bbb300ab99cef978a3c6e711e71246cb84 Mon Sep 17 00:00:00 2001 From: TheTank20 Date: Sat, 2 Sep 2023 09:24:04 -0400 Subject: [PATCH 34/41] macOS build is not static --- .github/workflows/macos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 0623445..792dff9 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -56,5 +56,5 @@ jobs: - name: Upload build artifact uses: actions/upload-artifact@v3.1.2 with: - name: UMSKT-macOS-${{ matrix.arch }}-static + name: UMSKT-macOS-${{ matrix.arch }} path: build/actions_upload From a2d9c46a4bd0c88744df598b24dea2396390ebcd Mon Sep 17 00:00:00 2001 From: pottzman Date: Sat, 2 Sep 2023 23:25:14 +1000 Subject: [PATCH 35/41] Update libumskt.cpp --- src/libumskt/libumskt.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libumskt/libumskt.cpp b/src/libumskt/libumskt.cpp index 48d79b5..6293c14 100644 --- a/src/libumskt/libumskt.cpp +++ b/src/libumskt/libumskt.cpp @@ -27,8 +27,8 @@ #include "pidgen3/BINK2002.h" #include "pidgen2/PIDGEN2.h" -FNEXPORT int ConfirmationID_Generate(const char* installation_id_str, char confirmation_id[49]) { - return ConfirmationID::Generate(installation_id_str, confirmation_id); +FNEXPORT int ConfirmationID_Generate(const char* installation_id_str, char confirmation_id[49], int mode, std::string productid) { + return ConfirmationID::Generate(installation_id_str, confirmation_id, mode, productid); } FNEXPORT EC_GROUP* PIDGEN3_initializeEllipticCurve(char* pSel, char* aSel, char* bSel, char* generatorXSel, char* generatorYSel, char* publicKeyXSel, char* publicKeyYSel, EC_POINT *&genPoint, EC_POINT *&pubPoint) { @@ -57,4 +57,4 @@ FNEXPORT int PIDGEN2_GenerateRetail(char* channelID, char* &keyout) { FNEXPORT int PIDGEN2_GenerateOEM(char* year, char* day, char* oem, char* keyout) { return PIDGEN2::GenerateOEM(year, day, oem, keyout); -} \ No newline at end of file +} From f2f859faeb075093a157ca4ffee54bd9b42c8b94 Mon Sep 17 00:00:00 2001 From: pottzman Date: Sat, 2 Sep 2023 23:27:02 +1000 Subject: [PATCH 36/41] Update confid.h --- src/libumskt/confid/confid.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libumskt/confid/confid.h b/src/libumskt/confid/confid.h index f96b9cb..ae2489f 100644 --- a/src/libumskt/confid/confid.h +++ b/src/libumskt/confid/confid.h @@ -41,6 +41,7 @@ typedef struct { } TDivisor; EXPORT class ConfirmationID { + static int calculateCheckDigit(int pid); static QWORD residue_add(QWORD x, QWORD y); static QWORD residue_sub(QWORD x, QWORD y); static QWORD __umul128(QWORD a, QWORD b, QWORD* hi); @@ -60,11 +61,12 @@ EXPORT class ConfirmationID { static void divisor_mul128(const TDivisor* src, QWORD mult_lo, QWORD mult_hi, TDivisor* dst); static unsigned rol(unsigned x, int shift); static void sha1_single_block(unsigned char input[64], unsigned char output[20]); + static void decode_iid_new_version(unsigned char* iid, unsigned char* hwid, int* version); static void Mix(unsigned char* buffer, size_t bufSize, const unsigned char* key, size_t keySize); static void Unmix(unsigned char* buffer, size_t bufSize, const unsigned char* key, size_t keySize); public: - static int Generate(const char* installation_id_str, char confirmation_id[49]); + static int Generate(const char* installation_id_str, char confirmation_id[49], int mode, std::string productid); //EXPORT static int CLIRun(); }; From 104bdb19e391e05634368b043230572f53c0aa64 Mon Sep 17 00:00:00 2001 From: pottzman Date: Sat, 2 Sep 2023 23:33:47 +1000 Subject: [PATCH 37/41] Update confid.cpp --- src/libumskt/confid/confid.cpp | 287 +++++++++++++++++++++++++++++---- 1 file changed, 255 insertions(+), 32 deletions(-) diff --git a/src/libumskt/confid/confid.cpp b/src/libumskt/confid/confid.cpp index b2a822c..e4040ec 100644 --- a/src/libumskt/confid/confid.cpp +++ b/src/libumskt/confid/confid.cpp @@ -29,9 +29,25 @@ #include "confid.h" -#define MOD 0x16A6B036D7F2A79ULL -#define NON_RESIDUE 43 -static const QWORD f[6] = {0, 0x21840136C85381ULL, 0x44197B83892AD0ULL, 0x1400606322B3B04ULL, 0x1400606322B3B04ULL, 1}; +QWORD MOD = 0; +QWORD NON_RESIDUE = 0; +QWORD f[6] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }; +int productID1; +int productID2; +int productID3; +int productID4; +int activationMode; + +int ConfirmationID::calculateCheckDigit(int pid) +{ + unsigned int i = 0, j = 0, k = 0; + for (j = pid; j; i += k) + { + k = j % 10; + j /= 10; + } + return ((10 * pid) - (i % 7)) + 7; +} QWORD ConfirmationID::residue_add(QWORD x, QWORD y) { @@ -95,18 +111,65 @@ QWORD ConfirmationID::ui128_quotient_mod(QWORD lo, QWORD hi) { // hi:lo * ceil(2**170/MOD) >> (64 + 64 + 42) QWORD prod1; - __umul128(lo, 0x604fa6a1c6346a87, &prod1); + switch (activationMode) { + case 0: + __umul128(lo, 0x604FA6A1C6346A87, &prod1); + break; + case 1: + case 2: + case 3: + __umul128(lo, 0x4FA8E4A40CDAE44A, &prod1); + break; + case 4: + __umul128(lo, 0x2C5C4D3654A594F0, &prod1); + } QWORD part1hi; - QWORD part1lo = __umul128(lo, 0x2d351c6d04f8b, &part1hi); + QWORD part1lo; + switch (activationMode) { + case 0: + part1lo = __umul128(lo, 0x2D351C6D04F8B, &part1hi); + break; + case 1: + case 2: + case 3: + part1lo = __umul128(lo, 0x2CBAF12A59BBE, &part1hi); + break; + case 4: + part1lo = __umul128(lo, 0x2D36C691A4EA5, &part1hi); + } QWORD part2hi; - QWORD part2lo = __umul128(hi, 0x604fa6a1c6346a87, &part2hi); + QWORD part2lo; + switch (activationMode) { + case 0: + part2lo = __umul128(hi, 0x604FA6A1C6346A87, &part2hi); + break; + case 1: + case 2: + case 3: + part2lo = __umul128(hi, 0x4FA8E4A40CDAE44A, &part2hi); + break; + case 4: + part2lo = __umul128(hi, 0x2C5C4D3654A594F0, &part2hi); + } QWORD sum1 = part1lo + part2lo; unsigned sum1carry = (sum1 < part1lo); sum1 += prod1; sum1carry += (sum1 < prod1); QWORD prod2 = part1hi + part2hi + sum1carry; QWORD prod3hi; - QWORD prod3lo = __umul128(hi, 0x2d351c6d04f8b, &prod3hi); + QWORD prod3lo; + switch (activationMode) { + case 0: + prod3lo = __umul128(hi, 0x2D351C6D04F8B, &prod3hi); + break; + case 1: + case 2: + case 3: + prod3lo = __umul128(hi, 0x2CBAF12A59BBE, &prod3hi); + break; + case 4: + prod3lo = __umul128(hi, 0x2D36C691A4EA5, &prod3hi); + } prod3lo += prod2; prod3hi += (prod3lo < prod2); return (prod3lo >> 42) | (prod3hi << 22); @@ -619,6 +682,20 @@ void ConfirmationID::sha1_single_block(unsigned char input[64], unsigned char ou output[16] = e >> 24; output[17] = e >> 16; output[18] = e >> 8; output[19] = e; } +void ConfirmationID::decode_iid_new_version(unsigned char* iid, unsigned char* hwid, int* version) +{ + QWORD buffer[5]; + int i; + for (i = 0; i < 5; i++) + memcpy(&buffer[i], (iid + (4 * i)), 4); + DWORD v1 = (buffer[3] & 0xFFFFFFF8) | 2; + DWORD v2 = ((buffer[3] & 7) << 29) | (buffer[2] >> 3); + QWORD hardwareIDVal = ((QWORD)v1 << 32) | v2; + for (i = 0; i < 8; ++i) + hwid[i] = (hardwareIDVal >> (8 * i)) & 0xFF; + *version = buffer[0] & 7; +} + void ConfirmationID::Mix(unsigned char* buffer, size_t bufSize, const unsigned char* key, size_t keySize) { unsigned char sha1_input[64]; @@ -628,12 +705,26 @@ void ConfirmationID::Mix(unsigned char* buffer, size_t bufSize, const unsigned c int external_counter; for (external_counter = 0; external_counter < 4; external_counter++) { memset(sha1_input, 0, sizeof(sha1_input)); - memcpy(sha1_input, buffer + half, half); - memcpy(sha1_input + half, key, keySize); - sha1_input[half + keySize] = 0x80; - sha1_input[sizeof(sha1_input) - 1] = (half + keySize) * 8; - sha1_input[sizeof(sha1_input) - 2] = (half + keySize) * 8 / 0x100; - sha1_single_block(sha1_input, sha1_result); + switch (activationMode) { + case 0: + case 1: + case 4: + memcpy(sha1_input, buffer + half, half); + memcpy(sha1_input + half, key, keySize); + sha1_input[half + keySize] = 0x80; + sha1_input[sizeof(sha1_input) - 1] = (half + keySize) * 8; + sha1_input[sizeof(sha1_input) - 2] = (half + keySize) * 8 / 0x100; + break; + case 2: + case 3: + sha1_input[0] = 0x79; + memcpy(sha1_input + 1, buffer + half, half); + memcpy(sha1_input + 1 + half, key, keySize); + sha1_input[1 + half + keySize] = 0x80; + sha1_input[sizeof(sha1_input) - 1] = (1 + half + keySize) * 8; + sha1_input[sizeof(sha1_input) - 2] = (1 + half + keySize) * 8 / 0x100; + } + sha1_single_block(sha1_input, sha1_result); size_t i; for (i = half & ~3; i < half; i++) sha1_result[i] = sha1_result[i + 4 - (half & 3)]; @@ -654,12 +745,26 @@ void ConfirmationID::Unmix(unsigned char* buffer, size_t bufSize, const unsigned int external_counter; for (external_counter = 0; external_counter < 4; external_counter++) { memset(sha1_input, 0, sizeof(sha1_input)); - memcpy(sha1_input, buffer, half); - memcpy(sha1_input + half, key, keySize); - sha1_input[half + keySize] = 0x80; - sha1_input[sizeof(sha1_input) - 1] = (half + keySize) * 8; - sha1_input[sizeof(sha1_input) - 2] = (half + keySize) * 8 / 0x100; - sha1_single_block(sha1_input, sha1_result); + switch (activationMode) { + case 0: + case 1: + case 4: + memcpy(sha1_input, buffer, half); + memcpy(sha1_input + half, key, keySize); + sha1_input[half + keySize] = 0x80; + sha1_input[sizeof(sha1_input) - 1] = (half + keySize) * 8; + sha1_input[sizeof(sha1_input) - 2] = (half + keySize) * 8 / 0x100; + break; + case 2: + case 3: + sha1_input[0] = 0x79; + memcpy(sha1_input + 1, buffer, half); + memcpy(sha1_input + 1 + half, key, keySize); + sha1_input[1 + half + keySize] = 0x80; + sha1_input[sizeof(sha1_input) - 1] = (1 + half + keySize) * 8; + sha1_input[sizeof(sha1_input) - 2] = (1 + half + keySize) * 8 / 0x100; + } + sha1_single_block(sha1_input, sha1_result); size_t i; for (i = half & ~3; i < half; i++) sha1_result[i] = sha1_result[i + 4 - (half & 3)]; @@ -671,8 +776,44 @@ void ConfirmationID::Unmix(unsigned char* buffer, size_t bufSize, const unsigned } } -int ConfirmationID::Generate(const char* installation_id_str, char confirmation_id[49]) +int ConfirmationID::Generate(const char* installation_id_str, char confirmation_id[49], int mode, std::string productid) { + int version; + unsigned char hardwareID[8]; + activationMode = mode; + switch (activationMode) { + case 0: + MOD = 0x16A6B036D7F2A79; + NON_RESIDUE = 43; + f[0] = 0x0; + f[1] = 0x21840136C85381; + f[2] = 0x44197B83892AD0; + f[3] = 0x1400606322B3B04; + f[4] = 0x1400606322B3B04; + f[5] = 0x1; + break; + case 1: + case 2: + case 3: + MOD = 0x16E48DD18451FE9; + NON_RESIDUE = 3; + f[0] = 0x0; + f[1] = 0xE5F5ECD95C8FD2; + f[2] = 0xFF28276F11F61; + f[3] = 0xFB2BD9132627E6; + f[4] = 0xE5F5ECD95C8FD2; + f[5] = 0x1; + break; + case 4: + MOD = 0x16A5DABA0605983; + NON_RESIDUE = 2; + f[0] = 0x334F24F75CAA0E; + f[1] = 0x1392FF62889BD7B; + f[2] = 0x135131863BA2DB8; + f[3] = 0x153208E78006010; + f[4] = 0x163694F26056DB; + f[5] = 0x1; + } unsigned char installation_id[19]; // 10**45 < 256**19 size_t installation_id_len = 0; const char* p = installation_id_str; @@ -714,7 +855,23 @@ int ConfirmationID::Generate(const char* installation_id_str, char confirmation_ return ERR_TOO_SHORT; for (; installation_id_len < sizeof(installation_id); installation_id_len++) installation_id[installation_id_len] = 0; - static const unsigned char iid_key[4] = {0x6A, 0xC8, 0x5E, 0xD4}; + unsigned char iid_key[4] = { 0x0, 0x0, 0x0, 0x0 }; + switch (activationMode) { + case 0: + case 4: + iid_key[0] = 0x6A; + iid_key[1] = 0xC8; + iid_key[2] = 0x5E; + iid_key[3] = 0xD4; + break; + case 1: + case 2: + case 3: + iid_key[0] = 0x5A; + iid_key[1] = 0x30; + iid_key[2] = 0xB9; + iid_key[3] = 0xF3; + } Unmix(installation_id, totalCount == 41 ? 17 : 19, iid_key, 4); if (installation_id[18] >= 0x10) return ERR_UNKNOWN_VERSION; @@ -727,19 +884,65 @@ int ConfirmationID::Generate(const char* installation_id_str, char confirmation_ unsigned short KeySHA1; } parsed; #pragma pack(pop) - memcpy(&parsed, installation_id, sizeof(parsed)); - unsigned productId1 = parsed.ProductIDLow & ((1 << 17) - 1); - unsigned productId2 = (parsed.ProductIDLow >> 17) & ((1 << 10) - 1); - unsigned productId3 = (parsed.ProductIDLow >> 27) & ((1 << 25) - 1); - unsigned version = (parsed.ProductIDLow >> 52) & 7; - unsigned productId4 = (parsed.ProductIDLow >> 55) | (parsed.ProductIDHigh << 9); - if (version != (totalCount == 41 ? 4 : 5)) - return ERR_UNKNOWN_VERSION; + switch (activationMode) { + case 0: + case 1: + case 4: + memcpy(&parsed, installation_id, sizeof(parsed)); + productID1 = parsed.ProductIDLow & ((1 << 17) - 1); + productID2 = (parsed.ProductIDLow >> 17) & ((1 << 10) - 1); + productID3 = (parsed.ProductIDLow >> 27) & ((1 << 24) - 1); + version = (parsed.ProductIDLow >> 51) & 15; + productID4 = (parsed.ProductIDLow >> 55) | (parsed.ProductIDHigh << 9); + switch (activationMode) { + case 0: + if (version != (totalCount == 41 ? 9 : 10)) + return ERR_UNKNOWN_VERSION; + break; + case 1: + if (version != 1) + return ERR_UNKNOWN_VERSION; + break; + case 3: + if (version != 4) + return ERR_UNKNOWN_VERSION; + } + break; + case 2: + case 3: + decode_iid_new_version(installation_id, hardwareID, &version); + productID1 = stoi(productid.substr(0,5)); + std::string channelid = productid.substr(6,3); + char *p = &channelid[0]; + for (; *p; p++) { + *p = toupper((unsigned char)*p); + } + if (strcmp(&channelid[0], "OEM") == 0) { + productID2 = stoi(productid.substr(12,3)); + productID3 = calculateCheckDigit((stoi(productid.substr(15,1)) * 100000) + (stoi(productid.substr(18,5)))); + productID4 = (stoi((productid.substr(10,2))) / 100000) * 1000; + } else { + productID2 = stoi(productid.substr(6,3)); + productID3 = stoi(productid.substr(10,7)); + productID4 = stoi(productid.substr(18,5)); + } + switch (activationMode) { + case 2: + if (version != 3) + return ERR_UNKNOWN_VERSION; + break; + case 3: + if (version != 4) + return ERR_UNKNOWN_VERSION; + } + memcpy(&parsed, hardwareID, 8); + break; + } //printf("Product ID: %05u-%03u-%07u-%05u\n", productId1, productId2, productId3, productId4); unsigned char keybuf[16]; memcpy(keybuf, &parsed.HardwareID, 8); - QWORD productIdMixed = (QWORD)productId1 << 41 | (QWORD)productId2 << 58 | (QWORD)productId3 << 17 | productId4; + QWORD productIdMixed = (QWORD)productID1 << 41 | (QWORD)productID2 << 58 | (QWORD)productID3 << 17 | productID4; memcpy(keybuf + 8, &productIdMixed, 8); TDivisor d; @@ -754,7 +957,16 @@ int ConfirmationID::Generate(const char* installation_id_str, char confirmation_ } u; u.lo = 0; u.hi = 0; - u.buffer[7] = attempt; + switch (activationMode) { + case 0: + case 1: + case 4: + u.buffer[7] = attempt; + break; + case 2: + case 3: + u.buffer[6] = attempt; + } Mix(u.buffer, 14, keybuf, 16); QWORD x2 = ui128_quotient_mod(u.lo, u.hi); QWORD x1 = u.lo - x2 * MOD; @@ -766,7 +978,18 @@ int ConfirmationID::Generate(const char* installation_id_str, char confirmation_ } if (attempt > 0x80) return ERR_UNLUCKY; - divisor_mul128(&d, 0x04e21b9d10f127c1, 0x40da7c36d44c, &d); + switch (activationMode) { + case 0: + divisor_mul128(&d, 0x04E21B9D10F127C1, 0x40DA7C36D44C, &d); + break; + case 1: + case 2: + case 3: + divisor_mul128(&d, 0xEFE0302A1F7A5341, 0x01FB8CF48A70DF, &d); + break; + case 4: + divisor_mul128(&d, 0x7C4254C43A5D1181, 0x01C61212ECE610, &d); + } union { struct { QWORD encoded_lo, encoded_hi; From 2703e17f69053787b7322da60d884642466430b1 Mon Sep 17 00:00:00 2001 From: pottzman Date: Sat, 2 Sep 2023 23:51:08 +1000 Subject: [PATCH 38/41] Update cli.cpp --- src/cli.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/cli.cpp b/src/cli.cpp index bf1b169..80fe38f 100644 --- a/src/cli.cpp +++ b/src/cli.cpp @@ -165,9 +165,10 @@ int CLI::parseCommandLine(int argc, char* argv[], Options* options) { } else if (arg == "-m" || arg == "--mode") { std::string mode = argv[i+1]; char *p = &mode[0]; - for (int i = 0; *p; i++) { - *p+i = toupper((unsigned char)*p+i); + for (; *p; p++) { + *p = toupper((unsigned char)*p); } + p = &mode[0]; if (strcmp(p, "WINDOWS") == 0) { options->activationMode = WINDOWS; } else if (strcmp(p, "OFFICEXP") == 0) { From d53409f5bd82a1824026589683f501dcb94b4c59 Mon Sep 17 00:00:00 2001 From: TheTank20 Date: Sat, 2 Sep 2023 09:51:35 -0400 Subject: [PATCH 39/41] TEMP -- use -v --- .github/workflows/macos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 792dff9..239296c 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -40,7 +40,7 @@ jobs: - name: Configure and build UMSKT run: | cd build - cmake -DCMAKE_BUILD_TYPE=Release .. + cmake -v -DCMAKE_BUILD_TYPE=Release .. make - name: Move files to correct directory From a2d521c230aeaf25fe89d8b8c5d9ec25e9c6a8c6 Mon Sep 17 00:00:00 2001 From: TheTank20 Date: Sat, 2 Sep 2023 09:55:20 -0400 Subject: [PATCH 40/41] Update CMakeLists.txt --- CMakeLists.txt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a031569..48bcae7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,6 +31,11 @@ OPTION(MSVC_MSDOS_STUB "Specify a custom MS-DOS stub for a 32-bit MSVC compilati SET(UMSKT_LINK_LIBS ${UMSKT_LINK_LIBS}) SET(UMSKT_LINK_DIRS ${UMSKT_LINK_DIRS}) +# macOS does not support static build +if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + SET(UMSKT_USE_SHARED_OPENSSL ON) +endif() + IF(UMSKT_USE_SHARED_OPENSSL) SET(OPENSSL_USE_STATIC_LIBS FALSE) SET(OPENSSL_MSVC_STATIC_RT FALSE) @@ -40,11 +45,7 @@ ELSE() SET(OPENSSL_MSVC_STATIC_RT TRUE) ENDIF() -# macOS does not support static build -if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - set(OPENSSL_USE_STATIC_LIBS FALSE) - set(OPENSSL_MSVC_STATIC_RT FALSE) -endif() + IF(DJGPP_WATT32) SET(CMAKE_SYSTEM_NAME MSDOS) From 974f400cfcb237bea40c00aff2222d0c831bf76c Mon Sep 17 00:00:00 2001 From: TheTank20 Date: Sat, 2 Sep 2023 09:56:36 -0400 Subject: [PATCH 41/41] Revert "TEMP -- use -v" --- .github/workflows/macos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 239296c..792dff9 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -40,7 +40,7 @@ jobs: - name: Configure and build UMSKT run: | cd build - cmake -v -DCMAKE_BUILD_TYPE=Release .. + cmake -DCMAKE_BUILD_TYPE=Release .. make - name: Move files to correct directory