Advertisement
Guest User

Untitled

a guest
Jun 29th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. int sec_init(int socket, int verbose, int reliable, int secure)
  2. {
  3. frag_init();
  4.  
  5. if(!secure)
  6. return 1;
  7.  
  8. /* Client sends 'get public key' to the server, using frag_send_data() */
  9. char get_key[] = "get public key";
  10. int length = strlen( get_key );
  11. frag_send_data(socket, get_key, length, verbose, reliable);
  12. /* Receive the string that the server sends, which will contain its public key. */
  13. char *public_key = NULL;
  14. int public_len = PUB_KEY_SIZE;
  15. frag_receive_data(socket, &public_key, &public_len, verbose, reliable);
  16. /* Generate a string of 160 random bits for use as the secret key. */
  17. int i;
  18. time_t seconds;
  19. time(&seconds);
  20. srand((unsigned int) seconds);
  21. for (i = 0; i < SECRET_KEY_SIZE; i++)
  22. {
  23. secret_key[i] = (unsigned char) rand();
  24. }
  25. /* Encrypt the random string with the public key. */
  26. char out[ENCRYPTED_KEY_SIZE];
  27. sec_pk_encrypt((char*) &secret_key[SECRET_KEY_SIZE], &out[ENCRYPTED_KEY_SIZE], &public_key[public_len]);
  28. /* Send the encrypted string to the server. */
  29. frag_send_data(socket, out, ENCRYPTED_KEY_SIZE, verbose, reliable);
  30. /* Receive the server's response.
  31. If 'OK' then the random string is assigned as secret_key.
  32. */
  33. char *server_response = NULL;
  34. int server_len;
  35. frag_receive_data(socket, &server_response, &server_len, verbose, reliable);
  36. fprintf(stderr, "Received server resp\n");
  37. int j = strcmp(server_response, "OK");
  38. fprintf(stderr,"got comparison\n");
  39. if (j == 0)
  40. {
  41. fprintf(stderr,"About to return 1\n");
  42. return 1;
  43. }
  44.  
  45. fprintf(stderr, "Sup.\n%s, %d\n", server_response, server_len);
  46. return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement