DWORD WINAPI RunTests(LPVOID lpParam) { thread_data* data = (thread_data*)lpParam; CDlgMain* dlg = data->Dlgmain; CDlgSettings* dlg2 = data->Dlgsettings; //CResultsDlg* dlg = data->result_dlg; char buffer[SOCK_BUFFER+1]; CString msg; dlg->console+=_T("\r\nTest started."); dlg->UpdateData(FALSE); ScrollToBottom(dlg); AfxSocketInit(); CSocket* socket = NULL; curl_global_init(CURL_GLOBAL_ALL); CURL* curl = curl_easy_init(); thread_status* this_struct = new thread_status; this_struct->bufferlen = 0; this_struct->initialized = false; this_struct->data = NULL; this_struct->writepos = 0; curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefunction); curl_easy_setopt(curl,CURLOPT_WRITEDATA, (void *) &this_struct); curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT,25); curl_easy_setopt(curl, CURLOPT_TIMEOUT,30); CString cookie = _T("cookie/cookie"); CString cookie2; CString cookie3 = _T(".txt"); int cookie4 = int(time(NULL)); cookie2.Format(_T("%d"),cookie4); cookie = cookie+cookie2+cookie3; char* cookie_file = StringToChar(cookie); //MessageBox(cookie); curl_easy_setopt(curl, CURLOPT_COOKIEJAR, cookie_file); curl_easy_setopt(curl, CURLOPT_COOKIEFILE, cookie_file); curl_easy_setopt(curl, CURLOPT_COOKIESESSION, true); for(int GG=0;GG<1;GG++) // to make cancel possible { if(socket = Connect(socket,dlg,buffer,false,dlg2)) { dlg->result_1ismailserver = _T("YES"); int pos1 = FindStr(buffer,"Version",0); int pos2; if(pos1!=-1) { pos2 = FindStr(buffer," ",pos1+7+2); if(pos2==-1) pos2 = FindStr(buffer,"\r",pos1+7+2); dlg->result_2version = CharToString(MidStr(buffer,pos1+7+1,pos2)); } dlg->UpdateData(FALSE); ScrollToBottom(dlg); if(CheckIfCancelled(dlg)) break; // OPEN RELAY if(dlg->test_openrelay) { dlg->console+=_T("\r\n-----------------------------------------------------"); dlg->console+=_T("\r\n------------------ Open Relay Test ------------------"); socket = Connect(socket,dlg,buffer,false,dlg2); RelayTest(socket,dlg,buffer,dlg2); } if(CheckIfCancelled(dlg)) break; /// VERIFY COMMAND TEST if(dlg->test_verify) { dlg->console+=_T("\r\n-----------------------------------------------------"); dlg->console+=_T("\r\n------------------ Verify Test ------------------"); socket = Connect(socket,dlg,buffer,false,dlg2); VerifyTest(socket,dlg,buffer,dlg2); } if(CheckIfCancelled(dlg)) break; /// POSTMAN/ABUSE TEST if(dlg->test_postmaster) { dlg->console+=_T("\r\n-----------------------------------------------------"); dlg->console+=_T("\r\n------------------ Postman Test ------------------"); socket = Connect(socket,dlg,buffer,false,dlg2); PostAbuseTest(socket,dlg,buffer,dlg2,0); } if(CheckIfCancelled(dlg)) break; if(dlg->test_abuse) { dlg->console+=_T("\r\n-----------------------------------------------------"); dlg->console+=_T("\r\n------------------ Abuse Test ------------------"); socket = Connect(socket,dlg,buffer,false,dlg2); PostAbuseTest(socket,dlg,buffer,dlg2,1); } if(CheckIfCancelled(dlg)) break; /// ATTACHMENT TEST // (with server change) if(dlg->test_attachments) { dlg->console+=_T("\r\n-----------------------------------------------------"); dlg->console+=_T("\r\n------------------ Attachment Test ------------------"); CString temp = dlg2->set_serveraddress; dlg2->set_serveraddress = dlg2->set_authserver; socket = Connect(socket,dlg,buffer,false,dlg2); dlg2->set_serveraddress = temp; AttachmentTest(socket,dlg,buffer,dlg2); } if(CheckIfCancelled(dlg)) break; /// SPOOFING TEST if(dlg->test_spoofing1) { dlg->console+=_T("\r\n-----------------------------------------------------"); dlg->console+=_T("\r\n------------------ Spoofing 1 Test ------------------"); socket = Connect(socket,dlg,buffer,false,dlg2); SpoofingTest(socket,dlg,buffer,1,dlg2); } if(CheckIfCancelled(dlg)) break; /// SPOOFING TEST 2 // (with server change) if(dlg->test_spoofing2) { dlg->console+=_T("\r\n-----------------------------------------------------"); dlg->console+=_T("\r\n------------------ Spoofing 2 Test ------------------"); CString temp = dlg2->set_serveraddress; dlg2->set_serveraddress = dlg2->set_authserver; socket = Connect(socket,dlg,buffer,false,dlg2); dlg2->set_serveraddress = temp; SpoofingTest(socket,dlg,buffer,2,dlg2); } if(CheckIfCancelled(dlg)) break; /// HELP TEST if(dlg->test_help) { dlg->console+=_T("\r\n-----------------------------------------------------"); dlg->console+=_T("\r\n------------------ Help Test ------------------"); socket = Connect(socket,dlg,buffer,false,dlg2); HelpTest(socket,dlg,buffer); } if(CheckIfCancelled(dlg)) break; /// ENCRYPTED AUTH if(dlg->test_encauth) { dlg->console+=_T("\r\n-----------------------------------------------------"); dlg->console+=_T("\r\n------------------ Encry.Auth Test ------------------"); socket = Connect(socket,dlg,buffer,false,dlg2); EhloTest(socket,dlg,buffer,1); } if(CheckIfCancelled(dlg)) break; /// CLEARTEXT if(dlg->test_cleartext) { dlg->console+=_T("\r\n-----------------------------------------------------"); dlg->console+=_T("\r\n------------------ Cleartext Test ------------------"); socket = Connect(socket,dlg,buffer,false,dlg2); EhloTest(socket,dlg,buffer,2); } if(CheckIfCancelled(dlg)) break; /// SASL if(dlg->test_sasl) { dlg->console+=_T("\r\n-----------------------------------------------------"); dlg->console+=_T("\r\n------------------ SASL Test ------------------"); socket = Connect(socket,dlg,buffer,false,dlg2); EhloTest(socket,dlg,buffer,3); } if(CheckIfCancelled(dlg)) break; /// AUTH if(dlg->test_auth) { dlg->console+=_T("\r\n-----------------------------------------------------"); dlg->console+=_T("\r\n------------------ Auth. Test ------------------"); socket = Connect(socket,dlg,buffer,false,dlg2); EhloTest(socket,dlg,buffer,4); } if(CheckIfCancelled(dlg)) break; } else { dlg->result_1ismailserver = _T("NO"); dlg->UpdateData(FALSE); ScrollToBottom(dlg); } if(dlg->test_spf) { dlg->console+=_T("\r\n-----------------------------------------------------"); dlg->console+=_T("\r\n------------------ SPF Test ------------------"); SpfTest(dlg,curl,this_struct); } if(dlg->test_blacklist) { dlg->console+=_T("\r\n-----------------------------------------------------"); dlg->console+=_T("\r\n------------------ Blacklist Test ------------------"); BlacklistTest(dlg,curl,this_struct); } } // end GG delete socket; dlg->console+=_T("\r\n-----------------------------------------------------"); dlg->console+=_T("\r\nTEST COMPLETED."); dlg->GetDlgItem(IDC_BUTTON7)->EnableWindow(TRUE); dlg->GetDlgItem(IDC_BUTTON8)->EnableWindow(TRUE); dlg->GetDlgItem(IDC_BUTTON3)->SetWindowTextW(_T("Run")); dlg->GetDlgItem(IDC_BUTTON3)->EnableWindow(TRUE); dlg->running = FALSE; dlg->want_cancel = FALSE; dlg->UpdateData(FALSE); ScrollToBottom(dlg); return 0; }
int main(int argc, char* argv[]) { // const unsigned int argon2_type_length = 10; unsigned char out[32]; uint32_t outlen = 32; uint32_t m_cost = 1 << 18; uint32_t t_cost = 3; uint32_t p_len = 16; unsigned thread_n = 4; uint32_t s_len = 16; bool generate_test_vectors = false; //char type[argon2_type_length] = "Argon2d"; std::string type; #ifdef KAT remove(KAT_FILENAME); #endif if (argc == 1) { GenKat(); return 0; } for (int i = 1; i < argc; i++) { if (strcmp(argv[i], "-help") == 0) { printf("====================================== \n"); printf("Argon2 - test implementation \n"); printf("====================================== \n"); printf("Options:\n"); printf("\t -taglength <Tag Length: 0..31>\n"); printf("\t -logmcost < Base 2 logarithm of m_cost : 0..23 > \n"); printf("\t -tcost < t_cost : 0..2^24 > \n"); printf("\t -pwdlen < Password : length>\n"); printf("\t -saltlen < Salt : Length>\n"); printf("\t -threads < Number of threads : % d.. % d>\n", MIN_LANES, MAX_LANES); printf("\t -type <Argon2d; Argon2di; Argon2ds; Argon2i; Argon2id >\n"); printf("\t -gen-tv\n"); printf("\t -verify\n"); printf("\t -benchmark\n"); printf("\t -help\n"); printf("If no arguments given, Argon2 is called with default parameters t_cost=%d, m_cost=%d and threads=%d.\n", t_cost, m_cost, thread_n); return 0; } if (strcmp(argv[i], "-taglength") == 0) { if (i < argc - 1) { i++; outlen = atoi(argv[i]) % 32; continue; } } if (strcmp(argv[i], "-logmcost") == 0) { if (i < argc - 1) { i++; m_cost = (size_t) 1 << (atoi(argv[i]) % 24); continue; } } if (strcmp(argv[i], "-tcost") == 0) { if (i < argc - 1) { i++; t_cost = atoi(argv[i]) & 0xffffff; continue; } } if (strcmp(argv[i], "-pwdlen") == 0) { if (i < argc - 1) { i++; p_len = atoi(argv[i]) % 160; continue; } } if (strcmp(argv[i], "-saltlen") == 0) { if (i < argc - 1) { i++; s_len = atoi(argv[i]) % 32; continue; } } if (strcmp(argv[i], "-threads") == 0) { if (i < argc - 1) { i++; thread_n = atoi(argv[i]) % 32; continue; } } if (strcmp(argv[i], "-type") == 0) { if (i < argc - 1) { i++; type = std::string(argv[i]); // if (argon2_type_length >= strlen(argv[i])) { // memcpy(type, argv[i], strlen(argv[i])); // } continue; } } if (strcmp(argv[i], "-gen-tv") == 0) { generate_test_vectors = true; continue; } if (strcmp(argv[i], "-verify") == 0) { bool modify = false; if (i < argc - 1) { i++; if (0 != atoi(argv[i])) { modify = true; } } VerifyTest(modify); return 0; } if (strcmp(argv[i], "-benchmark") == 0) { Benchmark(); return 0; } } if (generate_test_vectors) { GenerateTestVectors(type); return 0; } Run(out, outlen, p_len, s_len, t_cost, m_cost); return 0; }