void benchmark_OT_L_CnC_Mod_Receiver(char *ipAddress, char *portNumStr) { struct timespec timestamp_0, timestamp_1; clock_t c_0, c_1; struct sockaddr_in serv_addr_write, serv_addr_read; int writeSocket, readSocket; int readPort = atoi(portNumStr), writePort = readPort + 1; gmp_randstate_t *state; randctx *isaacCTX; struct idAndValue *startOfInputChain; unsigned char **OT_Outputs, *permedInputs; int i; const int numIterations = 10, numX = 128, numY = 10; initRandGen(); state = seedRandGen(); isaacCTX = (randctx*) calloc(1, sizeof(randctx)); getIsaacContext(isaacCTX); permedInputs = (unsigned char *) calloc(numX, sizeof(unsigned char)); startOfInputChain = convertArrayToChain(permedInputs, numX, 0); set_up_client_socket(readSocket, ipAddress, readPort, serv_addr_read); set_up_client_socket(writeSocket, ipAddress, writePort, serv_addr_write); c_0 = clock(); timestamp_0 = timestamp(); for(i = 0; i < numIterations; i ++) { printf(">>> %d\n", i); full_CnC_OT_Mod_Receiver_ECC_Alt(writeSocket, readSocket, &OT_Outputs, numX, state, startOfInputChain, permedInputs, numY, 1024); } c_1 = clock(); timestamp_1 = timestamp(); printf("\nLP_CnC OT %d times, %d by %d\n", numIterations, numX, numY); printf("CPU time : %f\n", (float) (c_1 - c_0)/CLOCKS_PER_SEC); printf("Wall time : %lf\n", seconds_timespecDiff(×tamp_0, ×tamp_1)); close_client_socket(readSocket); close_client_socket(writeSocket); }
int main(int argc, char *argv[]) { int sockfd; int recvnum, i; unsigned char buff[4096]; FILE *output; const char ip[] = "192.168.2.253"; int port = 8888; /* set for SiNan data stream */ sockfd = creat_client_socket(ip, port); /* set output file */ output = fopen("log.bin", "wb"); if(0==sockfd) exit(0); while(!kbhit()) { // use keyboard hit action to stop loops memset(buff, 0x00, sizeof(buff)); recvnum = recv(sockfd, (char *)buff, 4000, 0); //#ifdef WIN32 // Sleep(1000); //#endif if(SOCKET_ERROR==recvnum || 0==recvnum) { close_client_socket(sockfd); SLEEP(2000); printf("reconnecting...\n"); sockfd = creat_client_socket(ip, port); continue; } for(i = 0; i<recvnum; i++) { fwrite(&(buff[i]), 1, 1, output); #if 1 if((i%16) == 0) printf("\n"); printf("%02X ", buff[i]); #endif #if 0 printf("%c", buff[i]); #endif } } fclose(output); close_client_socket(sockfd); return 0; }
/* * Removes the filesystem from the kernel. */ static void __exit janfs_exit(void) { printk("Removing janfs filesystem.\n"); close_client_socket(); unregister_filesystem(&janfs_fstype); }
DWORD WINAPI ThreadProc(LPVOID lpParameter) { SOCKET sockSrv; start_server_socket(sockSrv, 8000); //wait for the client to connect while(TRUE) { SOCKET sockClt; char buf[BUFSIZ]; //数据传送的缓冲区 int len = 0; accept_client_socket(sockClt, sockSrv); try { if (sockClt != INVALID_SOCKET) { printf("%s\n", buf); long long ulTime = _atoi64(buf); printf("%lld\n", ulTime); receive_socket_packs(sockClt, buf,BUFSIZ); if (buf[0]==_T('S') && buf[10]==_T('s')) { send_socket_packs(sockClt, SOCKET_START_TOKEN, sizeof(SOCKET_START_TOKEN));//发送欢迎信息 HANDLE hThread = CreateThread(NULL, 0, ThreadSend, (LPVOID)sockClt, CREATE_SUSPENDED, NULL); ResumeThread(hThread); WaitForSingleObject(hThread, INFINITE); CloseHandle(hThread); } } close_client_socket(sockClt); } catch (...) { close_client_socket(sockClt); } } close_server_socket(sockSrv); return 0; }
void handle_client_socket_event(struct epoll_event_handler* self, uint32_t events) { struct client_socket_event_data* closure = (struct client_socket_event_data* ) self->closure; char buffer[BUFFER_SIZE]; int bytes_read; if (events & EPOLLIN) { bytes_read = read(self->fd, buffer, BUFFER_SIZE); if (bytes_read == -1 && (errno == EAGAIN || errno == EWOULDBLOCK)) { return; } if (bytes_read == 0 || bytes_read == -1) { close_backend_socket(closure->backend_handler); close_client_socket(self); return; } write(closure->backend_handler->fd, buffer, bytes_read); } if ((events & EPOLLERR) | (events & EPOLLHUP) | (events & EPOLLRDHUP)) { close_backend_socket(closure->backend_handler); close_client_socket(self); return; } }
int main(int argc, char *argv[]) { /* local variables */ raw_t *raw; socket_t sock; unsigned char buff[4096]; int recvnum, i; /* initialise raw */ raw = (raw_t *)malloc(sizeof(raw_t)); if (0 == init_raw(raw)) { trace(0, "%s\n\n", "ERROR: memory allocation error!"); return 0; } strcpy(raw->opt, "-LE"); /* the file type is set to LITTLE_ENDIAN */ raw->outtype = 1; /* set to output message type id */ /* initialize socket */ sock = creat_client_socket("192.168.3.108", 50000); if(sock < 0) { printf("sock error\n"); exit(0); } /* main loop */ while(1) { memset(buff, 0x00, sizeof(buff)); recvnum = recv(sock, (char*)buff, 4000, 0); #ifdef WIN32_ Sleep(1000); #endif decode_stream(raw, buff, recvnum); } /* clear */ free_raw(raw); close_client_socket(sock); }
void benchmark_OT_LP_CnC_Receiver(char *ipAddress, char *portNumStr) { struct timespec timestamp_0, timestamp_1; clock_t c_0, c_1; struct sockaddr_in serv_addr_write, serv_addr_read; int writeSocket, readSocket; int readPort = atoi(portNumStr), writePort = readPort + 1; gmp_randstate_t *state; randctx *isaacCTX; struct params_CnC_ECC *OT_params_R; struct otKeyPair_ECC **OT_keyPairs_R; unsigned char **OT_Outputs, *permedInputs; int i; const int numIterations = 10, numX = 128, numY = 10; initRandGen(); state = seedRandGen(); isaacCTX = (randctx*) calloc(1, sizeof(randctx)); getIsaacContext(isaacCTX); permedInputs = (unsigned char *) calloc(numX, sizeof(unsigned char)); set_up_client_socket(readSocket, ipAddress, readPort, serv_addr_read); set_up_client_socket(writeSocket, ipAddress, writePort, serv_addr_write); c_0 = clock(); timestamp_0 = timestamp(); for(i = 0; i < numIterations; i ++) { printf(">>> %d\n", i); OT_params_R = OT_CnC_Receiver_Setup_Params(numX, state, permedInputs, numY, 1024); OT_keyPairs_R = OT_CnC_Receiver_Produce_Queries(OT_params_R, numX, state, permedInputs, numY); OT_CnC_Receiver_Send_Queries(writeSocket, readSocket, OT_params_R, OT_keyPairs_R, numX, state, permedInputs, numY); OT_CnC_Receiver_Transfer(writeSocket, readSocket, OT_params_R, OT_keyPairs_R, numX, state, permedInputs, numY); // full_CnC_OT_Receiver_ECC_Alt(writeSocket, readSocket, numX, state, permedInputs, &OT_Outputs, numY, 1024); } c_1 = clock(); timestamp_1 = timestamp(); printf("\nLP_CnC OT %d times, %d by %d\n", numIterations, numX, numY); printf("CPU time : %f\n", (float) (c_1 - c_0)/CLOCKS_PER_SEC); printf("Wall time : %lf\n", seconds_timespecDiff(×tamp_0, ×tamp_1)); close_client_socket(readSocket); close_client_socket(writeSocket); }
void benchmark_Symm_OT_NP_Receiver(char *ipAddress, char *portNumStr) { struct timespec timestamp_0, timestamp_1; clock_t c_0, c_1; struct sockaddr_in serv_addr_write, serv_addr_read; int writeSocket, readSocket; int readPort = atoi(portNumStr), writePort = readPort + 1; gmp_randstate_t *state; randctx *isaacCTX; struct OT_NP_Receiver_Query **queries_Own; struct eccPoint *C, *cTilde, **queries_Partner; struct eccParams *params; unsigned char ***OT_Inputs, **OT_Outputs, *permedInputs; int i, j, k; const int numIterations = 10, numX = 128, numY = 10; initRandGen(); state = seedRandGen(); params = initBrainpool_256_Curve(); isaacCTX = (randctx*) calloc(1, sizeof(randctx)); getIsaacContext(isaacCTX); permedInputs = (unsigned char *) calloc(numX, sizeof(unsigned char)); OT_Inputs = (unsigned char ***) calloc(2, sizeof(unsigned char **)); OT_Inputs[0] = (unsigned char **) calloc(numX * numY, sizeof(unsigned char *)); OT_Inputs[1] = (unsigned char **) calloc(numX * numY, sizeof(unsigned char *)); for(i = 0; i < numX; i ++) { for(j = 0; j < numY; j ++) { k = i * numY + j; OT_Inputs[0][k] = generateIsaacRandBytes(isaacCTX, 16, 16); OT_Inputs[1][k] = generateIsaacRandBytes(isaacCTX, 16, 16); } } set_up_client_socket(readSocket, ipAddress, readPort, serv_addr_read); set_up_client_socket(writeSocket, ipAddress, writePort, serv_addr_write); c_0 = clock(); timestamp_0 = timestamp(); for(i = 0; i < numIterations; i ++) { C = setup_OT_NP_Sender(params, *state); cTilde = exchangeC_ForNaorPinkas(writeSocket, readSocket, C); printf(">>> %d\n", i); // full_CnC_OT_Mod_Receiver_ECC_Alt(writeSocket, readSocket, &OT_Outputs, numX, state, startOfInputChain, permedInputs, numY, 1024); queries_Own = NaorPinkas_OT_Produce_Queries(numX, permedInputs, state, params, cTilde); queries_Partner = NaorPinkas_OT_Exchange_Queries(writeSocket, readSocket, numX, numX, queries_Own); NaorPinkas_OT_Sender_Transfer(writeSocket, readSocket, numX, OT_Inputs, state, numY, queries_Partner, params, C); OT_Outputs = NaorPinkas_OT_Receiver_Transfer(writeSocket, readSocket, numX, permedInputs, state, numY, queries_Own, params, cTilde); } c_1 = clock(); timestamp_1 = timestamp(); printf("\nOT_NP %d times, %d by %d\n", numIterations, numX, numY); printf("CPU time : %f\n", (float) (c_1 - c_0)/CLOCKS_PER_SEC); printf("Wall time : %lf\n", seconds_timespecDiff(×tamp_0, ×tamp_1)); close_client_socket(readSocket); close_client_socket(writeSocket); }
void runExecutor_L_2013_CnC_OT(struct RawCircuit *rawInputCircuit, struct idAndValue *startOfInputChain, char *ipAddress, char *portNumStr, randctx *ctx) { struct sockaddr_in serv_addr_write, serv_addr_read; int writeSocket, readSocket; int readPort = atoi(portNumStr), writePort = readPort + 1; const int lengthDelta = 40; int i, consistency; struct RawCircuit *rawCheckCircuit; struct Circuit **circuitsArray = (struct Circuit**) calloc(stat_SecParam, sizeof(struct Circuit*)); struct revealedCheckSecrets *secretsRevealed; struct publicInputsWithGroup *pubInputGroup; struct secCompExecutorOutput *SC_ReturnStruct; unsigned char *J_set, *deltaPrime, *permedInputs, **OT_Outputs; gmp_randstate_t *state; struct eccPoint **builderInputs, ***consistentInputs; int arrayLen, commBufferLen = 0, bufferOffset, J_setSize = 0, circuitsChecked = 0; unsigned char *commBuffer, ***bLists, ***outputHashTable; struct timespec ext_t_0, ext_t_1; struct timespec int_t_0, int_t_1; clock_t ext_c_0, ext_c_1; clock_t int_c_0, int_c_1; set_up_client_socket(readSocket, ipAddress, readPort, serv_addr_read); set_up_client_socket(writeSocket, ipAddress, writePort, serv_addr_write); ext_t_0 = timestamp(); ext_c_0 = clock(); printf("Connected to builder.\n"); rawCheckCircuit = createRawCheckCircuit(rawInputCircuit -> numInputs_P1); state = seedRandGen(); permedInputs = convertChainIntoArray(startOfInputChain, rawInputCircuit -> numInputs_P2); int_t_0 = timestamp(); int_c_0 = clock(); J_set = full_CnC_OT_Mod_Receiver_ECC_Alt(writeSocket, readSocket, &OT_Outputs, rawInputCircuit -> numInputs_P2, state, startOfInputChain, permedInputs, stat_SecParam, 1024); int_c_1 = clock(); int_t_1 = timestamp(); printTiming(&int_t_0, &int_t_1, int_c_0, int_c_1, "OT - Receiver"); printAndZeroBothCounters(); int_t_0 = timestamp(); int_c_0 = clock(); pubInputGroup = receivePublicCommitments(writeSocket, readSocket); for(i = 0; i < stat_SecParam; i ++) { circuitsArray[i] = receiveFullCircuit(writeSocket, readSocket); } commBufferLen = 0; bufferOffset = 0; commBuffer = receiveBoth(readSocket, commBufferLen); outputHashTable = deserialise3D_UChar_Array(commBuffer, rawInputCircuit -> numOutputs, 16, &bufferOffset); free(commBuffer); int_c_1 = clock(); int_t_1 = timestamp(); printTiming(&int_t_0, &int_t_1, int_c_0, int_c_1, "Received Circuits + Hash tables + Public inputs"); printAndZeroBothCounters(); // Input our own bit values. for(i = 0; i < stat_SecParam; i ++) { setCircuitsInputs_Values(startOfInputChain, circuitsArray[i], 0x00); } setInputsFromCharArray(circuitsArray, OT_Outputs, stat_SecParam); int_t_0 = timestamp(); int_c_0 = clock(); // Here we do the decommit... secretsRevealed = executor_decommitToJ_Set(writeSocket, readSocket, circuitsArray, pubInputGroup -> public_inputs, pubInputGroup -> params, J_set, &J_setSize, stat_SecParam); commBufferLen = 0; bufferOffset = 0; commBuffer = receiveBoth(readSocket, commBufferLen); builderInputs = deserialise_ECC_Point_Array(commBuffer, &arrayLen, &bufferOffset); free(commBuffer); commBuffer = receiveBoth(readSocket, commBufferLen); setBuilderInputs(builderInputs, commBuffer, J_set, J_setSize, circuitsArray, pubInputGroup -> public_inputs, pubInputGroup -> params); free(commBuffer); int_c_1 = clock(); int_t_1 = timestamp(); printTiming(&int_t_0, &int_t_1, int_c_0, int_c_1, "Decommit to and receive check circuit secrets."); printAndZeroBothCounters(); int_t_0 = timestamp(); int_c_0 = clock(); printf("\nEvaluating Circuits "); fflush(stdout); for(i = 0; i < stat_SecParam; i ++) { if(0x00 == J_set[i]) { printf("%d, ", i); fflush(stdout); runCircuitExec( circuitsArray[i], writeSocket, readSocket ); } } int_c_1 = clock(); int_t_1 = timestamp(); printTiming(&int_t_0, &int_t_1, int_c_0, int_c_1, "Evaluating all circuits"); printAndZeroBothCounters(); int_t_0 = timestamp(); int_c_0 = clock(); // Perform the cheating detection function. deltaPrime = expandDeltaPrim(circuitsArray, J_set, stat_SecParam); SC_ReturnStruct = SC_DetectCheatingExecutor(writeSocket, readSocket, rawCheckCircuit, deltaPrime, lengthDelta, 3 * stat_SecParam, state ); int_c_1 = clock(); int_t_1 = timestamp(); printTiming(&int_t_0, &int_t_1, int_c_0, int_c_1, "Full sub-computation"); printAndZeroBothCounters(); int_t_0 = timestamp(); int_c_0 = clock(); commBufferLen = 0; bufferOffset = 0; commBuffer = receiveBoth(readSocket, commBufferLen); bLists = deserialise3D_UChar_Array(commBuffer, rawInputCircuit -> numOutputs, 16, &bufferOffset); free(commBuffer); printf("\nVerified B_Lists = %d\n", verifyB_Lists(outputHashTable, bLists, circuitsArray[0] -> numInputsExecutor)); int_c_1 = clock(); int_t_1 = timestamp(); printTiming(&int_t_0, &int_t_1, int_c_0, int_c_1, "Verifying B Lists"); printAndZeroBothCounters(); int_t_0 = timestamp(); int_c_0 = clock(); consistentInputs = getAllConsistentInputsAsPoints(secretsRevealed -> revealedSecrets, pubInputGroup -> public_inputs -> public_keyPairs, pubInputGroup -> params, J_set, stat_SecParam, rawInputCircuit -> numInputs_P1); circuitsChecked = secretInputsToCheckCircuitsConsistentOutputs(circuitsArray, rawInputCircuit, consistentInputs, secretsRevealed -> revealedCircuitSeeds, bLists[0], bLists[1], pubInputGroup -> params, J_set, J_setSize, stat_SecParam); printf("Circuits Correct = %d\n", circuitsChecked); int_c_1 = clock(); int_t_1 = timestamp(); printTiming(&int_t_0, &int_t_1, int_c_0, int_c_1, "Checking Circuits Correct"); printAndZeroBothCounters(); int_t_0 = timestamp(); int_c_0 = clock(); proveConsistencyEvaluationKeys_Exec_L_2013(writeSocket, readSocket, J_set, J_setSize, builderInputs, pubInputGroup -> public_inputs, pubInputGroup -> params, SC_ReturnStruct, state); int_c_1 = clock(); int_t_1 = timestamp(); printTiming(&int_t_0, &int_t_1, int_c_0, int_c_1, "Builder Inputs consistency checked"); printAndZeroBothCounters(); clearPublicInputsWithGroup(pubInputGroup); #pragma omp parallel for private(i) schedule(auto) for(i = 0; i < arrayLen; i ++) { clearECC_Point(builderInputs[i]); } free(builderInputs); ext_c_1 = clock(); ext_t_1 = timestamp(); printTiming(&ext_t_0, &ext_t_1, ext_c_0, ext_c_1, "Total time without connection setup"); printBothTotalCounters(); close_client_socket(readSocket); close_client_socket(writeSocket); // If the secure computation to detect cheating returned NULL it means everything is fine. // Just use the normal majority output. Else the Secure Comp. to detect cheating returned X. // Then we use the Raw Binary Circuit to compute the true answer. if(NULL == SC_ReturnStruct -> output) { printMajorityOutputAsBinary(circuitsArray, stat_SecParam, J_set); } else { setRawCircuitsInputs_Hardcode(startOfInputChain, rawInputCircuit -> gates); setRawCircuitsInputs_Hardcode(SC_ReturnStruct -> output, 0, rawInputCircuit -> numInputs_P1, rawInputCircuit -> gates); evaluateRawCircuit(rawInputCircuit); printOutputHexString_Raw(rawInputCircuit); } /* for(i = 0; i < stat_SecParam; i ++) { freeCircuitStruct(circuitsArray[i], 1); } */ freeRawCircuit(rawInputCircuit); free_idAndValueChain(startOfInputChain); }