aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac4
-rw-r--r--po/POTFILES.in114
-rw-r--r--src/include/gnunet_crypto_lib.h20
-rw-r--r--src/transport/Makefile.am1
-rw-r--r--src/transport/gnunet-communicator-tcp.c10
-rw-r--r--src/transport/gnunet-service-tng.c68
-rw-r--r--src/util/crypto_random.c39
7 files changed, 169 insertions, 87 deletions
diff --git a/configure.ac b/configure.ac
index b30141564..3439a6d6f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -212,6 +212,10 @@ AC_UNALIGNED_64_ACCESS
212AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32]) 212AC_SEARCH_LIBS([gethostbyname], [nsl ws2_32])
213AC_SEARCH_LIBS([memrchr], [], 213AC_SEARCH_LIBS([memrchr], [],
214 AC_DEFINE(HAVE_MEMRCHR,1,[memrchr supported]), []) 214 AC_DEFINE(HAVE_MEMRCHR,1,[memrchr supported]), [])
215AC_SEARCH_LIBS([memset_s], [],
216 AC_DEFINE(HAVE_MEMSET_S,1,[memset_s supported]), [])
217AC_SEARCH_LIBS([memset_s], [],
218 AC_DEFINE(HAVE_EXPLICIT_BZERO,1,[explicit_bzero supported]), [])
215AC_CHECK_LIB(socket, socket) 219AC_CHECK_LIB(socket, socket)
216AC_CHECK_LIB(m, log) 220AC_CHECK_LIB(m, log)
217AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported])) 221AC_CHECK_LIB(c, getloadavg, AC_DEFINE(HAVE_GETLOADAVG,1,[getloadavg supported]))
diff --git a/po/POTFILES.in b/po/POTFILES.in
index f9000c654..f37590613 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -4,14 +4,6 @@ src/arm/arm_monitor_api.c
4src/arm/gnunet-arm.c 4src/arm/gnunet-arm.c
5src/arm/gnunet-service-arm.c 5src/arm/gnunet-service-arm.c
6src/arm/mockup-service.c 6src/arm/mockup-service.c
7src/ats-tests/ats-testing-experiment.c
8src/ats-tests/ats-testing-log.c
9src/ats-tests/ats-testing-preferences.c
10src/ats-tests/ats-testing-traffic.c
11src/ats-tests/ats-testing.c
12src/ats-tests/gnunet-ats-sim.c
13src/ats-tests/gnunet-solver-eval.c
14src/ats-tool/gnunet-ats.c
15src/ats/ats_api2_application.c 7src/ats/ats_api2_application.c
16src/ats/ats_api2_transport.c 8src/ats/ats_api2_transport.c
17src/ats/ats_api_connectivity.c 9src/ats/ats_api_connectivity.c
@@ -19,10 +11,10 @@ src/ats/ats_api_performance.c
19src/ats/ats_api_scanner.c 11src/ats/ats_api_scanner.c
20src/ats/ats_api_scheduling.c 12src/ats/ats_api_scheduling.c
21src/ats/gnunet-ats-solver-eval.c 13src/ats/gnunet-ats-solver-eval.c
22src/ats/gnunet-service-ats-new.c
23src/ats/gnunet-service-ats.c
24src/ats/gnunet-service-ats_addresses.c 14src/ats/gnunet-service-ats_addresses.c
15src/ats/gnunet-service-ats.c
25src/ats/gnunet-service-ats_connectivity.c 16src/ats/gnunet-service-ats_connectivity.c
17src/ats/gnunet-service-ats-new.c
26src/ats/gnunet-service-ats_normalization.c 18src/ats/gnunet-service-ats_normalization.c
27src/ats/gnunet-service-ats_performance.c 19src/ats/gnunet-service-ats_performance.c
28src/ats/gnunet-service-ats_plugins.c 20src/ats/gnunet-service-ats_plugins.c
@@ -34,6 +26,14 @@ src/ats/plugin_ats2_simple.c
34src/ats/plugin_ats_mlp.c 26src/ats/plugin_ats_mlp.c
35src/ats/plugin_ats_proportional.c 27src/ats/plugin_ats_proportional.c
36src/ats/plugin_ats_ril.c 28src/ats/plugin_ats_ril.c
29src/ats-tests/ats-testing.c
30src/ats-tests/ats-testing-experiment.c
31src/ats-tests/ats-testing-log.c
32src/ats-tests/ats-testing-preferences.c
33src/ats-tests/ats-testing-traffic.c
34src/ats-tests/gnunet-ats-sim.c
35src/ats-tests/gnunet-solver-eval.c
36src/ats-tool/gnunet-ats.c
37src/auction/gnunet-auction-create.c 37src/auction/gnunet-auction-create.c
38src/auction/gnunet-auction-info.c 38src/auction/gnunet-auction-info.c
39src/auction/gnunet-auction-join.c 39src/auction/gnunet-auction-join.c
@@ -50,8 +50,8 @@ src/cadet/cadet_api_list_peers.c
50src/cadet/cadet_api_list_tunnels.c 50src/cadet/cadet_api_list_tunnels.c
51src/cadet/cadet_test_lib.c 51src/cadet/cadet_test_lib.c
52src/cadet/desirability_table.c 52src/cadet/desirability_table.c
53src/cadet/gnunet-cadet-profiler.c
54src/cadet/gnunet-cadet.c 53src/cadet/gnunet-cadet.c
54src/cadet/gnunet-cadet-profiler.c
55src/cadet/gnunet-service-cadet.c 55src/cadet/gnunet-service-cadet.c
56src/cadet/gnunet-service-cadet_channel.c 56src/cadet/gnunet-service-cadet_channel.c
57src/cadet/gnunet-service-cadet_connection.c 57src/cadet/gnunet-service-cadet_connection.c
@@ -67,15 +67,15 @@ src/consensus/gnunet-service-consensus.c
67src/consensus/plugin_block_consensus.c 67src/consensus/plugin_block_consensus.c
68src/conversation/conversation_api.c 68src/conversation/conversation_api.c
69src/conversation/conversation_api_call.c 69src/conversation/conversation_api_call.c
70src/conversation/gnunet-conversation-test.c
71src/conversation/gnunet-conversation.c 70src/conversation/gnunet-conversation.c
72src/conversation/gnunet-helper-audio-playback-gst.c 71src/conversation/gnunet-conversation-test.c
72src/conversation/gnunet_gst.c
73src/conversation/gnunet_gst_test.c
73src/conversation/gnunet-helper-audio-playback.c 74src/conversation/gnunet-helper-audio-playback.c
74src/conversation/gnunet-helper-audio-record-gst.c 75src/conversation/gnunet-helper-audio-playback-gst.c
75src/conversation/gnunet-helper-audio-record.c 76src/conversation/gnunet-helper-audio-record.c
77src/conversation/gnunet-helper-audio-record-gst.c
76src/conversation/gnunet-service-conversation.c 78src/conversation/gnunet-service-conversation.c
77src/conversation/gnunet_gst.c
78src/conversation/gnunet_gst_test.c
79src/conversation/microphone.c 79src/conversation/microphone.c
80src/conversation/plugin_gnsrecord_conversation.c 80src/conversation/plugin_gnsrecord_conversation.c
81src/conversation/speaker.c 81src/conversation/speaker.c
@@ -112,6 +112,7 @@ src/dht/dht_api.c
112src/dht/dht_test_lib.c 112src/dht/dht_test_lib.c
113src/dht/gnunet-dht-get.c 113src/dht/gnunet-dht-get.c
114src/dht/gnunet-dht-monitor.c 114src/dht/gnunet-dht-monitor.c
115src/dht/gnunet_dht_profiler.c
115src/dht/gnunet-dht-put.c 116src/dht/gnunet-dht-put.c
116src/dht/gnunet-service-dht.c 117src/dht/gnunet-service-dht.c
117src/dht/gnunet-service-dht_clients.c 118src/dht/gnunet-service-dht_clients.c
@@ -120,7 +121,6 @@ src/dht/gnunet-service-dht_hello.c
120src/dht/gnunet-service-dht_neighbours.c 121src/dht/gnunet-service-dht_neighbours.c
121src/dht/gnunet-service-dht_nse.c 122src/dht/gnunet-service-dht_nse.c
122src/dht/gnunet-service-dht_routing.c 123src/dht/gnunet-service-dht_routing.c
123src/dht/gnunet_dht_profiler.c
124src/dht/plugin_block_dht.c 124src/dht/plugin_block_dht.c
125src/dns/dns_api.c 125src/dns/dns_api.c
126src/dns/gnunet-dns-monitor.c 126src/dns/gnunet-dns-monitor.c
@@ -130,8 +130,8 @@ src/dns/gnunet-service-dns.c
130src/dns/gnunet-zonewalk.c 130src/dns/gnunet-zonewalk.c
131src/dns/plugin_block_dns.c 131src/dns/plugin_block_dns.c
132src/exit/gnunet-daemon-exit.c 132src/exit/gnunet-daemon-exit.c
133src/exit/gnunet-helper-exit-windows.c
134src/exit/gnunet-helper-exit.c 133src/exit/gnunet-helper-exit.c
134src/exit/gnunet-helper-exit-windows.c
135src/fragmentation/defragmentation.c 135src/fragmentation/defragmentation.c
136src/fragmentation/fragmentation.c 136src/fragmentation/fragmentation.c
137src/fs/fs_api.c 137src/fs/fs_api.c
@@ -156,8 +156,8 @@ src/fs/gnunet-auto-share.c
156src/fs/gnunet-daemon-fsprofiler.c 156src/fs/gnunet-daemon-fsprofiler.c
157src/fs/gnunet-directory.c 157src/fs/gnunet-directory.c
158src/fs/gnunet-download.c 158src/fs/gnunet-download.c
159src/fs/gnunet-fs-profiler.c
160src/fs/gnunet-fs.c 159src/fs/gnunet-fs.c
160src/fs/gnunet-fs-profiler.c
161src/fs/gnunet-helper-fs-publish.c 161src/fs/gnunet-helper-fs-publish.c
162src/fs/gnunet-publish.c 162src/fs/gnunet-publish.c
163src/fs/gnunet-search.c 163src/fs/gnunet-search.c
@@ -177,10 +177,10 @@ src/gns/gns_tld_api.c
177src/gns/gnunet-bcd.c 177src/gns/gnunet-bcd.c
178src/gns/gnunet-dns2gns.c 178src/gns/gnunet-dns2gns.c
179src/gns/gnunet-gns-benchmark.c 179src/gns/gnunet-gns-benchmark.c
180src/gns/gnunet-gns.c
180src/gns/gnunet-gns-helper-service-w32.c 181src/gns/gnunet-gns-helper-service-w32.c
181src/gns/gnunet-gns-import.c 182src/gns/gnunet-gns-import.c
182src/gns/gnunet-gns-proxy.c 183src/gns/gnunet-gns-proxy.c
183src/gns/gnunet-gns.c
184src/gns/gnunet-service-gns.c 184src/gns/gnunet-service-gns.c
185src/gns/gnunet-service-gns_interceptor.c 185src/gns/gnunet-service-gns_interceptor.c
186src/gns/gnunet-service-gns_resolver.c 186src/gns/gnunet-service-gns_resolver.c
@@ -189,19 +189,19 @@ src/gns/nss/nss_gns_query.c
189src/gns/plugin_block_gns.c 189src/gns/plugin_block_gns.c
190src/gns/plugin_gnsrecord_gns.c 190src/gns/plugin_gnsrecord_gns.c
191src/gns/plugin_rest_gns.c 191src/gns/plugin_rest_gns.c
192src/gns/w32nsp-install.c
193src/gns/w32nsp-resolve.c
194src/gns/w32nsp-uninstall.c
195src/gns/w32nsp.c
196src/gnsrecord/gnsrecord.c 192src/gnsrecord/gnsrecord.c
197src/gnsrecord/gnsrecord_crypto.c 193src/gnsrecord/gnsrecord_crypto.c
198src/gnsrecord/gnsrecord_misc.c 194src/gnsrecord/gnsrecord_misc.c
199src/gnsrecord/gnsrecord_serialization.c 195src/gnsrecord/gnsrecord_serialization.c
200src/gnsrecord/plugin_gnsrecord_dns.c 196src/gnsrecord/plugin_gnsrecord_dns.c
197src/gns/w32nsp.c
198src/gns/w32nsp-install.c
199src/gns/w32nsp-resolve.c
200src/gns/w32nsp-uninstall.c
201src/hello/address.c 201src/hello/address.c
202src/hello/gnunet-hello.c 202src/hello/gnunet-hello.c
203src/hello/hello-ng.c
204src/hello/hello.c 203src/hello/hello.c
204src/hello/hello-ng.c
205src/hostlist/gnunet-daemon-hostlist.c 205src/hostlist/gnunet-daemon-hostlist.c
206src/hostlist/gnunet-daemon-hostlist_client.c 206src/hostlist/gnunet-daemon-hostlist_client.c
207src/hostlist/gnunet-daemon-hostlist_server.c 207src/hostlist/gnunet-daemon-hostlist_server.c
@@ -225,8 +225,8 @@ src/namecache/namecache_api.c
225src/namecache/plugin_namecache_flat.c 225src/namecache/plugin_namecache_flat.c
226src/namecache/plugin_namecache_postgres.c 226src/namecache/plugin_namecache_postgres.c
227src/namecache/plugin_namecache_sqlite.c 227src/namecache/plugin_namecache_sqlite.c
228src/namestore/gnunet-namestore-fcfsd.c
229src/namestore/gnunet-namestore.c 228src/namestore/gnunet-namestore.c
229src/namestore/gnunet-namestore-fcfsd.c
230src/namestore/gnunet-service-namestore.c 230src/namestore/gnunet-service-namestore.c
231src/namestore/gnunet-zoneimport.c 231src/namestore/gnunet-zoneimport.c
232src/namestore/namestore_api.c 232src/namestore/namestore_api.c
@@ -242,10 +242,10 @@ src/nat-auto/gnunet-service-nat-auto.c
242src/nat-auto/gnunet-service-nat-auto_legacy.c 242src/nat-auto/gnunet-service-nat-auto_legacy.c
243src/nat-auto/nat_auto_api.c 243src/nat-auto/nat_auto_api.c
244src/nat-auto/nat_auto_api_test.c 244src/nat-auto/nat_auto_api_test.c
245src/nat/gnunet-helper-nat-client-windows.c
246src/nat/gnunet-helper-nat-client.c 245src/nat/gnunet-helper-nat-client.c
247src/nat/gnunet-helper-nat-server-windows.c 246src/nat/gnunet-helper-nat-client-windows.c
248src/nat/gnunet-helper-nat-server.c 247src/nat/gnunet-helper-nat-server.c
248src/nat/gnunet-helper-nat-server-windows.c
249src/nat/gnunet-nat.c 249src/nat/gnunet-nat.c
250src/nat/gnunet-service-nat.c 250src/nat/gnunet-service-nat.c
251src/nat/gnunet-service-nat_externalip.c 251src/nat/gnunet-service-nat_externalip.c
@@ -254,17 +254,17 @@ src/nat/gnunet-service-nat_mini.c
254src/nat/gnunet-service-nat_stun.c 254src/nat/gnunet-service-nat_stun.c
255src/nat/nat_api.c 255src/nat/nat_api.c
256src/nat/nat_api_stun.c 256src/nat/nat_api_stun.c
257src/nse/gnunet-nse-profiler.c
258src/nse/gnunet-nse.c 257src/nse/gnunet-nse.c
258src/nse/gnunet-nse-profiler.c
259src/nse/gnunet-service-nse.c 259src/nse/gnunet-service-nse.c
260src/nse/nse_api.c 260src/nse/nse_api.c
261src/nt/nt.c 261src/nt/nt.c
262src/peerinfo-tool/gnunet-peerinfo.c
263src/peerinfo-tool/gnunet-peerinfo_plugins.c
264src/peerinfo-tool/plugin_rest_peerinfo.c
265src/peerinfo/gnunet-service-peerinfo.c 262src/peerinfo/gnunet-service-peerinfo.c
266src/peerinfo/peerinfo_api.c 263src/peerinfo/peerinfo_api.c
267src/peerinfo/peerinfo_api_notify.c 264src/peerinfo/peerinfo_api_notify.c
265src/peerinfo-tool/gnunet-peerinfo.c
266src/peerinfo-tool/gnunet-peerinfo_plugins.c
267src/peerinfo-tool/plugin_rest_peerinfo.c
268src/peerstore/gnunet-peerstore.c 268src/peerstore/gnunet-peerstore.c
269src/peerstore/gnunet-service-peerstore.c 269src/peerstore/gnunet-service-peerstore.c
270src/peerstore/peerstore_api.c 270src/peerstore/peerstore_api.c
@@ -311,22 +311,22 @@ src/revocation/gnunet-revocation.c
311src/revocation/gnunet-service-revocation.c 311src/revocation/gnunet-service-revocation.c
312src/revocation/plugin_block_revocation.c 312src/revocation/plugin_block_revocation.c
313src/revocation/revocation_api.c 313src/revocation/revocation_api.c
314src/rps/gnunet-rps-profiler.c
315src/rps/gnunet-rps.c 314src/rps/gnunet-rps.c
315src/rps/gnunet-rps-profiler.c
316src/rps/gnunet-service-rps.c 316src/rps/gnunet-service-rps.c
317src/rps/gnunet-service-rps_custommap.c 317src/rps/gnunet-service-rps_custommap.c
318src/rps/gnunet-service-rps_sampler.c 318src/rps/gnunet-service-rps_sampler.c
319src/rps/gnunet-service-rps_sampler_elem.c 319src/rps/gnunet-service-rps_sampler_elem.c
320src/rps/gnunet-service-rps_view.c 320src/rps/gnunet-service-rps_view.c
321src/rps/rps_api.c
321src/rps/rps-sampler_client.c 322src/rps/rps-sampler_client.c
322src/rps/rps-sampler_common.c 323src/rps/rps-sampler_common.c
323src/rps/rps-test_util.c 324src/rps/rps-test_util.c
324src/rps/rps_api.c
325src/scalarproduct/gnunet-scalarproduct.c 325src/scalarproduct/gnunet-scalarproduct.c
326src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c
327src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c
328src/scalarproduct/gnunet-service-scalarproduct_alice.c 326src/scalarproduct/gnunet-service-scalarproduct_alice.c
329src/scalarproduct/gnunet-service-scalarproduct_bob.c 327src/scalarproduct/gnunet-service-scalarproduct_bob.c
328src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c
329src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c
330src/scalarproduct/scalarproduct_api.c 330src/scalarproduct/scalarproduct_api.c
331src/secretsharing/gnunet-secretsharing-profiler.c 331src/secretsharing/gnunet-secretsharing-profiler.c
332src/secretsharing/gnunet-service-secretsharing.c 332src/secretsharing/gnunet-service-secretsharing.c
@@ -352,16 +352,15 @@ src/statistics/gnunet-statistics.c
352src/statistics/statistics_api.c 352src/statistics/statistics_api.c
353src/template/gnunet-service-template.c 353src/template/gnunet-service-template.c
354src/template/gnunet-template.c 354src/template/gnunet-template.c
355src/testbed-logger/gnunet-service-testbed-logger.c
356src/testbed-logger/testbed_logger_api.c
357src/testbed/generate-underlay-topology.c 355src/testbed/generate-underlay-topology.c
358src/testbed/gnunet-daemon-latency-logger.c 356src/testbed/gnunet-daemon-latency-logger.c
359src/testbed/gnunet-daemon-testbed-blacklist.c 357src/testbed/gnunet-daemon-testbed-blacklist.c
360src/testbed/gnunet-daemon-testbed-underlay.c 358src/testbed/gnunet-daemon-testbed-underlay.c
361src/testbed/gnunet-helper-testbed.c 359src/testbed/gnunet-helper-testbed.c
360src/testbed/gnunet_mpi_test.c
362src/testbed/gnunet-service-test-barriers.c 361src/testbed/gnunet-service-test-barriers.c
363src/testbed/gnunet-service-testbed.c
364src/testbed/gnunet-service-testbed_barriers.c 362src/testbed/gnunet-service-testbed_barriers.c
363src/testbed/gnunet-service-testbed.c
365src/testbed/gnunet-service-testbed_cache.c 364src/testbed/gnunet-service-testbed_cache.c
366src/testbed/gnunet-service-testbed_connectionpool.c 365src/testbed/gnunet-service-testbed_connectionpool.c
367src/testbed/gnunet-service-testbed_cpustatus.c 366src/testbed/gnunet-service-testbed_cpustatus.c
@@ -369,19 +368,20 @@ src/testbed/gnunet-service-testbed_links.c
369src/testbed/gnunet-service-testbed_meminfo.c 368src/testbed/gnunet-service-testbed_meminfo.c
370src/testbed/gnunet-service-testbed_oc.c 369src/testbed/gnunet-service-testbed_oc.c
371src/testbed/gnunet-service-testbed_peers.c 370src/testbed/gnunet-service-testbed_peers.c
372src/testbed/gnunet-testbed-profiler.c
373src/testbed/gnunet_mpi_test.c
374src/testbed/gnunet_testbed_mpi_spawn.c 371src/testbed/gnunet_testbed_mpi_spawn.c
375src/testbed/testbed_api.c 372src/testbed/gnunet-testbed-profiler.c
373src/testbed-logger/gnunet-service-testbed-logger.c
374src/testbed-logger/testbed_logger_api.c
376src/testbed/testbed_api_barriers.c 375src/testbed/testbed_api_barriers.c
376src/testbed/testbed_api.c
377src/testbed/testbed_api_hosts.c 377src/testbed/testbed_api_hosts.c
378src/testbed/testbed_api_operations.c 378src/testbed/testbed_api_operations.c
379src/testbed/testbed_api_peers.c 379src/testbed/testbed_api_peers.c
380src/testbed/testbed_api_sd.c 380src/testbed/testbed_api_sd.c
381src/testbed/testbed_api_services.c 381src/testbed/testbed_api_services.c
382src/testbed/testbed_api_statistics.c 382src/testbed/testbed_api_statistics.c
383src/testbed/testbed_api_test.c
384src/testbed/testbed_api_testbed.c 383src/testbed/testbed_api_testbed.c
384src/testbed/testbed_api_test.c
385src/testbed/testbed_api_topology.c 385src/testbed/testbed_api_topology.c
386src/testbed/testbed_api_underlay.c 386src/testbed/testbed_api_underlay.c
387src/testing/gnunet-testing.c 387src/testing/gnunet-testing.c
@@ -393,40 +393,35 @@ src/transport/gnunet-communicator-tcp.c
393src/transport/gnunet-communicator-udp.c 393src/transport/gnunet-communicator-udp.c
394src/transport/gnunet-communicator-unix.c 394src/transport/gnunet-communicator-unix.c
395src/transport/gnunet-helper-transport-bluetooth.c 395src/transport/gnunet-helper-transport-bluetooth.c
396src/transport/gnunet-helper-transport-wlan-dummy.c
397src/transport/gnunet-helper-transport-wlan.c 396src/transport/gnunet-helper-transport-wlan.c
397src/transport/gnunet-helper-transport-wlan-dummy.c
398src/transport/gnunet-service-tng.c 398src/transport/gnunet-service-tng.c
399src/transport/gnunet-service-transport.c
400src/transport/gnunet-service-transport_ats.c 399src/transport/gnunet-service-transport_ats.c
400src/transport/gnunet-service-transport.c
401src/transport/gnunet-service-transport_hello.c 401src/transport/gnunet-service-transport_hello.c
402src/transport/gnunet-service-transport_manipulation.c 402src/transport/gnunet-service-transport_manipulation.c
403src/transport/gnunet-service-transport_neighbours.c 403src/transport/gnunet-service-transport_neighbours.c
404src/transport/gnunet-service-transport_plugins.c 404src/transport/gnunet-service-transport_plugins.c
405src/transport/gnunet-service-transport_validation.c 405src/transport/gnunet-service-transport_validation.c
406src/transport/gnunet-transport.c
406src/transport/gnunet-transport-certificate-creation.c 407src/transport/gnunet-transport-certificate-creation.c
407src/transport/gnunet-transport-profiler.c 408src/transport/gnunet-transport-profiler.c
408src/transport/gnunet-transport-wlan-receiver.c 409src/transport/gnunet-transport-wlan-receiver.c
409src/transport/gnunet-transport-wlan-sender.c 410src/transport/gnunet-transport-wlan-sender.c
410src/transport/gnunet-transport.c
411src/transport/plugin_transport_http_client.c 411src/transport/plugin_transport_http_client.c
412src/transport/plugin_transport_http_common.c 412src/transport/plugin_transport_http_common.c
413src/transport/plugin_transport_http_server.c 413src/transport/plugin_transport_http_server.c
414src/transport/plugin_transport_smtp.c 414src/transport/plugin_transport_smtp.c
415src/transport/plugin_transport_tcp.c 415src/transport/plugin_transport_tcp.c
416src/transport/plugin_transport_template.c 416src/transport/plugin_transport_template.c
417src/transport/plugin_transport_udp.c
418src/transport/plugin_transport_udp_broadcasting.c 417src/transport/plugin_transport_udp_broadcasting.c
418src/transport/plugin_transport_udp.c
419src/transport/plugin_transport_unix.c 419src/transport/plugin_transport_unix.c
420src/transport/plugin_transport_wlan.c 420src/transport/plugin_transport_wlan.c
421src/transport/tcp_connection_legacy.c 421src/transport/tcp_connection_legacy.c
422src/transport/tcp_server_legacy.c 422src/transport/tcp_server_legacy.c
423src/transport/tcp_server_mst_legacy.c 423src/transport/tcp_server_mst_legacy.c
424src/transport/tcp_service_legacy.c 424src/transport/tcp_service_legacy.c
425src/transport/transport-testing-filenames.c
426src/transport/transport-testing-loggers.c
427src/transport/transport-testing-main.c
428src/transport/transport-testing-send.c
429src/transport/transport-testing.c
430src/transport/transport_api2_address.c 425src/transport/transport_api2_address.c
431src/transport/transport_api2_application.c 426src/transport/transport_api2_application.c
432src/transport/transport_api2_communication.c 427src/transport/transport_api2_communication.c
@@ -440,6 +435,11 @@ src/transport/transport_api_manipulation.c
440src/transport/transport_api_monitor_peers.c 435src/transport/transport_api_monitor_peers.c
441src/transport/transport_api_monitor_plugins.c 436src/transport/transport_api_monitor_plugins.c
442src/transport/transport_api_offer_hello.c 437src/transport/transport_api_offer_hello.c
438src/transport/transport-testing.c
439src/transport/transport-testing-filenames.c
440src/transport/transport-testing-loggers.c
441src/transport/transport-testing-main.c
442src/transport/transport-testing-send.c
443src/util/bandwidth.c 443src/util/bandwidth.c
444src/util/benchmark.c 444src/util/benchmark.c
445src/util/bio.c 445src/util/bio.c
@@ -452,8 +452,8 @@ src/util/configuration_loader.c
452src/util/container_bloomfilter.c 452src/util/container_bloomfilter.c
453src/util/container_heap.c 453src/util/container_heap.c
454src/util/container_meta_data.c 454src/util/container_meta_data.c
455src/util/container_multihashmap.c
456src/util/container_multihashmap32.c 455src/util/container_multihashmap32.c
456src/util/container_multihashmap.c
457src/util/container_multipeermap.c 457src/util/container_multipeermap.c
458src/util/container_multishortmap.c 458src/util/container_multishortmap.c
459src/util/crypto_abe.c 459src/util/crypto_abe.c
@@ -475,16 +475,16 @@ src/util/dnsparser.c
475src/util/dnsstub.c 475src/util/dnsstub.c
476src/util/getopt.c 476src/util/getopt.c
477src/util/getopt_helpers.c 477src/util/getopt_helpers.c
478src/util/gnunet-config-diff.c
479src/util/gnunet-config.c 478src/util/gnunet-config.c
479src/util/gnunet-config-diff.c
480src/util/gnunet-ecc.c 480src/util/gnunet-ecc.c
481src/util/gnunet-helper-w32-console.c 481src/util/gnunet-helper-w32-console.c
482src/util/gnunet-qr.c 482src/util/gnunet-qr.c
483src/util/gnunet-resolver.c 483src/util/gnunet-resolver.c
484src/util/gnunet-scrypt.c 484src/util/gnunet-scrypt.c
485src/util/gnunet-service-resolver.c 485src/util/gnunet-service-resolver.c
486src/util/gnunet-timeout-w32.c
487src/util/gnunet-timeout.c 486src/util/gnunet-timeout.c
487src/util/gnunet-timeout-w32.c
488src/util/gnunet-uri.c 488src/util/gnunet-uri.c
489src/util/helper.c 489src/util/helper.c
490src/util/load.c 490src/util/load.c
@@ -513,13 +513,13 @@ src/util/tun.c
513src/util/w32cat.c 513src/util/w32cat.c
514src/util/win.c 514src/util/win.c
515src/util/winproc.c 515src/util/winproc.c
516src/vpn/gnunet-helper-vpn-windows.c
517src/vpn/gnunet-helper-vpn.c 516src/vpn/gnunet-helper-vpn.c
517src/vpn/gnunet-helper-vpn-windows.c
518src/vpn/gnunet-service-vpn.c 518src/vpn/gnunet-service-vpn.c
519src/vpn/gnunet-vpn.c 519src/vpn/gnunet-vpn.c
520src/vpn/vpn_api.c 520src/vpn/vpn_api.c
521src/zonemaster/gnunet-service-zonemaster-monitor.c
522src/zonemaster/gnunet-service-zonemaster.c 521src/zonemaster/gnunet-service-zonemaster.c
522src/zonemaster/gnunet-service-zonemaster-monitor.c
523src/fs/fs_api.h 523src/fs/fs_api.h
524src/include/compat.h 524src/include/compat.h
525src/include/gnunet_common.h 525src/include/gnunet_common.h
diff --git a/src/include/gnunet_crypto_lib.h b/src/include/gnunet_crypto_lib.h
index 6822de2f1..45da5f6ba 100644
--- a/src/include/gnunet_crypto_lib.h
+++ b/src/include/gnunet_crypto_lib.h
@@ -456,6 +456,18 @@ int32_t
456GNUNET_CRYPTO_crc32_n (const void *buf, 456GNUNET_CRYPTO_crc32_n (const void *buf,
457 size_t len); 457 size_t len);
458 458
459/**
460 * @ingroup crypto
461 * Zero out @a buffer, securely against compiler optimizations.
462 * Used to delete key material.
463 *
464 * @param buffer the buffer to zap
465 * @param length buffer length
466 */
467void
468GNUNET_CRYPTO_zero_keys (void *buffer,
469 size_t length);
470
459 471
460/** 472/**
461 * @ingroup crypto 473 * @ingroup crypto
@@ -721,8 +733,8 @@ GNUNET_CRYPTO_hash_context_abort (struct GNUNET_HashContext *hc);
721 */ 733 */
722void 734void
723GNUNET_CRYPTO_hmac_raw (const void *key, size_t key_len, 735GNUNET_CRYPTO_hmac_raw (const void *key, size_t key_len,
724 const void *plaintext, size_t plaintext_len, 736 const void *plaintext, size_t plaintext_len,
725 struct GNUNET_HashCode *hmac); 737 struct GNUNET_HashCode *hmac);
726 738
727 739
728/** 740/**
@@ -1866,7 +1878,7 @@ GNUNET_CRYPTO_rsa_private_key_free (struct GNUNET_CRYPTO_RsaPrivateKey *key);
1866 */ 1878 */
1867size_t 1879size_t
1868GNUNET_CRYPTO_rsa_private_key_encode (const struct GNUNET_CRYPTO_RsaPrivateKey *key, 1880GNUNET_CRYPTO_rsa_private_key_encode (const struct GNUNET_CRYPTO_RsaPrivateKey *key,
1869 char **buffer); 1881 char **buffer);
1870 1882
1871 1883
1872/** 1884/**
@@ -1879,7 +1891,7 @@ GNUNET_CRYPTO_rsa_private_key_encode (const struct GNUNET_CRYPTO_RsaPrivateKey *
1879 */ 1891 */
1880struct GNUNET_CRYPTO_RsaPrivateKey * 1892struct GNUNET_CRYPTO_RsaPrivateKey *
1881GNUNET_CRYPTO_rsa_private_key_decode (const char *buf, 1893GNUNET_CRYPTO_rsa_private_key_decode (const char *buf,
1882 size_t len); 1894 size_t len);
1883 1895
1884 1896
1885/** 1897/**
diff --git a/src/transport/Makefile.am b/src/transport/Makefile.am
index f83fa669c..53fd9c973 100644
--- a/src/transport/Makefile.am
+++ b/src/transport/Makefile.am
@@ -374,6 +374,7 @@ gnunet_service_tng_LDADD = \
374 $(top_builddir)/src/hello/libgnunethello.la \ 374 $(top_builddir)/src/hello/libgnunethello.la \
375 $(top_builddir)/src/statistics/libgnunetstatistics.la \ 375 $(top_builddir)/src/statistics/libgnunetstatistics.la \
376 $(top_builddir)/src/util/libgnunetutil.la \ 376 $(top_builddir)/src/util/libgnunetutil.la \
377 $(LIBGCRYPT_LIBS) \
377 $(GN_LIBINTL) 378 $(GN_LIBINTL)
378 379
379plugin_LTLIBRARIES = \ 380plugin_LTLIBRARIES = \
diff --git a/src/transport/gnunet-communicator-tcp.c b/src/transport/gnunet-communicator-tcp.c
index a8f88c5e4..e9223401f 100644
--- a/src/transport/gnunet-communicator-tcp.c
+++ b/src/transport/gnunet-communicator-tcp.c
@@ -814,9 +814,9 @@ pass_plaintext_to_core (struct Queue *queue,
814 */ 814 */
815static void 815static void
816setup_cipher (const struct GNUNET_HashCode *dh, 816setup_cipher (const struct GNUNET_HashCode *dh,
817 const struct GNUNET_PeerIdentity *pid, 817 const struct GNUNET_PeerIdentity *pid,
818 gcry_cipher_hd_t *cipher, 818 gcry_cipher_hd_t *cipher,
819 struct GNUNET_HashCode *hmac_key) 819 struct GNUNET_HashCode *hmac_key)
820{ 820{
821 char key[256/8]; 821 char key[256/8];
822 char ctr[128/8]; 822 char ctr[128/8];
@@ -872,7 +872,7 @@ setup_cipher (const struct GNUNET_HashCode *dh,
872 */ 872 */
873static void 873static void
874setup_in_cipher (const struct GNUNET_CRYPTO_EcdhePublicKey *ephemeral, 874setup_in_cipher (const struct GNUNET_CRYPTO_EcdhePublicKey *ephemeral,
875 struct Queue *queue) 875 struct Queue *queue)
876{ 876{
877 struct GNUNET_HashCode dh; 877 struct GNUNET_HashCode dh;
878 878
@@ -896,7 +896,7 @@ setup_in_cipher (const struct GNUNET_CRYPTO_EcdhePublicKey *ephemeral,
896 */ 896 */
897static void 897static void
898do_rekey (struct Queue *queue, 898do_rekey (struct Queue *queue,
899 const struct TCPRekey *rekey) 899 const struct TCPRekey *rekey)
900{ 900{
901 struct TcpHandshakeSignature thp; 901 struct TcpHandshakeSignature thp;
902 902
diff --git a/src/transport/gnunet-service-tng.c b/src/transport/gnunet-service-tng.c
index bb1656876..53b9ba0c8 100644
--- a/src/transport/gnunet-service-tng.c
+++ b/src/transport/gnunet-service-tng.c
@@ -33,7 +33,6 @@
33 * transport-to-transport traffic) 33 * transport-to-transport traffic)
34 * 34 *
35 * Implement next: 35 * Implement next:
36 * - backchannel message encryption & decryption
37 * - DV data structures: 36 * - DV data structures:
38 * + using DV routes! 37 * + using DV routes!
39 * - handling of DV-boxed messages that need to be forwarded 38 * - handling of DV-boxed messages that need to be forwarded
@@ -59,7 +58,6 @@
59 * FIXME (without marks in the code!): 58 * FIXME (without marks in the code!):
60 * - proper use/initialization of timestamps in messages exchanged 59 * - proper use/initialization of timestamps in messages exchanged
61 * during DV learning 60 * during DV learning
62 * -
63 * 61 *
64 * Optimizations: 62 * Optimizations:
65 * - use shorthashmap on msg_uuid's when matching reliability/fragment ACKs 63 * - use shorthashmap on msg_uuid's when matching reliability/fragment ACKs
@@ -3238,21 +3236,32 @@ route_message (const struct GNUNET_PeerIdentity *target,
3238 */ 3236 */
3239struct BackchannelKeyState 3237struct BackchannelKeyState
3240{ 3238{
3241 // FIXME: actual data types in this struct are likely still totally wrong
3242 /** 3239 /**
3243 * 3240 * State of our block cipher.
3244 */ 3241 */
3245 char hdr_key[128]; 3242 gcry_cipher_hd_t cipher;
3246 3243
3247 /** 3244 /**
3248 * 3245 * Actual key material.
3249 */ 3246 */
3250 char body_key[128]; 3247 struct {
3251 3248
3252 /** 3249 /**
3253 * 3250 * Key used for HMAC calculations (via #GNUNET_CRYPTO_hmac()).
3254 */ 3251 */
3255 char hmac_key[128]; 3252 struct GNUNET_CRYPTO_AuthKey hmac_key;
3253
3254 /**
3255 * Symmetric key to use for encryption.
3256 */
3257 char aes_key[256/8];
3258
3259 /**
3260 * Counter value to use during setup.
3261 */
3262 char aes_ctr[128/8];
3263
3264 } material;
3256}; 3265};
3257 3266
3258 3267
@@ -3263,14 +3272,24 @@ bc_setup_key_state_from_km (const struct GNUNET_HashCode *km,
3263{ 3272{
3264 /* must match #dh_key_derive_eph_pub */ 3273 /* must match #dh_key_derive_eph_pub */
3265 GNUNET_assert (GNUNET_YES == 3274 GNUNET_assert (GNUNET_YES ==
3266 GNUNET_CRYPTO_kdf (key, 3275 GNUNET_CRYPTO_kdf (&key->material,
3267 sizeof (*key), 3276 sizeof (key->material),
3268 "transport-backchannel-key", 3277 "transport-backchannel-key",
3269 strlen ("transport-backchannel-key"), 3278 strlen ("transport-backchannel-key"),
3270 &km, 3279 &km,
3271 sizeof (km), 3280 sizeof (km),
3272 iv, 3281 iv,
3273 sizeof (*iv))); 3282 sizeof (*iv)));
3283 gcry_cipher_open (&key->cipher,
3284 GCRY_CIPHER_AES256 /* low level: go for speed */,
3285 GCRY_CIPHER_MODE_CTR,
3286 0 /* flags */);
3287 gcry_cipher_setkey (key->cipher,
3288 &key->material.aes_key,
3289 sizeof (key->material.aes_key));
3290 gcry_cipher_setctr (key->cipher,
3291 &key->material.aes_ctr,
3292 sizeof (key->material.aes_ctr));
3274} 3293}
3275 3294
3276 3295
@@ -3342,7 +3361,10 @@ bc_hmac (const struct BackchannelKeyState *key,
3342 const void *data, 3361 const void *data,
3343 size_t data_size) 3362 size_t data_size)
3344{ 3363{
3345 // FIXME! 3364 GNUNET_CRYPTO_hmac (&key->material.hmac_key,
3365 data,
3366 data_size,
3367 hmac);
3346} 3368}
3347 3369
3348 3370
@@ -3361,7 +3383,12 @@ bc_encrypt (struct BackchannelKeyState *key,
3361 void *dst, 3383 void *dst,
3362 size_t in_size) 3384 size_t in_size)
3363{ 3385{
3364 // FIXME! 3386 GNUNET_assert (0 ==
3387 gcry_cipher_encrypt (key->cipher,
3388 dst,
3389 in_size,
3390 in,
3391 in_size));
3365} 3392}
3366 3393
3367 3394
@@ -3380,7 +3407,12 @@ bc_decrypt (struct BackchannelKeyState *key,
3380 const void *ciph, 3407 const void *ciph,
3381 size_t out_size) 3408 size_t out_size)
3382{ 3409{
3383 // FIXME! 3410 GNUNET_assert (0 ==
3411 gcry_cipher_decrypt (key->cipher,
3412 out,
3413 out_size,
3414 ciph,
3415 out_size));
3384} 3416}
3385 3417
3386 3418
@@ -3392,7 +3424,9 @@ bc_decrypt (struct BackchannelKeyState *key,
3392static void 3424static void
3393bc_key_clean (struct BackchannelKeyState *key) 3425bc_key_clean (struct BackchannelKeyState *key)
3394{ 3426{
3395 // FIXME! 3427 gcry_cipher_close (key->cipher);
3428 GNUNET_CRYPTO_zero_keys (&key->material,
3429 sizeof (key->material));
3396} 3430}
3397 3431
3398 3432
diff --git a/src/util/crypto_random.c b/src/util/crypto_random.c
index 54bea58e1..8bb5f0587 100644
--- a/src/util/crypto_random.c
+++ b/src/util/crypto_random.c
@@ -98,6 +98,34 @@ GNUNET_CRYPTO_seed_weak_random (int32_t seed)
98 98
99/** 99/**
100 * @ingroup crypto 100 * @ingroup crypto
101 * Zero out @a buffer, securely against compiler optimizations.
102 * Used to delete key material.
103 *
104 * @param buffer the buffer to zap
105 * @param length buffer length
106 */
107void
108GNUNET_CRYPTO_zero_keys (void *buffer,
109 size_t length)
110{
111#if HAVE_MEMSET_S
112 memset_s (buffer,
113 length,
114 0,
115 length);
116#elif HAVE_EXPLICIT_BZERO
117 explicit_bzero (buffer,
118 length);
119#else
120 volatile unsigned char *p = buffer;
121 while (length--)
122 *p++ = 0;
123#endif
124}
125
126
127/**
128 * @ingroup crypto
101 * Fill block with a random values. 129 * Fill block with a random values.
102 * 130 *
103 * @param mode desired quality of the random number 131 * @param mode desired quality of the random number
@@ -105,7 +133,9 @@ GNUNET_CRYPTO_seed_weak_random (int32_t seed)
105 * @param length buffer length 133 * @param length buffer length
106 */ 134 */
107void 135void
108GNUNET_CRYPTO_random_block (enum GNUNET_CRYPTO_Quality mode, void *buffer, size_t length) 136GNUNET_CRYPTO_random_block (enum GNUNET_CRYPTO_Quality mode,
137 void *buffer,
138 size_t length)
109{ 139{
110#ifdef gcry_fast_random_poll 140#ifdef gcry_fast_random_poll
111 static unsigned int invokeCount; 141 static unsigned int invokeCount;
@@ -146,7 +176,7 @@ GNUNET_CRYPTO_random_block (enum GNUNET_CRYPTO_Quality mode, void *buffer, size_
146 */ 176 */
147uint32_t 177uint32_t
148GNUNET_CRYPTO_random_u32 (enum GNUNET_CRYPTO_Quality mode, 178GNUNET_CRYPTO_random_u32 (enum GNUNET_CRYPTO_Quality mode,
149 uint32_t i) 179 uint32_t i)
150{ 180{
151#ifdef gcry_fast_random_poll 181#ifdef gcry_fast_random_poll
152 static unsigned int invokeCount; 182 static unsigned int invokeCount;
@@ -202,7 +232,7 @@ GNUNET_CRYPTO_random_u32 (enum GNUNET_CRYPTO_Quality mode,
202 */ 232 */
203unsigned int * 233unsigned int *
204GNUNET_CRYPTO_random_permute (enum GNUNET_CRYPTO_Quality mode, 234GNUNET_CRYPTO_random_permute (enum GNUNET_CRYPTO_Quality mode,
205 unsigned int n) 235 unsigned int n)
206{ 236{
207 unsigned int *ret; 237 unsigned int *ret;
208 unsigned int i; 238 unsigned int i;
@@ -232,7 +262,8 @@ GNUNET_CRYPTO_random_permute (enum GNUNET_CRYPTO_Quality mode,
232 * @return random 64-bit number 262 * @return random 64-bit number
233 */ 263 */
234uint64_t 264uint64_t
235GNUNET_CRYPTO_random_u64 (enum GNUNET_CRYPTO_Quality mode, uint64_t max) 265GNUNET_CRYPTO_random_u64 (enum GNUNET_CRYPTO_Quality mode,
266 uint64_t max)
236{ 267{
237 uint64_t ret; 268 uint64_t ret;
238 uint64_t ul; 269 uint64_t ul;