diff options
author | Christian Grothoff <christian@grothoff.org> | 2015-03-08 15:56:44 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2015-03-08 15:56:44 +0000 |
commit | 226ee707da1f1d38570fc4fa2afe7c0cdf6851e9 (patch) | |
tree | 52703b9c161b245ad12cc1b23c372ef4a2b962f3 /src/core/gnunet-service-core_kx.c | |
parent | 49ecfcfe408b62f96213e1271d036a116f95cd3c (diff) | |
download | gnunet-226ee707da1f1d38570fc4fa2afe7c0cdf6851e9.tar.gz gnunet-226ee707da1f1d38570fc4fa2afe7c0cdf6851e9.zip |
finishing implementation of #3652
Diffstat (limited to 'src/core/gnunet-service-core_kx.c')
-rw-r--r-- | src/core/gnunet-service-core_kx.c | 27 |
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); |