+BOOL __stdcall SSLConfirmCallback(BOOL* pbAborted, BOOL bVerified, LPCSTR Certificate, LPCSTR CommonName)\r
+{\r
+ BOOL bResult;\r
+ int i;\r
+ uint32 Hash[5];\r
+ char* pm0;\r
+ bResult = FALSE;\r
+ sha_memory((char*)Certificate, (uint32)(strlen(Certificate) * sizeof(char)), (uint32*)&Hash);\r
+ i = 0;\r
+ while(i < MAX_CERT_CACHE_HASH)\r
+ {\r
+ if(memcmp(&CertificateCacheHash[i], &Hash, 20) == 0)\r
+ {\r
+ bResult = TRUE;\r
+ break;\r
+ }\r
+ i++;\r
+ }\r
+ if(!bResult)\r
+ {\r
+ if(pm0 = AllocateStringM(strlen(Certificate) + 1024))\r
+ {\r
+ sprintf(pm0, MSGJPN326, IsHostNameMatched(AskHostAdrs(), CommonName) ? MSGJPN327 : MSGJPN328, bVerified ? MSGJPN327 : MSGJPN328, Certificate);\r
+ if(MessageBox(GetMainHwnd(), pm0, "FFFTP", MB_YESNO) == IDYES)\r
+ {\r
+ for(i = MAX_CERT_CACHE_HASH - 1; i >= 1; i--)\r
+ memcpy(&CertificateCacheHash[i], &CertificateCacheHash[i - 1], 20);\r
+ memcpy(&CertificateCacheHash[0], &Hash, 20);\r
+ bResult = TRUE;\r
+ }\r
+ FreeDuplicatedString(pm0);\r
+ }\r
+ }\r
+ if(!bResult)\r
+ *pbAborted = YES;\r
+ return bResult;\r
+}\r
+\r