aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
m---------contrib/gana0
-rw-r--r--po/POTFILES.in100
-rw-r--r--src/gnsrecord/gnsrecord_crypto.c39
-rw-r--r--src/include/gnunet_crypto_lib.h46
-rw-r--r--src/include/gnunet_namestore_plugin.h65
-rw-r--r--src/util/crypto_ecc_gnsrecord.c55
-rw-r--r--src/util/test_crypto_eddsa.c8
7 files changed, 206 insertions, 107 deletions
diff --git a/contrib/gana b/contrib/gana
Subproject 0958add542378a6ca9c411e2dc19527834e9f64 Subproject e12bcee063df61ed4b9acbe819443672364eb4d
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 64df0a13b..5c1152e7c 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -10,13 +10,14 @@ src/arm/arm_monitor_api.c
10src/arm/gnunet-arm.c 10src/arm/gnunet-arm.c
11src/arm/gnunet-service-arm.c 11src/arm/gnunet-service-arm.c
12src/arm/mockup-service.c 12src/arm/mockup-service.c
13src/ats-tool/gnunet-ats.c
13src/ats/ats_api_connectivity.c 14src/ats/ats_api_connectivity.c
14src/ats/ats_api_performance.c 15src/ats/ats_api_performance.c
15src/ats/ats_api_scanner.c 16src/ats/ats_api_scanner.c
16src/ats/ats_api_scheduling.c 17src/ats/ats_api_scheduling.c
17src/ats/gnunet-ats-solver-eval.c 18src/ats/gnunet-ats-solver-eval.c
18src/ats/gnunet-service-ats_addresses.c
19src/ats/gnunet-service-ats.c 19src/ats/gnunet-service-ats.c
20src/ats/gnunet-service-ats_addresses.c
20src/ats/gnunet-service-ats_connectivity.c 21src/ats/gnunet-service-ats_connectivity.c
21src/ats/gnunet-service-ats_normalization.c 22src/ats/gnunet-service-ats_normalization.c
22src/ats/gnunet-service-ats_performance.c 23src/ats/gnunet-service-ats_performance.c
@@ -25,7 +26,6 @@ src/ats/gnunet-service-ats_preferences.c
25src/ats/gnunet-service-ats_reservations.c 26src/ats/gnunet-service-ats_reservations.c
26src/ats/gnunet-service-ats_scheduling.c 27src/ats/gnunet-service-ats_scheduling.c
27src/ats/plugin_ats_proportional.c 28src/ats/plugin_ats_proportional.c
28src/ats-tool/gnunet-ats.c
29src/auction/gnunet-auction-create.c 29src/auction/gnunet-auction-create.c
30src/auction/gnunet-auction-info.c 30src/auction/gnunet-auction-info.c
31src/auction/gnunet-auction-join.c 31src/auction/gnunet-auction-join.c
@@ -43,8 +43,8 @@ src/cadet/cadet_api_list_peers.c
43src/cadet/cadet_api_list_tunnels.c 43src/cadet/cadet_api_list_tunnels.c
44src/cadet/cadet_test_lib.c 44src/cadet/cadet_test_lib.c
45src/cadet/desirability_table.c 45src/cadet/desirability_table.c
46src/cadet/gnunet-cadet.c
47src/cadet/gnunet-cadet-profiler.c 46src/cadet/gnunet-cadet-profiler.c
47src/cadet/gnunet-cadet.c
48src/cadet/gnunet-service-cadet.c 48src/cadet/gnunet-service-cadet.c
49src/cadet/gnunet-service-cadet_channel.c 49src/cadet/gnunet-service-cadet_channel.c
50src/cadet/gnunet-service-cadet_connection.c 50src/cadet/gnunet-service-cadet_connection.c
@@ -60,15 +60,15 @@ src/consensus/gnunet-service-consensus.c
60src/consensus/plugin_block_consensus.c 60src/consensus/plugin_block_consensus.c
61src/conversation/conversation_api.c 61src/conversation/conversation_api.c
62src/conversation/conversation_api_call.c 62src/conversation/conversation_api_call.c
63src/conversation/gnunet-conversation.c
64src/conversation/gnunet-conversation-test.c 63src/conversation/gnunet-conversation-test.c
65src/conversation/gnunet_gst.c 64src/conversation/gnunet-conversation.c
66src/conversation/gnunet_gst_test.c
67src/conversation/gnunet-helper-audio-playback.c
68src/conversation/gnunet-helper-audio-playback-gst.c 65src/conversation/gnunet-helper-audio-playback-gst.c
69src/conversation/gnunet-helper-audio-record.c 66src/conversation/gnunet-helper-audio-playback.c
70src/conversation/gnunet-helper-audio-record-gst.c 67src/conversation/gnunet-helper-audio-record-gst.c
68src/conversation/gnunet-helper-audio-record.c
71src/conversation/gnunet-service-conversation.c 69src/conversation/gnunet-service-conversation.c
70src/conversation/gnunet_gst.c
71src/conversation/gnunet_gst_test.c
72src/conversation/microphone.c 72src/conversation/microphone.c
73src/conversation/plugin_gnsrecord_conversation.c 73src/conversation/plugin_gnsrecord_conversation.c
74src/conversation/speaker.c 74src/conversation/speaker.c
@@ -99,13 +99,13 @@ src/dht/dht_test_lib.c
99src/dht/gnunet-dht-get.c 99src/dht/gnunet-dht-get.c
100src/dht/gnunet-dht-hello.c 100src/dht/gnunet-dht-hello.c
101src/dht/gnunet-dht-monitor.c 101src/dht/gnunet-dht-monitor.c
102src/dht/gnunet_dht_profiler.c
103src/dht/gnunet-dht-put.c 102src/dht/gnunet-dht-put.c
104src/dht/gnunet-service-dht.c 103src/dht/gnunet-service-dht.c
105src/dht/gnunet-service-dht_clients.c 104src/dht/gnunet-service-dht_clients.c
106src/dht/gnunet-service-dht_datacache.c 105src/dht/gnunet-service-dht_datacache.c
107src/dht/gnunet-service-dht_neighbours.c 106src/dht/gnunet-service-dht_neighbours.c
108src/dht/gnunet-service-dht_routing.c 107src/dht/gnunet-service-dht_routing.c
108src/dht/gnunet_dht_profiler.c
109src/dht/plugin_block_dht.c 109src/dht/plugin_block_dht.c
110src/dhtu/plugin_dhtu_gnunet.c 110src/dhtu/plugin_dhtu_gnunet.c
111src/dhtu/plugin_dhtu_ip.c 111src/dhtu/plugin_dhtu_ip.c
@@ -143,8 +143,8 @@ src/fs/gnunet-auto-share.c
143src/fs/gnunet-daemon-fsprofiler.c 143src/fs/gnunet-daemon-fsprofiler.c
144src/fs/gnunet-directory.c 144src/fs/gnunet-directory.c
145src/fs/gnunet-download.c 145src/fs/gnunet-download.c
146src/fs/gnunet-fs.c
147src/fs/gnunet-fs-profiler.c 146src/fs/gnunet-fs-profiler.c
147src/fs/gnunet-fs.c
148src/fs/gnunet-helper-fs-publish.c 148src/fs/gnunet-helper-fs-publish.c
149src/fs/gnunet-publish.c 149src/fs/gnunet-publish.c
150src/fs/gnunet-search.c 150src/fs/gnunet-search.c
@@ -164,9 +164,9 @@ src/gns/gns_tld_api.c
164src/gns/gnunet-bcd.c 164src/gns/gnunet-bcd.c
165src/gns/gnunet-dns2gns.c 165src/gns/gnunet-dns2gns.c
166src/gns/gnunet-gns-benchmark.c 166src/gns/gnunet-gns-benchmark.c
167src/gns/gnunet-gns.c
168src/gns/gnunet-gns-import.c 167src/gns/gnunet-gns-import.c
169src/gns/gnunet-gns-proxy.c 168src/gns/gnunet-gns-proxy.c
169src/gns/gnunet-gns.c
170src/gns/gnunet-service-gns.c 170src/gns/gnunet-service-gns.c
171src/gns/gnunet-service-gns_interceptor.c 171src/gns/gnunet-service-gns_interceptor.c
172src/gns/gnunet-service-gns_resolver.c 172src/gns/gnunet-service-gns_resolver.c
@@ -184,9 +184,9 @@ src/gnsrecord/json_gnsrecord.c
184src/gnsrecord/plugin_gnsrecord_dns.c 184src/gnsrecord/plugin_gnsrecord_dns.c
185src/hello/address.c 185src/hello/address.c
186src/hello/gnunet-hello.c 186src/hello/gnunet-hello.c
187src/hello/hello.c
188src/hello/hello-ng.c 187src/hello/hello-ng.c
189src/hello/hello-uri.c 188src/hello/hello-uri.c
189src/hello/hello.c
190src/hostlist/gnunet-daemon-hostlist.c 190src/hostlist/gnunet-daemon-hostlist.c
191src/hostlist/gnunet-daemon-hostlist_client.c 191src/hostlist/gnunet-daemon-hostlist_client.c
192src/hostlist/gnunet-daemon-hostlist_server.c 192src/hostlist/gnunet-daemon-hostlist_server.c
@@ -202,8 +202,8 @@ src/json/json_helper.c
202src/json/json_mhd.c 202src/json/json_mhd.c
203src/json/json_pack.c 203src/json/json_pack.c
204src/messenger/gnunet-messenger.c 204src/messenger/gnunet-messenger.c
205src/messenger/gnunet-service-messenger_basement.c
206src/messenger/gnunet-service-messenger.c 205src/messenger/gnunet-service-messenger.c
206src/messenger/gnunet-service-messenger_basement.c
207src/messenger/gnunet-service-messenger_ego_store.c 207src/messenger/gnunet-service-messenger_ego_store.c
208src/messenger/gnunet-service-messenger_handle.c 208src/messenger/gnunet-service-messenger_handle.c
209src/messenger/gnunet-service-messenger_list_handles.c 209src/messenger/gnunet-service-messenger_list_handles.c
@@ -243,8 +243,8 @@ src/namecache/namecache_api.c
243src/namecache/plugin_namecache_flat.c 243src/namecache/plugin_namecache_flat.c
244src/namecache/plugin_namecache_postgres.c 244src/namecache/plugin_namecache_postgres.c
245src/namecache/plugin_namecache_sqlite.c 245src/namecache/plugin_namecache_sqlite.c
246src/namestore/gnunet-namestore.c
247src/namestore/gnunet-namestore-fcfsd.c 246src/namestore/gnunet-namestore-fcfsd.c
247src/namestore/gnunet-namestore.c
248src/namestore/gnunet-service-namestore.c 248src/namestore/gnunet-service-namestore.c
249src/namestore/gnunet-zoneimport.c 249src/namestore/gnunet-zoneimport.c
250src/namestore/namestore_api.c 250src/namestore/namestore_api.c
@@ -270,17 +270,17 @@ src/nat/gnunet-service-nat_mini.c
270src/nat/gnunet-service-nat_stun.c 270src/nat/gnunet-service-nat_stun.c
271src/nat/nat_api.c 271src/nat/nat_api.c
272src/nat/nat_api_stun.c 272src/nat/nat_api_stun.c
273src/nse/gnunet-nse.c
274src/nse/gnunet-nse-profiler.c 273src/nse/gnunet-nse-profiler.c
274src/nse/gnunet-nse.c
275src/nse/gnunet-service-nse.c 275src/nse/gnunet-service-nse.c
276src/nse/nse_api.c 276src/nse/nse_api.c
277src/nt/nt.c 277src/nt/nt.c
278src/peerinfo/gnunet-service-peerinfo.c
279src/peerinfo/peerinfo_api.c
280src/peerinfo/peerinfo_api_notify.c
281src/peerinfo-tool/gnunet-peerinfo.c 278src/peerinfo-tool/gnunet-peerinfo.c
282src/peerinfo-tool/gnunet-peerinfo_plugins.c 279src/peerinfo-tool/gnunet-peerinfo_plugins.c
283src/peerinfo-tool/plugin_rest_peerinfo.c 280src/peerinfo-tool/plugin_rest_peerinfo.c
281src/peerinfo/gnunet-service-peerinfo.c
282src/peerinfo/peerinfo_api.c
283src/peerinfo/peerinfo_api_notify.c
284src/peerstore/gnunet-peerstore.c 284src/peerstore/gnunet-peerstore.c
285src/peerstore/gnunet-service-peerstore.c 285src/peerstore/gnunet-service-peerstore.c
286src/peerstore/peerstore_api.c 286src/peerstore/peerstore_api.c
@@ -332,27 +332,27 @@ src/rest/gnunet-rest-server.c
332src/rest/plugin_rest_config.c 332src/rest/plugin_rest_config.c
333src/rest/plugin_rest_copying.c 333src/rest/plugin_rest_copying.c
334src/rest/rest.c 334src/rest/rest.c
335src/revocation/gnunet-revocation.c
336src/revocation/gnunet-revocation-tvg.c 335src/revocation/gnunet-revocation-tvg.c
336src/revocation/gnunet-revocation.c
337src/revocation/gnunet-service-revocation.c 337src/revocation/gnunet-service-revocation.c
338src/revocation/plugin_block_revocation.c 338src/revocation/plugin_block_revocation.c
339src/revocation/revocation_api.c 339src/revocation/revocation_api.c
340src/rps/gnunet-rps.c
341src/rps/gnunet-rps-profiler.c 340src/rps/gnunet-rps-profiler.c
341src/rps/gnunet-rps.c
342src/rps/gnunet-service-rps.c 342src/rps/gnunet-service-rps.c
343src/rps/gnunet-service-rps_custommap.c 343src/rps/gnunet-service-rps_custommap.c
344src/rps/gnunet-service-rps_sampler.c 344src/rps/gnunet-service-rps_sampler.c
345src/rps/gnunet-service-rps_sampler_elem.c 345src/rps/gnunet-service-rps_sampler_elem.c
346src/rps/gnunet-service-rps_view.c 346src/rps/gnunet-service-rps_view.c
347src/rps/rps_api.c
348src/rps/rps-sampler_client.c 347src/rps/rps-sampler_client.c
349src/rps/rps-sampler_common.c 348src/rps/rps-sampler_common.c
350src/rps/rps-test_util.c 349src/rps/rps-test_util.c
350src/rps/rps_api.c
351src/scalarproduct/gnunet-scalarproduct.c 351src/scalarproduct/gnunet-scalarproduct.c
352src/scalarproduct/gnunet-service-scalarproduct_alice.c
353src/scalarproduct/gnunet-service-scalarproduct_bob.c
354src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c 352src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c
355src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c 353src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c
354src/scalarproduct/gnunet-service-scalarproduct_alice.c
355src/scalarproduct/gnunet-service-scalarproduct_bob.c
356src/scalarproduct/scalarproduct_api.c 356src/scalarproduct/scalarproduct_api.c
357src/secretsharing/gnunet-secretsharing-profiler.c 357src/secretsharing/gnunet-secretsharing-profiler.c
358src/secretsharing/gnunet-service-secretsharing.c 358src/secretsharing/gnunet-service-secretsharing.c
@@ -366,12 +366,12 @@ src/set/gnunet-set-ibf-profiler.c
366src/set/gnunet-set-profiler.c 366src/set/gnunet-set-profiler.c
367src/set/ibf.c 367src/set/ibf.c
368src/set/ibf_sim.c 368src/set/ibf_sim.c
369src/set/plugin_block_set_test.c
370src/set/set_api.c
369src/seti/gnunet-service-seti.c 371src/seti/gnunet-service-seti.c
370src/seti/gnunet-seti-profiler.c 372src/seti/gnunet-seti-profiler.c
371src/seti/plugin_block_seti_test.c 373src/seti/plugin_block_seti_test.c
372src/seti/seti_api.c 374src/seti/seti_api.c
373src/set/plugin_block_set_test.c
374src/set/set_api.c
375src/setu/gnunet-service-setu.c 375src/setu/gnunet-service-setu.c
376src/setu/gnunet-service-setu_strata_estimator.c 376src/setu/gnunet-service-setu_strata_estimator.c
377src/setu/gnunet-setu-ibf-profiler.c 377src/setu/gnunet-setu-ibf-profiler.c
@@ -390,15 +390,16 @@ src/statistics/gnunet-statistics.c
390src/statistics/statistics_api.c 390src/statistics/statistics_api.c
391src/template/gnunet-service-template.c 391src/template/gnunet-service-template.c
392src/template/gnunet-template.c 392src/template/gnunet-template.c
393src/testbed-logger/gnunet-service-testbed-logger.c
394src/testbed-logger/testbed_logger_api.c
393src/testbed/generate-underlay-topology.c 395src/testbed/generate-underlay-topology.c
394src/testbed/gnunet-daemon-latency-logger.c 396src/testbed/gnunet-daemon-latency-logger.c
395src/testbed/gnunet-daemon-testbed-blacklist.c 397src/testbed/gnunet-daemon-testbed-blacklist.c
396src/testbed/gnunet-daemon-testbed-underlay.c 398src/testbed/gnunet-daemon-testbed-underlay.c
397src/testbed/gnunet-helper-testbed.c 399src/testbed/gnunet-helper-testbed.c
398src/testbed/gnunet_mpi_test.c
399src/testbed/gnunet-service-test-barriers.c 400src/testbed/gnunet-service-test-barriers.c
400src/testbed/gnunet-service-testbed_barriers.c
401src/testbed/gnunet-service-testbed.c 401src/testbed/gnunet-service-testbed.c
402src/testbed/gnunet-service-testbed_barriers.c
402src/testbed/gnunet-service-testbed_cache.c 403src/testbed/gnunet-service-testbed_cache.c
403src/testbed/gnunet-service-testbed_connectionpool.c 404src/testbed/gnunet-service-testbed_connectionpool.c
404src/testbed/gnunet-service-testbed_cpustatus.c 405src/testbed/gnunet-service-testbed_cpustatus.c
@@ -407,23 +408,23 @@ src/testbed/gnunet-service-testbed_meminfo.c
407src/testbed/gnunet-service-testbed_oc.c 408src/testbed/gnunet-service-testbed_oc.c
408src/testbed/gnunet-service-testbed_peers.c 409src/testbed/gnunet-service-testbed_peers.c
409src/testbed/gnunet-testbed-profiler.c 410src/testbed/gnunet-testbed-profiler.c
410src/testbed-logger/gnunet-service-testbed-logger.c 411src/testbed/gnunet_mpi_test.c
411src/testbed-logger/testbed_logger_api.c
412src/testbed/testbed_api_barriers.c
413src/testbed/testbed_api.c 412src/testbed/testbed_api.c
413src/testbed/testbed_api_barriers.c
414src/testbed/testbed_api_hosts.c 414src/testbed/testbed_api_hosts.c
415src/testbed/testbed_api_operations.c 415src/testbed/testbed_api_operations.c
416src/testbed/testbed_api_peers.c 416src/testbed/testbed_api_peers.c
417src/testbed/testbed_api_sd.c 417src/testbed/testbed_api_sd.c
418src/testbed/testbed_api_services.c 418src/testbed/testbed_api_services.c
419src/testbed/testbed_api_statistics.c 419src/testbed/testbed_api_statistics.c
420src/testbed/testbed_api_testbed.c
421src/testbed/testbed_api_test.c 420src/testbed/testbed_api_test.c
421src/testbed/testbed_api_testbed.c
422src/testbed/testbed_api_topology.c 422src/testbed/testbed_api_topology.c
423src/testbed/testbed_api_underlay.c 423src/testbed/testbed_api_underlay.c
424src/testing/gnunet-cmds-helper.c 424src/testing/gnunet-cmds-helper.c
425src/testing/gnunet-testing.c 425src/testing/gnunet-testing.c
426src/testing/list-keys.c 426src/testing/list-keys.c
427src/testing/testing.c
427src/testing/testing_api_cmd_batch.c 428src/testing/testing_api_cmd_batch.c
428src/testing/testing_api_cmd_block_until_external_trigger.c 429src/testing/testing_api_cmd_block_until_external_trigger.c
429src/testing/testing_api_cmd_end.c 430src/testing/testing_api_cmd_end.c
@@ -439,41 +440,51 @@ src/testing/testing_api_cmd_system_create.c
439src/testing/testing_api_cmd_system_destroy.c 440src/testing/testing_api_cmd_system_destroy.c
440src/testing/testing_api_loop.c 441src/testing/testing_api_loop.c
441src/testing/testing_api_traits.c 442src/testing/testing_api_traits.c
442src/testing/testing.c
443src/topology/friends.c 443src/topology/friends.c
444src/topology/gnunet-daemon-topology.c 444src/topology/gnunet-daemon-topology.c
445src/transport/gnunet-communicator-tcp.c 445src/transport/gnunet-communicator-tcp.c
446src/transport/gnunet-communicator-udp.c 446src/transport/gnunet-communicator-udp.c
447src/transport/gnunet-communicator-unix.c 447src/transport/gnunet-communicator-unix.c
448src/transport/gnunet-helper-transport-bluetooth.c 448src/transport/gnunet-helper-transport-bluetooth.c
449src/transport/gnunet-helper-transport-wlan.c
450src/transport/gnunet-helper-transport-wlan-dummy.c 449src/transport/gnunet-helper-transport-wlan-dummy.c
450src/transport/gnunet-helper-transport-wlan.c
451src/transport/gnunet-service-tng.c 451src/transport/gnunet-service-tng.c
452src/transport/gnunet-service-transport_ats.c
453src/transport/gnunet-service-transport.c 452src/transport/gnunet-service-transport.c
453src/transport/gnunet-service-transport_ats.c
454src/transport/gnunet-service-transport_hello.c 454src/transport/gnunet-service-transport_hello.c
455src/transport/gnunet-service-transport_manipulation.c 455src/transport/gnunet-service-transport_manipulation.c
456src/transport/gnunet-service-transport_neighbours.c 456src/transport/gnunet-service-transport_neighbours.c
457src/transport/gnunet-service-transport_plugins.c 457src/transport/gnunet-service-transport_plugins.c
458src/transport/gnunet-service-transport_validation.c 458src/transport/gnunet-service-transport_validation.c
459src/transport/gnunet-transport.c
460src/transport/gnunet-transport-profiler.c 459src/transport/gnunet-transport-profiler.c
461src/transport/gnunet-transport-wlan-receiver.c 460src/transport/gnunet-transport-wlan-receiver.c
462src/transport/gnunet-transport-wlan-sender.c 461src/transport/gnunet-transport-wlan-sender.c
462src/transport/gnunet-transport.c
463src/transport/plugin_transport_http_client.c 463src/transport/plugin_transport_http_client.c
464src/transport/plugin_transport_http_common.c 464src/transport/plugin_transport_http_common.c
465src/transport/plugin_transport_http_server.c 465src/transport/plugin_transport_http_server.c
466src/transport/plugin_transport_smtp.c 466src/transport/plugin_transport_smtp.c
467src/transport/plugin_transport_tcp.c 467src/transport/plugin_transport_tcp.c
468src/transport/plugin_transport_template.c 468src/transport/plugin_transport_template.c
469src/transport/plugin_transport_udp_broadcasting.c
470src/transport/plugin_transport_udp.c 469src/transport/plugin_transport_udp.c
470src/transport/plugin_transport_udp_broadcasting.c
471src/transport/plugin_transport_unix.c 471src/transport/plugin_transport_unix.c
472src/transport/plugin_transport_wlan.c 472src/transport/plugin_transport_wlan.c
473src/transport/tcp_connection_legacy.c 473src/transport/tcp_connection_legacy.c
474src/transport/tcp_server_legacy.c 474src/transport/tcp_server_legacy.c
475src/transport/tcp_server_mst_legacy.c 475src/transport/tcp_server_mst_legacy.c
476src/transport/tcp_service_legacy.c 476src/transport/tcp_service_legacy.c
477src/transport/transport-testing-communicator.c
478src/transport/transport-testing-filenames.c
479src/transport/transport-testing-filenames2.c
480src/transport/transport-testing-loggers.c
481src/transport/transport-testing-loggers2.c
482src/transport/transport-testing-main.c
483src/transport/transport-testing-main2.c
484src/transport/transport-testing-send.c
485src/transport/transport-testing-send2.c
486src/transport/transport-testing.c
487src/transport/transport-testing2.c
477src/transport/transport_api2_application.c 488src/transport/transport_api2_application.c
478src/transport/transport_api2_communication.c 489src/transport/transport_api2_communication.c
479src/transport/transport_api2_core.c 490src/transport/transport_api2_core.c
@@ -492,17 +503,6 @@ src/transport/transport_api_monitor_peers.c
492src/transport/transport_api_monitor_plugins.c 503src/transport/transport_api_monitor_plugins.c
493src/transport/transport_api_offer_hello.c 504src/transport/transport_api_offer_hello.c
494src/transport/transport_api_traits.c 505src/transport/transport_api_traits.c
495src/transport/transport-testing2.c
496src/transport/transport-testing.c
497src/transport/transport-testing-communicator.c
498src/transport/transport-testing-filenames2.c
499src/transport/transport-testing-filenames.c
500src/transport/transport-testing-loggers2.c
501src/transport/transport-testing-loggers.c
502src/transport/transport-testing-main2.c
503src/transport/transport-testing-main.c
504src/transport/transport-testing-send2.c
505src/transport/transport-testing-send.c
506src/util/bandwidth.c 506src/util/bandwidth.c
507src/util/benchmark.c 507src/util/benchmark.c
508src/util/bio.c 508src/util/bio.c
@@ -518,8 +518,8 @@ src/util/consttime_memcmp.c
518src/util/container_bloomfilter.c 518src/util/container_bloomfilter.c
519src/util/container_heap.c 519src/util/container_heap.c
520src/util/container_meta_data.c 520src/util/container_meta_data.c
521src/util/container_multihashmap32.c
522src/util/container_multihashmap.c 521src/util/container_multihashmap.c
522src/util/container_multihashmap32.c
523src/util/container_multipeermap.c 523src/util/container_multipeermap.c
524src/util/container_multishortmap.c 524src/util/container_multishortmap.c
525src/util/container_multiuuidmap.c 525src/util/container_multiuuidmap.c
@@ -546,8 +546,8 @@ src/util/dnsstub.c
546src/util/getopt.c 546src/util/getopt.c
547src/util/getopt_helpers.c 547src/util/getopt_helpers.c
548src/util/gnunet-base32.c 548src/util/gnunet-base32.c
549src/util/gnunet-config.c
550src/util/gnunet-config-diff.c 549src/util/gnunet-config-diff.c
550src/util/gnunet-config.c
551src/util/gnunet-crypto-tvg.c 551src/util/gnunet-crypto-tvg.c
552src/util/gnunet-ecc.c 552src/util/gnunet-ecc.c
553src/util/gnunet-qr.c 553src/util/gnunet-qr.c
@@ -585,8 +585,8 @@ src/vpn/gnunet-helper-vpn.c
585src/vpn/gnunet-service-vpn.c 585src/vpn/gnunet-service-vpn.c
586src/vpn/gnunet-vpn.c 586src/vpn/gnunet-vpn.c
587src/vpn/vpn_api.c 587src/vpn/vpn_api.c
588src/zonemaster/gnunet-service-zonemaster.c
589src/zonemaster/gnunet-service-zonemaster-monitor.c 588src/zonemaster/gnunet-service-zonemaster-monitor.c
589src/zonemaster/gnunet-service-zonemaster.c
590src/fs/fs_api.h 590src/fs/fs_api.h
591src/include/gnunet_json_lib.h 591src/include/gnunet_json_lib.h
592src/testbed/testbed_api.h 592src/testbed/testbed_api.h
diff --git a/src/gnsrecord/gnsrecord_crypto.c b/src/gnsrecord/gnsrecord_crypto.c
index ff92911de..b5e8be82b 100644
--- a/src/gnsrecord/gnsrecord_crypto.c
+++ b/src/gnsrecord/gnsrecord_crypto.c
@@ -219,7 +219,6 @@ block_create_ecdsa (const struct GNUNET_CRYPTO_EcdsaPrivateKey *key,
219 rd); 219 rd);
220 struct GNUNET_GNSRECORD_EcdsaBlock *ecblock; 220 struct GNUNET_GNSRECORD_EcdsaBlock *ecblock;
221 struct GNRBlockPS *gnr_block; 221 struct GNRBlockPS *gnr_block;
222 struct GNUNET_CRYPTO_EcdsaPrivateKey *dkey;
223 unsigned char ctr[GNUNET_CRYPTO_AES_KEY_LENGTH / 2]; 222 unsigned char ctr[GNUNET_CRYPTO_AES_KEY_LENGTH / 2];
224 unsigned char skey[GNUNET_CRYPTO_AES_KEY_LENGTH]; 223 unsigned char skey[GNUNET_CRYPTO_AES_KEY_LENGTH];
225 struct GNUNET_GNSRECORD_Data rdc[GNUNET_NZL (rd_count)]; 224 struct GNUNET_GNSRECORD_Data rdc[GNUNET_NZL (rd_count)];
@@ -270,11 +269,10 @@ block_create_ecdsa (const struct GNUNET_CRYPTO_EcdsaPrivateKey *key,
270 gnr_block->expiration_time = GNUNET_TIME_absolute_hton (expire); 269 gnr_block->expiration_time = GNUNET_TIME_absolute_hton (expire);
271 ecblock->expiration_time = gnr_block->expiration_time; 270 ecblock->expiration_time = gnr_block->expiration_time;
272 /* encrypt and sign */ 271 /* encrypt and sign */
273 dkey = GNUNET_CRYPTO_ecdsa_private_key_derive (key, 272 GNUNET_CRYPTO_ecdsa_public_key_derive (pkey,
274 label, 273 label,
275 "gns"); 274 "gns",
276 GNUNET_CRYPTO_ecdsa_key_get_public (dkey, 275 &ecblock->derived_key);
277 &ecblock->derived_key);
278 GNR_derive_block_aes_key (ctr, 276 GNR_derive_block_aes_key (ctr,
279 skey, 277 skey,
280 label, 278 label,
@@ -289,18 +287,18 @@ block_create_ecdsa (const struct GNUNET_CRYPTO_EcdsaPrivateKey *key,
289 GNUNET_memcpy (&gnr_block[1], &ecblock[1], payload_len); 287 GNUNET_memcpy (&gnr_block[1], &ecblock[1], payload_len);
290 } 288 }
291 if (GNUNET_OK != 289 if (GNUNET_OK !=
292 GNUNET_CRYPTO_ecdsa_sign_ (dkey, 290 GNUNET_CRYPTO_ecdsa_sign_derived (key,
293 &gnr_block->purpose, 291 label,
294 &ecblock->signature)) 292 "gns",
293 &gnr_block->purpose,
294 &ecblock->signature))
295 { 295 {
296 GNUNET_break (0); 296 GNUNET_break (0);
297 GNUNET_free (*block); 297 GNUNET_free (*block);
298 GNUNET_free (dkey);
299 GNUNET_free (gnr_block); 298 GNUNET_free (gnr_block);
300 return GNUNET_SYSERR; 299 return GNUNET_SYSERR;
301 } 300 }
302 GNUNET_free (gnr_block); 301 GNUNET_free (gnr_block);
303 GNUNET_free (dkey);
304 return GNUNET_OK; 302 return GNUNET_OK;
305} 303}
306 304
@@ -344,7 +342,6 @@ block_create_eddsa (const struct GNUNET_CRYPTO_EddsaPrivateKey *key,
344 rd); 342 rd);
345 struct GNUNET_GNSRECORD_EddsaBlock *edblock; 343 struct GNUNET_GNSRECORD_EddsaBlock *edblock;
346 struct GNRBlockPS *gnr_block; 344 struct GNRBlockPS *gnr_block;
347 struct GNUNET_CRYPTO_EddsaPrivateScalar dkey;
348 unsigned char nonce[crypto_secretbox_NONCEBYTES]; 345 unsigned char nonce[crypto_secretbox_NONCEBYTES];
349 unsigned char skey[crypto_secretbox_KEYBYTES]; 346 unsigned char skey[crypto_secretbox_KEYBYTES];
350 struct GNUNET_GNSRECORD_Data rdc[GNUNET_NZL (rd_count)]; 347 struct GNUNET_GNSRECORD_Data rdc[GNUNET_NZL (rd_count)];
@@ -402,12 +399,10 @@ block_create_eddsa (const struct GNUNET_CRYPTO_EddsaPrivateKey *key,
402 gnr_block->expiration_time = GNUNET_TIME_absolute_hton (expire); 399 gnr_block->expiration_time = GNUNET_TIME_absolute_hton (expire);
403 edblock->expiration_time = gnr_block->expiration_time; 400 edblock->expiration_time = gnr_block->expiration_time;
404 /* encrypt and sign */ 401 /* encrypt and sign */
405 GNUNET_CRYPTO_eddsa_private_key_derive (key, 402 GNUNET_CRYPTO_eddsa_public_key_derive (pkey,
406 label, 403 label,
407 "gns", 404 "gns",
408 &dkey); 405 &edblock->derived_key);
409 GNUNET_CRYPTO_eddsa_key_get_public_from_scalar (&dkey,
410 &edblock->derived_key);
411 GNR_derive_block_xsalsa_key (nonce, 406 GNR_derive_block_xsalsa_key (nonce,
412 skey, 407 skey,
413 label, 408 label,
@@ -422,9 +417,11 @@ block_create_eddsa (const struct GNUNET_CRYPTO_EddsaPrivateKey *key,
422 GNUNET_memcpy (&gnr_block[1], &edblock[1], 417 GNUNET_memcpy (&gnr_block[1], &edblock[1],
423 payload_len + crypto_secretbox_MACBYTES); 418 payload_len + crypto_secretbox_MACBYTES);
424 419
425 GNUNET_CRYPTO_eddsa_sign_with_scalar (&dkey, 420 GNUNET_CRYPTO_eddsa_sign_derived (key,
426 &gnr_block->purpose, 421 label,
427 &edblock->signature); 422 "gns",
423 &gnr_block->purpose,
424 &edblock->signature);
428 } 425 }
429 return GNUNET_OK; 426 return GNUNET_OK;
430} 427}
diff --git a/src/include/gnunet_crypto_lib.h b/src/include/gnunet_crypto_lib.h
index 72d783148..77abab45d 100644
--- a/src/include/gnunet_crypto_lib.h
+++ b/src/include/gnunet_crypto_lib.h
@@ -2018,6 +2018,26 @@ GNUNET_CRYPTO_ecdsa_public_key_derive (
2018 const char *context, 2018 const char *context,
2019 struct GNUNET_CRYPTO_EcdsaPublicKey *result); 2019 struct GNUNET_CRYPTO_EcdsaPublicKey *result);
2020 2020
2021/**
2022 * This is a signature function for ECDSA which takes a
2023 * private key, derives/blinds it and signs the message.
2024 *
2025 * @param pkey original private key
2026 * @param label label to use for key deriviation
2027 * @param context additional context to use for HKDF of 'h';
2028 * typically the name of the subsystem/application
2029 * @param purp the signature purpose
2030 * @param sig the resulting signature
2031 * @return GNUNET_OK on success
2032 */
2033enum GNUNET_GenericReturnValue
2034GNUNET_CRYPTO_ecdsa_sign_derived (
2035 const struct GNUNET_CRYPTO_EcdsaPrivateKey *pkey,
2036 const char *label,
2037 const char *context,
2038 const struct GNUNET_CRYPTO_EccSignaturePurpose *purpose,
2039 struct GNUNET_CRYPTO_EcdsaSignature *sig);
2040
2021 2041
2022/** 2042/**
2023 * @ingroup crypto 2043 * @ingroup crypto
@@ -2063,23 +2083,23 @@ GNUNET_CRYPTO_eddsa_public_key_derive (
2063 2083
2064 2084
2065/** 2085/**
2066 * This is a signature function for EdDSA which takes the 2086 * This is a signature function for EdDSA which takes a
2067 * secret scalar sk instead of the private seed which is 2087 * private key and derives it using the label and context
2068 * usually the case for crypto APIs. We require this functionality 2088 * before signing.
2069 * in order to use derived private keys for signatures we
2070 * cannot calculate the inverse of a sk to find the seed
2071 * efficiently.
2072 * 2089 *
2073 * The resulting signature is a standard EdDSA signature 2090 * @param pkey original private key
2074 * which can be verified using the usual APIs. 2091 * @param label label to use for key deriviation
2075 * 2092 * @param context additional context to use for HKDF of 'h';
2076 * @param sk the secret scalar 2093 * typically the name of the subsystem/application
2077 * @param purp the signature purpose 2094 * @param purp the signature purpose
2078 * @param sig the resulting signature 2095 * @param sig the resulting signature
2096 * @return GNUNET_OK on success
2079 */ 2097 */
2080void 2098enum GNUNET_GenericReturnValue
2081GNUNET_CRYPTO_eddsa_sign_with_scalar ( 2099GNUNET_CRYPTO_eddsa_sign_derived (
2082 const struct GNUNET_CRYPTO_EddsaPrivateScalar *priv, 2100 const struct GNUNET_CRYPTO_EddsaPrivateKey *pkey,
2101 const char *label,
2102 const char *context,
2083 const struct GNUNET_CRYPTO_EccSignaturePurpose *purpose, 2103 const struct GNUNET_CRYPTO_EccSignaturePurpose *purpose,
2084 struct GNUNET_CRYPTO_EddsaSignature *sig); 2104 struct GNUNET_CRYPTO_EddsaSignature *sig);
2085 2105
diff --git a/src/include/gnunet_namestore_plugin.h b/src/include/gnunet_namestore_plugin.h
index 9cc8abc6e..3dca5a853 100644
--- a/src/include/gnunet_namestore_plugin.h
+++ b/src/include/gnunet_namestore_plugin.h
@@ -150,6 +150,71 @@ struct GNUNET_NAMESTORE_PluginFunctions
150 const struct GNUNET_IDENTITY_PublicKey *value_zone, 150 const struct GNUNET_IDENTITY_PublicKey *value_zone,
151 GNUNET_NAMESTORE_RecordIterator iter, 151 GNUNET_NAMESTORE_RecordIterator iter,
152 void *iter_cls); 152 void *iter_cls);
153
154 /** Transaction-based API draft **/
155
156 /**
157 * Start a transaction in the database
158 *
159 * @param cls closure (internal context for the plugin)
160 * @return #GNUNET_OK on success, #GNUNET_NO if there were no results, #GNUNET_SYSERR on error
161 */
162 enum GNUNET_GenericReturnValue
163 (*transaction_begin) (void *cls);
164
165 /**
166 * Abort a transaction in the database
167 *
168 * @param cls closure (internal context for the plugin)
169 * @return #GNUNET_OK on success, #GNUNET_NO if there were no results, #GNUNET_SYSERR on error
170 */
171 enum GNUNET_GenericReturnValue
172 (*transaction_abort) (void *cls);
173
174 /**
175 * Commit a transaction in the database
176 *
177 * @param cls closure (internal context for the plugin)
178 * @return #GNUNET_OK on success, #GNUNET_NO if there were no results, #GNUNET_SYSERR on error
179 */
180 enum GNUNET_GenericReturnValue
181 (*transaction_commit) (void *cls);
182
183 /**
184 * Replace a record in the datastore for which we are the authority.
185 * Removes any existing record in the same zone with the same name.
186 *
187 * @param cls closure (internal context for the plugin)
188 * @param zone private key of the zone
189 * @param label name of the record in the zone
190 * @param rd_count number of entries in @a rd array, 0 to delete all records
191 * @param rd array of records with data to store
192 * @return #GNUNET_OK on success, else #GNUNET_SYSERR
193 */
194 int
195 (*replace_records) (void *cls,
196 const struct GNUNET_IDENTITY_PrivateKey *zone,
197 const char *label,
198 unsigned int rd_count,
199 const struct GNUNET_GNSRECORD_Data *rd);
200
201 /**
202 * Lookup records in the datastore for which we are the authority.
203 *
204 * @param cls closure (internal context for the plugin)
205 * @param zone private key of the zone
206 * @param label name of the record in the zone
207 * @param iter function to call with the result
208 * @param iter_cls closure for @a iter
209 * @return #GNUNET_OK on success, #GNUNET_NO for no results, else #GNUNET_SYSERR
210 */
211 int
212 (*select_records) (void *cls,
213 const struct GNUNET_IDENTITY_PrivateKey *zone,
214 const char *label,
215 GNUNET_NAMESTORE_RecordIterator iter,
216 void *iter_cls);
217
153}; 218};
154 219
155 220
diff --git a/src/util/crypto_ecc_gnsrecord.c b/src/util/crypto_ecc_gnsrecord.c
index ce41a4699..0ee0570c0 100644
--- a/src/util/crypto_ecc_gnsrecord.c
+++ b/src/util/crypto_ecc_gnsrecord.c
@@ -68,28 +68,15 @@ derive_h (const void *pub,
68} 68}
69 69
70 70
71/** 71enum GNUNET_GenericReturnValue
72 * This is a signature function for EdDSA which takes the 72GNUNET_CRYPTO_eddsa_sign_derived (
73 * secret scalar sk instead of the private seed which is 73 const struct GNUNET_CRYPTO_EddsaPrivateKey *pkey,
74 * usually the case for crypto APIs. We require this functionality 74 const char *label,
75 * in order to use derived private keys for signatures we 75 const char *context,
76 * cannot calculate the inverse of a sk to find the seed
77 * efficiently.
78 *
79 * The resulting signature is a standard EdDSA signature
80 * which can be verified using the usual APIs.
81 *
82 * @param sk the secret scalar
83 * @param purp the signature purpose
84 * @param sig the resulting signature
85 */
86void
87GNUNET_CRYPTO_eddsa_sign_with_scalar (
88 const struct GNUNET_CRYPTO_EddsaPrivateScalar *priv,
89 const struct GNUNET_CRYPTO_EccSignaturePurpose *purpose, 76 const struct GNUNET_CRYPTO_EccSignaturePurpose *purpose,
90 struct GNUNET_CRYPTO_EddsaSignature *sig) 77 struct GNUNET_CRYPTO_EddsaSignature *sig)
91{ 78{
92 79 struct GNUNET_CRYPTO_EddsaPrivateScalar priv;
93 crypto_hash_sha512_state hs; 80 crypto_hash_sha512_state hs;
94 unsigned char sk[64]; 81 unsigned char sk[64];
95 unsigned char r[64]; 82 unsigned char r[64];
@@ -98,6 +85,14 @@ GNUNET_CRYPTO_eddsa_sign_with_scalar (
98 unsigned char zk[32]; 85 unsigned char zk[32];
99 unsigned char tmp[32]; 86 unsigned char tmp[32];
100 87
88 /**
89 * Derive the private key
90 */
91 GNUNET_CRYPTO_eddsa_private_key_derive (pkey,
92 label,
93 context,
94 &priv);
95
101 crypto_hash_sha512_init (&hs); 96 crypto_hash_sha512_init (&hs);
102 97
103 /** 98 /**
@@ -108,7 +103,7 @@ GNUNET_CRYPTO_eddsa_sign_with_scalar (
108 * sk[0..31] = h * SHA512 (d)[0..31] 103 * sk[0..31] = h * SHA512 (d)[0..31]
109 * sk[32..63] = SHA512 (d)[32..63] 104 * sk[32..63] = SHA512 (d)[32..63]
110 */ 105 */
111 memcpy (sk, priv->s, 64); 106 memcpy (sk, priv.s, 64);
112 107
113 /** 108 /**
114 * Calculate the derived zone key zk' from the 109 * Calculate the derived zone key zk' from the
@@ -172,8 +167,28 @@ GNUNET_CRYPTO_eddsa_sign_with_scalar (
172 sodium_memzero (sk, sizeof (sk)); 167 sodium_memzero (sk, sizeof (sk));
173 sodium_memzero (r, sizeof (r)); 168 sodium_memzero (r, sizeof (r));
174 sodium_memzero (r_mod, sizeof (r_mod)); 169 sodium_memzero (r_mod, sizeof (r_mod));
170 return GNUNET_OK;
175} 171}
176 172
173enum GNUNET_GenericReturnValue
174GNUNET_CRYPTO_ecdsa_sign_derived (
175 const struct GNUNET_CRYPTO_EcdsaPrivateKey *priv,
176 const char *label,
177 const char *context,
178 const struct GNUNET_CRYPTO_EccSignaturePurpose *purpose,
179 struct GNUNET_CRYPTO_EcdsaSignature *sig)
180{
181 struct GNUNET_CRYPTO_EcdsaPrivateKey *key;
182 enum GNUNET_GenericReturnValue res;
183 key = GNUNET_CRYPTO_ecdsa_private_key_derive (priv,
184 label,
185 context);
186 res = GNUNET_CRYPTO_ecdsa_sign_ (key,
187 purpose,
188 sig);
189 GNUNET_free (key);
190 return res;
191}
177 192
178struct GNUNET_CRYPTO_EcdsaPrivateKey * 193struct GNUNET_CRYPTO_EcdsaPrivateKey *
179GNUNET_CRYPTO_ecdsa_private_key_derive ( 194GNUNET_CRYPTO_ecdsa_private_key_derive (
diff --git a/src/util/test_crypto_eddsa.c b/src/util/test_crypto_eddsa.c
index 459619ff2..e9573a307 100644
--- a/src/util/test_crypto_eddsa.c
+++ b/src/util/test_crypto_eddsa.c
@@ -130,9 +130,11 @@ testDeriveSignVerify (void)
130 return GNUNET_SYSERR; 130 return GNUNET_SYSERR;
131 } 131 }
132 132
133 GNUNET_CRYPTO_eddsa_sign_with_scalar (&dpriv, 133 GNUNET_CRYPTO_eddsa_sign_derived (&key,
134 &purp, 134 "test-derive",
135 &sig); 135 "test-CTX",
136 &purp,
137 &sig);
136 if (GNUNET_SYSERR == 138 if (GNUNET_SYSERR ==
137 GNUNET_CRYPTO_eddsa_verify_ (GNUNET_SIGNATURE_PURPOSE_TEST, 139 GNUNET_CRYPTO_eddsa_verify_ (GNUNET_SIGNATURE_PURPOSE_TEST,
138 &purp, 140 &purp,