STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
- CONTROL "\88Ã\8d\86\89»\82È\82µ\82Å\90Ú\91±\82ð\8b\96\89Â",HSET_NO_ENCRYPTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,148,10\r
- CONTROL "FTPS (Explicit)\82Å\90Ú\91±",HSET_FTPES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,21,148,10\r
- CONTROL "FTPS (Implicit)\82Å\90Ú\91±",HSET_FTPIS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,35,148,10\r
- CONTROL "SFTP\82Å\90Ú\91±",HSET_SFTP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,49,148,10\r
+ CONTROL "\88Ã\8d\86\89»\82È\82µ\82Å\90Ú\91±\82ð\8b\96\89Â(&A)",HSET_NO_ENCRYPTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,148,10\r
+ CONTROL "FTPS (Explicit)\82Å\90Ú\91±(&E)",HSET_FTPES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,21,148,10\r
+ CONTROL "FTPS (Implicit)\82Å\90Ú\91±(&I)",HSET_FTPIS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,35,148,10\r
+ CONTROL "SFTP\82Å\90Ú\91±(&S)",HSET_SFTP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,49,148,10\r
LTEXT "\94é\96§\8c®\82Ì\83e\83L\83X\83g",-1,7,63,64,8\r
PUSHBUTTON "...",PKEY_FILE_BR,72,63,13,12\r
EDITTEXT HSET_PRIVATE_KEY,7,79,193,44,ES_MULTILINE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL | WS_HSCROLL\r
+ CONTROL "\8eã\82¢\88Ã\8d\86\89»\95û\8e®\82ð\8eg\97p\82µ\82È\82¢(&W)",HSET_NO_WEAK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,127,148,10\r
END\r
\r
hset_adv3_dlg DIALOG 0, 0, 207, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
- LTEXT "\8dÅ\91å\93¯\8e\9e\90Ú\91±\90\94",-1,7,10,64,8\r
+ LTEXT "\8dÅ\91å\93¯\8e\9e\90Ú\91±\90\94(&M)",-1,7,10,64,8\r
EDITTEXT HSET_THREAD_COUNT,72,8,17,12,ES_AUTOHSCROLL | ES_NUMBER\r
CONTROL "Spin1",HSET_THREAD_COUNT_SPN,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,89,7,9,14\r
LTEXT "(1\81`4)",-1,102,10,31,8\r
- CONTROL "\83\81\83C\83\93\83E\83B\83\93\83h\83E\82Ì\83\\83P\83b\83g\82ð\8dÄ\97\98\97p",HSET_REUSE_SOCKET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,27,131,10\r
- LTEXT "\90Ú\91±\88Û\8e\9d\97p\83R\83}\83\93\83h\8eü\8aú",-1,7,44,84,8\r
+ CONTROL "\83\81\83C\83\93\83E\83B\83\93\83h\83E\82Ì\83\\83P\83b\83g\82ð\8dÄ\97\98\97p(&S)",HSET_REUSE_SOCKET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,27,131,10\r
+ LTEXT "\90Ú\91±\88Û\8e\9d\97p\83R\83}\83\93\83h\8eü\8aú(&K)",-1,7,44,84,8\r
EDITTEXT HSET_NOOP_INTERVAL,92,42,17,12,ES_AUTOHSCROLL | ES_NUMBER\r
CONTROL "Spin1",HSET_NOOP_INTERVAL_SPN,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,109,41,9,14\r
LTEXT "(0\81`300\95b; 0=\96³\8cø)",-1,122,44,76,8\r
- LTEXT "\93]\91\97\83G\83\89\81[\8e\9e\82Ì\8f\88\97\9d",-1,7,61,81,8\r
+ LTEXT "\93]\91\97\83G\83\89\81[\8e\9e\82Ì\8f\88\97\9d(&E)",-1,7,61,81,8\r
COMBOBOX HSET_ERROR_MODE,7,71,71,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
- CONTROL "\93]\91\97\83G\83\89\81[\8cã\82É\8dÄ\90Ú\91±",HSET_ERROR_RECONNECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,84,71,102,10\r
+ CONTROL "\93]\91\97\83G\83\89\81[\8cã\82É\8dÄ\90Ú\91±(&R)",HSET_ERROR_RECONNECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,84,71,102,10\r
END\r
\r
savecrypt_dlg DIALOG 0, 0, 146, 62\r
#define UPDATES_AUTO_APPLY 1223\r
#define UPDATES_INTERVAL 1224\r
#define UPDATES_INTERVAL_SPN 1225\r
+#define HSET_NO_WEAK 1226\r
#define MENU_END 40001\r
#define MENU_EXIT 40001\r
#define MENU_CONNECT 40003\r
#ifndef APSTUDIO_READONLY_SYMBOLS\r
#define _APS_NEXT_RESOURCE_VALUE 197\r
#define _APS_NEXT_COMMAND_VALUE 40182\r
-#define _APS_NEXT_CONTROL_VALUE 1226\r
+#define _APS_NEXT_CONTROL_VALUE 1227\r
#define _APS_NEXT_SYMED_VALUE 101\r
#endif\r
#endif\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
- CONTROL "Allow to connect without encryption",HSET_NO_ENCRYPTION,\r
+ CONTROL "&Allow to connect without encryption",HSET_NO_ENCRYPTION,\r
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,148,10\r
- CONTROL "Connect with FTPS (Explicit)",HSET_FTPES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,21,148,10\r
- CONTROL "Connect with FTPS (Implicit)",HSET_FTPIS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,35,148,10\r
- CONTROL "Connect with SFTP",HSET_SFTP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,49,148,10\r
+ CONTROL "Connect with FTPS (&Explicit)",HSET_FTPES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,21,148,10\r
+ CONTROL "Connect with FTPS (&Implicit)",HSET_FTPIS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,35,148,10\r
+ CONTROL "Connect with &SFTP",HSET_SFTP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,49,148,10\r
LTEXT "Private key text",-1,7,63,64,8\r
PUSHBUTTON "...",PKEY_FILE_BR,72,63,13,12\r
EDITTEXT HSET_PRIVATE_KEY,7,79,193,44,ES_MULTILINE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL | WS_HSCROLL\r
+ CONTROL "Do not use &weak encryption methods",HSET_NO_WEAK,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,127,148,10\r
END\r
\r
hset_adv3_dlg DIALOG 0, 0, 207, 155\r
STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
FONT 9, "MS Shell Dlg"\r
BEGIN\r
- LTEXT "Max Connections",-1,7,10,64,8\r
+ LTEXT "&Max Connections",-1,7,10,64,8\r
EDITTEXT HSET_THREAD_COUNT,72,8,17,12,ES_AUTOHSCROLL | ES_NUMBER\r
CONTROL "Spin1",HSET_THREAD_COUNT_SPN,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,89,7,9,14\r
LTEXT "(1 to 4 threads)",-1,102,10,53,8\r
- CONTROL "Reuse socket of the main window",HSET_REUSE_SOCKET,\r
+ CONTROL "Reuse &socket of the main window",HSET_REUSE_SOCKET,\r
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,27,131,10\r
- LTEXT "Command for Keep Alive",-1,7,44,84,8\r
+ LTEXT "Command for &Keep Alive",-1,7,44,84,8\r
EDITTEXT HSET_NOOP_INTERVAL,92,42,17,12,ES_AUTOHSCROLL | ES_NUMBER\r
CONTROL "Spin1",HSET_NOOP_INTERVAL_SPN,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,109,41,9,14\r
LTEXT "(0 to 300sec; 0=Never)",-1,122,44,76,8\r
- LTEXT "When transfer errors",-1,7,61,81,8\r
+ LTEXT "When transfer &errors",-1,7,61,81,8\r
COMBOBOX HSET_ERROR_MODE,7,71,71,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
- CONTROL "Reconnect after errors",HSET_ERROR_RECONNECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,84,71,102,10\r
+ CONTROL "&Reconnect after errors",HSET_ERROR_RECONNECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,84,71,102,10\r
END\r
\r
savecrypt_dlg DIALOG 0, 0, 146, 62\r
#define UPDATES_AUTO_APPLY 1223\r
#define UPDATES_INTERVAL 1224\r
#define UPDATES_INTERVAL_SPN 1225\r
+#define HSET_NO_WEAK 1226\r
#define MENU_END 40001\r
#define MENU_EXIT 40001\r
#define MENU_CONNECT 40003\r
#ifndef APSTUDIO_READONLY_SYMBOLS\r
#define _APS_NEXT_RESOURCE_VALUE 197\r
#define _APS_NEXT_COMMAND_VALUE 40182\r
-#define _APS_NEXT_CONTROL_VALUE 1226\r
+#define _APS_NEXT_CONTROL_VALUE 1227\r
#define _APS_NEXT_SYMED_VALUE 101\r
#endif\r
#endif\r
int UseFTPIS; /* FTPISで接続する (YES/NO) */\r
int UseSFTP; /* SFTPで接続する (YES/NO) */\r
char PrivateKey[PRIVATE_KEY_LEN+1]; /* テキスト形式の秘密鍵 */\r
+ int NoWeakEncryption; /* 弱い暗号を拒否 (YES/NO) */\r
// 同時接続対応\r
int MaxThreadCount; /* 同時接続数 */\r
int ReuseCmdSkt; /* メインウィンドウのソケットを再利用する (YES/NO) */\r
int UseFTPIS; /* FTPISで接続する (YES/NO) */\r
int UseSFTP; /* SFTPで接続する (YES/NO) */\r
char PrivateKey[PRIVATE_KEY_LEN+1]; /* テキスト形式の秘密鍵 */\r
+ int NoWeakEncryption; /* 弱い暗号を拒否 (YES/NO) */\r
// 同時接続対応\r
int MaxThreadCount; /* 同時接続数 */\r
int ReuseCmdSkt; /* メインウィンドウのソケットを再利用する (YES/NO) */\r
// ;\r
if(CryptMode == CRYPT_FTPIS)\r
{\r
- if(AttachSSL(ContSock, INVALID_SOCKET, CancelCheckWork))\r
+ if(AttachSSL(ContSock, INVALID_SOCKET, CancelCheckWork, HostData->NoWeakEncryption))\r
{\r
while((Sts = ReadReplyMessage(ContSock, Buf, 1024, CancelCheckWork, TmpBuf) / 100) == FTP_PRELIM)\r
;\r
{\r
if(IsOpenSSLLoaded() && ((Sts = command(ContSock, Reply, CancelCheckWork, "AUTH TLS")) == 234 || (Sts = command(ContSock, Reply, CancelCheckWork, "AUTH SSL")) == 234))\r
{\r
- if(AttachSSL(ContSock, INVALID_SOCKET, CancelCheckWork))\r
+ if(AttachSSL(ContSock, INVALID_SOCKET, CancelCheckWork, HostData->NoWeakEncryption))\r
{\r
if((Sts = command(ContSock, Reply, CancelCheckWork, "PBSZ 0")) == 200)\r
{\r
// iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
if(IsSSLAttached(Pkt->ctrl_skt))\r
{\r
- if(AttachSSL(data_socket, Pkt->ctrl_skt, CancelCheckWork))\r
+ if(AttachSSL(data_socket, Pkt->ctrl_skt, CancelCheckWork, FALSE))\r
iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
else\r
iRetCode = 500;\r
// iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
if(IsSSLAttached(Pkt->ctrl_skt))\r
{\r
- if(AttachSSL(data_socket, Pkt->ctrl_skt, CancelCheckWork))\r
+ if(AttachSSL(data_socket, Pkt->ctrl_skt, CancelCheckWork, FALSE))\r
iRetCode = DownloadFile(Pkt, data_socket, CreateMode, CancelCheckWork);\r
else\r
iRetCode = 500;\r
// iRetCode = UploadFile(Pkt, data_socket);\r
if(IsSSLAttached(Pkt->ctrl_skt))\r
{\r
- if(AttachSSL(data_socket, Pkt->ctrl_skt, &Canceled[Pkt->ThreadCount]))\r
+ if(AttachSSL(data_socket, Pkt->ctrl_skt, &Canceled[Pkt->ThreadCount], FALSE))\r
iRetCode = UploadFile(Pkt, data_socket);\r
else\r
iRetCode = 500;\r
// iRetCode = UploadFile(Pkt, data_socket);\r
if(IsSSLAttached(Pkt->ctrl_skt))\r
{\r
- if(AttachSSL(data_socket, Pkt->ctrl_skt, &Canceled[Pkt->ThreadCount]))\r
+ if(AttachSSL(data_socket, Pkt->ctrl_skt, &Canceled[Pkt->ThreadCount], FALSE))\r
iRetCode = UploadFile(Pkt, data_socket);\r
else\r
iRetCode = 500;\r
New->UseFTPIS = Host->UseFTPIS;\r
New->UseSFTP = Host->UseSFTP;\r
strcpy(New->PrivateKey, Host->PrivateKey);\r
+ New->NoWeakEncryption = Host->NoWeakEncryption;\r
// 同時接続対応\r
New->MaxThreadCount = Host->MaxThreadCount;\r
New->ReuseCmdSkt = Host->ReuseCmdSkt;\r
Host->UseFTPIS = Hist->UseFTPIS;\r
Host->UseSFTP = Hist->UseSFTP;\r
strcpy(Host->PrivateKey, Hist->PrivateKey);\r
+ Host->NoWeakEncryption = Hist->NoWeakEncryption;\r
// 同時接続対応\r
Host->MaxThreadCount = Hist->MaxThreadCount;\r
Host->ReuseCmdSkt = Hist->ReuseCmdSkt;\r
Set->UseFTPIS = YES;\r
Set->UseSFTP = YES;\r
strcpy(Set->PrivateKey, "");\r
+ Set->NoWeakEncryption = NO;\r
// 同時接続対応\r
Set->MaxThreadCount = 1;\r
Set->ReuseCmdSkt = YES;\r
EnableWindow(GetDlgItem(hDlg, PKEY_FILE_BR), FALSE);\r
EnableWindow(GetDlgItem(hDlg, HSET_PRIVATE_KEY), FALSE);\r
}\r
+ SendDlgItemMessage(hDlg, HSET_NO_WEAK, BM_SETCHECK, TmpHost.NoWeakEncryption, 0);\r
return(TRUE);\r
\r
case WM_NOTIFY:\r
TmpHost.UseSFTP = SendDlgItemMessage(hDlg, HSET_SFTP, BM_GETCHECK, 0, 0);\r
SendDlgItemMessage(hDlg, HSET_PRIVATE_KEY, WM_GETTEXT, PRIVATE_KEY_LEN+1, (LPARAM)TmpHost.PrivateKey);\r
}\r
+ TmpHost.NoWeakEncryption = SendDlgItemMessage(hDlg, HSET_NO_WEAK, BM_GETCHECK, 0, 0);\r
Apply = YES;\r
break;\r
\r
SaveIntNum(hKey5, "SFTP", Host.UseSFTP, DefaultHost.UseSFTP);\r
EncodePassword(Host.PrivateKey, Str);\r
SaveStr(hKey5, "PKey", Str, DefaultHost.PrivateKey);\r
+ SaveIntNum(hKey5, "NoWeak", Host.NoWeakEncryption, DefaultHost.NoWeakEncryption);\r
// 同時接続対応\r
SaveIntNum(hKey5, "ThreadCount", Host.MaxThreadCount, DefaultHost.MaxThreadCount);\r
SaveIntNum(hKey5, "ReuseCmdSkt", Host.ReuseCmdSkt, DefaultHost.ReuseCmdSkt);\r
strcpy(Str, "");\r
ReadStringFromReg(hKey5, "PKey", Str, PRIVATE_KEY_LEN*4+1);\r
DecodePassword(Str, Host.PrivateKey);\r
+ ReadIntValueFromReg(hKey5, "NoWeak", &Host.NoWeakEncryption);\r
// 同時接続対応\r
ReadIntValueFromReg(hKey5, "ThreadCount", &Host.MaxThreadCount);\r
ReadIntValueFromReg(hKey5, "ReuseCmdSkt", &Host.ReuseCmdSkt);\r
typedef void (__cdecl* _SSL_load_error_strings)();\r
typedef int (__cdecl* _SSL_library_init)();\r
typedef SSL_METHOD* (__cdecl* _SSLv23_method)();\r
-typedef SSL_CTX* (__cdecl* _SSL_CTX_new)(SSL_METHOD*);\r
-typedef void (__cdecl* _SSL_CTX_free)(SSL_CTX*);\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 int (__cdecl* _SSL_shutdown)(SSL*);\r
typedef int (__cdecl* _SSL_get_fd)(SSL*);\r
typedef int (__cdecl* _SSL_set_fd)(SSL*, int);\r
typedef long (__cdecl* _SSL_get_verify_result)(const SSL*);\r
typedef SSL_SESSION* (__cdecl* _SSL_get_session)(SSL*);\r
typedef int (__cdecl* _SSL_set_session)(SSL*, SSL_SESSION*);\r
+typedef int (__cdecl* _SSL_set_cipher_list)(SSL*, const char*);\r
+typedef SSL_CTX* (__cdecl* _SSL_CTX_new)(SSL_METHOD*);\r
+typedef void (__cdecl* _SSL_CTX_free)(SSL_CTX*);\r
typedef X509_STORE* (__cdecl* _SSL_CTX_get_cert_store)(const SSL_CTX*);\r
typedef long (__cdecl* _SSL_CTX_ctrl)(SSL_CTX*, int, long, void*);\r
typedef BIO_METHOD* (__cdecl* _BIO_s_mem)();\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
-_SSL_CTX_new p_SSL_CTX_new;\r
-_SSL_CTX_free p_SSL_CTX_free;\r
_SSL_new p_SSL_new;\r
_SSL_free p_SSL_free;\r
+_SSL_ctrl p_SSL_ctrl;\r
_SSL_shutdown p_SSL_shutdown;\r
_SSL_get_fd p_SSL_get_fd;\r
_SSL_set_fd p_SSL_set_fd;\r
_SSL_get_verify_result p_SSL_get_verify_result;\r
_SSL_get_session p_SSL_get_session;\r
_SSL_set_session p_SSL_set_session;\r
+_SSL_set_cipher_list p_SSL_set_cipher_list;\r
+_SSL_CTX_new p_SSL_CTX_new;\r
+_SSL_CTX_free p_SSL_CTX_free;\r
_SSL_CTX_get_cert_store p_SSL_CTX_get_cert_store;\r
_SSL_CTX_ctrl p_SSL_CTX_ctrl;\r
_BIO_s_mem p_BIO_s_mem;\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
- || !(p_SSL_CTX_new = (_SSL_CTX_new)GetProcAddress(g_hOpenSSL, "SSL_CTX_new"))\r
- || !(p_SSL_CTX_free = (_SSL_CTX_free)GetProcAddress(g_hOpenSSL, "SSL_CTX_free"))\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
|| !(p_SSL_shutdown = (_SSL_shutdown)GetProcAddress(g_hOpenSSL, "SSL_shutdown"))\r
|| !(p_SSL_get_fd = (_SSL_get_fd)GetProcAddress(g_hOpenSSL, "SSL_get_fd"))\r
|| !(p_SSL_set_fd = (_SSL_set_fd)GetProcAddress(g_hOpenSSL, "SSL_set_fd"))\r
|| !(p_SSL_get_verify_result = (_SSL_get_verify_result)GetProcAddress(g_hOpenSSL, "SSL_get_verify_result"))\r
|| !(p_SSL_get_session = (_SSL_get_session)GetProcAddress(g_hOpenSSL, "SSL_get_session"))\r
|| !(p_SSL_set_session = (_SSL_set_session)GetProcAddress(g_hOpenSSL, "SSL_set_session"))\r
+ || !(p_SSL_set_cipher_list = (_SSL_set_cipher_list)GetProcAddress(g_hOpenSSL, "SSL_set_cipher_list"))\r
+ || !(p_SSL_CTX_new = (_SSL_CTX_new)GetProcAddress(g_hOpenSSL, "SSL_CTX_new"))\r
+ || !(p_SSL_CTX_free = (_SSL_CTX_free)GetProcAddress(g_hOpenSSL, "SSL_CTX_free"))\r
|| !(p_SSL_CTX_get_cert_store = (_SSL_CTX_get_cert_store)GetProcAddress(g_hOpenSSL, "SSL_CTX_get_cert_store"))\r
|| !(p_SSL_CTX_ctrl = (_SSL_CTX_ctrl)GetProcAddress(g_hOpenSSL, "SSL_CTX_ctrl")))\r
{\r
}\r
\r
// SSLセッションを開始\r
-BOOL AttachSSL(SOCKET s, SOCKET parent, BOOL* pbAborted)\r
+BOOL AttachSSL(SOCKET s, SOCKET parent, BOOL* pbAborted, BOOL bStrengthen)\r
{\r
BOOL r;\r
DWORD Time;\r
SSL** ppSSL;\r
+ BOOL bInherited;\r
SSL** ppSSLParent;\r
SSL_SESSION* pSession;\r
int Return;\r
{\r
if(p_SSL_set_fd(*ppSSL, s) != 0)\r
{\r
+ bInherited = FALSE;\r
if(parent != INVALID_SOCKET)\r
{\r
if(ppSSLParent = FindSSLPointerFromSocket(parent))\r
if(pSession = p_SSL_get_session(*ppSSLParent))\r
{\r
if(p_SSL_set_session(*ppSSL, pSession) == 1)\r
- {\r
- }\r
+ bInherited = TRUE;\r
}\r
}\r
}\r
+ if(!bInherited)\r
+ {\r
+ if(bStrengthen)\r
+ {\r
+ p_SSL_ctrl(*ppSSL, SSL_CTRL_OPTIONS, SSL_OP_NO_SSLv2, NULL);\r
+ p_SSL_set_cipher_list(*ppSSL, "HIGH");\r
+ }\r
+ }\r
// SSLのネゴシエーションには時間がかかる場合がある\r
r = TRUE;\r
while(r)\r
BOOL bAborted;\r
r = accept(s, addr, addrlen);\r
bAborted = FALSE;\r
- if(!AttachSSL(r, INVALID_SOCKET, &bAborted))\r
+ if(!AttachSSL(r, INVALID_SOCKET, &bAborted, TRUE))\r
{\r
closesocket(r);\r
return INVALID_SOCKET;\r
BOOL bAborted;\r
r = connect(s, name, namelen);\r
bAborted = FALSE;\r
- if(!AttachSSL(r, INVALID_SOCKET, &bAborted))\r
+ if(!AttachSSL(r, INVALID_SOCKET, &bAborted, TRUE))\r
return SOCKET_ERROR;\r
return r;\r
}\r
BOOL GetHashSHA256(const void* pData, DWORD Size, void* pHash);\r
BOOL GetHashSHA384(const void* pData, DWORD Size, void* pHash);\r
BOOL GetHashSHA512(const void* pData, DWORD Size, void* pHash);\r
-BOOL AttachSSL(SOCKET s, SOCKET parent, BOOL* pbAborted);\r
+BOOL AttachSSL(SOCKET s, SOCKET parent, BOOL* pbAborted, BOOL bStrengthen);\r
BOOL DetachSSL(SOCKET s);\r
BOOL IsSSLAttached(SOCKET s);\r
SOCKET FTPS_socket(int af, int type, int protocol);\r