Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int sec_init(int socket, int verbose, int reliable, int secure)
- {
- char get_key[] = "get public key";
- int length = strlen( get_key );
- char *public_key = NULL;
- int public_len = PUB_KEY_SIZE;
- int i;
- char out[ENCRYPTED_KEY_SIZE];
- frag_init();
- if(!secure)
- return 1;
- /* Client sends 'get public key' to the server, using frag_send_data() */
- frag_send_data(socket, get_key, length, verbose, reliable);
- /* Receive the string that the server sends, which will contain its public key. */
- frag_receive_data(socket, &public_key, &public_len, verbose, reliable);
- /* Generate a string of 160 random bits for use as the secret key. */
- time_t seconds;
- time(&seconds);
- srand((unsigned int) seconds);
- for (i = 0; i < SECRET_KEY_SIZE; i++)
- {
- secret_key[i] = (unsigned char) rand();
- }
- /* Encrypt the random string with the public key. */
- sec_pk_encrypt((char*) &secret_key[SECRET_KEY_SIZE], &out[ENCRYPTED_KEY_SIZE], &public_key[public_len]);
- /* Send the encrypted string to the server. */
- frag_send_data(socket, out, ENCRYPTED_KEY_SIZE, verbose, reliable);
- char *server_response = calloc(MAX_DATA,sizeof(char));
- int server_len;
- frag_receive_data(socket, &server_response, &server_len, verbose, reliable);
- fprintf(stderr, "Received server resp\n");
- if (!strcmp(server_response, "OK")) return 1;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement