Advertisement
Guest User

Untitled

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