Exemplo n.º 1
0
int main(int argc, char** argv) {
	int n, fd;
        long dec, enc; 
        struct Arguments args;
	pthread_t readThread, writeThread;
        long a, b; // two prime numbers
	if(argc < 5) {
	   printf("file portNum hostName prime1 prime2\n");
	   exit(0);
	}
        a = atoi(argv[3]) + 6;
        b = atoi(argv[4]) + 6; 
        generatePrimeNumbers(&a, &b);
        generateKeys(a, b, &args.my_e, &args.my_d, &args.my_c);
        args.run = 1;  
	
        fd = connectTo(argv[2], atoi(argv[1]));
        args.connfd = fd;
        sendKeys(&args);
        receiveKeys(&args);
        
        pthread_create(&readThread, NULL, readData, &args);
        pthread_create(&writeThread, NULL, writeData, &args);
        pthread_join(readThread, NULL);
        pthread_cancel(writeThread);
	close(fd);
}
Exemplo n.º 2
0
/* Main function that also spawns the thread */
int main(int argc, char** argv) {
    srand(time(NULL));
    pthread_t readThread, writeThread;
    struct Parameters args;
    int connfd;
    long first_prime, sec_prime, e, c, d;

    if(argc < 3) {
        printf("Run client with 'client [host name] [port number]'\n");
        exit(0);
    }

    char host[20];
    strcpy(host, argv[1]);
    connfd = connectTo(host, atoi(argv[2]));

    printf("\nEnter two numbers (m n) to generate keys based on the mth and nth primes: ");
    scanf("%ld %ld", &first_prime, &sec_prime);
    printf("\nGenerating keys...\n");
    generatePrimeNumbers(&first_prime, &sec_prime);
    generateKeys(first_prime, sec_prime, &e, &d, &c);
    printf("Your public key (will be sent to server): %ld %ld\n", e, c);
    printf("Your private key (will not be sent): %ld %ld\n", d, c);

    args.connfd = connfd;
    args.clientE = e;
    args.clientN = c;
    args.clientD = d;
    receive_key(&args);
    send_key(&args);

    pthread_create(&writeThread, NULL, write_data, &args);
    pthread_create(&readThread, NULL, read_data, &args);

    pthread_join(writeThread, NULL);
    pthread_join(readThread, NULL);

    close(connfd);
    exit(0);
}