static int IsRndSourceInit = 0;\r
static ulong RndSource[9];\r
\r
+// UTF-8対応\r
+static int IniKanjiCode = KANJI_NOCNV;\r
+\r
/*===== 外部参照 =====*/\r
\r
/* 設定値 */\r
extern int FolderAttr;\r
extern int FolderAttrNum;\r
\r
+// 暗号化通信対応\r
+extern BYTE CertificateCacheHash[MAX_CERT_CACHE_HASH][20];\r
+\r
/*----- マスタパスワードの設定 ----------------------------------------------\r
*\r
* Parameter\r
void *hKey3;\r
void *hKey4;\r
void *hKey5;\r
- char Str[FMAX_PATH+1];\r
+ // 暗号化通信対応\r
+// char Str[FMAX_PATH+1];\r
+ char Str[PRIVATE_KEY_LEN*4+1];\r
int i;\r
int n;\r
HOSTDATA DefaultHost;\r
SaveIntNum(hKey5, "Notify", Hist.DialupNotify, DefaultHist.DialupNotify);\r
SaveStr(hKey5, "DialTo", Hist.DialEntry, DefaultHist.DialEntry);\r
// 暗号化通信対応\r
+ SaveIntNum(hKey5, "NoEncryption", Hist.UseNoEncryption, DefaultHist.UseNoEncryption);\r
SaveIntNum(hKey5, "FTPES", Hist.UseFTPES, DefaultHist.UseFTPES);\r
SaveIntNum(hKey5, "FTPIS", Hist.UseFTPIS, DefaultHist.UseFTPIS);\r
SaveIntNum(hKey5, "SFTP", Hist.UseSFTP, DefaultHist.UseSFTP);\r
+ EncodePassword(Hist.PrivateKey, Str);\r
+ SaveStr(hKey5, "PKey", Str, DefaultHist.PrivateKey);\r
// 同時接続対応\r
SaveIntNum(hKey5, "ThreadCount", Hist.MaxThreadCount, DefaultHist.MaxThreadCount);\r
// MLSD対応\r
SaveIntNum(hKey5, "MLSD", Hist.UseMLSD, DefaultHist.UseMLSD);\r
+ // IPv6対応\r
+ SaveIntNum(hKey5, "IPv6", Hist.UseIPv6, DefaultHist.UseIPv6);\r
\r
CloseSubKey(hKey5);\r
n++;\r
SaveIntNum(hKey5, "Notify", Host.DialupNotify, DefaultHost.DialupNotify);\r
SaveStr(hKey5, "DialTo", Host.DialEntry, DefaultHost.DialEntry);\r
// 暗号化通信対応\r
+ SaveIntNum(hKey5, "NoEncryption", Host.UseNoEncryption, DefaultHost.UseNoEncryption);\r
SaveIntNum(hKey5, "FTPES", Host.UseFTPES, DefaultHost.UseFTPES);\r
SaveIntNum(hKey5, "FTPIS", Host.UseFTPIS, DefaultHost.UseFTPIS);\r
SaveIntNum(hKey5, "SFTP", Host.UseSFTP, DefaultHost.UseSFTP);\r
+ EncodePassword(Host.PrivateKey, Str);\r
+ SaveStr(hKey5, "PKey", Str, DefaultHost.PrivateKey);\r
// 同時接続対応\r
SaveIntNum(hKey5, "ThreadCount", Host.MaxThreadCount, DefaultHost.MaxThreadCount);\r
// MLSD対応\r
SaveIntNum(hKey5, "MLSD", Host.UseMLSD, DefaultHost.UseMLSD);\r
+ // IPv6対応\r
+ SaveIntNum(hKey5, "IPv6", Host.UseIPv6, DefaultHost.UseIPv6);\r
}\r
CloseSubKey(hKey5);\r
}\r
if((i = AskCurrentHost()) == HOSTNUM_NOENTRY)\r
i = 0;\r
WriteIntValueToReg(hKey4, "CurSet", i);\r
+\r
+ // 暗号化通信対応\r
+ WriteBinaryToReg(hKey4, "CertCacheHash", &CertificateCacheHash, sizeof(CertificateCacheHash));\r
}\r
CloseSubKey(hKey4);\r
}\r
void *hKey5;\r
int i;\r
int Sets;\r
- char Str[256]; /* ASCII_EXT_LENより大きい事 */\r
+ // 暗号化通信対応\r
+// char Str[256]; /* ASCII_EXT_LENより大きい事 */\r
+ char Str[PRIVATE_KEY_LEN*4+1];\r
char *Pos;\r
char *Pos2;\r
HOSTDATA Host;\r
\r
if(i == FFFTP_SUCCESS)\r
{\r
- char checkbuf[48];\r
+// char checkbuf[48];\r
int salt = 0;\r
Sts = YES;\r
\r
ReadIntValueFromReg(hKey3, "Version", &Version);\r
+ // UTF-8対応\r
+ if(Version < 1980)\r
+ IniKanjiCode = KANJI_SJIS;\r
\r
if(OpenSubKey(hKey3, "Options", &hKey4) == FFFTP_SUCCESS)\r
{\r
ReadIntValueFromReg(hKey5, "Notify", &Hist.DialupNotify);\r
ReadStringFromReg(hKey5, "DialTo", Hist.DialEntry, RAS_NAME_LEN+1);\r
// 暗号化通信対応\r
+ ReadIntValueFromReg(hKey5, "NoEncryption", &Hist.UseNoEncryption);\r
ReadIntValueFromReg(hKey5, "FTPES", &Hist.UseFTPES);\r
ReadIntValueFromReg(hKey5, "FTPIS", &Hist.UseFTPIS);\r
ReadIntValueFromReg(hKey5, "SFTP", &Hist.UseSFTP);\r
+ strcpy(Str, "");\r
+ ReadStringFromReg(hKey5, "PKey", Str, PRIVATE_KEY_LEN*4+1);\r
+ DecodePassword(Str, Hist.PrivateKey);\r
// 同時接続対応\r
ReadIntValueFromReg(hKey5, "ThreadCount", &Hist.MaxThreadCount);\r
// MLSD対応\r
ReadIntValueFromReg(hKey5, "MLSD", &Hist.UseMLSD);\r
+ // IPv6対応\r
+ ReadIntValueFromReg(hKey5, "IPv6", &Hist.UseIPv6);\r
\r
CloseSubKey(hKey5);\r
AddHistoryToHistory(&Hist);\r
Host.Pasv = NO;\r
Host.ListCmdOnly = NO;\r
}\r
+ // 1.97b以前はデフォルトでShift_JIS\r
+ if(Version < 1980)\r
+ Host.NameKanjiCode = KANJI_SJIS;\r
ReadIntValueFromReg(hKey5, "Set", &Host.Level);\r
\r
ReadStringFromReg(hKey5, "HostName", Host.HostName, HOST_NAME_LEN+1);\r
ReadIntValueFromReg(hKey5, "Notify", &Host.DialupNotify);\r
ReadStringFromReg(hKey5, "DialTo", Host.DialEntry, RAS_NAME_LEN+1);\r
// 暗号化通信対応\r
+ ReadIntValueFromReg(hKey5, "NoEncryption", &Host.UseNoEncryption);\r
ReadIntValueFromReg(hKey5, "FTPES", &Host.UseFTPES);\r
ReadIntValueFromReg(hKey5, "FTPIS", &Host.UseFTPIS);\r
ReadIntValueFromReg(hKey5, "SFTP", &Host.UseSFTP);\r
+ strcpy(Str, "");\r
+ ReadStringFromReg(hKey5, "PKey", Str, PRIVATE_KEY_LEN*4+1);\r
+ DecodePassword(Str, Host.PrivateKey);\r
// 同時接続対応\r
ReadIntValueFromReg(hKey5, "ThreadCount", &Host.MaxThreadCount);\r
// MLSD対応\r
ReadIntValueFromReg(hKey5, "MLSD", &Host.UseMLSD);\r
+ // IPv6対応\r
+ ReadIntValueFromReg(hKey5, "IPv6", &Host.UseIPv6);\r
\r
CloseSubKey(hKey5);\r
\r
ReadIntValueFromReg(hKey4, "CurSet", &Sets);\r
SetCurrentHost(Sets);\r
\r
+ // 暗号化通信対応\r
+ ReadBinaryFromReg(hKey4, "CertCacheHash", &CertificateCacheHash, sizeof(CertificateCacheHash));\r
+\r
CloseSubKey(hKey4);\r
}\r
CloseReg(hKey3);\r
{\r
int Sts;\r
char *Pos;\r
+ // UTF-8対応\r
+ char* pa0;\r
+ wchar_t* pw0;\r
+ DWORD TempSize;\r
\r
Sts = FFFTP_FAIL;\r
if(TmpRegType == REGTYPE_REG)\r
{\r
if((Pos = ScanValue(Handle, Name)) != NULL)\r
{\r
- Size = min1(Size-1, strlen(Pos));\r
- Size = StrReadIn(Pos, Size, Str);\r
- *(Str + Size) = NUL;\r
- Sts = FFFTP_SUCCESS;\r
+ // UTF-8対応\r
+// Size = min1(Size-1, strlen(Pos));\r
+// Size = StrReadIn(Pos, Size, Str);\r
+// *(Str + Size) = NUL;\r
+// Sts = FFFTP_SUCCESS;\r
+ switch(IniKanjiCode)\r
+ {\r
+ case KANJI_SJIS:\r
+ if(pa0 = AllocateStringA(Size * 4))\r
+ {\r
+ if(pw0 = AllocateStringW(Size * 4 * 4))\r
+ {\r
+ TempSize = min1((Size * 4) - 1, strlen(Pos));\r
+ TempSize = StrReadIn(Pos, TempSize, pa0);\r
+ *(pa0 + TempSize) = NUL;\r
+ AtoW(pw0, Size * 4 * 4, pa0, -1);\r
+ WtoM(Str, Size, pw0, -1);\r
+ TerminateStringM(Str, Size);\r
+ Sts = FFFTP_SUCCESS;\r
+ FreeDuplicatedString(pw0);\r
+ }\r
+ FreeDuplicatedString(pa0);\r
+ }\r
+ break;\r
+ case KANJI_NOCNV:\r
+ Size = min1(Size-1, strlen(Pos));\r
+ Size = StrReadIn(Pos, Size, Str);\r
+ *(Str + Size) = NUL;\r
+ Sts = FFFTP_SUCCESS;\r
+ break;\r
+ }\r
}\r
}\r
return(Sts);\r