void ServerController::processClient(sf::Packet &packet, sf::TcpSocket &client) { std::string protocol; packet >> protocol; std::cout << "Interpreting Packet Protocol: " << protocol << std::endl; if(protocol=="LOGIN"){ loginAccount(packet, client); } else if(protocol=="REGISTER"){ registerAccount(packet, client); } else if(protocol=="CONFERENCE_LIST"){ getConferences(packet, client); } else if(protocol=="CONFERENCE_ACCESS"){ getAccess(packet, client); } else if(protocol=="VIEW_SUBMISSIONS"){ getSubmissions(packet, client); } else if(protocol=="SUBMIT_PAPER"){ paperSubmission(packet, client); } else if (protocol=="ADMIN_STATUS"){ getAdminStatus(packet, client); } else if (protocol=="CREATE_CONFERENCE"){ createConference(packet, client); } else if (protocol=="GET_NOTIFICATIONS"){ getNotifications(packet, client); } else if (protocol=="CHECK_PHASE"){ checkPhase(packet, client); } else if (protocol=="BID_LIST"){ bidList(packet, client); } else if (protocol=="BID_PAPER"){ bidPaper(packet, client); } else if (protocol=="ADVANCE_PHASE"){ advancePhase(packet, client); } else if(protocol=="BYE"){ logoutUser(packet, client); } else if(protocol=="GET_ALLOCATIONS"){ getAllocations(packet, client); } else if(protocol=="CONFERENCE_SUBMISSIONS"){ getConferenceSubs(packet, client); } else if(protocol=="REVIEW_LIST"){ getReviewList(packet, client, true); } else if (protocol=="SUB_DETAIL"){ sendSubDetail(packet, client); } else if (protocol=="SUBMIT_REVIEW"){ submitReview(packet, client); } else if (protocol=="GET_COMMENTS"){ getComments(packet, client); } else if (protocol=="SEND_COMMENT"){ sendComments(packet, client); } else if (protocol=="ADD_REVIEWER"){ addMember(packet, client, Account::Access_Reviewer); } else if (protocol=="ADD_AUTHOR"){ addMember(packet, client, Account::Access_Author); } else if (protocol=="CHANGE_MAX_ALLOCATED_CONF"){ changeLimit(packet, client, "ALLOCATED"); } else if (protocol=="CHANGE_MAX_PAPERREVIEWERS_CONF"){ changeLimit(packet, client, "PAPERREV"); } else if (protocol=="GET_MAX_ALLOCATED_CONF"){ getLimit(packet, client, "ALLOCATED"); } else if (protocol=="GET_MAX_PAPERREVIEWERS_CONF"){ getLimit(packet, client, "PAPERREV"); } else if (protocol=="GET_FULLNAME"){ getAccountName(packet, client); } else if (protocol=="VIEW_REVIEW"){ getReview(packet, client); } else if (protocol=="NOTIFY_COUNT"){ checkNotifyCount(packet, client); } else if (protocol=="APPROVE_PAPER"){ decidePaper(packet, client, true); } else if (protocol=="REJECT_PAPER"){ decidePaper(packet, client, false); } else if (protocol=="MY_REVIEWS"){ getReviewList(packet, client, false); } else if (protocol=="DID_REVIEW"){ checkReviewed(packet, client); } else if (protocol=="FINAL_REVIEW"){ getFinalReview(packet, client); } else if (protocol=="CONF_REVIEWERS"){ getReviewers(packet, client); } else if (protocol=="CONF_SUBMISSIONS"){ getConfSubmissions(packet, client); } else if (protocol=="FILLED_ALLOCATION"){ checkPaperAlloc(packet, client); } else if (protocol=="GET_FREE_REVIEWERS"){ getFreeReviewers(packet, client); } else if (protocol=="ASSIGN_REVIEWER"){ assignReviewer(packet, client); } else if (protocol=="CHANGE_PASSWORD"){ changePassword(packet, client); } else { std::cout << "Unrecognised protocol" << std::endl; } }
int testCaseSignAndVerifyRecover() { CK_RV rv; CK_ULONG ulTokenCount = 0; CK_SLOT_ID_PTR pTokenList = NULL_PTR; CK_SLOT_ID slotID; CK_BYTE application = 42; CK_NOTIFY myNotify = NULL; CK_SESSION_HANDLE hSession; CK_MECHANISM keyMechanism = { 0, NULL_PTR, 0 }; CK_MECHANISM mechanism = { 0, NULL_PTR, 0 }; CK_OBJECT_HANDLE hKey = 0, hPublicKey = 0; CK_BYTE_PTR data = NULL_PTR; CK_BYTE_PTR dataSigned = NULL_PTR; CK_ULONG dataRecoveredLen = 0; CK_ULONG dataSignedLen = 0; struct timeval start, end, diff; int i,k,j, temp; printf("Testing case: SignAndVerifyRecover ...\n"); printf(" Check dependencies ...\n"); if(checkDependecies(testCaseSignAndVerifyRecoverDependencies) != 1) return CKR_FUNCTION_NOT_SUPPORTED; printf(" Dependencies are fine\n"); //initialize printf(" call Initialize ..."); rv = pFunctionList->C_Initialize(NULL_PTR); if(rv != CKR_OK) returnTestCase(rv, 0); else printf(" success\n"); //GetSlotList -> Tokenlist findActiveTokens(&pTokenList, &ulTokenCount); for(i=0;i<ulTokenCount;i++) { slotID = pTokenList[i]; for(j=0;j<pMechaInfoListLen;j++)//each mechanism { if(!(pMechaInfoList[j].info.flags & (CKF_SIGN_RECOVER | CKF_VERIFY_RECOVER))) continue; mechanism.mechanism = pMechaInfoList[j].type; k = searchEleName(mechanism.mechanism, MECHANISM_LIST, (sizeof(MECHANISM_LIST)/sizeof(*MECHANISM_LIST))); if(k != -1) printf(" Signing and Verify Recover(%s) ...\n", MECHANISM_LIST[k].eleName); else printf(" Signing and Verify Recover(mecha = %lu) ...\n", mechanism.mechanism); rv = findGenerateMechanismForMechanism(&keyMechanism, mechanism.mechanism); if(rv == 0) { //OpenSession with CKF_SERIAL_SESSION printf(" call C_OpenSession on slot %lu with CKF_SERIAL_SESSION | CKF_RW_SESSION...", slotID); rv = pFunctionList->C_OpenSession(slotID, CKF_SERIAL_SESSION | CKF_RW_SESSION, (CK_VOID_PTR) &application, myNotify, &hSession); if(rv != CKR_OK) returnTestCase(rv, 0); else printf(" success\n"); loginUser(hSession); hKey = 0; hPublicKey = 0; if((generateKey(&keyMechanism, &hKey, &hSession) == 0) | (generateKeyPair(&keyMechanism, &hKey, &hPublicKey, hSession) == 0))//gen key { generateSampleData(16, &data); gettimeofday(&start, NULL); rv = signRecover(data, &dataSigned, &dataSignedLen, &hKey, &hSession, &mechanism); gettimeofday(&end, NULL); if(rv == 0) { timeval_subtract(&diff, &end, &start); printf(" Could sign %zu CK_BYTEs in %ld.%06ld sec.\n", strlen((char *) data), diff.tv_sec, diff.tv_usec); temp = dataSignedLen; free(data); //because it's reused in verifyRecover gettimeofday(&start, NULL); if(hPublicKey != 0) rv = verifyRecover(data, &dataRecoveredLen, dataSigned, dataSignedLen, &hPublicKey, &hSession, &mechanism);//asymetric if(hPublicKey == 0) rv = verifyRecover(data, &dataRecoveredLen, dataSigned, dataSignedLen, &hKey, &hSession, &mechanism);//symetric gettimeofday(&end, NULL); timeval_subtract(&diff, &end, &start); if(rv == 0) { printf(" Could recover from %d CK_BYTEs in %ld.%06ld sec.\n", temp, diff.tv_sec, diff.tv_usec); free(dataSigned); } else printf(" failed\n"); free(data); //try different data length generateSampleData(256, &data); gettimeofday(&start, NULL); rv = signRecover(data, &dataSigned, &dataSignedLen, &hKey, &hSession, &mechanism); gettimeofday(&end, NULL); if(rv == 0) { timeval_subtract(&diff, &end, &start); printf(" Could sign %zu CK_BYTEs in %ld.%06ld sec.\n", strlen((char *) data), diff.tv_sec, diff.tv_usec); temp = dataSignedLen; free(data); //because it's reused in verifyRecover gettimeofday(&start, NULL); if(hPublicKey != 0) rv = verifyRecover(data, &dataRecoveredLen, dataSigned, dataSignedLen, &hPublicKey, &hSession, &mechanism);//asymetric if(hPublicKey == 0) rv = verifyRecover(data, &dataRecoveredLen, dataSigned, dataSignedLen, &hKey, &hSession, &mechanism);//symetric gettimeofday(&end, NULL); timeval_subtract(&diff, &end, &start); if(rv == 0) { printf(" Could verify %d CK_BYTEs in %ld.%06ld sec.\n", temp, diff.tv_sec, diff.tv_usec); free(dataSigned); } else printf(" failed\n"); } else printf(" failed\n"); free(data); if(dataSigned!=NULL_PTR) free(dataSigned); } else printf(" failed\n"); if(checkFunctionImplemented("C_DestroyObject")!=-1) { pFunctionList->C_DestroyObject(hSession, hPublicKey); pFunctionList->C_DestroyObject(hSession, hKey); } } else { if(k != -1) printf(" skip %s because mecha is not yet implemented ...\n", MECHANISM_LIST[k].eleName); else printf(" skip mecha = %lu because mecha is not yet implemented ...\n", mechanism.mechanism); } logoutUser(hSession); closeSession(hSession); } else { if(k != -1) printf(" skip %s because the related key generation mechanism was not found...\n", MECHANISM_LIST[k].eleName); else printf(" skip mecha = %lu because the related key generation mechanism was not found...\n", mechanism.mechanism); } } } //finalize printf(" call Finalize ..."); rv = pFunctionList->C_Finalize(NULL_PTR); if(rv != CKR_OK) returnTestCase(rv, 0); else printf(" success\n"); free(pTokenList); printf(" ... case successful\n"); return CKR_OK; }