[ttssh2-commit] [9693] OpenSSL 3 のビルドに対応

Zurück zum Archiv-Index
scmno****@osdn***** scmno****@osdn*****
2022年 1月 17日 (月) 00:35:24 JST


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


ttssh2-commit メーリングリストの案内
Zurück zum Archiv-Index