\r
// FTPS対応\r
\r
-typedef void (__cdecl* _SSL_load_error_strings)();\r
-typedef int (__cdecl* _SSL_library_init)();\r
-typedef SSL_METHOD* (__cdecl* _SSLv23_method)();\r
+// OpenSSL 1.1.0対応\r
+//typedef void (__cdecl* _SSL_load_error_strings)();\r
+//typedef int (__cdecl* _SSL_library_init)();\r
+typedef int (__cdecl* _OPENSSL_init_ssl)(uint64_t, OPENSSL_INIT_SETTINGS*);\r
+// OpenSSL 1.1.0対応\r
+//typedef SSL_METHOD* (__cdecl* _SSLv23_method)();\r
+typedef SSL_METHOD* (__cdecl* _TLS_method)();\r
typedef SSL* (__cdecl* _SSL_new)(SSL_CTX*);\r
typedef void (__cdecl* _SSL_free)(SSL*);\r
typedef long (__cdecl* _SSL_ctrl)(SSL*, int, long, void*);\r
typedef unsigned char* (__cdecl* _SHA384)(const unsigned char*, size_t, unsigned char*);\r
typedef unsigned char* (__cdecl* _SHA512)(const unsigned char*, size_t, unsigned char*);\r
\r
-_SSL_load_error_strings p_SSL_load_error_strings;\r
-_SSL_library_init p_SSL_library_init;\r
-_SSLv23_method p_SSLv23_method;\r
+// OpenSSL 1.1.0対応\r
+//_SSL_load_error_strings p_SSL_load_error_strings;\r
+//_SSL_library_init p_SSL_library_init;\r
+_OPENSSL_init_ssl p_OPENSSL_init_ssl;\r
+// OpenSSL 1.1.0対応\r
+//_SSLv23_method p_SSLv23_method;\r
+_TLS_method p_TLS_method;\r
_SSL_new p_SSL_new;\r
_SSL_free p_SSL_free;\r
_SSL_ctrl p_SSL_ctrl;\r
#ifdef ENABLE_PROCESS_PROTECTION\r
// 同梱するOpenSSLのバージョンに合わせてSHA1ハッシュ値を変更すること\r
#if defined(_M_IX86)\r
- // ssleay32.dll 1.0.2h\r
- RegisterTrustedModuleSHA1Hash("\x7E\x40\xBE\x64\xDC\x67\xAC\x54\x5E\x27\x62\x02\x80\x41\x08\x0A\xA7\xB4\xD9\x3C");\r
- // libeay32.dll 1.0.2h\r
- RegisterTrustedModuleSHA1Hash("\xE5\x35\x05\x1B\xEC\x5A\xF1\xC9\xE5\xAA\x3D\x85\x3B\xCE\xBB\x9A\xCA\xC8\x6A\x17");\r
+ // ssleay32.dll 1.1.0h\r
+ RegisterTrustedModuleSHA1Hash("\x36\xFA\x98\xA1\xBE\x62\xB2\x07\xF0\xB8\x20\xE0\xB2\x86\x41\x68\xE2\x8D\x8B\x0F");\r
+ // libeay32.dll 1.1.0h\r
+ RegisterTrustedModuleSHA1Hash("\x2C\xD5\x65\x74\x2A\x8D\xE3\x22\x8F\xFE\xA9\x6D\xB5\x9D\x34\xFB\xBB\x23\x73\xFD");\r
#elif defined(_M_AMD64)\r
- // ssleay32.dll 1.0.2h\r
- RegisterTrustedModuleSHA1Hash("\x32\x2E\x8A\x61\xCF\x64\xC0\xB4\xFF\x98\x93\x88\x8D\x16\xC8\x7B\xA3\x4D\x90\x78");\r
- // libeay32.dll 1.0.2h\r
- RegisterTrustedModuleSHA1Hash("\x27\x5F\x56\x01\xDC\xE5\xBA\xF8\x3E\x0E\x32\xB6\xCF\x6C\xF4\x1A\x08\x1E\x49\x16");\r
+ // ssleay32.dll 1.1.0h\r
+ RegisterTrustedModuleSHA1Hash("\x1A\xA5\x43\xC8\x19\x85\x16\xC0\x19\x04\x8D\xD2\xE0\xF3\xF8\x73\x4D\x9E\xA0\x2F");\r
+ // libeay32.dll 1.1.0h\r
+ RegisterTrustedModuleSHA1Hash("\xC4\x4E\xD4\x5B\xEF\xA6\xC0\x9F\x6A\x45\xEC\x26\xDE\xEC\x3A\xC0\x24\x00\xF1\x66");\r
#endif\r
#endif\r
g_hOpenSSL = LoadLibrary("ssleay32.dll");\r
// if(!g_hOpenSSL)\r
// g_hOpenSSL = LoadLibrary("libssl32.dll");\r
if(!g_hOpenSSL\r
- || !(p_SSL_load_error_strings = (_SSL_load_error_strings)GetProcAddress(g_hOpenSSL, "SSL_load_error_strings"))\r
- || !(p_SSL_library_init = (_SSL_library_init)GetProcAddress(g_hOpenSSL, "SSL_library_init"))\r
- || !(p_SSLv23_method = (_SSLv23_method)GetProcAddress(g_hOpenSSL, "SSLv23_method"))\r
+ // OpenSSL 1.1.0対応\r
+// || !(p_SSL_load_error_strings = (_SSL_load_error_strings)GetProcAddress(g_hOpenSSL, "SSL_load_error_strings"))\r
+// || !(p_SSL_library_init = (_SSL_library_init)GetProcAddress(g_hOpenSSL, "SSL_library_init"))\r
+ || !(p_OPENSSL_init_ssl = (_OPENSSL_init_ssl)GetProcAddress(g_hOpenSSL, "OPENSSL_init_ssl"))\r
+ // OpenSSL 1.1.0対応\r
+// || !(p_SSLv23_method = (_SSLv23_method)GetProcAddress(g_hOpenSSL, "SSLv23_method"))\r
+ || !(p_TLS_method = (_TLS_method)GetProcAddress(g_hOpenSSL, "TLS_method"))\r
|| !(p_SSL_new = (_SSL_new)GetProcAddress(g_hOpenSSL, "SSL_new"))\r
|| !(p_SSL_free = (_SSL_free)GetProcAddress(g_hOpenSSL, "SSL_free"))\r
|| !(p_SSL_ctrl = (_SSL_ctrl)GetProcAddress(g_hOpenSSL, "SSL_ctrl"))\r
return FALSE;\r
}\r
InitializeCriticalSection(&g_OpenSSLLock);\r
- p_SSL_load_error_strings();\r
- p_SSL_library_init();\r
+ // OpenSSL 1.1.0対応\r
+// p_SSL_load_error_strings();\r
+ p_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_CRYPTO_STRINGS | OPENSSL_INIT_LOAD_SSL_STRINGS, NULL);\r
+// p_SSL_library_init();\r
+ p_OPENSSL_init_ssl(0, NULL);\r
SetSSLTimeoutCallback(60000, DefaultSSLTimeoutCallback);\r
SetSSLConfirmCallback(DefaultSSLConfirmCallback);\r
g_bOpenSSLLoaded = TRUE;\r
if(g_pOpenSSLCTX)\r
p_SSL_CTX_free(g_pOpenSSLCTX);\r
g_pOpenSSLCTX = NULL;\r
- FreeLibrary(g_hOpenSSL);\r
- g_hOpenSSL = NULL;\r
+ // OpenSSL 1.1.0対応\r
+// FreeLibrary(g_hOpenSSL);\r
+// g_hOpenSSL = NULL;\r
+// FreeLibrary(g_hOpenSSLCommon);\r
+// g_hOpenSSLCommon = NULL;\r
FreeLibrary(g_hOpenSSLCommon);\r
g_hOpenSSLCommon = NULL;\r
+ FreeLibrary(g_hOpenSSL);\r
+ g_hOpenSSL = NULL;\r
LeaveCriticalSection(&g_OpenSSLLock);\r
DeleteCriticalSection(&g_OpenSSLLock);\r
g_bOpenSSLLoaded = FALSE;\r
EnterCriticalSection(&g_OpenSSLLock);\r
if(!g_pOpenSSLCTX)\r
{\r
- g_pOpenSSLCTX = p_SSL_CTX_new(p_SSLv23_method());\r
+ // OpenSSL 1.1.0対応\r
+// g_pOpenSSLCTX = p_SSL_CTX_new(p_SSLv23_method());\r
+ g_pOpenSSLCTX = p_SSL_CTX_new(p_TLS_method());\r
p_SSL_CTX_ctrl(g_pOpenSSLCTX, SSL_CTRL_MODE, SSL_MODE_ENABLE_PARTIAL_WRITE | SSL_MODE_AUTO_RETRY, NULL);\r
}\r
if(g_pOpenSSLCTX)\r
EnterCriticalSection(&g_OpenSSLLock);\r
if(!g_pOpenSSLCTX)\r
{\r
- g_pOpenSSLCTX = p_SSL_CTX_new(p_SSLv23_method());\r
+ // OpenSSL 1.1.0対応\r
+// g_pOpenSSLCTX = p_SSL_CTX_new(p_SSLv23_method());\r
+ g_pOpenSSLCTX = p_SSL_CTX_new(p_TLS_method());\r
p_SSL_CTX_ctrl(g_pOpenSSLCTX, SSL_CTRL_MODE, SSL_MODE_ENABLE_PARTIAL_WRITE | SSL_MODE_AUTO_RETRY, NULL);\r
}\r
if(g_pOpenSSLCTX)\r
{\r
if(bStrengthen)\r
{\r
- p_SSL_ctrl(*ppSSL, SSL_CTRL_OPTIONS, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3, NULL);\r
+ // OpenSSL 1.1.0対応\r
+// p_SSL_ctrl(*ppSSL, SSL_CTRL_OPTIONS, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3, NULL);\r
p_SSL_set_cipher_list(*ppSSL, "HIGH");\r
}\r
}\r