aboutsummaryrefslogtreecommitdiff
path: root/src/core/gnunet-service-core_kx.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/gnunet-service-core_kx.c')
-rw-r--r--src/core/gnunet-service-core_kx.c27
1 files changed, 19 insertions, 8 deletions
diff --git a/src/core/gnunet-service-core_kx.c b/src/core/gnunet-service-core_kx.c
index 4983dab0e..9d8fb415b 100644
--- a/src/core/gnunet-service-core_kx.c
+++ b/src/core/gnunet-service-core_kx.c
@@ -1095,7 +1095,7 @@ GSC_KX_handle_ping (struct GSC_KeyExchangeInfo *kx,
1095 GNUNET_NO); 1095 GNUNET_NO);
1096 GSC_NEIGHBOURS_transmit (&kx->peer, 1096 GSC_NEIGHBOURS_transmit (&kx->peer,
1097 &tp.header, 1097 &tp.header,
1098 GNUNET_TIME_UNIT_FOREVER_REL /* FIXME: timeout */ ); 1098 kx->set_key_retry_frequency);
1099} 1099}
1100 1100
1101 1101
@@ -1378,24 +1378,35 @@ GSC_KX_encrypt_and_transmit (struct GSC_KeyExchangeInfo *kx,
1378 ph->iv_seed = calculate_seed (kx); 1378 ph->iv_seed = calculate_seed (kx);
1379 ph->reserved = 0; 1379 ph->reserved = 0;
1380 ph->timestamp = GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ()); 1380 ph->timestamp = GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ());
1381 memcpy (&ph[1], payload, payload_size); 1381 memcpy (&ph[1],
1382 payload,
1383 payload_size);
1382 1384
1383 em = (struct EncryptedMessage *) cbuf; 1385 em = (struct EncryptedMessage *) cbuf;
1384 em->header.size = htons (used); 1386 em->header.size = htons (used);
1385 em->header.type = htons (GNUNET_MESSAGE_TYPE_CORE_ENCRYPTED_MESSAGE); 1387 em->header.type = htons (GNUNET_MESSAGE_TYPE_CORE_ENCRYPTED_MESSAGE);
1386 em->iv_seed = ph->iv_seed; 1388 em->iv_seed = ph->iv_seed;
1387 derive_iv (&iv, &kx->encrypt_key, ph->iv_seed, &kx->peer); 1389 derive_iv (&iv,
1390 &kx->encrypt_key,
1391 ph->iv_seed,
1392 &kx->peer);
1388 GNUNET_assert (GNUNET_OK == 1393 GNUNET_assert (GNUNET_OK ==
1389 do_encrypt (kx, &iv, &ph->sequence_number, 1394 do_encrypt (kx,
1395 &iv,
1396 &ph->sequence_number,
1390 &em->sequence_number, 1397 &em->sequence_number,
1391 used - ENCRYPTED_HEADER_SIZE)); 1398 used - ENCRYPTED_HEADER_SIZE));
1392 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Encrypted %u bytes for %s\n", 1399 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1393 used - ENCRYPTED_HEADER_SIZE, GNUNET_i2s (&kx->peer)); 1400 "Encrypted %u bytes for %s\n",
1401 used - ENCRYPTED_HEADER_SIZE,
1402 GNUNET_i2s (&kx->peer));
1394 derive_auth_key (&auth_key, 1403 derive_auth_key (&auth_key,
1395 &kx->encrypt_key, 1404 &kx->encrypt_key,
1396 ph->iv_seed); 1405 ph->iv_seed);
1397 GNUNET_CRYPTO_hmac (&auth_key, &em->sequence_number, 1406 GNUNET_CRYPTO_hmac (&auth_key,
1398 used - ENCRYPTED_HEADER_SIZE, &em->hmac); 1407 &em->sequence_number,
1408 used - ENCRYPTED_HEADER_SIZE,
1409 &em->hmac);
1399 GSC_NEIGHBOURS_transmit (&kx->peer, 1410 GSC_NEIGHBOURS_transmit (&kx->peer,
1400 &em->header, 1411 &em->header,
1401 GNUNET_TIME_UNIT_FOREVER_REL); 1412 GNUNET_TIME_UNIT_FOREVER_REL);