Revision: 9693 https://osdn.net/projects/ttssh2/scm/svn/commits/9693 Author: nmaya Date: 2022-01-17 00:35:24 +0900 (Mon, 17 Jan 2022) Log Message: ----------- OpenSSL 3 のビルドに対応 #43469 merge from openssl_3_0_1: r9621,r9659,r9681,r9691 Revision Links: -------------- https://osdn.net/projects/ttssh2/scm/svn/commits/9621 https://osdn.net/projects/ttssh2/scm/svn/commits/9659 https://osdn.net/projects/ttssh2/scm/svn/commits/9681 https://osdn.net/projects/ttssh2/scm/svn/commits/9691 Ticket Links: ------------ https://osdn.net/projects/ttssh2/tracker/detail/43469 Modified Paths: -------------- trunk/ttssh2/ttxssh/CMakeLists.txt trunk/ttssh2/ttxssh/cipher.c trunk/ttssh2/ttxssh/crypt.c trunk/ttssh2/ttxssh/mac.c trunk/ttssh2/ttxssh/ssh.c Added Paths: ----------- trunk/libs/buildopenssl3.bat trunk/libs/buildopenssl3.cmake trunk/libs/lib_openssl3.cmake Property Changed: ---------------- trunk/ -------------- next part -------------- Index: trunk =================================================================== --- trunk 2022-01-16 15:16:19 UTC (rev 9692) +++ trunk 2022-01-16 15:35:24 UTC (rev 9693) Property changes on: trunk ___________________________________________________________________ Modified: svn:mergeinfo ## -6,6 +6,7 ## /branches/move_code_script:9026-9185 /branches/openssl_1_1_1_v2:7785-7786,7788-7808,7811-7812,7814-7815,7819-7822,7829,7832-7834,7838-7843,7846-7847,7855-7856,7858,7861-7863,7873-7877,7880-7881,7884-7888,7890-7892,7894-7895,7898,7900,7902-7903,7909,7924,7934,7954-7957,7959,7973,7975,7979-7980,8019,8208,8256 /branches/openssl_1_1_1_v3:8258,8264-8265 +/branches/openssl_3_0_1:9621,9659,9681,9691 /branches/portfwd_memleak:7732,7736-7737,7764 /branches/putty_0_76:9626,9635-9636,9644 /branches/serial_port_improved:8119,8140-8141,8144,8150,8158-8160,8163,8170-8172,8183,8185,8204,8209,8212-8215 Copied: trunk/libs/buildopenssl3.bat (from rev 9621, branches/openssl_3_0_1/libs/buildopenssl3.bat) =================================================================== --- trunk/libs/buildopenssl3.bat (rev 0) +++ trunk/libs/buildopenssl3.bat 2022-01-16 15:35:24 UTC (rev 9693) @@ -0,0 +1,35 @@ +rem OpenSSL\x82̃r\x83\x8B\x83h + +cd openssl + + +rem nmmake clean \x82\xB7\x82\xE9\x82\xC6 ossl_static.pdb \x82\xCD *.pdb \x82Ȃ̂ō폜\x82\xB3\x82\xEA\x82Ă\xB5\x82܂\xA4\x81B +rem ossl_static.pdb \x82\xCD *.pdb \x82Ȃ̂\xC5 nmake clean \x82\xB7\x82\xE9\x82ƍ폜\x82\xB3\x82\xEA\x82Ă\xB5\x82܂\xA4\x81B +rem debug \x82̂Ƃ\xAB\x82̂ق\xA4\x82\xAA\x95K\x97v\x82\xBE\x82Ǝv\x82\xED\x82\xEA\x82\xE9\x82̂ŁA +rem release \x82\xF0\x90\xE6\x82Ƀr\x83\x8B\x83h\x82\xB5\x82\xC4 debug \x82\xCC ossl_static.pdb \x82\xAA\x8Ec\x82\xE9\x82悤\x82ɂ\xB7\x82\xE9\x81B + +if exist "out32\libcrypto.lib" goto build_end +perl Configure no-asm no-async no-shared no-capieng no-dso no-engine VC-WIN32 +perl -e "open(IN,'makefile');while(<IN>){s| /MD| /MT|;print $_;}close(IN);" > makefile.tmp +move /y makefile.tmp makefile +nmake -f makefile clean +nmake -f makefile build_libs +mkdir out32 +move /y libcrypto.lib out32\ +move /y ossl_static.pdb out32\ +:build_end + +if exist "out32.dbg\libcrypto.lib" goto build_dbg_end +perl Configure no-asm no-async no-shared no-capieng no-dso no-engine VC-WIN32 --debug +perl -e "open(IN,'makefile');while(<IN>){s| /MDd| /MTd|;print $_;}close(IN);" > makefile.tmp +move /y makefile.tmp makefile.dbg +nmake -f makefile.dbg clean +nmake -f makefile.dbg build_libs +mkdir out32.dbg +move /y libcrypto.lib out32.dbg\ +move /y ossl_static.pdb out32.dbg\ +:build_dbg_end + + +cd .. +exit /b 0 Copied: trunk/libs/buildopenssl3.cmake (from rev 9681, branches/openssl_3_0_1/libs/buildopenssl3.cmake) =================================================================== --- trunk/libs/buildopenssl3.cmake (rev 0) +++ trunk/libs/buildopenssl3.cmake 2022-01-16 15:35:24 UTC (rev 9693) @@ -0,0 +1,341 @@ +# for OpenSSL 1.1.1 +# cmake -DCMAKE_GENERATOR="Visual Studio 17 2022" -DARCHITECTURE=Win32 -P buildopenssl3.cmake +# cmake -DCMAKE_GENERATOR="Visual Studio 16 2019" -DARCHITECTURE=Win32 -P buildopenssl3.cmake +# cmake -DCMAKE_GENERATOR="Visual Studio 15 2017" -P buildopenssl3.cmake +# cmake -DCMAKE_GENERATOR="Visual Studio 15 2017" -DCMAKE_CONFIGURATION_TYPE=Release -P buildopenssl3.cmake + +#### +if(("${CMAKE_BUILD_TYPE}" STREQUAL "") AND ("${CMAKE_CONFIGURATION_TYPE}" STREQUAL "")) + if("${CMAKE_GENERATOR}" MATCHES "Visual Studio") + # multi-configuration + execute_process( + COMMAND ${CMAKE_COMMAND} + -DCMAKE_GENERATOR=${CMAKE_GENERATOR} + -DCMAKE_CONFIGURATION_TYPE=Release + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_SOURCE_DIR}/VSToolchain.cmake + -DARCHITECTURE=${ARCHITECTURE} + -P buildopenssl3.cmake + ) + execute_process( + COMMAND ${CMAKE_COMMAND} + -DCMAKE_GENERATOR=${CMAKE_GENERATOR} + -DCMAKE_CONFIGURATION_TYPE=Debug + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_SOURCE_DIR}/VSToolchain.cmake + -DARCHITECTURE=${ARCHITECTURE} + -P buildopenssl3.cmake + ) + return() + elseif("$ENV{MSYSTEM}" MATCHES "MINGW32") + # mingw on msys2 + # single-configuration + if("${CMAKE_BUILD_TYPE}" STREQUAL "") + set(CMAKE_BUILD_TYPE Release) + endif() + elseif("${CMAKE_GENERATOR}" MATCHES "Unix Makefiles") + # mingw + # single-configuration + if("${CMAKE_TOOLCHAIN_FILE}" STREQUAL "") + set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/../mingw.toolchain.cmake") + endif() + if("${CMAKE_BUILD_TYPE}" STREQUAL "") + set(CMAKE_BUILD_TYPE Release) + endif() + elseif("${CMAKE_GENERATOR}" MATCHES "NMake Makefiles") + # VS nmake + # single-configuration + if("${CMAKE_TOOLCHAIN_FILE}" STREQUAL "") + set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/VSToolchain.cmake") + endif() + if("${CMAKE_BUILD_TYPE}" STREQUAL "") + set(CMAKE_BUILD_TYPE Release) + endif() + else() + # single-configuration + if("${CMAKE_BUILD_TYPE}" STREQUAL "") + set(CMAKE_BUILD_TYPE Release) + endif() + endif() +endif() + +include(script_support.cmake) + +set(SRC_DIR_BASE "openssl-3.0.1") +set(SRC_ARC "openssl-3.0.1.tar.gz") +set(SRC_URL "https://www.openssl.org/source/openssl-3.0.1.tar.gz") +set(SRC_ARC_HASH_SHA256 c311ad853353bce796edad01a862c50a8a587f62e7e2100ef465ab53ec9b06d1) + +set(DOWN_DIR "${CMAKE_SOURCE_DIR}/download/openssl") + +set(EXTRACT_DIR "${CMAKE_SOURCE_DIR}/build/openssl3/src_${TOOLSET}") +set(INSTALL_DIR "${CMAKE_SOURCE_DIR}/openssl3_${TOOLSET}") +if(("${CMAKE_GENERATOR}" MATCHES "Win64") OR ("$ENV{MSYSTEM_CHOST}" STREQUAL "x86_64-w64-mingw32") OR ("${ARCHITECTURE}" MATCHES "x64") OR ("${CMAKE_COMMAND}" MATCHES "mingw64")) + set(EXTRACT_DIR "${EXTRACT_DIR}_x64") + set(INSTALL_DIR "${INSTALL_DIR}_x64") +endif() +if((${CMAKE_GENERATOR} MATCHES "Visual Studio") AND ("${CMAKE_CONFIGURATION_TYPE}" STREQUAL "Debug")) + set(EXTRACT_DIR "${EXTRACT_DIR}_debug") + set(INSTALL_DIR "${INSTALL_DIR}_debug") +endif() +set(SRC_DIR "${EXTRACT_DIR}/${SRC_DIR_BASE}") + +######################################## + +file(DOWNLOAD + ${SRC_URL} + ${DOWN_DIR}/${SRC_ARC} + EXPECTED_HASH SHA256=${SRC_ARC_HASH_SHA256} + SHOW_PROGRESS + ) + +######################################## + +if(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux") + find_program( + PERL perl + ) +elseif("${CMAKE_GENERATOR}" MATCHES "Visual Studio") + # Active/Strawberry Perl + find_program( + PERL perl.exe + HINTS ${CMAKE_CURRENT_LIST_DIR}/../buildtools/perl/perl/bin + HINTS c:/Perl64/bin + HINTS c:/Perl/bin + HINTS c:/Strawberry/perl/bin + ) + if("${PERL}" MATCHES "[Cc]ygwin") + message(FATAL_ERROR "cygwin perl! ${PERL}") + endif() +else() + # MinGW + find_program( + PERL perl + HINTS C:/msys64/usr/bin + ) +endif() + +if(${PERL} STREQUAL "PERL-NOTFOUND") + message(FATAL_ERROR "perl not found") +endif() + +######################################## + +if(NOT EXISTS "${SRC_DIR}/README.md") + + execute_process( + COMMAND ${CMAKE_COMMAND} -E make_directory ${EXTRACT_DIR} + ) + + execute_process( + COMMAND ${CMAKE_COMMAND} -E tar "xvf" ${DOWN_DIR}/${SRC_ARC} + WORKING_DIRECTORY ${EXTRACT_DIR} + ) + + file(COPY + ${SRC_DIR}/LICENSE.txt + DESTINATION ${CMAKE_CURRENT_LIST_DIR}/doc_help + ) + file(RENAME + ${CMAKE_CURRENT_LIST_DIR}/doc_help/LICENSE.txt + ${CMAKE_CURRENT_LIST_DIR}/doc_help/OpenSSL3-LICENSE.txt) + +endif() + +######################################## + +if((${CMAKE_GENERATOR} MATCHES "Visual Studio") OR + (${CMAKE_GENERATOR} MATCHES "NMake Makefiles")) + ######################################## VS + if(${CMAKE_GENERATOR} MATCHES "NMake Makefiles") + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 17 2022") + find_program( + VCVARS32 vcvarsall.bat + HINTS "C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Auxiliary/Build" + HINTS "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build" + HINTS "C:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Auxiliary/Build" + HINTS "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 16 2019") + find_program( + VCVARS32 vcvarsall.bat + HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Auxiliary/Build" + HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build" + HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 15 2017") + find_program( + VCVARS32 vcvarsall.bat + HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build" + HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Auxiliary/Build" + HINTS "C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Auxiliary/Build" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 14 2015") + find_program( + VCVARS32 vcvars32.bat + HINTS "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 12 2013") + find_program( + VCVARS32 vcvars32.bat + HINTS "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 11 2012") + find_program( + VCVARS32 vcvars32.bat + HINTS "C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 10 2010") + find_program( + VCVARS32 vcvars32.bat + HINTS "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 9 2008") + find_program( + VCVARS32 vcvars32.bat + HINTS "C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 8 2005") + find_program( + VCVARS32 vcvars32.bat + HINTS "C:/Program Files (x86)/Microsoft Visual Studio 8/VC/bin" + ) + else() + message(FATAL_ERROR "CMAKE_GENERATOR ${CMAKE_GENERATOR} not supported") + endif() + if(VCVARS32-NOTFOUND OR (${VCVARS32} STREQUAL "VCVARS32-NOTFOUND")) + message(FATAL_ERROR "vcvars32.bat not found") + endif() + + if((${CMAKE_GENERATOR} MATCHES "Win64") OR ("${ARCHITECTURE}" MATCHES "x64")) + set(CONFIG_TARGET "VC-WIN64A") + else() + set(CONFIG_TARGET "VC-WIN32") + endif() + if(("${CMAKE_BUILD_TYPE}" STREQUAL "Release") OR ("${CMAKE_CONFIGURATION_TYPE}" STREQUAL "Release")) + else() + set(CONFIG_TARGET "debug-${CONFIG_TARGET}") + endif() + + file(WRITE "${SRC_DIR}/build_cmake.bat" + "cd /d %~dp0\n" + "setlocal\n" + ) + file(TO_NATIVE_PATH ${PERL} PERL_N) + file(TO_NATIVE_PATH ${INSTALL_DIR} INSTALL_DIR_N) + file(TO_NATIVE_PATH ${VCVARS32} VCVARS32_N) + string(REGEX REPLACE [[^(.*)\\.*$]] [[\1]] PERL_N_PATH ${PERL_N}) + file(APPEND "${SRC_DIR}/build_cmake.bat" + "set PATH=${PERL_N_PATH};c:\\windows;c:\\windows\\system32\n" + ) + if(${CMAKE_GENERATOR} MATCHES "Visual Studio 8 2005") + ## Visual Studio 2005 特別処理 + # include,libパスの設定 + file(APPEND "${SRC_DIR}/build_cmake.bat" + "set SDK=C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\n" + "set INCLUDE=%SDK%\\Include;%INCLUDE%\n" + "set LIB=%SDK%\\lib;%LIB%\n" + ) + endif() + if((${CMAKE_GENERATOR} MATCHES "Visual Studio 16 2019") OR ${CMAKE_GENERATOR} MATCHES "Visual Studio 17 2022") + if("${ARCHITECTURE}" MATCHES "x64") + file(APPEND "${SRC_DIR}/build_cmake.bat" + "call \"${VCVARS32_N}\" amd64\n" + ) + else() + file(APPEND "${SRC_DIR}/build_cmake.bat" + "call \"${VCVARS32_N}\" x86\n" + ) + endif() + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 15 2017 Win64") + file(APPEND "${SRC_DIR}/build_cmake.bat" + "call \"${VCVARS32_N}\" amd64\n" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio 15 2017") + file(APPEND "${SRC_DIR}/build_cmake.bat" + "call \"${VCVARS32_N}\" x86\n" + ) + elseif(${CMAKE_GENERATOR} MATCHES "Visual Studio") + file(APPEND "${SRC_DIR}/build_cmake.bat" + "call \"${VCVARS32_N}\"\n" + ) + endif() + file(APPEND "${SRC_DIR}/build_cmake.bat" + "perl Configure no-asm no-async no-shared no-capieng no-dso no-engine ${CONFIG_TARGET} -D_WIN32_WINNT=0x0501 --prefix=${INSTALL_DIR_N} --openssldir=${INSTALL_DIR_N}\\SSL\n" + "nmake -f makefile install\n" + ) + set(BUILD_CMAKE_BAT "${SRC_DIR}/build_cmake.bat") + file(TO_NATIVE_PATH ${BUILD_CMAKE_BAT} BUILD_CMAKE_BAT_N) + execute_process( + COMMAND cmd /c ${BUILD_CMAKE_BAT_N} + WORKING_DIRECTORY ${SRC_DIR} + RESULT_VARIABLE rv + ) + if(NOT rv STREQUAL "0") + message(FATAL_ERROR "cmake build fail ${rv}") + endif() +else() + ######################################## MinGW + execute_process( + COMMAND "uname" -s + OUTPUT_VARIABLE ov) + string(REGEX MATCH "[A-Za-z0-9]+" UNAME_S ${ov}) + if("${UNAME_S}" STREQUAL "CYGWIN") + find_program( + MAKE make.exe + HINTS c:/cygwin/usr/bin + HINTS c:/cygwin64/usr/bin + ) + elseif(("${UNAME_S}" STREQUAL "MINGW32") OR ("${UNAME_S}" STREQUAL "MINGW64") OR ("${CMAKE_COMMAND}" MATCHES "mingw")) + find_program( + MAKE make + ) + elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux") + find_program( + MAKE make + ) + else() + message(FATAL_ERROR "unsported") + endif() + set(ENV{PATH} "/usr/bin;/bin") + if(("${UNAME_S}" STREQUAL "MINGW32") OR ("${CMAKE_COMMAND}" MATCHES "mingw32")) + set(CMAKE_C_COMPILER "cc") + set(PATH "/mingw32/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/core_perl") + set(CONFIG_NAME "mingw") + elseif(("${UNAME_S}" STREQUAL "MINGW64") OR ("${CMAKE_COMMAND}" MATCHES "mingw64")) + set(CMAKE_C_COMPILER "cc") + set(PATH "/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/core_perl") + set(CONFIG_NAME "mingw64") + else() + include(${CMAKE_SOURCE_DIR}/../mingw.toolchain.cmake) + set(ENV{CC} ${CMAKE_C_COMPILER}) + set(ENV{AR} "i686-w64-mingw32-ar") + set(ENV{RANLIB} "i686-w64-mingw32-ranlib") + set(ENV{RC} "i686-w64-mingw32-windres") + set(PATH "/usr/bin:/bin") + set(CONFIG_NAME "mingw") + endif() + execute_process( + COMMAND ${CMAKE_COMMAND} -E env "PATH=/usr/bin:/bin" ${PERL} ./Configure no-asm no-async no-shared no-capieng -no-dso -no-engine ${CONFIG_NAME} -D_WIN32_WINNT=0x0501 --prefix=${INSTALL_DIR} --openssldir=${INSTALL_DIR}/SSL + WORKING_DIRECTORY ${SRC_DIR} + RESULT_VARIABLE rv + ) + if(NOT rv STREQUAL "0") + message(FATAL_ERROR "cmake configure fail ${rv}") + endif() + set(MAKE_OPTION "-j") + execute_process( + COMMAND ${CMAKE_COMMAND} -E env "PATH=${PATH}" ${MAKE} CC=${CMAKE_C_COMPILER} ${MAKE_OPTION} + WORKING_DIRECTORY ${SRC_DIR} + RESULT_VARIABLE rv + ) + if(NOT rv STREQUAL "0") + message(FATAL_ERROR "cmake build fail ${rv}") + endif() + execute_process( + COMMAND ${CMAKE_COMMAND} -E env "PATH=${PATH}" ${MAKE} install ${MAKE_OPTION} + WORKING_DIRECTORY ${SRC_DIR} + RESULT_VARIABLE rv + ) + if(NOT rv STREQUAL "0") + message(FATAL_ERROR "cmake install fail ${rv}") + endif() +endif() Copied: trunk/libs/lib_openssl3.cmake (from rev 9681, branches/openssl_3_0_1/libs/lib_openssl3.cmake) =================================================================== --- trunk/libs/lib_openssl3.cmake (rev 0) +++ trunk/libs/lib_openssl3.cmake 2022-01-16 15:35:24 UTC (rev 9693) @@ -0,0 +1,33 @@ + +include(${CMAKE_CURRENT_LIST_DIR}/script_support.cmake) + +set(OPENSSL3_ROOT ${CMAKE_CURRENT_LIST_DIR}/openssl3_${TOOLSET}) +if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(OPENSSL3_ROOT "${OPENSSL3_ROOT}_x64") +endif() + +if(MINGW) + set(OPENSSL3_INCLUDE_DIRS + ${OPENSSL3_ROOT}/include + ) + + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(OPENSSL3_LIB + ${OPENSSL3_ROOT}/lib64/libcrypto.a + ) + else() + set(OPENSSL3_LIB + ${OPENSSL3_ROOT}/lib/libcrypto.a + ) + endif() +else() + set(OPENSSL3_INCLUDE_DIRS + "$<$<CONFIG:Debug>:${OPENSSL3_ROOT}_debug/include>" + "$<$<CONFIG:Release>:${OPENSSL3_ROOT}/include>" + ) + + set(OPENSSL3_LIB + debug ${OPENSSL3_ROOT}_debug/lib/libcrypto.lib + optimized ${OPENSSL3_ROOT}/lib/libcrypto.lib + ) +endif() Modified: trunk/ttssh2/ttxssh/CMakeLists.txt =================================================================== --- trunk/ttssh2/ttxssh/CMakeLists.txt 2022-01-16 15:16:19 UTC (rev 9692) +++ trunk/ttssh2/ttxssh/CMakeLists.txt 2022-01-16 15:35:24 UTC (rev 9693) @@ -1,6 +1,7 @@ set(PACKAGE_NAME "ttxssh") option(TTXSSH_LIBRESSL "User LibreSSL" on) +option(TTXSSH_OPENSSL3 "Use OpenSSL3" off) project(${PACKAGE_NAME}) @@ -7,6 +8,8 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/../../libs/lib_zlib.cmake) if(TTXSSH_LIBRESSL) include(${CMAKE_CURRENT_SOURCE_DIR}/../../libs/lib_libressl.cmake) +elseif(TTXSSH_OPENSSL3) + include(${CMAKE_CURRENT_SOURCE_DIR}/../../libs/lib_openssl3.cmake) else() include(${CMAKE_CURRENT_SOURCE_DIR}/../../libs/lib_openssl.cmake) endif() @@ -163,6 +166,7 @@ ../putty ${ZLIB_INCLUDE_DIRS} ) + if(TTXSSH_LIBRESSL) target_include_directories( ${PACKAGE_NAME} @@ -169,6 +173,12 @@ PRIVATE ${LIBRESSL_INCLUDE_DIRS} ) +elseif(TTXSSH_OPENSSL3) + target_include_directories( + ${PACKAGE_NAME} + PRIVATE + ${OPENSSL3_INCLUDE_DIRS} + ) else() target_include_directories( ${PACKAGE_NAME} @@ -216,6 +226,13 @@ ${LIBRESSL_LIB} bcrypt.lib ) +elseif(TTXSSH_OPENSSL3) + target_link_libraries( + ${PACKAGE_NAME} + PRIVATE + ${OPENSSL3_LIB} + bcrypt.lib + ) else() target_link_libraries( ${PACKAGE_NAME} Modified: trunk/ttssh2/ttxssh/cipher.c =================================================================== --- trunk/ttssh2/ttxssh/cipher.c 2022-01-16 15:16:19 UTC (rev 9692) +++ trunk/ttssh2/ttxssh/cipher.c 2022-01-16 15:35:24 UTC (rev 9693) @@ -46,9 +46,9 @@ {SSH2_CIPHER_AES192_CBC, "aes192-cbc", 16, 24, 0, 0, 0, EVP_aes_192_cbc}, // RFC4253 {SSH2_CIPHER_AES256_CBC, "aes256-cbc", 16, 32, 0, 0, 0, EVP_aes_256_cbc}, // RFC4253 {SSH2_CIPHER_BLOWFISH_CBC, "blowfish-cbc", 8, 16, 0, 0, 0, EVP_bf_cbc}, // RFC4253 - {SSH2_CIPHER_AES128_CTR, "aes128-ctr", 16, 16, 0, 0, 0, evp_aes_128_ctr}, // RFC4344 - {SSH2_CIPHER_AES192_CTR, "aes192-ctr", 16, 24, 0, 0, 0, evp_aes_128_ctr}, // RFC4344 - {SSH2_CIPHER_AES256_CTR, "aes256-ctr", 16, 32, 0, 0, 0, evp_aes_128_ctr}, // RFC4344 + {SSH2_CIPHER_AES128_CTR, "aes128-ctr", 16, 16, 0, 0, 0, EVP_aes_128_ctr}, // RFC4344 + {SSH2_CIPHER_AES192_CTR, "aes192-ctr", 16, 24, 0, 0, 0, EVP_aes_192_ctr}, // RFC4344 + {SSH2_CIPHER_AES256_CTR, "aes256-ctr", 16, 32, 0, 0, 0, EVP_aes_256_ctr}, // RFC4344 {SSH2_CIPHER_ARCFOUR, "arcfour", 8, 16, 0, 0, 0, EVP_rc4}, // RFC4253 {SSH2_CIPHER_ARCFOUR128, "arcfour128", 8, 16, 1536, 0, 0, EVP_rc4}, // RFC4345 {SSH2_CIPHER_ARCFOUR256, "arcfour256", 8, 32, 1536, 0, 0, EVP_rc4}, // RFC4345 @@ -59,9 +59,9 @@ {SSH2_CIPHER_CAMELLIA128_CBC, "camellia128-cbc", 16, 16, 0, 0, 0, EVP_camellia_128_cbc}, // draft-kanno-secsh-camellia-02 {SSH2_CIPHER_CAMELLIA192_CBC, "camellia192-cbc", 16, 24, 0, 0, 0, EVP_camellia_192_cbc}, // draft-kanno-secsh-camellia-02 {SSH2_CIPHER_CAMELLIA256_CBC, "camellia256-cbc", 16, 32, 0, 0, 0, EVP_camellia_256_cbc}, // draft-kanno-secsh-camellia-02 - {SSH2_CIPHER_CAMELLIA128_CTR, "camellia128-ctr", 16, 16, 0, 0, 0, evp_camellia_128_ctr}, // draft-kanno-secsh-camellia-02 - {SSH2_CIPHER_CAMELLIA192_CTR, "camellia192-ctr", 16, 24, 0, 0, 0, evp_camellia_128_ctr}, // draft-kanno-secsh-camellia-02 - {SSH2_CIPHER_CAMELLIA256_CTR, "camellia256-ctr", 16, 32, 0, 0, 0, evp_camellia_128_ctr}, // draft-kanno-secsh-camellia-02 + {SSH2_CIPHER_CAMELLIA128_CTR, "camellia128-ctr", 16, 16, 0, 0, 0, EVP_camellia_128_ctr}, // draft-kanno-secsh-camellia-02 + {SSH2_CIPHER_CAMELLIA192_CTR, "camellia192-ctr", 16, 24, 0, 0, 0, EVP_camellia_192_ctr}, // draft-kanno-secsh-camellia-02 + {SSH2_CIPHER_CAMELLIA256_CTR, "camellia256-ctr", 16, 32, 0, 0, 0, EVP_camellia_256_ctr}, // draft-kanno-secsh-camellia-02 #ifdef WITH_CAMELLIA_PRIVATE {SSH2_CIPHER_CAMELLIA128_CBC, "camel****@opens*****", 16, 16, 0, 0, 0, EVP_camellia_128_cbc}, {SSH2_CIPHER_CAMELLIA192_CBC, "camel****@opens*****", 16, 24, 0, 0, 0, EVP_camellia_192_cbc}, @@ -328,19 +328,30 @@ SSH2_CIPHER_AES128_CTR, SSH2_CIPHER_CAMELLIA128_CBC, SSH2_CIPHER_AES128_CBC, +#if defined(LIBRESSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x30000000UL SSH2_CIPHER_3DES_CTR, +#endif SSH2_CIPHER_3DES_CBC, +#if defined(LIBRESSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x30000000UL SSH2_CIPHER_BLOWFISH_CTR, SSH2_CIPHER_BLOWFISH_CBC, SSH2_CIPHER_CAST128_CTR, SSH2_CIPHER_CAST128_CBC, +#endif SSH_CIPHER_3DES, SSH_CIPHER_NONE, +#if defined(LIBRESSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x30000000UL SSH2_CIPHER_ARCFOUR256, SSH2_CIPHER_ARCFOUR128, SSH2_CIPHER_ARCFOUR, +#endif SSH_CIPHER_BLOWFISH, SSH_CIPHER_DES, +#if !defined(LIBRESSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x30000000UL + 0, 0, 0, // Dummy for SSH2_CIPHER_3DES_CTR, SSH2_CIPHER_BLOWFISH_CTR, SSH2_CIPHER_BLOWFISH_CBC, + 0, 0, // Dummy for SSH2_CIPHER_CAST128_CTR, SSH2_CIPHER_CAST128_CBC + 0, 0, 0, // Dummy for SSH2_CIPHER_ARCFOUR256, SSH2_CIPHER_ARCFOUR128, SSH2_CIPHER_ARCFOUR +#endif 0, 0, 0 // Dummy for SSH_CIPHER_IDEA, SSH_CIPHER_TSS, SSH_CIPHER_RC4 }; Modified: trunk/ttssh2/ttxssh/crypt.c =================================================================== --- trunk/ttssh2/ttxssh/crypt.c 2022-01-16 15:16:19 UTC (rev 9692) +++ trunk/ttssh2/ttxssh/crypt.c 2022-01-16 15:35:24 UTC (rev 9693) @@ -606,10 +606,13 @@ | (1 << SSH2_CIPHER_AES128_CBC) | (1 << SSH2_CIPHER_AES192_CBC) | (1 << SSH2_CIPHER_AES256_CBC) +#if defined(LIBRESSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x30000000UL | (1 << SSH2_CIPHER_BLOWFISH_CBC) +#endif | (1 << SSH2_CIPHER_AES128_CTR) | (1 << SSH2_CIPHER_AES192_CTR) | (1 << SSH2_CIPHER_AES256_CTR) +#if defined(LIBRESSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x30000000UL | (1 << SSH2_CIPHER_ARCFOUR) | (1 << SSH2_CIPHER_ARCFOUR128) | (1 << SSH2_CIPHER_ARCFOUR256) @@ -617,6 +620,7 @@ | (1 << SSH2_CIPHER_3DES_CTR) | (1 << SSH2_CIPHER_BLOWFISH_CTR) | (1 << SSH2_CIPHER_CAST128_CTR) +#endif | (1 << SSH2_CIPHER_CAMELLIA128_CBC) | (1 << SSH2_CIPHER_CAMELLIA192_CBC) | (1 << SSH2_CIPHER_CAMELLIA256_CBC) Modified: trunk/ttssh2/ttxssh/mac.c =================================================================== --- trunk/ttssh2/ttxssh/mac.c 2022-01-16 15:16:19 UTC (rev 9692) +++ trunk/ttssh2/ttxssh/mac.c 2022-01-16 15:35:24 UTC (rev 9693) @@ -129,8 +129,10 @@ HMAC_SHA2_512, HMAC_SHA2_256, HMAC_SHA1, +#if defined(LIBRESSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x30000000UL HMAC_RIPEMD160_EtM, HMAC_RIPEMD160, +#endif HMAC_MD5_EtM, HMAC_MD5, HMAC_NONE, @@ -137,7 +139,10 @@ HMAC_SHA1_96_EtM, HMAC_MD5_96_EtM, HMAC_SHA1_96, - HMAC_MD5_96, + HMAC_MD5_96, +#if !defined(LIBRESSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x30000000UL + 0, 0, // Dummy for HMAC_RIPEMD160_EtM, HMAC_RIPEMD160 +#endif 0, // Dummy for HMAC_SHA2_512_96, 0, // Dummy for HMAC_SHA2_256_96, }; Modified: trunk/ttssh2/ttxssh/ssh.c =================================================================== --- trunk/ttssh2/ttxssh/ssh.c 2022-01-16 15:16:19 UTC (rev 9692) +++ trunk/ttssh2/ttxssh/ssh.c 2022-01-16 15:35:24 UTC (rev 9693) @@ -6413,10 +6413,13 @@ | 1 << SSH2_CIPHER_AES128_CBC | 1 << SSH2_CIPHER_AES192_CBC | 1 << SSH2_CIPHER_AES256_CBC +#if defined(LIBRESSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x30000000UL | 1 << SSH2_CIPHER_BLOWFISH_CBC +#endif | 1 << SSH2_CIPHER_AES128_CTR | 1 << SSH2_CIPHER_AES192_CTR | 1 << SSH2_CIPHER_AES256_CTR +#if defined(LIBRESSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x30000000UL | 1 << SSH2_CIPHER_ARCFOUR | 1 << SSH2_CIPHER_ARCFOUR128 | 1 << SSH2_CIPHER_ARCFOUR256 @@ -6424,6 +6427,7 @@ | 1 << SSH2_CIPHER_3DES_CTR | 1 << SSH2_CIPHER_BLOWFISH_CTR | 1 << SSH2_CIPHER_CAST128_CTR +#endif | 1 << SSH2_CIPHER_CAMELLIA128_CBC | 1 << SSH2_CIPHER_CAMELLIA192_CBC | 1 << SSH2_CIPHER_CAMELLIA256_CBC