aboutsummaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2015-03-08 15:56:44 +0000
committerChristian Grothoff <christian@grothoff.org>2015-03-08 15:56:44 +0000
commit226ee707da1f1d38570fc4fa2afe7c0cdf6851e9 (patch)
tree52703b9c161b245ad12cc1b23c372ef4a2b962f3 /src/core
parent49ecfcfe408b62f96213e1271d036a116f95cd3c (diff)
downloadgnunet-226ee707da1f1d38570fc4fa2afe7c0cdf6851e9.tar.gz
gnunet-226ee707da1f1d38570fc4fa2afe7c0cdf6851e9.zip
finishing implementation of #3652
Diffstat (limited to 'src/core')
-rw-r--r--src/core/gnunet-service-core_kx.c27
-rw-r--r--src/core/gnunet-service-core_sessions.c14
2 files changed, 29 insertions, 12 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);
diff --git a/src/core/gnunet-service-core_sessions.c b/src/core/gnunet-service-core_sessions.c
index 289d9468f..a16da8b7e 100644
--- a/src/core/gnunet-service-core_sessions.c
+++ b/src/core/gnunet-service-core_sessions.c
@@ -275,10 +275,13 @@ transmit_typemap_task (void *cls,
275 GNUNET_SCHEDULER_add_delayed (delay, 275 GNUNET_SCHEDULER_add_delayed (delay,
276 &transmit_typemap_task, session); 276 &transmit_typemap_task, session);
277 GNUNET_STATISTICS_update (GSC_stats, 277 GNUNET_STATISTICS_update (GSC_stats,
278 gettext_noop ("# type map refreshes sent"), 1, 278 gettext_noop ("# type map refreshes sent"),
279 1,
279 GNUNET_NO); 280 GNUNET_NO);
280 hdr = GSC_TYPEMAP_compute_type_map_message (); 281 hdr = GSC_TYPEMAP_compute_type_map_message ();
281 GSC_KX_encrypt_and_transmit (session->kxinfo, hdr, ntohs (hdr->size)); 282 GSC_KX_encrypt_and_transmit (session->kxinfo,
283 hdr,
284 ntohs (hdr->size));
282 GNUNET_free (hdr); 285 GNUNET_free (hdr);
283} 286}
284 287
@@ -761,10 +764,13 @@ try_transmission (struct Session *session)
761 } 764 }
762 GNUNET_STATISTICS_set (GSC_stats, 765 GNUNET_STATISTICS_set (GSC_stats,
763 "# avg payload per encrypted message", 766 "# avg payload per encrypted message",
764 total_bytes / total_msgs, GNUNET_NO); 767 total_bytes / total_msgs,
768 GNUNET_NO);
765 /* now actually transmit... */ 769 /* now actually transmit... */
766 session->ready_to_transmit = GNUNET_NO; 770 session->ready_to_transmit = GNUNET_NO;
767 GSC_KX_encrypt_and_transmit (session->kxinfo, pbuf, used); 771 GSC_KX_encrypt_and_transmit (session->kxinfo,
772 pbuf,
773 used);
768 } 774 }
769} 775}
770 776