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.c49
1 files changed, 47 insertions, 2 deletions
diff --git a/src/core/gnunet-service-core_kx.c b/src/core/gnunet-service-core_kx.c
index 19b692ab9..4b9a9498b 100644
--- a/src/core/gnunet-service-core_kx.c
+++ b/src/core/gnunet-service-core_kx.c
@@ -654,6 +654,11 @@ GSC_KX_start (const struct GNUNET_PeerIdentity *pid)
654{ 654{
655 struct GSC_KeyExchangeInfo *kx; 655 struct GSC_KeyExchangeInfo *kx;
656 656
657#if DEBUG_CORE
658 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
659 "Initiating key exchange with `%s'\n",
660 GNUNET_i2s (pid));
661#endif
657 kx = GNUNET_malloc (sizeof (struct GSC_KeyExchangeInfo)); 662 kx = GNUNET_malloc (sizeof (struct GSC_KeyExchangeInfo));
658 kx->peer = *pid; 663 kx->peer = *pid;
659 kx->set_key_retry_frequency = INITIAL_SET_KEY_RETRY_FREQUENCY; 664 kx->set_key_retry_frequency = INITIAL_SET_KEY_RETRY_FREQUENCY;
@@ -782,6 +787,11 @@ GSC_KX_handle_set_key (struct GSC_KeyExchangeInfo *kx,
782 GNUNET_STATISTICS_update (GSC_stats, 787 GNUNET_STATISTICS_update (GSC_stats,
783 gettext_noop ("# SET_KEY messages decrypted"), 1, 788 gettext_noop ("# SET_KEY messages decrypted"), 1,
784 GNUNET_NO); 789 GNUNET_NO);
790#if DEBUG_CORE
791 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
792 "Received SET_KEY from `%s'\n",
793 GNUNET_i2s (&kx->peer));
794#endif
785 kx->decrypt_key = k; 795 kx->decrypt_key = k;
786 if (kx->decrypt_key_created.abs_value != t.abs_value) 796 if (kx->decrypt_key_created.abs_value != t.abs_value)
787 { 797 {
@@ -895,6 +905,11 @@ GSC_KX_handle_ping (struct GSC_KeyExchangeInfo *kx,
895 GNUNET_break_op (0); 905 GNUNET_break_op (0);
896 return; 906 return;
897 } 907 }
908#if DEBUG_CORE
909 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
910 "Received PING from `%s'\n",
911 GNUNET_i2s (&kx->peer));
912#endif
898 /* construct PONG */ 913 /* construct PONG */
899 tx.reserved = GNUNET_BANDWIDTH_VALUE_MAX; 914 tx.reserved = GNUNET_BANDWIDTH_VALUE_MAX;
900 tx.challenge = t.challenge; 915 tx.challenge = t.challenge;
@@ -999,6 +1014,11 @@ send_keep_alive (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
999 kx->status = KX_STATE_DOWN; 1014 kx->status = KX_STATE_DOWN;
1000 return; 1015 return;
1001 } 1016 }
1017#if DEBUG_CORE
1018 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1019 "Sending KEEPALIVE to `%s'\n",
1020 GNUNET_i2s (&kx->peer));
1021#endif
1002 setup_fresh_ping (kx); 1022 setup_fresh_ping (kx);
1003 GSC_NEIGHBOURS_transmit (&kx->peer, 1023 GSC_NEIGHBOURS_transmit (&kx->peer,
1004 &kx->ping.header, 1024 &kx->ping.header,
@@ -1053,7 +1073,6 @@ GSC_KX_handle_pong (struct GSC_KeyExchangeInfo *kx, const struct GNUNET_MessageH
1053 } 1073 }
1054 GNUNET_STATISTICS_update (GSC_stats, gettext_noop ("# PONG messages received"), 1074 GNUNET_STATISTICS_update (GSC_stats, gettext_noop ("# PONG messages received"),
1055 1, GNUNET_NO); 1075 1, GNUNET_NO);
1056
1057 if ( (kx->status != KX_STATE_KEY_RECEIVED) && 1076 if ( (kx->status != KX_STATE_KEY_RECEIVED) &&
1058 (kx->status != KX_STATE_UP) ) 1077 (kx->status != KX_STATE_UP) )
1059 { 1078 {
@@ -1099,6 +1118,11 @@ GSC_KX_handle_pong (struct GSC_KeyExchangeInfo *kx, const struct GNUNET_MessageH
1099#endif 1118#endif
1100 return; 1119 return;
1101 } 1120 }
1121#if DEBUG_CORE
1122 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1123 "Received PONG from `%s'\n",
1124 GNUNET_i2s (&kx->peer));
1125#endif
1102 switch (kx->status) 1126 switch (kx->status)
1103 { 1127 {
1104 case KX_STATE_DOWN: 1128 case KX_STATE_DOWN:
@@ -1144,6 +1168,11 @@ send_key (struct GSC_KeyExchangeInfo *kx)
1144 if (kx->public_key == NULL) 1168 if (kx->public_key == NULL)
1145 { 1169 {
1146 /* lookup public key, then try again */ 1170 /* lookup public key, then try again */
1171#if DEBUG_CORE
1172 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1173 "Trying to obtain public key for `%s'\n",
1174 GNUNET_i2s (&kx->peer));
1175#endif
1147 kx->pitr = 1176 kx->pitr =
1148 GNUNET_PEERINFO_iterate (peerinfo, &kx->peer, 1177 GNUNET_PEERINFO_iterate (peerinfo, &kx->peer,
1149 GNUNET_TIME_UNIT_FOREVER_REL /* timeout? */, 1178 GNUNET_TIME_UNIT_FOREVER_REL /* timeout? */,
@@ -1178,7 +1207,11 @@ send_key (struct GSC_KeyExchangeInfo *kx)
1178 1207
1179 /* always update sender status in SET KEY message */ 1208 /* always update sender status in SET KEY message */
1180 kx->skm.sender_status = htonl ((int32_t) kx->status); 1209 kx->skm.sender_status = htonl ((int32_t) kx->status);
1181 1210#if DEBUG_CORE
1211 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1212 "Sending SET_KEY and PING to `%s'\n",
1213 GNUNET_i2s (&kx->peer));
1214#endif
1182 GSC_NEIGHBOURS_transmit (&kx->peer, 1215 GSC_NEIGHBOURS_transmit (&kx->peer,
1183 &kx->skm.header, 1216 &kx->skm.header,
1184 kx->set_key_retry_frequency); 1217 kx->set_key_retry_frequency);
@@ -1228,6 +1261,12 @@ GSC_KX_encrypt_and_transmit (struct GSC_KeyExchangeInfo *kx,
1228 GNUNET_assert (GNUNET_OK == 1261 GNUNET_assert (GNUNET_OK ==
1229 do_encrypt (kx, &iv, &ph->sequence_number, &em->sequence_number, 1262 do_encrypt (kx, &iv, &ph->sequence_number, &em->sequence_number,
1230 used - ENCRYPTED_HEADER_SIZE)); 1263 used - ENCRYPTED_HEADER_SIZE));
1264#if DEBUG_CORE
1265 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1266 "Encrypted %u bytes for %s\n",
1267 used - ENCRYPTED_HEADER_SIZE,
1268 GNUNET_i2s (&kx->peer));
1269#endif
1231 derive_auth_key (&auth_key, &kx->encrypt_key, ph->iv_seed, 1270 derive_auth_key (&auth_key, &kx->encrypt_key, ph->iv_seed,
1232 kx->encrypt_key_created); 1271 kx->encrypt_key_created);
1233 GNUNET_CRYPTO_hmac (&auth_key, &em->sequence_number, 1272 GNUNET_CRYPTO_hmac (&auth_key, &em->sequence_number,
@@ -1320,6 +1359,12 @@ GSC_KX_handle_encrypted_message (struct GSC_KeyExchangeInfo *kx,
1320 do_decrypt (kx, &iv, &m->sequence_number, &buf[ENCRYPTED_HEADER_SIZE], 1359 do_decrypt (kx, &iv, &m->sequence_number, &buf[ENCRYPTED_HEADER_SIZE],
1321 size - ENCRYPTED_HEADER_SIZE)) 1360 size - ENCRYPTED_HEADER_SIZE))
1322 return; 1361 return;
1362#if DEBUG_CORE
1363 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1364 "Decrypted %u bytes from %s\n",
1365 size - ENCRYPTED_HEADER_SIZE,
1366 GNUNET_i2s (&kx->peer));
1367#endif
1323 pt = (struct EncryptedMessage *) buf; 1368 pt = (struct EncryptedMessage *) buf;
1324 1369
1325 /* validate sequence number */ 1370 /* validate sequence number */