aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authort3sserakt <t3ss@posteo.de>2021-04-25 16:02:08 +0200
committert3sserakt <t3ss@posteo.de>2021-04-25 16:02:52 +0200
commitcef6317f17a706647c0a5d5f7e52548a7130b713 (patch)
treecc29c4d4c2ae83115a313b32653757e370b88c6c
parent9ffa19269054bf1e569fe584c0c51a00205a735d (diff)
parentb996ba4156678b6a0a551b9a932867b2ade42344 (diff)
downloadgnunet-cef6317f17a706647c0a5d5f7e52548a7130b713.tar.gz
gnunet-cef6317f17a706647c0a5d5f7e52548a7130b713.zip
Merge branch 'master' of ssh://gnunet.org/gnunet
-rw-r--r--ChangeLog10
-rw-r--r--README18
-rw-r--r--README.1st2
-rwxr-xr-xbootstrap2
-rw-r--r--configure.ac24
-rw-r--r--contrib/Makefile.inc3
-rw-r--r--contrib/packages/alpine/gnunet/gnunet-gns-proxy.initd3
-rw-r--r--contrib/packages/alpine/gnunet/gnunet.xsession1
-rw-r--r--debian/changelog36
-rw-r--r--debian/etc/X11/xinit/xinitrc.d/80-gnunet-user-services1
-rw-r--r--debian/gnunet.README.Debian2
-rw-r--r--debian/gnunet.lintian-overrides2
-rw-r--r--debian/gnunet.postinst3
-rw-r--r--doc/handbook/chapters/developer.texi83
-rw-r--r--doc/handbook/chapters/installation.texi27
-rw-r--r--doc/handbook/chapters/keyconcepts.texi2
-rw-r--r--doc/handbook/chapters/philosophy.texi2
-rw-r--r--doc/handbook/chapters/preface.texi4
-rw-r--r--doc/handbook/chapters/user.texi22
-rw-r--r--doc/index.html2
-rw-r--r--doc/man/gnunet-config.18
-rw-r--r--doc/man/gnunet-datastore.12
-rw-r--r--doc/man/gnunet-namestore.12
-rw-r--r--doc/release_policy.rfc.txt10
-rw-r--r--doc/tutorial/tutorial.texi12
-rw-r--r--po/POTFILES.in125
-rw-r--r--src/abd/plugin_gnsrecord_abd.c4
-rw-r--r--src/conversation/plugin_gnsrecord_conversation.c4
-rw-r--r--src/curl/curl.c4
-rw-r--r--src/datacache/datacache.c4
-rw-r--r--src/datastore/gnunet-service-datastore.c4
-rw-r--r--src/dht/dht_api.c2
-rw-r--r--src/dht/gnunet-service-dht_clients.c2
-rw-r--r--src/fragmentation/test_fragmentation.c2
-rw-r--r--src/fragmentation/test_fragmentation_parallel.c2
-rw-r--r--src/fs/fs_directory.c2
-rw-r--r--src/fs/fs_download.c2
-rw-r--r--src/fs/fs_sharetree.c2
-rw-r--r--src/fs/fs_uri.c2
-rw-r--r--src/fs/gnunet-helper-fs-publish.c2
-rw-r--r--src/fs/gnunet-search.c2
-rw-r--r--src/fs/perf_gnunet_service_fs_p2p_respect.c2
-rw-r--r--src/gns/gns_tld_api.c2
-rw-r--r--src/gns/gnunet-gns-import.c13
-rw-r--r--src/gns/gnunet-gns-proxy-ca.template4
-rw-r--r--src/gns/gnunet-gns-proxy.c4
-rw-r--r--src/gns/gnunet-service-gns.c2
-rw-r--r--src/gns/gnunet-service-gns_resolver.c4
-rw-r--r--src/gns/plugin_gnsrecord_gns.c4
-rw-r--r--src/gnsrecord/gnsrecord.c4
-rw-r--r--src/gnsrecord/plugin_gnsrecord_dns.c4
-rw-r--r--src/hostlist/gnunet-daemon-hostlist_server.c4
-rw-r--r--src/identity/gnunet-identity.c13
-rw-r--r--src/include/gnunet_ats_service.h6
-rw-r--r--src/include/gnunet_ats_transport_service.h2
-rw-r--r--src/include/gnunet_client_lib.h2
-rw-r--r--src/include/gnunet_container_lib.h8
-rw-r--r--src/include/gnunet_crypto_lib.h4
-rw-r--r--src/include/gnunet_curl_lib.h2
-rw-r--r--src/include/gnunet_dht_service.h2
-rw-r--r--src/include/gnunet_getopt_lib.h2
-rw-r--r--src/include/gnunet_gnsrecord_lib.h4
-rw-r--r--src/include/gnunet_gnsrecord_plugin.h6
-rw-r--r--src/include/gnunet_identity_service.h15
-rw-r--r--src/include/gnunet_mq_lib.h8
-rw-r--r--src/include/gnunet_network_lib.h2
-rw-r--r--src/include/gnunet_reclaim_plugin.h12
-rw-r--r--src/include/gnunet_strings_lib.h8
-rw-r--r--src/include/gnunet_testbed_service.h6
-rw-r--r--src/include/gnunet_time_lib.h2
-rw-r--r--src/include/gnunet_transport_communication_service.h6
-rw-r--r--src/include/gnunet_transport_plugin.h2
-rw-r--r--src/include/gnunet_tun_lib.h4
-rw-r--r--src/namestore/gnunet-namestore-fcfsd.c15
-rw-r--r--src/namestore/gnunet-zoneimport.c13
-rw-r--r--src/peerinfo-tool/gnunet-peerinfo_plugins.c4
-rw-r--r--src/pt/test_gns_vpn.c13
-rw-r--r--src/reclaim/Makefile.am40
-rw-r--r--src/reclaim/json_reclaim.c16
-rw-r--r--src/reclaim/pabc_helper.c364
-rw-r--r--src/reclaim/pabc_helper.h41
-rw-r--r--src/reclaim/plugin_gnsrecord_reclaim.c4
-rw-r--r--src/reclaim/plugin_reclaim_attribute_basic.c2
-rw-r--r--src/reclaim/plugin_reclaim_credential_jwt.c34
-rw-r--r--src/reclaim/plugin_reclaim_credential_pabc.c639
-rw-r--r--src/reclaim/plugin_rest_openid_connect.c13
-rw-r--r--src/reclaim/plugin_rest_pabc.c666
-rw-r--r--src/reclaim/plugin_rest_reclaim.c13
-rw-r--r--src/reclaim/reclaim_credential.c1
-rw-r--r--src/rest/gnunet-rest-server.c2
-rw-r--r--src/testbed/testbed_api.c2
-rw-r--r--src/testbed/testbed_api_test.c2
-rw-r--r--src/testbed/testbed_api_testbed.c2
-rw-r--r--src/testing/testing.c2
-rw-r--r--src/transport/gnunet-helper-transport-bluetooth.c2
-rw-r--r--src/transport/gnunet-helper-transport-wlan.c2
-rw-r--r--src/transport/gnunet-service-transport_plugins.c4
-rw-r--r--src/util/client.c2
-rw-r--r--src/util/common_logging.c16
-rw-r--r--src/util/container_meta_data.c4
-rw-r--r--src/util/crypto_rsa.c2
-rw-r--r--src/util/gnunet-config.c11
-rw-r--r--src/util/network.c2
-rw-r--r--src/util/scheduler.c2
-rw-r--r--src/util/strings.c8
-rw-r--r--src/util/tun.c4
106 files changed, 2167 insertions, 391 deletions
diff --git a/ChangeLog b/ChangeLog
index 631c35f46..b8f45a824 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,7 +2,7 @@ Sat, 3 Apr 2021 09:40:46 +0200 (08fe7735b)
2handbook: Add section on commit messages and developer branches - Martin Schanzenbach 2handbook: Add section on commit messages and developer branches - Martin Schanzenbach
3 3
4Thu, 1 Apr 2021 00:41:38 +0200 (9f340d5cc) 4Thu, 1 Apr 2021 00:41:38 +0200 (9f340d5cc)
5SETU: added some more perf messurement point for var message size - Elias Summermatter 5SETU: added some more perf measurement point for var message size - Elias Summermatter
6 6
7Thu, 1 Apr 2021 00:15:43 +0200 (12bb61317) 7Thu, 1 Apr 2021 00:15:43 +0200 (12bb61317)
8SETU: fixed some bug in rand element gen and added variable payload for perfmance - Elias Summermatter 8SETU: fixed some bug in rand element gen and added variable payload for perfmance - Elias Summermatter
@@ -11,7 +11,7 @@ Wed, 31 Mar 2021 11:49:10 +0200 (902331756)
11SETU: Added new operation parameters for performance tests - Elias Summermatter 11SETU: Added new operation parameters for performance tests - Elias Summermatter
12 12
13Wed, 31 Mar 2021 11:16:38 +0200 (b5660e0a3) 13Wed, 31 Mar 2021 11:16:38 +0200 (b5660e0a3)
14SETU: imporved tests - Elias Summermatter 14SETU: improved tests - Elias Summermatter
15 15
16Tue, 30 Mar 2021 19:26:40 +0200 (ca4c9eae2) 16Tue, 30 Mar 2021 19:26:40 +0200 (ca4c9eae2)
17UTIL/SCALARPRODUCT: Do not build ECC dlog or scalarproduct with incompatible libgcrypt versions (>=1.9.0) - Martin Schanzenbach 17UTIL/SCALARPRODUCT: Do not build ECC dlog or scalarproduct with incompatible libgcrypt versions (>=1.9.0) - Martin Schanzenbach
@@ -32,7 +32,7 @@ Thu, 18 Mar 2021 11:48:42 +0100 (f9ae0c23c)
32Added working test with randum set - Elias Summermatter 32Added working test with randum set - Elias Summermatter
33 33
34Thu, 18 Mar 2021 08:45:31 +0100 (0d6237ae0) 34Thu, 18 Mar 2021 08:45:31 +0100 (0d6237ae0)
35Added some randum elemet generation test for setu - Elias Summermatter 35Added some randum element generation test for setu - Elias Summermatter
36 36
37Sun, 14 Mar 2021 14:04:00 +0100 (b47586e76) 37Sun, 14 Mar 2021 14:04:00 +0100 (b47586e76)
38add packaging notice; fix #5633 - Martin Schanzenbach 38add packaging notice; fix #5633 - Martin Schanzenbach
@@ -722,7 +722,7 @@ Thu, 30 Jan 2020 10:48:04 +0100 (015cd279b)
722added testing scripts for dns2gns - rexxnor 722added testing scripts for dns2gns - rexxnor
723 723
724Fri, 24 Jan 2020 16:51:29 +0100 (f4a172abf) 724Fri, 24 Jan 2020 16:51:29 +0100 (f4a172abf)
725export GNUNET_PQ_run_sql() functonality - Christian Grothoff 725export GNUNET_PQ_run_sql() functionality - Christian Grothoff
726 726
727Fri, 24 Jan 2020 16:30:45 +0100 (2fd320bc7) 727Fri, 24 Jan 2020 16:30:45 +0100 (2fd320bc7)
728modify GNUNET_PQ_connect_with_cfg to enable flexible loading of .sql files - Christian Grothoff 728modify GNUNET_PQ_connect_with_cfg to enable flexible loading of .sql files - Christian Grothoff
@@ -902,7 +902,7 @@ Fri Jun 28 14:10:53 2019 +0200
902 902
903Thu Jun 27 10:34:46 2019 +0200 903Thu Jun 27 10:34:46 2019 +0200
904 The REST server now returns the Origin header value in the 904 The REST server now returns the Origin header value in the
905 CORS header reponse. -schanzen 905 CORS header response. -schanzen
906 906
907Thu Jun 27 09:08:06 2019 +0200 907Thu Jun 27 09:08:06 2019 +0200
908 GNS NSS plugin will not timeout and not hang forever and block 908 GNS NSS plugin will not timeout and not hang forever and block
diff --git a/README b/README
index 0665a8339..665cb3818 100644
--- a/README
+++ b/README
@@ -182,7 +182,7 @@ Recommended software for developer tools:
182 you, open a bug so that we can get a more portable 182 you, open a bug so that we can get a more portable
183 fix in. 183 fix in.
184 184
185[*4] We are commited to portable tools and solutions 185[*4] We are committed to portable tools and solutions
186 where possible. New scripts should be Posix sh 186 where possible. New scripts should be Posix sh
187 compatible, current and older scripts are 187 compatible, current and older scripts are
188 in the process of being rewritten to comply 188 in the process of being rewritten to comply
@@ -213,7 +213,7 @@ For a correct functionality depending on the host OS, you need
213to run the equivalent of these steps after installation. 213to run the equivalent of these steps after installation.
214Replace $(DESTDIR)$(libexecdir) with the appropriate paths, 214Replace $(DESTDIR)$(libexecdir) with the appropriate paths,
215for example /usr/local/lib/gnunet/libexec/. Note that this 215for example /usr/local/lib/gnunet/libexec/. Note that this
216obviously must be run as priviledged user. 216obviously must be run as privileged user.
217 217
218chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-vpn 218chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-vpn
219chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-vpn 219chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-vpn
@@ -289,8 +289,8 @@ Building GNUnet from source
289 289
290IMPORTANT: You can read further notes about compilation from source in 290IMPORTANT: You can read further notes about compilation from source in
291the handbook under doc/handbook/, which includes notes about specific 291the handbook under doc/handbook/, which includes notes about specific
292requirements for operating systems aswell. If you are a package 292requirements for operating systems as well. If you are a package
293mantainer for an Operating System we invite you to add your notes if 293maintainer for an Operating System we invite you to add your notes if
294you feel it is necessary and can not be covered in your Operating 294you feel it is necessary and can not be covered in your Operating
295System's documentation. 295System's documentation.
296 296
@@ -338,7 +338,7 @@ in 'contrib/services' or by running:
338 338
339 339
340Note that you must read paragraph "Notes on setuid", which documents steps you 340Note that you must read paragraph "Notes on setuid", which documents steps you
341have to follow after the installation, as a priviledged user. We require some 341have to follow after the installation, as a privileged user. We require some
342binaries to be setuid. The most portable approach across all supported 342binaries to be setuid. The most portable approach across all supported
343platforms and targets is to let this be handled manually. 343platforms and targets is to let this be handled manually.
344The installation will work if you do not run these steps as root, but some 344The installation will work if you do not run these steps as root, but some
@@ -376,7 +376,7 @@ $GNUNET_PREFIX you might have specified, as those libraries must be in
376your packaging script to miss those plugins, so you might need to do some 376your packaging script to miss those plugins, so you might need to do some
377additional manual work to include those libraries in your binary package(s). 377additional manual work to include those libraries in your binary package(s).
378Similarly, if you want to use the GNUnet Name System and did NOT run 378Similarly, if you want to use the GNUnet Name System and did NOT run
379GNUnet's 'make install' process with priviledged rights, the libraries will be 379GNUnet's 'make install' process with privileged rights, the libraries will be
380installed to "$GNUNET_PREFIX" and you will have to move them to "/lib/" 380installed to "$GNUNET_PREFIX" and you will have to move them to "/lib/"
381manually. 381manually.
382 382
@@ -443,7 +443,7 @@ GNUnet by periodically executing
443$ cat $SERVICEHOME/data/hosts/* > the_file 443$ cat $SERVICEHOME/data/hosts/* > the_file
444 444
445and offering 'the_file' via your web server. Alternatively, you can 445and offering 'the_file' via your web server. Alternatively, you can
446run the build-in web server by adding '-p' to the OPTIONS value 446run the built-in web server by adding '-p' to the OPTIONS value
447in the "hostlist" section of gnunet.conf and opening the respective 447in the "hostlist" section of gnunet.conf and opening the respective
448HTTPPORT to the public. 448HTTPPORT to the public.
449 449
@@ -495,7 +495,7 @@ https://bugs.gnunet.org/ or our bugs mailinglist.
495Please make sure to run the script "contrib/scripts/gnunet-bugreport" 495Please make sure to run the script "contrib/scripts/gnunet-bugreport"
496and include the output with your bug reports. More about how to 496and include the output with your bug reports. More about how to
497report bugs can be found in the GNUnet FAQ on the webpage. Submit 497report bugs can be found in the GNUnet FAQ on the webpage. Submit
498patches via E-Mail to gnunet-developers@gnu.org, formated with 498patches via E-Mail to gnunet-developers@gnu.org, formatted with
499`git format-patch`. 499`git format-patch`.
500 500
501In order to run the unit tests by hand (instead of using "make check"), 501In order to run the unit tests by hand (instead of using "make check"),
@@ -540,7 +540,7 @@ Then set in the HTTP section of gnunet.conf the "ADVERTISED_PORT" to
540"ADVERTISED_PORT" to "443" and "PORT" to 4433. 540"ADVERTISED_PORT" to "443" and "PORT" to 4433.
541 541
542You can do the same trick for the TCP and UDP transports if you want 542You can do the same trick for the TCP and UDP transports if you want
543to map them to a priviledged port (from the point of view of the 543to map them to a privileged port (from the point of view of the
544network). However, we are not aware of this providing any advantages 544network). However, we are not aware of this providing any advantages
545at this point. 545at this point.
546 546
diff --git a/README.1st b/README.1st
index c25992351..073357466 100644
--- a/README.1st
+++ b/README.1st
@@ -13,7 +13,7 @@ impact are given with each item.
13 13
14ats: 14ats:
15* We currently select one transport per peer, but we should allow the 15* We currently select one transport per peer, but we should allow the
16use of multiple channels concurrently (i.e. UDP + TCP at the same 16use of multiple channels concurrently (e.g. UDP + TCP at the same
17time). Neither ATS nor transport support this today, and this requires 17time). Neither ATS nor transport support this today, and this requires
18a major change in the ATS plugins and the ATS API and the overall 18a major change in the ATS plugins and the ATS API and the overall
19ATS/transport logic. [6-12 PM, robustness, performance] 19ATS/transport logic. [6-12 PM, robustness, performance]
diff --git a/bootstrap b/bootstrap
index 8fc4c4426..984c56cb3 100755
--- a/bootstrap
+++ b/bootstrap
@@ -1,7 +1,7 @@
1#!/bin/sh 1#!/bin/sh
2# 2#
3# We should use /usr/bin/env sh, but some systems are notoriously picky. 3# We should use /usr/bin/env sh, but some systems are notoriously picky.
4# In fact we could ommit this line if some automations wouldn't rely on 4# In fact we could omit this line if some automations wouldn't rely on
5# running this file via ./bootstrap. 5# running this file via ./bootstrap.
6# 6#
7# This file is in the public domain. 7# This file is in the public domain.
diff --git a/configure.ac b/configure.ac
index e66103b58..4a2f148ff 100644
--- a/configure.ac
+++ b/configure.ac
@@ -791,6 +791,30 @@ AS_IF([test "x$zbar" = x1],
791 [AC_DEFINE([HAVE_ZBAR],[1],[Have zbar library])], 791 [AC_DEFINE([HAVE_ZBAR],[1],[Have zbar library])],
792 [AC_DEFINE([HAVE_ZBAR],[0],[Lacking zbar library])]) 792 [AC_DEFINE([HAVE_ZBAR],[0],[Lacking zbar library])])
793 793
794# check for libpabc library
795pabc=0
796AC_MSG_CHECKING(for libpabc)
797AC_ARG_WITH(pabc,
798 [ --with-pabc=PREFIX (base of libpabc installation)],
799 [AC_MSG_RESULT([$with_pabc])
800 AS_CASE([$with_pabc],
801 [no],[],
802 [yes],[
803 CHECK_LIBHEADER(PABC, pabc, pabc_new_ctx, pabc/pabc.h,pabc=1,)
804 ],[
805 LDFLAGS="-L$with_pabc/lib $LDFLAGS"
806 CPPFLAGS="-I$with_pabc/include $CPPFLAGS"
807 AC_CHECK_HEADERS(pabc/pabc.h,
808 AC_CHECK_LIB([pabc], [pabc_new_ctx],
809 EXT_LIB_PATH="-L$with_pabc/lib $EXT_LIB_PATH"
810 pabc=1))
811 ])
812 ],
813 [AC_MSG_RESULT([--with-pabc not specified])
814 CHECK_LIBHEADER(PABC, pabc, pabc_new_ctx, pabc/pabc.h,pabc=1,)])
815AM_CONDITIONAL(HAVE_PABC, [test x$pabc = x1])
816
817
794# check for jansson library 818# check for jansson library
795jansson=0 819jansson=0
796AC_MSG_CHECKING(for libjansson) 820AC_MSG_CHECKING(for libjansson)
diff --git a/contrib/Makefile.inc b/contrib/Makefile.inc
index c737a07f8..a563ef4a1 100644
--- a/contrib/Makefile.inc
+++ b/contrib/Makefile.inc
@@ -8,7 +8,8 @@ BUILDCOMMON_SHLIB_FILES = \
8 build-common/sh/lib.sh/existence_python.sh \ 8 build-common/sh/lib.sh/existence_python.sh \
9 build-common/sh/lib.sh/msg.sh \ 9 build-common/sh/lib.sh/msg.sh \
10 build-common/sh/lib.sh/progname.sh \ 10 build-common/sh/lib.sh/progname.sh \
11 build-common/sh/lib.sh/version_gnunet.sh 11 build-common/sh/lib.sh/version_gnunet.sh \
12 build-common/LICENSE
12 13
13BUILDCOMMON_CONF_FILES = \ 14BUILDCOMMON_CONF_FILES = \
14 build-common/conf/.dir-locals.el \ 15 build-common/conf/.dir-locals.el \
diff --git a/contrib/packages/alpine/gnunet/gnunet-gns-proxy.initd b/contrib/packages/alpine/gnunet/gnunet-gns-proxy.initd
index 3c5a22ee2..2a4dcc1c4 100644
--- a/contrib/packages/alpine/gnunet/gnunet-gns-proxy.initd
+++ b/contrib/packages/alpine/gnunet/gnunet-gns-proxy.initd
@@ -21,12 +21,10 @@ start() {
21 # Customize gnunet.conf 21 # Customize gnunet.conf
22 port=$((8000+$(id -u $user))) 22 port=$((8000+$(id -u $user)))
23 gnunet-config -c /home/$user/.config/gnunet.conf \ 23 gnunet-config -c /home/$user/.config/gnunet.conf \
24 --rewrite \
25 --section=gns-proxy \ 24 --section=gns-proxy \
26 --option=IMMEDIATE_START \ 25 --option=IMMEDIATE_START \
27 --value=YES 26 --value=YES
28 gnunet-config -c /home/$user/.config/gnunet.conf \ 27 gnunet-config -c /home/$user/.config/gnunet.conf \
29 --rewrite \
30 --section=gns-proxy \ 28 --section=gns-proxy \
31 --option=OPTIONS \ 29 --option=OPTIONS \
32 --value="-p $port" 30 --value="-p $port"
@@ -79,7 +77,6 @@ stop() {
79 77
80 # Disable gns-proxy in config 78 # Disable gns-proxy in config
81 gnunet-config -c /home/$user/.config/gnunet.conf \ 79 gnunet-config -c /home/$user/.config/gnunet.conf \
82 --rewrite \
83 --section=gns-proxy \ 80 --section=gns-proxy \
84 --option=IMMEDIATE_START \ 81 --option=IMMEDIATE_START \
85 --value=NO 82 --value=NO
diff --git a/contrib/packages/alpine/gnunet/gnunet.xsession b/contrib/packages/alpine/gnunet/gnunet.xsession
index 944d47a27..dead5c783 100644
--- a/contrib/packages/alpine/gnunet/gnunet.xsession
+++ b/contrib/packages/alpine/gnunet/gnunet.xsession
@@ -10,7 +10,6 @@ if [ "$gnunet_proxy" ]; then
10 port=$((8000+$(id -u $user))) 10 port=$((8000+$(id -u $user)))
11 11
12 gnunet-config -c /home/$user/.config/gnunet.conf \ 12 gnunet-config -c /home/$user/.config/gnunet.conf \
13 --rewrite \
14 --section=gns-proxy \ 13 --section=gns-proxy \
15 --option=OPTIONS \ 14 --option=OPTIONS \
16 --value="-p $port" 15 --value="-p $port"
diff --git a/debian/changelog b/debian/changelog
index 0572e47fa..aafdc69df 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -389,7 +389,7 @@ gnunet (0.9.3-4) unstable; urgency=low
389 * Revert the use dh_installdocs --link-doc (Closes: #687875, #687881, 389 * Revert the use dh_installdocs --link-doc (Closes: #687875, #687881,
390 #687883). 390 #687883).
391 * Fix build on kfreebsd, thanks to Christoph Egger (Closes: #688486). 391 * Fix build on kfreebsd, thanks to Christoph Egger (Closes: #688486).
392 * Allways install libnss to /lib and fix FTBFS on ia64 (Closes: #688590). 392 * Always install libnss to /lib and fix FTBFS on ia64 (Closes: #688590).
393 * Install libnss to /lib, really fix #688590, thanks to Christian Grothoff. 393 * Install libnss to /lib, really fix #688590, thanks to Christian Grothoff.
394 * Change default option UNIX_MATCH_UID for services datastore and namestore, 394 * Change default option UNIX_MATCH_UID for services datastore and namestore,
395 so users in the gnunet group may use these services (Closes: #686238, 395 so users in the gnunet group may use these services (Closes: #686238,
@@ -546,7 +546,7 @@ gnunet (0.8.1b-5) unstable; urgency=low
546 546
547gnunet (0.8.1b-4) unstable; urgency=low 547gnunet (0.8.1b-4) unstable; urgency=low
548 548
549 * Stopp calling debconf-updatepo in clean target of rules. 549 * Stop calling debconf-updatepo in clean target of rules.
550 * Dropping la files. 550 * Dropping la files.
551 551
552 -- Daniel Baumann <daniel.baumann@progress-technologies.net> Mon, 03 May 2010 21:06:32 +0200 552 -- Daniel Baumann <daniel.baumann@progress-technologies.net> Mon, 03 May 2010 21:06:32 +0200
@@ -659,7 +659,7 @@ gnunet (0.8.0c-4) unstable; urgency=low
659 659
660gnunet (0.8.0c-3) unstable; urgency=low 660gnunet (0.8.0c-3) unstable; urgency=low
661 661
662 * Removing unneded versions for build-depends. 662 * Removing unneeded versions for build-depends.
663 * Wrapping build depends. 663 * Wrapping build depends.
664 * Sorting depends. 664 * Sorting depends.
665 * Updating year in copyright file. 665 * Updating year in copyright file.
@@ -694,7 +694,7 @@ gnunet (0.8.0c-1) unstable; urgency=low
694 * Removing old conflicts and replaces. 694 * Removing old conflicts and replaces.
695 * Making gnunet binNMU safe (Closes: #527453, #527462). 695 * Making gnunet binNMU safe (Closes: #527453, #527462).
696 * Using correct rfc-2822 date formats in changelog. 696 * Using correct rfc-2822 date formats in changelog.
697 * Using more generic directoy name for local additions within the 697 * Using more generic directory name for local additions within the
698 packaging directory. 698 packaging directory.
699 * Updating debhelper install files for new upstream. 699 * Updating debhelper install files for new upstream.
700 * Adding misc:Depends in control to remaining binary packages. 700 * Adding misc:Depends in control to remaining binary packages.
@@ -773,7 +773,7 @@ gnunet (0.8.0-1) unstable; urgency=low
773 * Reordering rules file. 773 * Reordering rules file.
774 * Also excluding gnunet meta package from ia64 since there is no gnunet on 774 * Also excluding gnunet meta package from ia64 since there is no gnunet on
775 ia64 anyway. 775 ia64 anyway.
776 * Using lintian debhelper to intall lintian overrides. 776 * Using lintian debhelper to install lintian overrides.
777 * Removing watch file. 777 * Removing watch file.
778 * Rewriting copyright file in machine-interpretable format. 778 * Rewriting copyright file in machine-interpretable format.
779 * Bumping versioned libextractor depends to 0.5.20. 779 * Bumping versioned libextractor depends to 0.5.20.
@@ -870,7 +870,7 @@ gnunet (0.7.2c-3) unstable; urgency=medium
870 - Updated to new policy. 870 - Updated to new policy.
871 - Using Homepage field in control. 871 - Using Homepage field in control.
872 - Using versioned depends for libextractor. 872 - Using versioned depends for libextractor.
873 - Comented lintian overrides. 873 - Commented lintian overrides.
874 874
875 -- Daniel Baumann <daniel.baumann@progress-technologies.net> Thu, 06 Dec 2007 22:36:00 +0100 875 -- Daniel Baumann <daniel.baumann@progress-technologies.net> Thu, 06 Dec 2007 22:36:00 +0100
876 876
@@ -971,7 +971,7 @@ gnunet (0.7.1c-2) unstable; urgency=low
971gnunet (0.7.1c-1) unstable; urgency=low 971gnunet (0.7.1c-1) unstable; urgency=low
972 972
973 * New upstream release (Closes: #420538). 973 * New upstream release (Closes: #420538).
974 * Package splitted into common, tools, daemon, client and dev (Closes: #394740). 974 * Package split into common, tools, daemon, client and dev (Closes: #394740).
975 * Added LSB section in init script. 975 * Added LSB section in init script.
976 * Enable IPv6 (Closes: #405763). 976 * Enable IPv6 (Closes: #405763).
977 977
@@ -1009,7 +1009,7 @@ gnunet (0.7.0e-2) unstable; urgency=low
1009 1009
1010gnunet (0.7.0e-1) unstable; urgency=high 1010gnunet (0.7.0e-1) unstable; urgency=high
1011 1011
1012 * New uptream release. 1012 * New upstream release.
1013 * Set urgency to high since this release fix the remote DOS CVE-2006-2413 (Closes: #368159) 1013 * Set urgency to high since this release fix the remote DOS CVE-2006-2413 (Closes: #368159)
1014 1014
1015 -- Arnaud Kyheng <Arnaud.Kyheng@free.fr> Sun, 21 May 2006 11:24:28 +0200 1015 -- Arnaud Kyheng <Arnaud.Kyheng@free.fr> Sun, 21 May 2006 11:24:28 +0200
@@ -1062,7 +1062,7 @@ gnunet (0.7.0-1) unstable; urgency=low
1062gnunet (0.6.6b-5) unstable; urgency=low 1062gnunet (0.6.6b-5) unstable; urgency=low
1063 1063
1064 * debian/control: Bumped policy version to 3.6.2. 1064 * debian/control: Bumped policy version to 3.6.2.
1065 * debian/control: Updated depedencies to follow C++ ABI changes (Closes: #325844). 1065 * debian/control: Updated dependencies to follow C++ ABI changes (Closes: #325844).
1066 * debian/po/vi.po: Added new Vietnamese translation of gnunet debconf messages. Thanks to Clytie Siddall (Closes: #314190). 1066 * debian/po/vi.po: Added new Vietnamese translation of gnunet debconf messages. Thanks to Clytie Siddall (Closes: #314190).
1067 1067
1068 -- Arnaud Kyheng <Arnaud.Kyheng@free.fr> Sun, 21 Aug 2005 10:54:54 +0200 1068 -- Arnaud Kyheng <Arnaud.Kyheng@free.fr> Sun, 21 Aug 2005 10:54:54 +0200
@@ -1163,7 +1163,7 @@ gnunet (0.6.5-3) unstable; urgency=low
1163 1163
1164gnunet (0.6.5-2) unstable; urgency=low 1164gnunet (0.6.5-2) unstable; urgency=low
1165 1165
1166 * Applied Martin Quinson l10n patch wich switch to gettext-based debconf and 1166 * Applied Martin Quinson l10n patch which switch to gettext-based debconf and
1167 does the following modifications (Closes: #283632): 1167 does the following modifications (Closes: #283632):
1168 - debian/control: modification for dependencies: 1168 - debian/control: modification for dependencies:
1169 build-dep: debhelper (>= 4.1.16) which depends on po-debconf. 1169 build-dep: debhelper (>= 4.1.16) which depends on po-debconf.
@@ -1276,7 +1276,7 @@ gnunet (0.6.4a-4) unstable; urgency=low
1276 1276
1277gnunet (0.6.4a-3) unstable; urgency=high 1277gnunet (0.6.4a-3) unstable; urgency=high
1278 1278
1279 * Bumb revision number for the package to be rebuild against fixed 1279 * Bump revision number for the package to be rebuild against fixed
1280 libgcrypt11 (>=1.2.0-10) (Closes: #275793) 1280 libgcrypt11 (>=1.2.0-10) (Closes: #275793)
1281 1281
1282 * debian/control: Added version requirement for libgcrypt11-dev (>=1.2.0-10). 1282 * debian/control: Added version requirement for libgcrypt11-dev (>=1.2.0-10).
@@ -1298,7 +1298,7 @@ gnunet (0.6.4a-1) unstable; urgency=medium
1298 * contrib/gnunet.desktop: Added menu file for GNOME and KDE. 1298 * contrib/gnunet.desktop: Added menu file for GNOME and KDE.
1299 * contrib/gnunet.root: Fixed to follow debian policy. 1299 * contrib/gnunet.root: Fixed to follow debian policy.
1300 * Removed beta binaries gnunet-dht* and gnunet-setup from package since 1300 * Removed beta binaries gnunet-dht* and gnunet-setup from package since
1301 they are not yet fonctional. 1301 they are not yet functional.
1302 1302
1303 -- Arnaud Kyheng <Arnaud.Kyheng@free.fr> Wed, 29 Sep 2004 08:09:38 +0200 1303 -- Arnaud Kyheng <Arnaud.Kyheng@free.fr> Wed, 29 Sep 2004 08:09:38 +0200
1304 1304
@@ -1310,7 +1310,7 @@ gnunet (0.6.4-3) unstable; urgency=low
1310 1310
1311gnunet (0.6.4-2) unstable; urgency=low 1311gnunet (0.6.4-2) unstable; urgency=low
1312 1312
1313 * Bumb revision number so ftp-master will accept it. 1313 * Bump revision number so ftp-master will accept it.
1314 1314
1315 -- Glenn McGrath <bug1@debian.org> Fri, 10 Sep 2004 12:13:54 +1000 1315 -- Glenn McGrath <bug1@debian.org> Fri, 10 Sep 2004 12:13:54 +1000
1316 1316
@@ -1386,7 +1386,7 @@ gnunet (0.6.1d-1) unstable; urgency=low
1386gnunet (0.6.1b-1) unstable; urgency=low 1386gnunet (0.6.1b-1) unstable; urgency=low
1387 1387
1388 * New upstream release 1388 * New upstream release
1389 * Run "gnunet-check -ra" in postinst for compatability 1389 * Run "gnunet-check -ra" in postinst for compatibility
1390 1390
1391 -- Glenn McGrath <bug1@debian.org> Sat, 31 Jan 2004 21:39:33 +1100 1391 -- Glenn McGrath <bug1@debian.org> Sat, 31 Jan 2004 21:39:33 +1100
1392 1392
@@ -1452,7 +1452,7 @@ gnunet (0.5.4a-5) unstable; urgency=low
1452 1452
1453gnunet (0.5.4a-4) unstable; urgency=low 1453gnunet (0.5.4a-4) unstable; urgency=low
1454 1454
1455 * Declare build depenency on libtool as well, grrrr 1455 * Declare build dependency on libtool as well, grrrr
1456 1456
1457 -- Glenn McGrath <bug1@debian.org> Mon, 21 Jul 2003 15:02:20 +0000 1457 -- Glenn McGrath <bug1@debian.org> Mon, 21 Jul 2003 15:02:20 +0000
1458 1458
@@ -1477,15 +1477,15 @@ gnunet (0.5.4a-1) unstable; urgency=low
1477 * New upstream release. 1477 * New upstream release.
1478 * Remove build dependency on libgcrypt, gnunet now uses an internal 1478 * Remove build dependency on libgcrypt, gnunet now uses an internal
1479 crypto library based on the CVS branch of libgcrypt. 1479 crypto library based on the CVS branch of libgcrypt.
1480 * Change build dependcy from libgdbmg1-dev to libgdbm-dev 1480 * Change build dependency from libgdbmg1-dev to libgdbm-dev
1481 * After 1 year and 39 days in preparation, its now eligable to be 1481 * After 1 year and 39 days in preparation, its now eligible to be
1482 uploaded to unstable (Closes: #147380) 1482 uploaded to unstable (Closes: #147380)
1483 1483
1484 -- Glenn McGrath <bug1@debian.org> Fri, 27 Jun 2003 16:47:54 +0000 1484 -- Glenn McGrath <bug1@debian.org> Fri, 27 Jun 2003 16:47:54 +0000
1485 1485
1486gnunet (0.5.4-1) unstable; urgency=low 1486gnunet (0.5.4-1) unstable; urgency=low
1487 1487
1488 * New upsteam release 1488 * New upstream release
1489 * Declare shared libraries within gnunet, dependency now detected 1489 * Declare shared libraries within gnunet, dependency now detected
1490 in gnunet-gtk 1490 in gnunet-gtk
1491 1491
diff --git a/debian/etc/X11/xinit/xinitrc.d/80-gnunet-user-services b/debian/etc/X11/xinit/xinitrc.d/80-gnunet-user-services
index aff1dd78c..d780b0e8e 100644
--- a/debian/etc/X11/xinit/xinitrc.d/80-gnunet-user-services
+++ b/debian/etc/X11/xinit/xinitrc.d/80-gnunet-user-services
@@ -9,7 +9,6 @@ if [ "$gnunet_proxy" ]; then
9 port=$((8000+$(id -u "$user"))) 9 port=$((8000+$(id -u "$user")))
10 10
11 gnunet-config -c "$HOME/.config/gnunet.conf" \ 11 gnunet-config -c "$HOME/.config/gnunet.conf" \
12 --rewrite \
13 --section=gns-proxy \ 12 --section=gns-proxy \
14 --option=OPTIONS \ 13 --option=OPTIONS \
15 --value="-p $port" 14 --value="-p $port"
diff --git a/debian/gnunet.README.Debian b/debian/gnunet.README.Debian
index 1bc37bab4..13021e099 100644
--- a/debian/gnunet.README.Debian
+++ b/debian/gnunet.README.Debian
@@ -2,7 +2,7 @@ gnunet
2------ 2------
3 3
4By default, the gnunet server starts automatically when the system is booted. 4By default, the gnunet server starts automatically when the system is booted.
5If you prefere to start it manually when you use it, change its configuration 5If you prefer to start it manually when you use it, change its configuration
6with: 6with:
7 7
8 # dpkg-reconfigure -plow gnunet-systempeer 8 # dpkg-reconfigure -plow gnunet-systempeer
diff --git a/debian/gnunet.lintian-overrides b/debian/gnunet.lintian-overrides
index b38bfe954..79a306d71 100644
--- a/debian/gnunet.lintian-overrides
+++ b/debian/gnunet.lintian-overrides
@@ -1,3 +1,3 @@
1# internal libraries are not splitted out into a dedicated package to avoid 1# internal libraries are not split out into a dedicated package to avoid
2# micropackaging. 2# micropackaging.
3gnunet: package-name-doesnt-match-sonames 3gnunet: package-name-doesnt-match-sonames
diff --git a/debian/gnunet.postinst b/debian/gnunet.postinst
index 07e5202e8..b6317f5be 100644
--- a/debian/gnunet.postinst
+++ b/debian/gnunet.postinst
@@ -149,12 +149,10 @@ EOF
149 fi 149 fi
150 port=$((8000+$(id -u "${users[$i]}"))) 150 port=$((8000+$(id -u "${users[$i]}")))
151 gnunet-config -c "${homedirs[$i]}/.config/gnunet.conf" \ 151 gnunet-config -c "${homedirs[$i]}/.config/gnunet.conf" \
152 --rewrite \
153 --section=gns-proxy \ 152 --section=gns-proxy \
154 --option=IMMEDIATE_START \ 153 --option=IMMEDIATE_START \
155 --value=YES 154 --value=YES
156 gnunet-config -c "${homedirs[$i]}/.config/gnunet.conf" \ 155 gnunet-config -c "${homedirs[$i]}/.config/gnunet.conf" \
157 --rewrite \
158 --section=gns-proxy \ 156 --section=gns-proxy \
159 --option=OPTIONS \ 157 --option=OPTIONS \
160 --value="-p $port" 158 --value="-p $port"
@@ -180,7 +178,6 @@ if [ "$gnunet_proxy" ]; then
180 port=$((8000+$(id -u $user))) 178 port=$((8000+$(id -u $user)))
181 179
182 gnunet-config -c $HOME/.config/gnunet.conf \ 180 gnunet-config -c $HOME/.config/gnunet.conf \
183 --rewrite \
184 --section=gns-proxy \ 181 --section=gns-proxy \
185 --option=OPTIONS \ 182 --option=OPTIONS \
186 --value="-p $port" 183 --value="-p $port"
diff --git a/doc/handbook/chapters/developer.texi b/doc/handbook/chapters/developer.texi
index 9bb74c3de..1bf7a7b24 100644
--- a/doc/handbook/chapters/developer.texi
+++ b/doc/handbook/chapters/developer.texi
@@ -392,9 +392,9 @@ etc.).
392@item @file{transport/} --- transport service 392@item @file{transport/} --- transport service
393The transport service is responsible for managing the 393The transport service is responsible for managing the
394basic P2P communication. It uses plugins to support P2P communication 394basic P2P communication. It uses plugins to support P2P communication
395over TCP, UDP, HTTP, HTTPS and other protocols.The transport service 395over TCP, UDP, HTTP, HTTPS and other protocols. The transport service
396validates peer addresses, enforces bandwidth restrictions, limits the 396validates peer addresses, enforces bandwidth restrictions, limits the
397total number of connections and enforces connectivity restrictions (i.e. 397total number of connections and enforces connectivity restrictions (e.g.
398friends-only). 398friends-only).
399@item @file{peerinfo-tool/} --- gnunet-peerinfo 399@item @file{peerinfo-tool/} --- gnunet-peerinfo
400This directory contains the gnunet-peerinfo binary which can be used to 400This directory contains the gnunet-peerinfo binary which can be used to
@@ -746,21 +746,21 @@ Here you can find some rules to help you write code for GNUnet.
746 746
747@itemize @bullet 747@itemize @bullet
748@item services and daemons use their directory name in 748@item services and daemons use their directory name in
749@code{GNUNET_log_setup} (i.e. 'core') and log using 749@code{GNUNET_log_setup} (e.g. 'core') and log using
750plain 'GNUNET_log'. 750plain 'GNUNET_log'.
751@item command-line tools use their full name in 751@item command-line tools use their full name in
752@code{GNUNET_log_setup} (i.e. 'gnunet-publish') and log using 752@code{GNUNET_log_setup} (e.g. 'gnunet-publish') and log using
753plain 'GNUNET_log'. 753plain 'GNUNET_log'.
754@item service access libraries log using 754@item service access libraries log using
755'@code{GNUNET_log_from}' and use '@code{DIRNAME-api}' for the 755'@code{GNUNET_log_from}' and use '@code{DIRNAME-api}' for the
756component (i.e. 'core-api') 756component (e.g. 'core-api')
757@item pure libraries (without associated service) use 757@item pure libraries (without associated service) use
758'@code{GNUNET_log_from}' with the component set to their 758'@code{GNUNET_log_from}' with the component set to their
759library name (without lib or '@file{.so}'), 759library name (without lib or '@file{.so}'),
760which should also be their directory name (i.e. '@file{nat}') 760which should also be their directory name (e.g. '@file{nat}')
761@item plugins should use '@code{GNUNET_log_from}' 761@item plugins should use '@code{GNUNET_log_from}'
762with the directory name and the plugin name combined to produce 762with the directory name and the plugin name combined to produce
763the component name (i.e. 'transport-tcp'). 763the component name (e.g. 'transport-tcp').
764@item logging should be unified per-file by defining a 764@item logging should be unified per-file by defining a
765@code{LOG} macro with the appropriate arguments, 765@code{LOG} macro with the appropriate arguments,
766along these lines: 766along these lines:
@@ -832,14 +832,14 @@ test
832@subsubsection src/ directories 832@subsubsection src/ directories
833 833
834@itemize @bullet 834@itemize @bullet
835@item gnunet-NAME: end-user applications (i.e., gnunet-search, gnunet-arm) 835@item gnunet-NAME: end-user applications (like gnunet-search or gnunet-arm)
836@item gnunet-service-NAME: service processes with accessor library (i.e., 836@item gnunet-service-NAME: service processes with accessor library (e.g.
837gnunet-service-arm) 837gnunet-service-arm)
838@item libgnunetNAME: accessor library (_service.h-header) or standalone 838@item libgnunetNAME: accessor library (_service.h-header) or standalone
839library (_lib.h-header) 839library (_lib.h-header)
840@item gnunet-daemon-NAME: daemon process without accessor library (i.e., 840@item gnunet-daemon-NAME: daemon process without accessor library (e.g.
841gnunet-daemon-hostlist) and no GNUnet management port 841gnunet-daemon-hostlist) and no GNUnet management port
842@item libgnunet_plugin_DIR_NAME: loadable plugins (i.e., 842@item libgnunet_plugin_DIR_NAME: loadable plugins (e.g.
843libgnunet_plugin_transport_tcp) 843libgnunet_plugin_transport_tcp)
844@end itemize 844@end itemize
845 845
@@ -2305,7 +2305,7 @@ for new developers):
2305@itemize @bullet 2305@itemize @bullet
2306@item logging (common_logging.c) 2306@item logging (common_logging.c)
2307@item memory allocation (common_allocation.c) 2307@item memory allocation (common_allocation.c)
2308@item endianess conversion (common_endian.c) 2308@item endianness conversion (common_endian.c)
2309@item internationalization (common_gettext.c) 2309@item internationalization (common_gettext.c)
2310@item String manipulation (string.c) 2310@item String manipulation (string.c)
2311@item file access (disk.c) 2311@item file access (disk.c)
@@ -4287,7 +4287,7 @@ which will warn you if you don't have the necessary libraries.
4287@c work!@ Finally you just have to be sure that you have the correct drivers 4287@c work!@ Finally you just have to be sure that you have the correct drivers
4288@c for your Bluetooth device installed and that your device is on and in a 4288@c for your Bluetooth device installed and that your device is on and in a
4289@c discoverable mode. The Windows Bluetooth Stack supports only the RFCOMM 4289@c discoverable mode. The Windows Bluetooth Stack supports only the RFCOMM
4290@c protocol so we cannot turn on your device programatically! 4290@c protocol so we cannot turn on your device programmatically!
4291 4291
4292@c FIXME: Change to unique title 4292@c FIXME: Change to unique title
4293@node How does it work2? 4293@node How does it work2?
@@ -4638,7 +4638,7 @@ simply use the socket.
4638@c implementation follows the same principles as the GNU/Linux one: 4638@c implementation follows the same principles as the GNU/Linux one:
4639 4639
4640@c @itemize @bullet 4640@c @itemize @bullet
4641@c @item It has a initalization part where it initializes the 4641@c @item It has a initialization part where it initializes the
4642@c Windows Sockets, creates a RFCOMM socket which will be binded and switched 4642@c Windows Sockets, creates a RFCOMM socket which will be binded and switched
4643@c to the listening mode and registers a SDP service. In the Microsoft 4643@c to the listening mode and registers a SDP service. In the Microsoft
4644@c Bluetooth API there are two ways to work with the SDP: 4644@c Bluetooth API there are two ways to work with the SDP:
@@ -5023,7 +5023,7 @@ key of the other peer
5023ephemeral key of the other peer, but we are waiting for the other peer to 5023ephemeral key of the other peer, but we are waiting for the other peer to
5024confirm it's authenticity (ability to decode) via challenge-response. 5024confirm it's authenticity (ability to decode) via challenge-response.
5025@item @code{KX_STATE_UP} The connection is fully up from the point of 5025@item @code{KX_STATE_UP} The connection is fully up from the point of
5026view of the sender (now performing keep-alives) 5026view of the sender (now performing keep-alive)
5027@item @code{KX_STATE_REKEY_SENT} The sender has initiated a rekeying 5027@item @code{KX_STATE_REKEY_SENT} The sender has initiated a rekeying
5028operation; the other peer has so far failed to confirm a working 5028operation; the other peer has so far failed to confirm a working
5029connection using the new ephemeral key 5029connection using the new ephemeral key
@@ -5653,7 +5653,7 @@ download. The client component is basically a HTTP client
5653(based on libcurl) which can download hostlists from one or more websites. 5653(based on libcurl) which can download hostlists from one or more websites.
5654The hostlist format is a binary blob containing a sequence of HELLO 5654The hostlist format is a binary blob containing a sequence of HELLO
5655messages. Note that any HTTP server can theoretically serve a hostlist, 5655messages. Note that any HTTP server can theoretically serve a hostlist,
5656the build-in hostlist server makes it simply convenient to offer this 5656the built-in hostlist server makes it simply convenient to offer this
5657service. 5657service.
5658 5658
5659 5659
@@ -5895,7 +5895,7 @@ The size of the list of URLs is restricted, so if an additional server is
5895added and the list is full, the URL with the worst quality ranking 5895added and the list is full, the URL with the worst quality ranking
5896(determined through successful downloads and number of HELLOs e.g.) is 5896(determined through successful downloads and number of HELLOs e.g.) is
5897discarded. During shutdown the list of URLs is saved to a file for 5897discarded. During shutdown the list of URLs is saved to a file for
5898persistance and loaded on startup. URLs from the configuration file are 5898persistence and loaded on startup. URLs from the configuration file are
5899never discarded. 5899never discarded.
5900 5900
5901@node Usage 5901@node Usage
@@ -6155,7 +6155,7 @@ To disconnect from NAMESTORE, clients use
6155@code{GNUNET_NAMESTORE_disconnect} and specify the handle to disconnect. 6155@code{GNUNET_NAMESTORE_disconnect} and specify the handle to disconnect.
6156 6156
6157NAMESTORE internally uses the ECDSA private key to refer to zones. These 6157NAMESTORE internally uses the ECDSA private key to refer to zones. These
6158private keys can be obtained from the IDENTITY subsytem. 6158private keys can be obtained from the IDENTITY subsystem.
6159Here @emph{egos} @emph{can be used to refer to zones or the default ego 6159Here @emph{egos} @emph{can be used to refer to zones or the default ego
6160assigned to the GNS subsystem can be used to obtained the master zone's 6160assigned to the GNS subsystem can be used to obtained the master zone's
6161private key.} 6161private key.}
@@ -6640,7 +6640,7 @@ The size of an element's data is limited to around 62 KB.
6640Sets created by a local client can be modified and reused for multiple 6640Sets created by a local client can be modified and reused for multiple
6641operations. As each set operation requires potentially expensive special 6641operations. As each set operation requires potentially expensive special
6642auxiliary data to be computed for each element of a set, a set can only 6642auxiliary data to be computed for each element of a set, a set can only
6643participate in one type of set operation (i.e. union or intersection). 6643participate in one type of set operation (either union or intersection).
6644The type of a set is determined upon its creation. 6644The type of a set is determined upon its creation.
6645If a the elements of a set are needed for an operation of a different 6645If a the elements of a set are needed for an operation of a different
6646type, all of the set's element must be copied to a new set of appropriate 6646type, all of the set's element must be copied to a new set of appropriate
@@ -6811,7 +6811,7 @@ the client.
6811 6811
6812 6812
6813 6813
6814Each listener also requires a seperate client connection. By sending the 6814Each listener also requires a separate client connection. By sending the
6815@code{GNUNET_SERVICE_SET_LISTEN} message, the client notifies the service 6815@code{GNUNET_SERVICE_SET_LISTEN} message, the client notifies the service
6816of the application id and operation type it is interested in. A client 6816of the application id and operation type it is interested in. A client
6817rejects an incoming request by sending @code{GNUNET_SERVICE_SET_REJECT} 6817rejects an incoming request by sending @code{GNUNET_SERVICE_SET_REJECT}
@@ -7147,7 +7147,7 @@ the client.
7147@node Listeners for Intersection 7147@node Listeners for Intersection
7148@subsubsection Listeners for Intersection 7148@subsubsection Listeners for Intersection
7149 7149
7150Each listener also requires a seperate client connection. By sending the 7150Each listener also requires a separate client connection. By sending the
7151@code{GNUNET_SERVICE_SETI_LISTEN} message, the client notifies the service 7151@code{GNUNET_SERVICE_SETI_LISTEN} message, the client notifies the service
7152of the application id and operation type it is interested in. A client 7152of the application id and operation type it is interested in. A client
7153rejects an incoming request by sending @code{GNUNET_SERVICE_SETI_REJECT} 7153rejects an incoming request by sending @code{GNUNET_SERVICE_SETI_REJECT}
@@ -7409,7 +7409,7 @@ the client.
7409@node Listeners for Union 7409@node Listeners for Union
7410@subsubsection Listeners for Union 7410@subsubsection Listeners for Union
7411 7411
7412Each listener also requires a seperate client connection. By sending the 7412Each listener also requires a separate client connection. By sending the
7413@code{GNUNET_SERVICE_SETU_LISTEN} message, the client notifies the service 7413@code{GNUNET_SERVICE_SETU_LISTEN} message, the client notifies the service
7414of the application id and operation type it is interested in. A client 7414of the application id and operation type it is interested in. A client
7415rejects an incoming request by sending @code{GNUNET_SERVICE_SETU_REJECT} 7415rejects an incoming request by sending @code{GNUNET_SERVICE_SETU_REJECT}
@@ -7832,7 +7832,7 @@ performance).
7832Third, an optional Bloom filter can be specified to exclude known results; 7832Third, an optional Bloom filter can be specified to exclude known results;
7833replies that hash to the bits set in the Bloom filter are considered 7833replies that hash to the bits set in the Bloom filter are considered
7834invalid. False-positives can be eliminated by sending the same query 7834invalid. False-positives can be eliminated by sending the same query
7835again with a different Bloom filter mutator value, which parameterizes 7835again with a different Bloom filter mutator value, which parametrizes
7836the hash function that is used. 7836the hash function that is used.
7837Finally, an optional application-specific "eXtended query" (xquery) can 7837Finally, an optional application-specific "eXtended query" (xquery) can
7838be specified to further constrain the results. It is entirely up to 7838be specified to further constrain the results. It is entirely up to
@@ -9030,14 +9030,13 @@ particular key has been revoked. The service responds with a
9030@code{QueryResponseMessage} which simply contains a bit that says if the 9030@code{QueryResponseMessage} which simply contains a bit that says if the
9031given public key is still valid, or if it has been revoked. 9031given public key is still valid, or if it has been revoked.
9032 9032
9033The second possible interaction is for a client to revoke a key by 9033The second possible interaction is for a client to revoke a key by passing a
9034passing a @code{RevokeMessage} to the service. The @code{RevokeMessage} 9034@code{RevokeMessage} to the service. The @code{RevokeMessage} contains the
9035contains the ECDSA public key to be revoked, a signature by the 9035ECDSA public key to be revoked, a signature by the corresponding private key
9036corresponding private key and the proof-of-work, The service responds 9036and the proof-of-work. The service responds with a
9037with a @code{RevocationResponseMessage} which can be used to indicate 9037@code{RevocationResponseMessage} which can be used to indicate that the
9038that the @code{RevokeMessage} was invalid (i.e. proof of work incorrect), 9038@code{RevokeMessage} was invalid (e.g. the proof of work is incorrect), or
9039or otherwise indicates that the revocation has been processed 9039otherwise to indicate that the revocation has been processed successfully.
9040successfully.
9041 9040
9042@node The REVOCATION Peer-to-Peer Protocol 9041@node The REVOCATION Peer-to-Peer Protocol
9043@subsection The REVOCATION Peer-to-Peer Protocol 9042@subsection The REVOCATION Peer-to-Peer Protocol
@@ -9615,9 +9614,9 @@ In order to address the above issues, we want to:
9615 TRANSPORT shall create bi-directional channels from this whenever 9614 TRANSPORT shall create bi-directional channels from this whenever
9616 possible. 9615 possible.
9617@item DV should no longer be a plugin, but part of TRANSPORT. 9616@item DV should no longer be a plugin, but part of TRANSPORT.
9618@item TRANSPORT should provide communicators help communicating (i.e. in the 9617@item TRANSPORT should provide communicators help communicating, for example
9619 case of uni-directional communicators or the need for out-of-band 9618 in the case of uni-directional communicators or the need for out-of-band
9620 signalling for NAT traversal). We call this functionality 9619 signalling for NAT traversal. We call this functionality
9621 @emph{backchannels}. 9620 @emph{backchannels}.
9622@item Transport manipulation should be signalled to CORE on a per-message basis 9621@item Transport manipulation should be signalled to CORE on a per-message basis
9623 instead of an approximate bandwidth. 9622 instead of an approximate bandwidth.
@@ -9715,8 +9714,8 @@ by layer. For example, CADET will always strictly implement reliable and
9715in-order delivery of messages, while the same options are only advisory for 9714in-order delivery of messages, while the same options are only advisory for
9716TRANSPORT and CORE: they should try (using ACKs on unreliable communicators, 9715TRANSPORT and CORE: they should try (using ACKs on unreliable communicators,
9717not changing the message order themselves), but if messages are lost anyway 9716not changing the message order themselves), but if messages are lost anyway
9718(i.e. because a TCP is dropped in the middle), or if messages are reordered 9717(e.g. because a TCP is dropped in the middle), or if messages are reordered
9719(i.e. because they took dierent paths over the network and arrived in a 9718(e.g. because they took different paths over the network and arrived in a
9720different order) TRANSPORT and CORE do not have to correct this. Whether a 9719different order) TRANSPORT and CORE do not have to correct this. Whether a
9721preference is strict or loose is thus dened by the respective layer. 9720preference is strict or loose is thus dened by the respective layer.
9722 9721
@@ -9728,8 +9727,8 @@ The API for communicators is defined in
9728Each communicator must specify its (global) communication characteristics, which 9727Each communicator must specify its (global) communication characteristics, which
9729for now only say whether the communication is reliable (e.g. TCP, HTTPS) or 9728for now only say whether the communication is reliable (e.g. TCP, HTTPS) or
9730unreliable (e.g. UDP, WLAN). Each communicator must specify a unique address 9729unreliable (e.g. UDP, WLAN). Each communicator must specify a unique address
9731prex, or NULL if the communicator cannot establish outgoing connections (i.e. 9730prex, or NULL if the communicator cannot establish outgoing connections
9732is only acting as a TCP server). 9731(for example because it is only acting as a TCP server).
9733A communicator must tell TRANSPORT which addresses it is reachable under. 9732A communicator must tell TRANSPORT which addresses it is reachable under.
9734Addresses may be added or removed at any time. A communicator may have zero 9733Addresses may be added or removed at any time. A communicator may have zero
9735addresses (transmission only). 9734addresses (transmission only).
@@ -9810,7 +9809,7 @@ properties designed for application level usage:
9810@item MESSENGER allows detection for dropped messages by chaining them (messages 9809@item MESSENGER allows detection for dropped messages by chaining them (messages
9811 refer to the last message by their hash) improving accountability 9810 refer to the last message by their hash) improving accountability
9812@item MESSENGER allows requesting messages from other peers explicitly to ensure 9811@item MESSENGER allows requesting messages from other peers explicitly to ensure
9813 availibility 9812 availability
9814@item MESSENGER provides confidentiality by padding messages to few different 9813@item MESSENGER provides confidentiality by padding messages to few different
9815 sizes (512 bytes, 4096 bytes, 32768 bytes and maximal message size from 9814 sizes (512 bytes, 4096 bytes, 32768 bytes and maximal message size from
9816 CADET) 9815 CADET)
@@ -9825,13 +9824,13 @@ Also MESSENGER provides multiple features with privacy in mind:
9825@itemize @bullet 9824@itemize @bullet
9826@item MESSENGER allows deleting messages from all peers in the group by the 9825@item MESSENGER allows deleting messages from all peers in the group by the
9827 original sender (uses the MESSENGER provided verification) 9826 original sender (uses the MESSENGER provided verification)
9828@item MESSENGER allows using the publically known anonymous ego instead of any 9827@item MESSENGER allows using the publicly known anonymous ego instead of any
9829 unique identifying ego 9828 unique identifying ego
9830@item MESSENGER allows your node to decide between acting as host of the used 9829@item MESSENGER allows your node to decide between acting as host of the used
9831 messaging room (sharing your peer's identity with all nodes in the group) 9830 messaging room (sharing your peer's identity with all nodes in the group)
9832 or acting as guest (sharing your peer's identity only with the nodes you 9831 or acting as guest (sharing your peer's identity only with the nodes you
9833 explicitly open a connection to) 9832 explicitly open a connection to)
9834@item MESSENGER handles members independantly of the peer's identity making 9833@item MESSENGER handles members independently of the peer's identity making
9835 forwarded messages indistinguishable from directly received ones ( 9834 forwarded messages indistinguishable from directly received ones (
9836 complicating the tracking of messages and identifying its origin) 9835 complicating the tracking of messages and identifying its origin)
9837@item MESSENGER allows names of members being not unique (also names are 9836@item MESSENGER allows names of members being not unique (also names are
@@ -9977,7 +9976,7 @@ check for completion of a member session requires this information.
9977 9976
9978A member session is a triple of the room key, the member ID and the public key 9977A member session is a triple of the room key, the member ID and the public key
9979of the member's ego. Member sessions allow that a member can change their ID or 9978of the member's ego. Member sessions allow that a member can change their ID or
9980their ego once at a time without loosing the ability to delete old messages or 9979their ego once at a time without losing the ability to delete old messages or
9981identifying the original sender of a message. On every change of ID or EGO a 9980identifying the original sender of a message. On every change of ID or EGO a
9982session will be marked as closed. So every session chain will only contain one 9981session will be marked as closed. So every session chain will only contain one
9983open session with the current ID and public key. 9982open session with the current ID and public key.
diff --git a/doc/handbook/chapters/installation.texi b/doc/handbook/chapters/installation.texi
index 40a23e738..24431e20f 100644
--- a/doc/handbook/chapters/installation.texi
+++ b/doc/handbook/chapters/installation.texi
@@ -171,7 +171,7 @@ group. In addition the group @code{gnunetdns} may be needed (see below).
171 171
172Create user @code{gnunet} who is member of the group @code{gnunet} 172Create user @code{gnunet} who is member of the group @code{gnunet}
173(automatically created) and specify a home directory where the GNUnet 173(automatically created) and specify a home directory where the GNUnet
174services will store persistant data such as information about peers. 174services will store persistent data such as information about peers.
175@example 175@example
176$ sudo useradd --system --home-dir /var/lib/gnunet --create-home gnunet 176$ sudo useradd --system --home-dir /var/lib/gnunet --create-home gnunet
177@end example 177@end example
@@ -431,7 +431,7 @@ For the @emph{multi-user setup} first the system services need to be started
431as the system user, i.e. the user @code{gnunet} needs to execute 431as the system user, i.e. the user @code{gnunet} needs to execute
432@code{gnunet-arm -s}. This should be done by the system's init system. 432@code{gnunet-arm -s}. This should be done by the system's init system.
433Then the user who wants to start GNUnet applications has to run 433Then the user who wants to start GNUnet applications has to run
434@code{gnunet-arm -s} too. It is recommented to automate this, e.g. using 434@code{gnunet-arm -s} too. It is recommended to automate this, e.g. using
435the user's crontab. 435the user's crontab.
436 436
437@node gnunet-gtk 437@node gnunet-gtk
@@ -1355,7 +1355,7 @@ The interface channel depends on the wlan network that the card is
1355connected to. If no connection has been made since the start of the 1355connected to. If no connection has been made since the start of the
1356computer, it is usually the first channel of the card. 1356computer, it is usually the first channel of the card.
1357Peers will only find each other and communicate if they are on the same 1357Peers will only find each other and communicate if they are on the same
1358channel. Channels must be set manually, i.e. using: 1358channel. Channels must be set manually, e.g. by using:
1359 1359
1360@example 1360@example
1361iwconfig wlan0 channel 1 1361iwconfig wlan0 channel 1
@@ -1369,7 +1369,7 @@ proxy forwards the HTTP request he receives with a certain URL to another
1369webserver, here a GNUnet peer. 1369webserver, here a GNUnet peer.
1370 1370
1371So if you have a running Apache or nginx webserver you can configure it to 1371So if you have a running Apache or nginx webserver you can configure it to
1372be a GNUnet reverse proxy. Especially if you have a well-known webiste 1372be a GNUnet reverse proxy. Especially if you have a well-known website
1373this improves censorship resistance since it looks as normal surfing 1373this improves censorship resistance since it looks as normal surfing
1374behaviour. 1374behaviour.
1375 1375
@@ -1944,12 +1944,13 @@ Python installation and its dependencies.
1944 1944
1945Another way to install Ascension on Debian is to install the python3-ascension 1945Another way to install Ascension on Debian is to install the python3-ascension
1946package. It can be found within the above mentioned Ascension git repository. 1946package. It can be found within the above mentioned Ascension git repository.
1947This also adds a system user ascension and runs a GNUnet peer in the 1947This also adds a system user called ascension and runs a GNUnet peer in the
1948background. Attention: This only works if a recent version of GNUnet is 1948background. Please note: This only works if a recent version of GNUnet is
1949installed on your system. The version number of Ascension is chosen according 1949installed on your system. The version number of Ascension is chosen according
1950to the required feature level of GNUnet. I.e. Ascension 0.11.5 is only 1950to the required feature level of GNUnet: Ascension 0.11.5 is only
1951compatible with GNUnet 0.11.5 and upwards. As Debian's packages for GNUnet are 1951compatible with GNUnet 0.11.5 or later and so on.
1952outdated even in experimental, you will need to install GNUnet manually 1952As Debian's packages for GNUnet are outdated even in experimental,
1953you will need to install GNUnet manually
1953@xref{Installing GNUnet}. 1954@xref{Installing GNUnet}.
1954 1955
1955Please check @xref{Migrating an existing DNS zone into GNS}, for usage manual 1956Please check @xref{Migrating an existing DNS zone into GNS}, for usage manual
@@ -2034,11 +2035,11 @@ Furthermore, you can serve as a DNS, IPv4 or IPv6 exit to the Internet.
2034Being a DNS exit is usually pretty harmless. However, enabling IPv4 or 2035Being a DNS exit is usually pretty harmless. However, enabling IPv4 or
2035IPv6-exit without further precautions may enable adversaries to access 2036IPv6-exit without further precautions may enable adversaries to access
2036your local network, send spam, attack other systems from your Internet 2037your local network, send spam, attack other systems from your Internet
2037connection and to other mischief that will appear to come from your 2038connection and do other mischiefs that will appear to come from your
2038machine. This may or may not get you into legal trouble. 2039machine. This may or may not get you into legal trouble.
2039If you want to allow IPv4 or IPv6-exit functionality, you should strongly 2040If you want to allow IPv4 or IPv6-exit functionality, you should strongly
2040consider adding additional firewall rules manually to protect your local 2041consider adding additional firewall rules manually to protect your local
2041network and to restrict outgoing TCP traffic (i.e. by not allowing access 2042network and to restrict outgoing TCP traffic (e.g. by not allowing access
2042to port 25). While we plan to improve exit-filtering in the future, 2043to port 25). While we plan to improve exit-filtering in the future,
2043you're currently on your own here. 2044you're currently on your own here.
2044Essentially, be prepared for any kind of IP-traffic to exit the respective 2045Essentially, be prepared for any kind of IP-traffic to exit the respective
@@ -2159,7 +2160,7 @@ run as use "gnunet" (and with option "-c /etc/gnunet.conf" so that it
2159modifies the system configuration). As always, gnunet-setup should be run 2160modifies the system configuration). As always, gnunet-setup should be run
2160after the GNUnet peer was stopped using "gnunet-arm -e". Distributors 2161after the GNUnet peer was stopped using "gnunet-arm -e". Distributors
2161might want to include a wrapper for gnunet-setup that allows the 2162might want to include a wrapper for gnunet-setup that allows the
2162desktop-user to "sudo" (i.e. using gtksudo) to the "gnunet" user account 2163desktop-user to "sudo" (e.g. using gtksudo) to the "gnunet" user account
2163and then runs "gnunet-arm -e", "gnunet-setup" and "gnunet-arm -s" in 2164and then runs "gnunet-arm -e", "gnunet-setup" and "gnunet-arm -s" in
2164sequence. 2165sequence.
2165 2166
@@ -2175,7 +2176,7 @@ Sane defaults should exist in your
2175you could simply start without any configuration. If you want to 2176you could simply start without any configuration. If you want to
2176configure your peer later, you need to stop it before invoking the 2177configure your peer later, you need to stop it before invoking the
2177@code{gnunet-setup} tool to customize further and to test your 2178@code{gnunet-setup} tool to customize further and to test your
2178configuration (@code{gnunet-setup} has build-in test functions). 2179configuration (@code{gnunet-setup} has built-in test functions).
2179 2180
2180The most important option you might have to still set by hand is in 2181The most important option you might have to still set by hand is in
2181[PATHS]. Here, you use the option "GNUNET_HOME" to specify the path where 2182[PATHS]. Here, you use the option "GNUNET_HOME" to specify the path where
diff --git a/doc/handbook/chapters/keyconcepts.texi b/doc/handbook/chapters/keyconcepts.texi
index f429997bf..49129acf5 100644
--- a/doc/handbook/chapters/keyconcepts.texi
+++ b/doc/handbook/chapters/keyconcepts.texi
@@ -242,7 +242,7 @@ against identification.
242 242
243The messaging service allows the use of an anonymous ego for the signing and 243The messaging service allows the use of an anonymous ego for the signing and
244verification process of messages instead of a unique ego. This anonymous ego is 244verification process of messages instead of a unique ego. This anonymous ego is
245a publically known key pair which is shared between all peers in GNUnet. 245a publicly known key pair which is shared between all peers in GNUnet.
246 246
247Using this ego only ensures that individual messages alone can't identify its 247Using this ego only ensures that individual messages alone can't identify its
248sender inside of a messenger room. It should be clarified that the route of 248sender inside of a messenger room. It should be clarified that the route of
diff --git a/doc/handbook/chapters/philosophy.texi b/doc/handbook/chapters/philosophy.texi
index 060871189..785a65e42 100644
--- a/doc/handbook/chapters/philosophy.texi
+++ b/doc/handbook/chapters/philosophy.texi
@@ -70,7 +70,7 @@ applications.
70@node Practicality 70@node Practicality
71@section Practicality 71@section Practicality
72 72
73Whereever possible GNUnet allows the peer to adjust its operations and 73Wherever possible GNUnet allows the peer to adjust its operations and
74functionalities to specific use cases. A GNUnet peer running on a 74functionalities to specific use cases. A GNUnet peer running on a
75mobile device with limited battery for example might choose not to 75mobile device with limited battery for example might choose not to
76relay traffic for other participants. 76relay traffic for other participants.
diff --git a/doc/handbook/chapters/preface.texi b/doc/handbook/chapters/preface.texi
index 62ced08a4..d1afdf756 100644
--- a/doc/handbook/chapters/preface.texi
+++ b/doc/handbook/chapters/preface.texi
@@ -85,7 +85,7 @@ book which explains GNUnet in the least complicated way to you.
85 85
86Even when you don't want to or can't learn Texinfo, you can contribute. 86Even when you don't want to or can't learn Texinfo, you can contribute.
87Send us an Email or join our IRC chat room on freenode and talk with 87Send us an Email or join our IRC chat room on freenode and talk with
88us about the documentation (the prefered way to reach out is the 88us about the documentation (the preferred way to reach out is the
89mailinglist, since you can communicate with us without waiting on 89mailinglist, since you can communicate with us without waiting on
90someone in the chatroom). 90someone in the chatroom).
91One way or another you can help shape the understanding of GNUnet 91One way or another you can help shape the understanding of GNUnet
@@ -144,7 +144,7 @@ and privacy-preserving online payments. In 2015, the
144@c XXX: but the correct version would lead to problems with 144@c XXX: but the correct version would lead to problems with
145@c XXX: some of our outputs and/or older versions of texinfo 145@c XXX: some of our outputs and/or older versions of texinfo
146@c XXX: and devices that display versions on consoles etc. 146@c XXX: and devices that display versions on consoles etc.
147@c XXX: This is why we keep the pEp until proven that p(tripple bar)p 147@c XXX: This is why we keep the pEp until proven that p(triple bar)p
148@c XXX: does not create broken outputs. 148@c XXX: does not create broken outputs.
149@uref{https://pep.foundation/, pretty Easy privacy} (pEp) project 149@uref{https://pep.foundation/, pretty Easy privacy} (pEp) project
150announced that they will use GNUnet as the technology for their 150announced that they will use GNUnet as the technology for their
diff --git a/doc/handbook/chapters/user.texi b/doc/handbook/chapters/user.texi
index b5889891b..409a89e47 100644
--- a/doc/handbook/chapters/user.texi
+++ b/doc/handbook/chapters/user.texi
@@ -71,7 +71,7 @@ $ gnunet-arm -e
71``.pin'' is a default zone which points to a zone managed by gnunet.org. 71``.pin'' is a default zone which points to a zone managed by gnunet.org.
72Use @code{gnunet-config -s gns} to view the GNS configuration, including 72Use @code{gnunet-config -s gns} to view the GNS configuration, including
73all configured zones that are operated by other users. The respective 73all configured zones that are operated by other users. The respective
74configuration entry names start with a ``.'', i.e. ``.pin''. 74configuration entry names start with a ``.'', e.g. ``.pin''.
75 75
76You can configure any number of top-level domains, and point them to 76You can configure any number of top-level domains, and point them to
77the respective zones of your friends! For this, simply obtain the 77the respective zones of your friends! For this, simply obtain the
@@ -109,7 +109,7 @@ rules - GO0T87F9BPMF8NKD5A54L2AH1T0GRML539TPFSRMCEA98182QD30
109@subsection The GNS Tab 109@subsection The GNS Tab
110 110
111 111
112Maintaing your zones is through the NAMESTORE service and is discussed 112Maintaining your zones is through the NAMESTORE service and is discussed
113here. You can manage your zone using @command{gnunet-identity} and 113here. You can manage your zone using @command{gnunet-identity} and
114@command{gnunet-namestore}, or most conveniently using 114@command{gnunet-namestore}, or most conveniently using
115@command{gnunet-namestore-gtk}. 115@command{gnunet-namestore-gtk}.
@@ -1620,7 +1620,7 @@ under "*.friend.gnu".
1620BOX records are there to integrate information from TLSA or 1620BOX records are there to integrate information from TLSA or
1621SRV records under the main label. In DNS, TLSA and SRV records 1621SRV records under the main label. In DNS, TLSA and SRV records
1622use special names of the form @code{_port._proto.(label.)*tld} to 1622use special names of the form @code{_port._proto.(label.)*tld} to
1623indicate the port number and protocol (i.e. tcp or udp) for which 1623indicate the port number and protocol (like TCP or UDP) for which
1624the TLSA or SRV record is valid. This causes various problems, and 1624the TLSA or SRV record is valid. This causes various problems, and
1625is elegantly solved in GNS by integrating the protocol and port 1625is elegantly solved in GNS by integrating the protocol and port
1626numbers together with the respective value into a "BOX" record. 1626numbers together with the respective value into a "BOX" record.
@@ -1633,7 +1633,7 @@ are BOXed up.
1633@subsubsection LEHO 1633@subsubsection LEHO
1634 1634
1635The LEgacy HOstname of a server. Some webservers expect a specific 1635The LEgacy HOstname of a server. Some webservers expect a specific
1636hostname to provide a service (virtiual hosting). Also SSL 1636hostname to provide a service (virtual hosting). Also SSL
1637certificates usually contain DNS names. To provide the expected 1637certificates usually contain DNS names. To provide the expected
1638legacy DNS name for a server, the LEHO record can be used. 1638legacy DNS name for a server, the LEHO record can be used.
1639To mitigate the just mentioned issues the GNS proxy has to be used. 1639To mitigate the just mentioned issues the GNS proxy has to be used.
@@ -1700,7 +1700,7 @@ be useful if you do not want to start resolution in the DNS root zone
1700(due to issues such as censorship or availability). 1700(due to issues such as censorship or availability).
1701 1701
1702Note that you would typically want to use a relative name for the 1702Note that you would typically want to use a relative name for the
1703nameserver, i.e. 1703nameserver, like so:
1704 1704
1705@example 1705@example
1706Name: pet; RRType: GNS2DNS; Value: gnunet.org@@ns-joker.+@ 1706Name: pet; RRType: GNS2DNS; Value: gnunet.org@@ns-joker.+@
@@ -2244,7 +2244,7 @@ that subnet to the GNUnet exit's TUN interface.
2244 2244
2245When running a local service, you should make sure that the local 2245When running a local service, you should make sure that the local
2246service is (also) bound to the IP address of your EXIT interface 2246service is (also) bound to the IP address of your EXIT interface
2247(i.e. 169.254.86.1). It will NOT work if your local service is 2247(e.g. 169.254.86.1). It will NOT work if your local service is
2248just bound to loopback. You may also want to create a "VPN" record 2248just bound to loopback. You may also want to create a "VPN" record
2249in your zone of the GNU Name System to make it easy for others to 2249in your zone of the GNU Name System to make it easy for others to
2250access your service via a name instead of just the full service 2250access your service via a name instead of just the full service
@@ -2315,7 +2315,7 @@ and restart your peer, your Internet traffic should be tunneled
2315over the GNUnet VPN. 2315over the GNUnet VPN.
2316 2316
2317The GNUnet VPN uses DNS-ALG to hijack your IP traffic. Whenever an 2317The GNUnet VPN uses DNS-ALG to hijack your IP traffic. Whenever an
2318application resolves a hostname (i.e. 'gnunet.org'), the 2318application resolves a hostname (like 'gnunet.org'), the
2319"gnunet-daemon-pt" will instruct the "gnunet-service-dns" to intercept 2319"gnunet-daemon-pt" will instruct the "gnunet-service-dns" to intercept
2320the request (possibly route it over GNUnet as well) and replace the 2320the request (possibly route it over GNUnet as well) and replace the
2321normal answer with an IP in the range of the VPN's interface. 2321normal answer with an IP in the range of the VPN's interface.
@@ -2325,8 +2325,8 @@ destination.
2325 2325
2326For applications that do not use DNS, you can also manually create 2326For applications that do not use DNS, you can also manually create
2327such a mapping using the gnunet-vpn command-line tool. Here, you 2327such a mapping using the gnunet-vpn command-line tool. Here, you
2328specify the desired address family of the result (i.e. "-4"), and the 2328specify the desired address family of the result (e.g. "-4"), and the
2329intended target IP on the Internet ("-i 131.159.74.67") and 2329intended target IP on the Internet (e.g. "-i 131.159.74.67") and
2330"gnunet-vpn" will tell you which IP address in the range of your 2330"gnunet-vpn" will tell you which IP address in the range of your
2331VPN tunnel was mapped. 2331VPN tunnel was mapped.
2332 2332
@@ -2404,7 +2404,7 @@ $ gnunet-peerinfo -s
2404 2404
2405A ROOMKEY gets entered in readable text form. The service will then hash the 2405A ROOMKEY gets entered in readable text form. The service will then hash the
2406entered ROOMKEY and use the result as shared secret for transmission through 2406entered ROOMKEY and use the result as shared secret for transmission through
2407the CADET submodule. You can also optionally leave out the '-r' paramter and 2407the CADET submodule. You can also optionally leave out the '-r' parameter and
2408the ROOMKEY to use the zeroed hash instead. 2408the ROOMKEY to use the zeroed hash instead.
2409 2409
2410If no IDENTITY is provided you will not send any name to others, you will be 2410If no IDENTITY is provided you will not send any name to others, you will be
@@ -2478,7 +2478,7 @@ $ gnunet-messenger [-e IDENTITY] -d PEERIDENTITY -r ROOMKEY -p
2478@end example 2478@end example
2479 2479
2480Notice that you can only send such encrypted messages to members who use an ego 2480Notice that you can only send such encrypted messages to members who use an ego
2481which is not publically known as the anonymous ego to ensure transparency. If 2481which is not publicly known as the anonymous ego to ensure transparency. If
2482any user could decrypt these messages they would not be private. So as receiver 2482any user could decrypt these messages they would not be private. So as receiver
2483of such messages the IDENTITY is required and it has to match a local ego. 2483of such messages the IDENTITY is required and it has to match a local ego.
2484 2484
diff --git a/doc/index.html b/doc/index.html
index 93c0e7d9e..bf8683780 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -2,7 +2,7 @@
2 <head> 2 <head>
3 <title>GNUnet - GNUnet Manuals and Handbooks</title> 3 <title>GNUnet - GNUnet Manuals and Handbooks</title>
4 <meta charset="utf-8"> 4 <meta charset="utf-8">
5 <meta name="keywords" content="gnunet,GNUnet,Manual,Manuals,preview,developer-preview,inofficial,GNU"> 5 <meta name="keywords" content="gnunet,GNUnet,Manual,Manuals,preview,developer-preview,unofficial,GNU">
6 <meta name="description" content="The GNUnet Manuals"> 6 <meta name="description" content="The GNUnet Manuals">
7 <link href="style.css" rel="stylesheet"> 7 <link href="style.css" rel="stylesheet">
8 <meta name="viewport" content="width=device-width, initial-scale=1"> 8 <meta name="viewport" content="width=device-width, initial-scale=1">
diff --git a/doc/man/gnunet-config.1 b/doc/man/gnunet-config.1
index f6166cbca..3d243af89 100644
--- a/doc/man/gnunet-config.1
+++ b/doc/man/gnunet-config.1
@@ -39,13 +39,13 @@
39.Op Fl s Ar SECTION | Fl -section= Ns Ar SECTION 39.Op Fl s Ar SECTION | Fl -section= Ns Ar SECTION
40.Op Fl V Ar VALUE | Fl -value Ar VALUE 40.Op Fl V Ar VALUE | Fl -value Ar VALUE
41.Op Fl v | -version 41.Op Fl v | -version
42.Op Fl W | -rewrite 42.Op Fl w | -rewrite
43.Sh DESCRIPTION 43.Sh DESCRIPTION
44.Nm 44.Nm
45can be used to read or modify GNUnet configuration files. 45can be used to read or modify GNUnet configuration files.
46.Bl -tag -width indent 46.Bl -tag -width indent
47.It Fl b Ar BACKEND | Fl -supported-backend= Ns Ar BACKEND 47.It Fl b Ar BACKEND | Fl -supported-backend= Ns Ar BACKEND
48Tests whether the specified BACKEND is supported by the current installation. The backend must match the name of a plugin, i.e. "namestore_postgres" for the Postgres database backend of the "NAMESTORE" service. If the BACKEND is supported, gnunet-config will return a status code of 0 (success), otherwise 77 (unsupported). When this option is specified, no other options may be specified. Specifying this option together with other options will cause gnunet-config to return a status code of 1 (error). 48Tests whether the specified BACKEND is supported by the current installation. The backend must match the name of a plugin, e.g. "namestore_postgres" for the Postgres database backend of the "NAMESTORE" service. If the BACKEND is supported, gnunet-config will return a status code of 0 (success), otherwise 77 (unsupported). When this option is specified, no other options may be specified. Specifying this option together with other options will cause gnunet-config to return a status code of 1 (error).
49.It Fl c Ar FILENAME | Fl -config= Ns Ar FILENAME 49.It Fl c Ar FILENAME | Fl -config= Ns Ar FILENAME
50Use the configuration file FILENAME. 50Use the configuration file FILENAME.
51.It Fl f | -filename 51.It Fl f | -filename
@@ -69,8 +69,8 @@ Configuration value to store in the given section under the given option.
69Must only be given together with -s and -o options. 69Must only be given together with -s and -o options.
70.It Fl v | -version 70.It Fl v | -version
71Print GNUnet version number. 71Print GNUnet version number.
72.It Fl W | -rewrite 72.It Fl w | -rewrite
73Consider differences to defaults only. 73Write to file the full configuration, including default values, instead of just the differences.
74.El 74.El
75.Sh SEE ALSO 75.Sh SEE ALSO
76The full documentation for gnunet is maintained as a Texinfo manual. 76The full documentation for gnunet is maintained as a Texinfo manual.
diff --git a/doc/man/gnunet-datastore.1 b/doc/man/gnunet-datastore.1
index 81347dcae..842ba62a0 100644
--- a/doc/man/gnunet-datastore.1
+++ b/doc/man/gnunet-datastore.1
@@ -41,7 +41,7 @@
41.Nm 41.Nm
42can be used to backup and restore or merge GNUnet datastores. 42can be used to backup and restore or merge GNUnet datastores.
43This is useful if a datastore is to be migrated between 43This is useful if a datastore is to be migrated between
44SQL databases, i.e. from sqlite to postgres or vice versa. 44SQL databases, e.g. from sqlite to postgres or vice versa.
45gnunet-datastore will dump the entire contents of the database 45gnunet-datastore will dump the entire contents of the database
46or insert a dump file into the database. 46or insert a dump file into the database.
47.Bl -tag -width indent 47.Bl -tag -width indent
diff --git a/doc/man/gnunet-namestore.1 b/doc/man/gnunet-namestore.1
index b9bbff027..73bbe5a5c 100644
--- a/doc/man/gnunet-namestore.1
+++ b/doc/man/gnunet-namestore.1
@@ -109,7 +109,7 @@ Create a record that is a shadow record.
109Shadow records are only used once all other records of the same type 109Shadow records are only used once all other records of the same type
110under the same label have expired. 110under the same label have expired.
111.It Fl t Ar TYPE | Fl -type= Ns Ar TYPE 111.It Fl t Ar TYPE | Fl -type= Ns Ar TYPE
112Type of the record to add/delete/display (i.e. "A", "AAAA", "NS", "PKEY", "MX" etc.). 112Type of the record to add/delete/display ("A"; "AAAA"; "NS"; "PKEY"; "MX"; etc.).
113.It Fl u Ar URI | Fl -uri= Ns Ar URI 113.It Fl u Ar URI | Fl -uri= Ns Ar URI
114Add PKEY record from gnunet://gns/-URI to our zone; the record type is 114Add PKEY record from gnunet://gns/-URI to our zone; the record type is
115always PKEY, if no expiration is given FOREVER is used 115always PKEY, if no expiration is given FOREVER is used
diff --git a/doc/release_policy.rfc.txt b/doc/release_policy.rfc.txt
index 8fd89f73c..41c98ec93 100644
--- a/doc/release_policy.rfc.txt
+++ b/doc/release_policy.rfc.txt
@@ -42,7 +42,7 @@ document the current release model:
42 mostly we rather explicitly declare certain bugs as "not critical") 42 mostly we rather explicitly declare certain bugs as "not critical")
43 - Whenever API changes happen the person making that changes should update 43 - Whenever API changes happen the person making that changes should update
44 dependencies or at least work with people who hack on the dependencies to 44 dependencies or at least work with people who hack on the dependencies to
45 cooridnate the adjustments 45 coordinate the adjustments
46 o buildbots are happy (if running) 46 o buildbots are happy (if running)
47 o static analysis is happy (if available, false-positives => ignore) 47 o static analysis is happy (if available, false-positives => ignore)
48 o documentation is reasonably up-to-date 48 o documentation is reasonably up-to-date
@@ -57,7 +57,7 @@ For further information see: https://trunkbaseddevelopment.com/
57 57
58II. Evaluation Criteria 58II. Evaluation Criteria
59======================= 59=======================
60(what are criterias to interprete the results as success if we review 60(what are criteria to interpret the results as success if we review
61the problem and solution after a year or so) 61the problem and solution after a year or so)
62 62
63III. Concerns (of team members) 63III. Concerns (of team members)
@@ -74,7 +74,7 @@ code. I don't have a magic bullet to motivate you to write more tests,
74or to improve existing tests. -CG 74or to improve existing tests. -CG
75 75
76 Your argument is good. Two or three of us thought that the problem is about 76 Your argument is good. Two or three of us thought that the problem is about
77 missing releases which we feld demotivating. We thought, we were stucked 77 missing releases which we feld demotivating. We thought, we were stuck
78 somewhere. But as you state, it is us not doing the necessary work. What I 78 somewhere. But as you state, it is us not doing the necessary work. What I
79 still find useful is to document the release process. In consequence I 79 still find useful is to document the release process. In consequence I
80 changed the problem statement. -xrs 80 changed the problem statement. -xrs
@@ -125,7 +125,7 @@ leaves of the dependency graph, that is great. However, occasionally
125there are architectural changes. Not of the type where the graph 125there are architectural changes. Not of the type where the graph
126changes, but where key API assumptions change. We recently had one for 126changes, but where key API assumptions change. We recently had one for
127the GNU Name System with the dropping of ".gnu". Before, CADET 127the GNU Name System with the dropping of ".gnu". Before, CADET
128changed the semantics and paramter for 'port'. In the future, CORE 128changed the semantics and parameter for 'port'. In the future, CORE
129will introduce protocol versioning. Whenever such a change happens, 129will introduce protocol versioning. Whenever such a change happens,
130it usually falls upon the person making that change to update 130it usually falls upon the person making that change to update
131dependencies as well (or at least to work with people who hack on the 131dependencies as well (or at least to work with people who hack on the
@@ -175,7 +175,7 @@ Note that none of this really adds up to a "release policy".
175V. Previous Versions 175V. Previous Versions
176==================== 176====================
177(if we found some flaws in the solution, and we want to change the 177(if we found some flaws in the solution, and we want to change the
178release policy, we document the old ones here als previous versions. 178release policy, we document the old ones here as previous versions.
179the goal is establish a learn process.) 179the goal is establish a learn process.)
180 180
181IV. References 181IV. References
diff --git a/doc/tutorial/tutorial.texi b/doc/tutorial/tutorial.texi
index e1d70c492..0a011c0c8 100644
--- a/doc/tutorial/tutorial.texi
+++ b/doc/tutorial/tutorial.texi
@@ -282,7 +282,7 @@ Assuming all dependencies are installed, the following commands will
282compile and install GNUnet in your home directory. You can specify the 282compile and install GNUnet in your home directory. You can specify the
283directory where GNUnet will be installed by changing the 283directory where GNUnet will be installed by changing the
284@code{--prefix} value when calling @command{./configure}. If 284@code{--prefix} value when calling @command{./configure}. If
285you do not specifiy a prefix, GNUnet is installed in the directory 285you do not specify a prefix, GNUnet is installed in the directory
286@file{/usr/local}. When developing new applications you may want 286@file{/usr/local}. When developing new applications you may want
287to enable verbose logging by adding @code{--enable-logging=verbose}: 287to enable verbose logging by adding @code{--enable-logging=verbose}:
288 288
@@ -940,7 +940,7 @@ with the service, a connection must be created:
940As a result a @code{GNUNET\_MQ\_Handle} is returned 940As a result a @code{GNUNET\_MQ\_Handle} is returned
941which can to used henceforth to transmit messages to the service. 941which can to used henceforth to transmit messages to the service.
942The complete MQ API can be found in @file{gnunet\_mq\_lib.h}. 942The complete MQ API can be found in @file{gnunet\_mq\_lib.h}.
943The @code{hanlders} array in the example above is incomplete. 943The @code{handlers} array in the example above is incomplete.
944Here is where you will define which messages you expect to 944Here is where you will define which messages you expect to
945receive from the service, and which functions handle them. 945receive from the service, and which functions handle them.
946The @code{error\_cb} is a function that is to be called whenever 946The @code{error\_cb} is a function that is to be called whenever
@@ -1060,7 +1060,7 @@ functions, typically called @code{run}, @code{client\_connect\_cb} and
1060@code{client\_disconnect\_cb} as well as an array of message handlers 1060@code{client\_disconnect\_cb} as well as an array of message handlers
1061that will be called for incoming messages from clients. 1061that will be called for incoming messages from clients.
1062 1062
1063A minimal version of the three central service funtions would look 1063A minimal version of the three central service functions would look
1064like this: 1064like this:
1065 1065
1066@example 1066@example
@@ -1093,7 +1093,7 @@ forget to call @code{GNUNET\_SERVICE\_client\_continue()}?
1093@node Interacting directly with other Peers using the CORE Service 1093@node Interacting directly with other Peers using the CORE Service
1094@section Interacting directly with other Peers using the CORE Service 1094@section Interacting directly with other Peers using the CORE Service
1095 1095
1096FIXME: This section still needs to be updated to the lastest API! 1096FIXME: This section still needs to be updated to the latest API!
1097 1097
1098One of the most important services in GNUnet is the @code{CORE} service 1098One of the most important services in GNUnet is the @code{CORE} service
1099managing connections between peers and handling encryption between peers. 1099managing connections between peers and handling encryption between peers.
@@ -1349,7 +1349,7 @@ sent. This does not guarantee that the data is accessible to others peers,
1349or even that is has been stored, only that the service has requested to 1349or even that is has been stored, only that the service has requested to
1350a neighboring peer the retransmission of the PUT request towards its final 1350a neighboring peer the retransmission of the PUT request towards its final
1351destination. Currently there is no feedback about whether or not the data 1351destination. Currently there is no feedback about whether or not the data
1352has been sucessfully stored or where it has been stored. In order to 1352has been successfully stored or where it has been stored. In order to
1353improve the availablilty of the data and to compensate for possible 1353improve the availablilty of the data and to compensate for possible
1354errors, peers leaving and other unfavorable events, just make several 1354errors, peers leaving and other unfavorable events, just make several
1355PUT requests! 1355PUT requests!
@@ -1504,7 +1504,7 @@ GET request, a PUT request or a response (a reply to a GET).
1504Since the different events have different associated data, 1504Since the different events have different associated data,
1505the API gets 3 different callbacks (one for each message type) 1505the API gets 3 different callbacks (one for each message type)
1506and optional type and key parameters, to allow for filtering of 1506and optional type and key parameters, to allow for filtering of
1507messages. When an event happens, the appropiate callback is 1507messages. When an event happens, the appropriate callback is
1508called with all the information about the event. 1508called with all the information about the event.
1509 1509
1510@example 1510@example
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 9d1e3427c..dd36b7411 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -10,13 +10,21 @@ 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-tests/ats-testing-experiment.c
14src/ats-tests/ats-testing-log.c
15src/ats-tests/ats-testing-preferences.c
16src/ats-tests/ats-testing-traffic.c
17src/ats-tests/ats-testing.c
18src/ats-tests/gnunet-ats-sim.c
19src/ats-tests/gnunet-solver-eval.c
20src/ats-tool/gnunet-ats.c
13src/ats/ats_api_connectivity.c 21src/ats/ats_api_connectivity.c
14src/ats/ats_api_performance.c 22src/ats/ats_api_performance.c
15src/ats/ats_api_scanner.c 23src/ats/ats_api_scanner.c
16src/ats/ats_api_scheduling.c 24src/ats/ats_api_scheduling.c
17src/ats/gnunet-ats-solver-eval.c 25src/ats/gnunet-ats-solver-eval.c
18src/ats/gnunet-service-ats_addresses.c
19src/ats/gnunet-service-ats.c 26src/ats/gnunet-service-ats.c
27src/ats/gnunet-service-ats_addresses.c
20src/ats/gnunet-service-ats_connectivity.c 28src/ats/gnunet-service-ats_connectivity.c
21src/ats/gnunet-service-ats_normalization.c 29src/ats/gnunet-service-ats_normalization.c
22src/ats/gnunet-service-ats_performance.c 30src/ats/gnunet-service-ats_performance.c
@@ -25,14 +33,6 @@ src/ats/gnunet-service-ats_preferences.c
25src/ats/gnunet-service-ats_reservations.c 33src/ats/gnunet-service-ats_reservations.c
26src/ats/gnunet-service-ats_scheduling.c 34src/ats/gnunet-service-ats_scheduling.c
27src/ats/plugin_ats_proportional.c 35src/ats/plugin_ats_proportional.c
28src/ats-tests/ats-testing.c
29src/ats-tests/ats-testing-experiment.c
30src/ats-tests/ats-testing-log.c
31src/ats-tests/ats-testing-preferences.c
32src/ats-tests/ats-testing-traffic.c
33src/ats-tests/gnunet-ats-sim.c
34src/ats-tests/gnunet-solver-eval.c
35src/ats-tool/gnunet-ats.c
36src/auction/gnunet-auction-create.c 36src/auction/gnunet-auction-create.c
37src/auction/gnunet-auction-info.c 37src/auction/gnunet-auction-info.c
38src/auction/gnunet-auction-join.c 38src/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.c
54src/cadet/gnunet-cadet-profiler.c 53src/cadet/gnunet-cadet-profiler.c
54src/cadet/gnunet-cadet.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.c
71src/conversation/gnunet-conversation-test.c 70src/conversation/gnunet-conversation-test.c
72src/conversation/gnunet_gst.c 71src/conversation/gnunet-conversation.c
73src/conversation/gnunet_gst_test.c
74src/conversation/gnunet-helper-audio-playback.c
75src/conversation/gnunet-helper-audio-playback-gst.c 72src/conversation/gnunet-helper-audio-playback-gst.c
76src/conversation/gnunet-helper-audio-record.c 73src/conversation/gnunet-helper-audio-playback.c
77src/conversation/gnunet-helper-audio-record-gst.c 74src/conversation/gnunet-helper-audio-record-gst.c
75src/conversation/gnunet-helper-audio-record.c
78src/conversation/gnunet-service-conversation.c 76src/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
@@ -105,7 +105,6 @@ src/dht/dht_api.c
105src/dht/dht_test_lib.c 105src/dht/dht_test_lib.c
106src/dht/gnunet-dht-get.c 106src/dht/gnunet-dht-get.c
107src/dht/gnunet-dht-monitor.c 107src/dht/gnunet-dht-monitor.c
108src/dht/gnunet_dht_profiler.c
109src/dht/gnunet-dht-put.c 108src/dht/gnunet-dht-put.c
110src/dht/gnunet-service-dht.c 109src/dht/gnunet-service-dht.c
111src/dht/gnunet-service-dht_clients.c 110src/dht/gnunet-service-dht_clients.c
@@ -114,6 +113,7 @@ src/dht/gnunet-service-dht_hello.c
114src/dht/gnunet-service-dht_neighbours.c 113src/dht/gnunet-service-dht_neighbours.c
115src/dht/gnunet-service-dht_nse.c 114src/dht/gnunet-service-dht_nse.c
116src/dht/gnunet-service-dht_routing.c 115src/dht/gnunet-service-dht_routing.c
116src/dht/gnunet_dht_profiler.c
117src/dht/plugin_block_dht.c 117src/dht/plugin_block_dht.c
118src/dns/dns_api.c 118src/dns/dns_api.c
119src/dns/gnunet-dns-monitor.c 119src/dns/gnunet-dns-monitor.c
@@ -148,8 +148,8 @@ src/fs/gnunet-auto-share.c
148src/fs/gnunet-daemon-fsprofiler.c 148src/fs/gnunet-daemon-fsprofiler.c
149src/fs/gnunet-directory.c 149src/fs/gnunet-directory.c
150src/fs/gnunet-download.c 150src/fs/gnunet-download.c
151src/fs/gnunet-fs.c
152src/fs/gnunet-fs-profiler.c 151src/fs/gnunet-fs-profiler.c
152src/fs/gnunet-fs.c
153src/fs/gnunet-helper-fs-publish.c 153src/fs/gnunet-helper-fs-publish.c
154src/fs/gnunet-publish.c 154src/fs/gnunet-publish.c
155src/fs/gnunet-search.c 155src/fs/gnunet-search.c
@@ -169,9 +169,9 @@ src/gns/gns_tld_api.c
169src/gns/gnunet-bcd.c 169src/gns/gnunet-bcd.c
170src/gns/gnunet-dns2gns.c 170src/gns/gnunet-dns2gns.c
171src/gns/gnunet-gns-benchmark.c 171src/gns/gnunet-gns-benchmark.c
172src/gns/gnunet-gns.c
173src/gns/gnunet-gns-import.c 172src/gns/gnunet-gns-import.c
174src/gns/gnunet-gns-proxy.c 173src/gns/gnunet-gns-proxy.c
174src/gns/gnunet-gns.c
175src/gns/gnunet-service-gns.c 175src/gns/gnunet-service-gns.c
176src/gns/gnunet-service-gns_interceptor.c 176src/gns/gnunet-service-gns_interceptor.c
177src/gns/gnunet-service-gns_resolver.c 177src/gns/gnunet-service-gns_resolver.c
@@ -189,8 +189,8 @@ src/gnsrecord/json_gnsrecord.c
189src/gnsrecord/plugin_gnsrecord_dns.c 189src/gnsrecord/plugin_gnsrecord_dns.c
190src/hello/address.c 190src/hello/address.c
191src/hello/gnunet-hello.c 191src/hello/gnunet-hello.c
192src/hello/hello.c
193src/hello/hello-ng.c 192src/hello/hello-ng.c
193src/hello/hello.c
194src/hostlist/gnunet-daemon-hostlist.c 194src/hostlist/gnunet-daemon-hostlist.c
195src/hostlist/gnunet-daemon-hostlist_client.c 195src/hostlist/gnunet-daemon-hostlist_client.c
196src/hostlist/gnunet-daemon-hostlist_server.c 196src/hostlist/gnunet-daemon-hostlist_server.c
@@ -205,8 +205,8 @@ src/json/json_generator.c
205src/json/json_helper.c 205src/json/json_helper.c
206src/json/json_mhd.c 206src/json/json_mhd.c
207src/messenger/gnunet-messenger.c 207src/messenger/gnunet-messenger.c
208src/messenger/gnunet-service-messenger_basement.c
209src/messenger/gnunet-service-messenger.c 208src/messenger/gnunet-service-messenger.c
209src/messenger/gnunet-service-messenger_basement.c
210src/messenger/gnunet-service-messenger_ego_store.c 210src/messenger/gnunet-service-messenger_ego_store.c
211src/messenger/gnunet-service-messenger_handle.c 211src/messenger/gnunet-service-messenger_handle.c
212src/messenger/gnunet-service-messenger_list_handles.c 212src/messenger/gnunet-service-messenger_list_handles.c
@@ -245,8 +245,8 @@ src/namecache/namecache_api.c
245src/namecache/plugin_namecache_flat.c 245src/namecache/plugin_namecache_flat.c
246src/namecache/plugin_namecache_postgres.c 246src/namecache/plugin_namecache_postgres.c
247src/namecache/plugin_namecache_sqlite.c 247src/namecache/plugin_namecache_sqlite.c
248src/namestore/gnunet-namestore.c
249src/namestore/gnunet-namestore-fcfsd.c 248src/namestore/gnunet-namestore-fcfsd.c
249src/namestore/gnunet-namestore.c
250src/namestore/gnunet-service-namestore.c 250src/namestore/gnunet-service-namestore.c
251src/namestore/gnunet-zoneimport.c 251src/namestore/gnunet-zoneimport.c
252src/namestore/namestore_api.c 252src/namestore/namestore_api.c
@@ -272,17 +272,17 @@ src/nat/gnunet-service-nat_mini.c
272src/nat/gnunet-service-nat_stun.c 272src/nat/gnunet-service-nat_stun.c
273src/nat/nat_api.c 273src/nat/nat_api.c
274src/nat/nat_api_stun.c 274src/nat/nat_api_stun.c
275src/nse/gnunet-nse.c
276src/nse/gnunet-nse-profiler.c 275src/nse/gnunet-nse-profiler.c
276src/nse/gnunet-nse.c
277src/nse/gnunet-service-nse.c 277src/nse/gnunet-service-nse.c
278src/nse/nse_api.c 278src/nse/nse_api.c
279src/nt/nt.c 279src/nt/nt.c
280src/peerinfo/gnunet-service-peerinfo.c
281src/peerinfo/peerinfo_api.c
282src/peerinfo/peerinfo_api_notify.c
283src/peerinfo-tool/gnunet-peerinfo.c 280src/peerinfo-tool/gnunet-peerinfo.c
284src/peerinfo-tool/gnunet-peerinfo_plugins.c 281src/peerinfo-tool/gnunet-peerinfo_plugins.c
285src/peerinfo-tool/plugin_rest_peerinfo.c 282src/peerinfo-tool/plugin_rest_peerinfo.c
283src/peerinfo/gnunet-service-peerinfo.c
284src/peerinfo/peerinfo_api.c
285src/peerinfo/peerinfo_api_notify.c
286src/peerstore/gnunet-peerstore.c 286src/peerstore/gnunet-peerstore.c
287src/peerstore/gnunet-service-peerstore.c 287src/peerstore/gnunet-service-peerstore.c
288src/peerstore/peerstore_api.c 288src/peerstore/peerstore_api.c
@@ -302,10 +302,13 @@ src/reclaim/gnunet-service-reclaim.c
302src/reclaim/gnunet-service-reclaim_tickets.c 302src/reclaim/gnunet-service-reclaim_tickets.c
303src/reclaim/json_reclaim.c 303src/reclaim/json_reclaim.c
304src/reclaim/oidc_helper.c 304src/reclaim/oidc_helper.c
305src/reclaim/pabc_helper.c
305src/reclaim/plugin_gnsrecord_reclaim.c 306src/reclaim/plugin_gnsrecord_reclaim.c
306src/reclaim/plugin_reclaim_attribute_basic.c 307src/reclaim/plugin_reclaim_attribute_basic.c
307src/reclaim/plugin_reclaim_credential_jwt.c 308src/reclaim/plugin_reclaim_credential_jwt.c
309src/reclaim/plugin_reclaim_credential_pabc.c
308src/reclaim/plugin_rest_openid_connect.c 310src/reclaim/plugin_rest_openid_connect.c
311src/reclaim/plugin_rest_pabc.c
309src/reclaim/plugin_rest_reclaim.c 312src/reclaim/plugin_rest_reclaim.c
310src/reclaim/reclaim_api.c 313src/reclaim/reclaim_api.c
311src/reclaim/reclaim_attribute.c 314src/reclaim/reclaim_attribute.c
@@ -328,27 +331,27 @@ src/rest/gnunet-rest-server.c
328src/rest/plugin_rest_config.c 331src/rest/plugin_rest_config.c
329src/rest/plugin_rest_copying.c 332src/rest/plugin_rest_copying.c
330src/rest/rest.c 333src/rest/rest.c
331src/revocation/gnunet-revocation.c
332src/revocation/gnunet-revocation-tvg.c 334src/revocation/gnunet-revocation-tvg.c
335src/revocation/gnunet-revocation.c
333src/revocation/gnunet-service-revocation.c 336src/revocation/gnunet-service-revocation.c
334src/revocation/plugin_block_revocation.c 337src/revocation/plugin_block_revocation.c
335src/revocation/revocation_api.c 338src/revocation/revocation_api.c
336src/rps/gnunet-rps.c
337src/rps/gnunet-rps-profiler.c 339src/rps/gnunet-rps-profiler.c
340src/rps/gnunet-rps.c
338src/rps/gnunet-service-rps.c 341src/rps/gnunet-service-rps.c
339src/rps/gnunet-service-rps_custommap.c 342src/rps/gnunet-service-rps_custommap.c
340src/rps/gnunet-service-rps_sampler.c 343src/rps/gnunet-service-rps_sampler.c
341src/rps/gnunet-service-rps_sampler_elem.c 344src/rps/gnunet-service-rps_sampler_elem.c
342src/rps/gnunet-service-rps_view.c 345src/rps/gnunet-service-rps_view.c
343src/rps/rps_api.c
344src/rps/rps-sampler_client.c 346src/rps/rps-sampler_client.c
345src/rps/rps-sampler_common.c 347src/rps/rps-sampler_common.c
346src/rps/rps-test_util.c 348src/rps/rps-test_util.c
349src/rps/rps_api.c
347src/scalarproduct/gnunet-scalarproduct.c 350src/scalarproduct/gnunet-scalarproduct.c
348src/scalarproduct/gnunet-service-scalarproduct_alice.c
349src/scalarproduct/gnunet-service-scalarproduct_bob.c
350src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c 351src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c
351src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c 352src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c
353src/scalarproduct/gnunet-service-scalarproduct_alice.c
354src/scalarproduct/gnunet-service-scalarproduct_bob.c
352src/scalarproduct/scalarproduct_api.c 355src/scalarproduct/scalarproduct_api.c
353src/secretsharing/gnunet-secretsharing-profiler.c 356src/secretsharing/gnunet-secretsharing-profiler.c
354src/secretsharing/gnunet-service-secretsharing.c 357src/secretsharing/gnunet-service-secretsharing.c
@@ -362,12 +365,12 @@ src/set/gnunet-set-ibf-profiler.c
362src/set/gnunet-set-profiler.c 365src/set/gnunet-set-profiler.c
363src/set/ibf.c 366src/set/ibf.c
364src/set/ibf_sim.c 367src/set/ibf_sim.c
368src/set/plugin_block_set_test.c
369src/set/set_api.c
365src/seti/gnunet-service-seti.c 370src/seti/gnunet-service-seti.c
366src/seti/gnunet-seti-profiler.c 371src/seti/gnunet-seti-profiler.c
367src/seti/plugin_block_seti_test.c 372src/seti/plugin_block_seti_test.c
368src/seti/seti_api.c 373src/seti/seti_api.c
369src/set/plugin_block_set_test.c
370src/set/set_api.c
371src/setu/gnunet-service-setu.c 374src/setu/gnunet-service-setu.c
372src/setu/gnunet-service-setu_strata_estimator.c 375src/setu/gnunet-service-setu_strata_estimator.c
373src/setu/gnunet-setu-ibf-profiler.c 376src/setu/gnunet-setu-ibf-profiler.c
@@ -386,15 +389,16 @@ src/statistics/gnunet-statistics.c
386src/statistics/statistics_api.c 389src/statistics/statistics_api.c
387src/template/gnunet-service-template.c 390src/template/gnunet-service-template.c
388src/template/gnunet-template.c 391src/template/gnunet-template.c
392src/testbed-logger/gnunet-service-testbed-logger.c
393src/testbed-logger/testbed_logger_api.c
389src/testbed/generate-underlay-topology.c 394src/testbed/generate-underlay-topology.c
390src/testbed/gnunet-daemon-latency-logger.c 395src/testbed/gnunet-daemon-latency-logger.c
391src/testbed/gnunet-daemon-testbed-blacklist.c 396src/testbed/gnunet-daemon-testbed-blacklist.c
392src/testbed/gnunet-daemon-testbed-underlay.c 397src/testbed/gnunet-daemon-testbed-underlay.c
393src/testbed/gnunet-helper-testbed.c 398src/testbed/gnunet-helper-testbed.c
394src/testbed/gnunet_mpi_test.c
395src/testbed/gnunet-service-test-barriers.c 399src/testbed/gnunet-service-test-barriers.c
396src/testbed/gnunet-service-testbed_barriers.c
397src/testbed/gnunet-service-testbed.c 400src/testbed/gnunet-service-testbed.c
401src/testbed/gnunet-service-testbed_barriers.c
398src/testbed/gnunet-service-testbed_cache.c 402src/testbed/gnunet-service-testbed_cache.c
399src/testbed/gnunet-service-testbed_connectionpool.c 403src/testbed/gnunet-service-testbed_connectionpool.c
400src/testbed/gnunet-service-testbed_cpustatus.c 404src/testbed/gnunet-service-testbed_cpustatus.c
@@ -402,69 +406,81 @@ src/testbed/gnunet-service-testbed_links.c
402src/testbed/gnunet-service-testbed_meminfo.c 406src/testbed/gnunet-service-testbed_meminfo.c
403src/testbed/gnunet-service-testbed_oc.c 407src/testbed/gnunet-service-testbed_oc.c
404src/testbed/gnunet-service-testbed_peers.c 408src/testbed/gnunet-service-testbed_peers.c
405src/testbed/gnunet_testbed_mpi_spawn.c
406src/testbed/gnunet-testbed-profiler.c 409src/testbed/gnunet-testbed-profiler.c
407src/testbed-logger/gnunet-service-testbed-logger.c 410src/testbed/gnunet_mpi_test.c
408src/testbed-logger/testbed_logger_api.c 411src/testbed/gnunet_testbed_mpi_spawn.c
409src/testbed/testbed_api_barriers.c
410src/testbed/testbed_api.c 412src/testbed/testbed_api.c
413src/testbed/testbed_api_barriers.c
411src/testbed/testbed_api_cmd_controller.c 414src/testbed/testbed_api_cmd_controller.c
412src/testbed/testbed_api_cmd_peer.c 415src/testbed/testbed_api_cmd_peer.c
413src/testbed/testbed_api_cmd_service.c 416src/testbed/testbed_api_cmd_peer_store.c
417src/testbed/testbed_api_cmd_tng_connect.c
418src/testbed/testbed_api_cmd_tng_service.c
414src/testbed/testbed_api_hosts.c 419src/testbed/testbed_api_hosts.c
415src/testbed/testbed_api_operations.c 420src/testbed/testbed_api_operations.c
416src/testbed/testbed_api_peers.c 421src/testbed/testbed_api_peers.c
417src/testbed/testbed_api_sd.c 422src/testbed/testbed_api_sd.c
418src/testbed/testbed_api_services.c 423src/testbed/testbed_api_services.c
419src/testbed/testbed_api_statistics.c 424src/testbed/testbed_api_statistics.c
420src/testbed/testbed_api_testbed.c
421src/testbed/testbed_api_test.c 425src/testbed/testbed_api_test.c
426src/testbed/testbed_api_testbed.c
422src/testbed/testbed_api_topology.c 427src/testbed/testbed_api_topology.c
423src/testbed/testbed_api_underlay.c 428src/testbed/testbed_api_underlay.c
424src/testing/gnunet-testing.c 429src/testing/gnunet-testing.c
425src/testing/list-keys.c 430src/testing/list-keys.c
431src/testing/testing.c
426src/testing/testing_api_cmd_batch.c 432src/testing/testing_api_cmd_batch.c
427src/testing/testing_api_cmd_hello_world_birth.c
428src/testing/testing_api_cmd_hello_world.c 433src/testing/testing_api_cmd_hello_world.c
434src/testing/testing_api_cmd_hello_world_birth.c
429src/testing/testing_api_loop.c 435src/testing/testing_api_loop.c
430src/testing/testing_api_trait_cmd.c 436src/testing/testing_api_trait_cmd.c
431src/testing/testing_api_trait_process.c 437src/testing/testing_api_trait_process.c
432src/testing/testing_api_traits.c 438src/testing/testing_api_traits.c
433src/testing/testing.c
434src/topology/friends.c 439src/topology/friends.c
435src/topology/gnunet-daemon-topology.c 440src/topology/gnunet-daemon-topology.c
436src/transport/gnunet-communicator-tcp.c 441src/transport/gnunet-communicator-tcp.c
437src/transport/gnunet-communicator-udp.c 442src/transport/gnunet-communicator-udp.c
438src/transport/gnunet-communicator-unix.c 443src/transport/gnunet-communicator-unix.c
439src/transport/gnunet-helper-transport-bluetooth.c 444src/transport/gnunet-helper-transport-bluetooth.c
440src/transport/gnunet-helper-transport-wlan.c
441src/transport/gnunet-helper-transport-wlan-dummy.c 445src/transport/gnunet-helper-transport-wlan-dummy.c
446src/transport/gnunet-helper-transport-wlan.c
442src/transport/gnunet-service-tng.c 447src/transport/gnunet-service-tng.c
443src/transport/gnunet-service-transport_ats.c
444src/transport/gnunet-service-transport.c 448src/transport/gnunet-service-transport.c
449src/transport/gnunet-service-transport_ats.c
445src/transport/gnunet-service-transport_hello.c 450src/transport/gnunet-service-transport_hello.c
446src/transport/gnunet-service-transport_manipulation.c 451src/transport/gnunet-service-transport_manipulation.c
447src/transport/gnunet-service-transport_neighbours.c 452src/transport/gnunet-service-transport_neighbours.c
448src/transport/gnunet-service-transport_plugins.c 453src/transport/gnunet-service-transport_plugins.c
449src/transport/gnunet-service-transport_validation.c 454src/transport/gnunet-service-transport_validation.c
450src/transport/gnunet-transport.c
451src/transport/gnunet-transport-profiler.c 455src/transport/gnunet-transport-profiler.c
452src/transport/gnunet-transport-wlan-receiver.c 456src/transport/gnunet-transport-wlan-receiver.c
453src/transport/gnunet-transport-wlan-sender.c 457src/transport/gnunet-transport-wlan-sender.c
458src/transport/gnunet-transport.c
454src/transport/plugin_transport_http_client.c 459src/transport/plugin_transport_http_client.c
455src/transport/plugin_transport_http_common.c 460src/transport/plugin_transport_http_common.c
456src/transport/plugin_transport_http_server.c 461src/transport/plugin_transport_http_server.c
457src/transport/plugin_transport_smtp.c 462src/transport/plugin_transport_smtp.c
458src/transport/plugin_transport_tcp.c 463src/transport/plugin_transport_tcp.c
459src/transport/plugin_transport_template.c 464src/transport/plugin_transport_template.c
460src/transport/plugin_transport_udp_broadcasting.c
461src/transport/plugin_transport_udp.c 465src/transport/plugin_transport_udp.c
466src/transport/plugin_transport_udp_broadcasting.c
462src/transport/plugin_transport_unix.c 467src/transport/plugin_transport_unix.c
463src/transport/plugin_transport_wlan.c 468src/transport/plugin_transport_wlan.c
464src/transport/tcp_connection_legacy.c 469src/transport/tcp_connection_legacy.c
465src/transport/tcp_server_legacy.c 470src/transport/tcp_server_legacy.c
466src/transport/tcp_server_mst_legacy.c 471src/transport/tcp_server_mst_legacy.c
467src/transport/tcp_service_legacy.c 472src/transport/tcp_service_legacy.c
473src/transport/transport-testing-communicator.c
474src/transport/transport-testing-filenames.c
475src/transport/transport-testing-filenames2.c
476src/transport/transport-testing-loggers.c
477src/transport/transport-testing-loggers2.c
478src/transport/transport-testing-main.c
479src/transport/transport-testing-main2.c
480src/transport/transport-testing-send.c
481src/transport/transport-testing-send2.c
482src/transport/transport-testing.c
483src/transport/transport-testing2.c
468src/transport/transport_api2_application.c 484src/transport/transport_api2_application.c
469src/transport/transport_api2_communication.c 485src/transport/transport_api2_communication.c
470src/transport/transport_api2_core.c 486src/transport/transport_api2_core.c
@@ -477,17 +493,6 @@ src/transport/transport_api_manipulation.c
477src/transport/transport_api_monitor_peers.c 493src/transport/transport_api_monitor_peers.c
478src/transport/transport_api_monitor_plugins.c 494src/transport/transport_api_monitor_plugins.c
479src/transport/transport_api_offer_hello.c 495src/transport/transport_api_offer_hello.c
480src/transport/transport-testing2.c
481src/transport/transport-testing.c
482src/transport/transport-testing-communicator.c
483src/transport/transport-testing-filenames2.c
484src/transport/transport-testing-filenames.c
485src/transport/transport-testing-loggers2.c
486src/transport/transport-testing-loggers.c
487src/transport/transport-testing-main2.c
488src/transport/transport-testing-main.c
489src/transport/transport-testing-send2.c
490src/transport/transport-testing-send.c
491src/util/bandwidth.c 496src/util/bandwidth.c
492src/util/benchmark.c 497src/util/benchmark.c
493src/util/bio.c 498src/util/bio.c
@@ -502,8 +507,8 @@ src/util/consttime_memcmp.c
502src/util/container_bloomfilter.c 507src/util/container_bloomfilter.c
503src/util/container_heap.c 508src/util/container_heap.c
504src/util/container_meta_data.c 509src/util/container_meta_data.c
505src/util/container_multihashmap32.c
506src/util/container_multihashmap.c 510src/util/container_multihashmap.c
511src/util/container_multihashmap32.c
507src/util/container_multipeermap.c 512src/util/container_multipeermap.c
508src/util/container_multishortmap.c 513src/util/container_multishortmap.c
509src/util/container_multiuuidmap.c 514src/util/container_multiuuidmap.c
@@ -528,8 +533,8 @@ src/util/dnsstub.c
528src/util/getopt.c 533src/util/getopt.c
529src/util/getopt_helpers.c 534src/util/getopt_helpers.c
530src/util/gnunet-base32.c 535src/util/gnunet-base32.c
531src/util/gnunet-config.c
532src/util/gnunet-config-diff.c 536src/util/gnunet-config-diff.c
537src/util/gnunet-config.c
533src/util/gnunet-crypto-tvg.c 538src/util/gnunet-crypto-tvg.c
534src/util/gnunet-ecc.c 539src/util/gnunet-ecc.c
535src/util/gnunet-qr.c 540src/util/gnunet-qr.c
@@ -567,8 +572,8 @@ src/vpn/gnunet-helper-vpn.c
567src/vpn/gnunet-service-vpn.c 572src/vpn/gnunet-service-vpn.c
568src/vpn/gnunet-vpn.c 573src/vpn/gnunet-vpn.c
569src/vpn/vpn_api.c 574src/vpn/vpn_api.c
570src/zonemaster/gnunet-service-zonemaster.c
571src/zonemaster/gnunet-service-zonemaster-monitor.c 575src/zonemaster/gnunet-service-zonemaster-monitor.c
576src/zonemaster/gnunet-service-zonemaster.c
572src/fs/fs_api.h 577src/fs/fs_api.h
573src/testbed/testbed_api.h 578src/testbed/testbed_api.h
574src/testbed/testbed_api_operations.h 579src/testbed/testbed_api_operations.h
diff --git a/src/abd/plugin_gnsrecord_abd.c b/src/abd/plugin_gnsrecord_abd.c
index 272872e24..25dc20152 100644
--- a/src/abd/plugin_gnsrecord_abd.c
+++ b/src/abd/plugin_gnsrecord_abd.c
@@ -276,7 +276,7 @@ static struct
276 276
277 277
278/** 278/**
279 * Convert a type name (i.e. "AAAA") to the corresponding number. 279 * Convert a type name (e.g. "AAAA") to the corresponding number.
280 * 280 *
281 * @param cls closure, unused 281 * @param cls closure, unused
282 * @param gns_typename name to convert 282 * @param gns_typename name to convert
@@ -296,7 +296,7 @@ abd_typename_to_number (void *cls, const char *gns_typename)
296 296
297 297
298/** 298/**
299 * Convert a type number (i.e. 1) to the corresponding type string (i.e. "A") 299 * Convert a type number to the corresponding type string (e.g. 1 to "A")
300 * 300 *
301 * @param cls closure, unused 301 * @param cls closure, unused
302 * @param type number of a type to convert 302 * @param type number of a type to convert
diff --git a/src/conversation/plugin_gnsrecord_conversation.c b/src/conversation/plugin_gnsrecord_conversation.c
index 2ea2f48f0..786711c8e 100644
--- a/src/conversation/plugin_gnsrecord_conversation.c
+++ b/src/conversation/plugin_gnsrecord_conversation.c
@@ -179,7 +179,7 @@ static struct
179 179
180 180
181/** 181/**
182 * Convert a type name (i.e. "AAAA") to the corresponding number. 182 * Convert a type name (e.g. "AAAA") to the corresponding number.
183 * 183 *
184 * @param cls closure, unused 184 * @param cls closure, unused
185 * @param gns_typename name to convert 185 * @param gns_typename name to convert
@@ -201,7 +201,7 @@ conversation_typename_to_number (void *cls,
201 201
202 202
203/** 203/**
204 * Convert a type number (i.e. 1) to the corresponding type string (i.e. "A") 204 * Convert a type number to the corresponding type string (e.g. 1 to "A")
205 * 205 *
206 * @param cls closure, unused 206 * @param cls closure, unused
207 * @param type number of a type to convert 207 * @param type number of a type to convert
diff --git a/src/curl/curl.c b/src/curl/curl.c
index deb14a926..949b9a1b0 100644
--- a/src/curl/curl.c
+++ b/src/curl/curl.c
@@ -697,7 +697,7 @@ GNUNET_CURL_job_cancel (struct GNUNET_CURL_Job *job)
697/** 697/**
698 * Test if the given content type @a ct is JSON 698 * Test if the given content type @a ct is JSON
699 * 699 *
700 * @param ct a content type, i.e. "application/json; charset=UTF-8" 700 * @param ct a content type, e.g. "application/json; charset=UTF-8"
701 * @return true if @a ct denotes JSON 701 * @return true if @a ct denotes JSON
702 */ 702 */
703static bool 703static bool
@@ -741,7 +741,7 @@ is_json (const char *ct)
741 * @param db download buffer 741 * @param db download buffer
742 * @param eh CURL handle (to get the response code) 742 * @param eh CURL handle (to get the response code)
743 * @param[out] response_code set to the HTTP response code 743 * @param[out] response_code set to the HTTP response code
744 * (or zero if we aborted the download, i.e. 744 * (or zero if we aborted the download, for example
745 * because the response was too big, or if 745 * because the response was too big, or if
746 * the JSON we received was malformed). 746 * the JSON we received was malformed).
747 * @return NULL if downloading a JSON reply failed. 747 * @return NULL if downloading a JSON reply failed.
diff --git a/src/datacache/datacache.c b/src/datacache/datacache.c
index 5fc5a7481..331a9b784 100644
--- a/src/datacache/datacache.c
+++ b/src/datacache/datacache.c
@@ -66,12 +66,12 @@ struct GNUNET_DATACACHE_Handle
66 struct GNUNET_DATACACHE_PluginFunctions *api; 66 struct GNUNET_DATACACHE_PluginFunctions *api;
67 67
68 /** 68 /**
69 * Short name for the plugin (i.e. "sqlite"). 69 * Short name for the plugin (e.g. "sqlite").
70 */ 70 */
71 char *short_name; 71 char *short_name;
72 72
73 /** 73 /**
74 * Name of the library (i.e. "gnunet_plugin_datacache_sqlite"). 74 * Name of the library (e.g. "gnunet_plugin_datacache_sqlite").
75 */ 75 */
76 char *lib_name; 76 char *lib_name;
77 77
diff --git a/src/datastore/gnunet-service-datastore.c b/src/datastore/gnunet-service-datastore.c
index 1c9e5e463..97888ce03 100644
--- a/src/datastore/gnunet-service-datastore.c
+++ b/src/datastore/gnunet-service-datastore.c
@@ -84,12 +84,12 @@ struct DatastorePlugin
84 struct GNUNET_DATASTORE_PluginFunctions *api; 84 struct GNUNET_DATASTORE_PluginFunctions *api;
85 85
86 /** 86 /**
87 * Short name for the plugin (i.e. "sqlite"). 87 * Short name for the plugin (e.g. "sqlite").
88 */ 88 */
89 char *short_name; 89 char *short_name;
90 90
91 /** 91 /**
92 * Name of the library (i.e. "gnunet_plugin_datastore_sqlite"). 92 * Name of the library (e.g. "gnunet_plugin_datastore_sqlite").
93 */ 93 */
94 char *lib_name; 94 char *lib_name;
95 95
diff --git a/src/dht/dht_api.c b/src/dht/dht_api.c
index ffcfba997..96399cb5a 100644
--- a/src/dht/dht_api.c
+++ b/src/dht/dht_api.c
@@ -1026,7 +1026,7 @@ GNUNET_DHT_put (struct GNUNET_DHT_Handle *handle,
1026 * has not yet been sent to the service, cancelling the PUT will stop 1026 * has not yet been sent to the service, cancelling the PUT will stop
1027 * this from happening (but there is no way for the user of this API 1027 * this from happening (but there is no way for the user of this API
1028 * to tell if that is the case). The only use for this API is to 1028 * to tell if that is the case). The only use for this API is to
1029 * prevent a later call to 'cont' from #GNUNET_DHT_put (i.e. because 1029 * prevent a later call to 'cont' from #GNUNET_DHT_put (e.g. because
1030 * the system is shutting down). 1030 * the system is shutting down).
1031 * 1031 *
1032 * @param ph put operation to cancel ('cont' will no longer be called) 1032 * @param ph put operation to cancel ('cont' will no longer be called)
diff --git a/src/dht/gnunet-service-dht_clients.c b/src/dht/gnunet-service-dht_clients.c
index dfa8ee380..cfcb25336 100644
--- a/src/dht/gnunet-service-dht_clients.c
+++ b/src/dht/gnunet-service-dht_clients.c
@@ -1482,7 +1482,7 @@ GDS_CLIENTS_stop ()
1482/** 1482/**
1483 * Define "main" method using service macro. 1483 * Define "main" method using service macro.
1484 * 1484 *
1485 * @param name name of the service, i.e. "dht" or "xdht" 1485 * @param name name of the service, like "dht" or "xdht"
1486 * @param run name of the initializaton method for the service 1486 * @param run name of the initializaton method for the service
1487 */ 1487 */
1488#define GDS_DHT_SERVICE_INIT(name, run) \ 1488#define GDS_DHT_SERVICE_INIT(name, run) \
diff --git a/src/fragmentation/test_fragmentation.c b/src/fragmentation/test_fragmentation.c
index 4c71e0195..77879f75b 100644
--- a/src/fragmentation/test_fragmentation.c
+++ b/src/fragmentation/test_fragmentation.c
@@ -108,7 +108,7 @@ proc_msgs (void *cls, const struct GNUNET_MessageHeader *hdr)
108 if (0 == (total % (NUM_MSGS / 100))) 108 if (0 == (total % (NUM_MSGS / 100)))
109 fprintf (stderr, "%s", "."); 109 fprintf (stderr, "%s", ".");
110#endif 110#endif
111 /* tolerate 10% loss, i.e. due to duplicate fragment IDs */ 111 /* tolerate 10% loss, e.g. due to duplicate fragment IDs */
112 if ((total >= NUM_MSGS - (NUM_MSGS / 10)) && (ret != 0)) 112 if ((total >= NUM_MSGS - (NUM_MSGS / 10)) && (ret != 0))
113 { 113 {
114 if (NULL == shutdown_task) 114 if (NULL == shutdown_task)
diff --git a/src/fragmentation/test_fragmentation_parallel.c b/src/fragmentation/test_fragmentation_parallel.c
index 000ca60d2..d19296cf5 100644
--- a/src/fragmentation/test_fragmentation_parallel.c
+++ b/src/fragmentation/test_fragmentation_parallel.c
@@ -100,7 +100,7 @@ proc_msgs (void *cls, const struct GNUNET_MessageHeader *hdr)
100 if (0 == (total % (NUM_MSGS / 100))) 100 if (0 == (total % (NUM_MSGS / 100)))
101 fprintf (stderr, "%s", "."); 101 fprintf (stderr, "%s", ".");
102#endif 102#endif
103 /* tolerate 10% loss, i.e. due to duplicate fragment IDs */ 103 /* tolerate 10% loss, e.g due to duplicate fragment IDs */
104 if ((total >= NUM_MSGS - (NUM_MSGS / 10)) && (ret != 0)) 104 if ((total >= NUM_MSGS - (NUM_MSGS / 10)) && (ret != 0))
105 { 105 {
106 if (NULL == shutdown_task) 106 if (NULL == shutdown_task)
diff --git a/src/fs/fs_directory.c b/src/fs/fs_directory.c
index 9a198d8d7..9f0f12611 100644
--- a/src/fs/fs_directory.c
+++ b/src/fs/fs_directory.c
@@ -120,7 +120,7 @@ struct GetFullDataClosure
120 * 120 *
121 * @param cls closure (user-defined) 121 * @param cls closure (user-defined)
122 * @param plugin_name name of the plugin that produced this value; 122 * @param plugin_name name of the plugin that produced this value;
123 * special values can be used (i.e. '&lt;zlib&gt;' for zlib being 123 * special values can be used (e.g. '&lt;zlib&gt;' for zlib being
124 * used in the main libextractor library and yielding 124 * used in the main libextractor library and yielding
125 * meta data). 125 * meta data).
126 * @param type libextractor-type describing the meta data 126 * @param type libextractor-type describing the meta data
diff --git a/src/fs/fs_download.c b/src/fs/fs_download.c
index d4677b794..1f8ce7c05 100644
--- a/src/fs/fs_download.c
+++ b/src/fs/fs_download.c
@@ -586,7 +586,7 @@ try_match_block (struct GNUNET_FS_DownloadContext *dc,
586 * 586 *
587 * @param cls our 'struct GNUNET_FS_DownloadContext*' 587 * @param cls our 'struct GNUNET_FS_DownloadContext*'
588 * @param plugin_name name of the plugin that produced this value; 588 * @param plugin_name name of the plugin that produced this value;
589 * special values can be used (i.e. '&lt;zlib&gt;' for zlib being 589 * special values can be used (e.g. '&lt;zlib&gt;' for zlib being
590 * used in the main libextractor library and yielding 590 * used in the main libextractor library and yielding
591 * meta data). 591 * meta data).
592 * @param type libextractor-type describing the meta data 592 * @param type libextractor-type describing the meta data
diff --git a/src/fs/fs_sharetree.c b/src/fs/fs_sharetree.c
index ac850076d..d5e75f9be 100644
--- a/src/fs/fs_sharetree.c
+++ b/src/fs/fs_sharetree.c
@@ -183,7 +183,7 @@ add_to_keyword_counter (void *cls, const char *keyword, int is_mandatory)
183 * 183 *
184 * @param cls the container multihashmap to update 184 * @param cls the container multihashmap to update
185 * @param plugin_name name of the plugin that produced this value; 185 * @param plugin_name name of the plugin that produced this value;
186 * special values can be used (i.e. '&lt;zlib&gt;' for zlib being 186 * special values can be used (e.g. '&lt;zlib&gt;' for zlib being
187 * used in the main libextractor library and yielding 187 * used in the main libextractor library and yielding
188 * meta data). 188 * meta data).
189 * @param type libextractor-type describing the meta data 189 * @param type libextractor-type describing the meta data
diff --git a/src/fs/fs_uri.c b/src/fs/fs_uri.c
index a9afff3e8..4d1b7c6f0 100644
--- a/src/fs/fs_uri.c
+++ b/src/fs/fs_uri.c
@@ -1691,7 +1691,7 @@ get_keywords_from_tokens (const char *s, char **array, int index)
1691 * 1691 *
1692 * @param cls URI to update 1692 * @param cls URI to update
1693 * @param plugin_name name of the plugin that produced this value; 1693 * @param plugin_name name of the plugin that produced this value;
1694 * special values can be used (i.e. '&lt;zlib&gt;' for zlib being 1694 * special values can be used (e.g. '&lt;zlib&gt;' for zlib being
1695 * used in the main libextractor library and yielding 1695 * used in the main libextractor library and yielding
1696 * meta data). 1696 * meta data).
1697 * @param type libextractor-type describing the meta data 1697 * @param type libextractor-type describing the meta data
diff --git a/src/fs/gnunet-helper-fs-publish.c b/src/fs/gnunet-helper-fs-publish.c
index 5d2d1229b..ef1a9ce4b 100644
--- a/src/fs/gnunet-helper-fs-publish.c
+++ b/src/fs/gnunet-helper-fs-publish.c
@@ -100,7 +100,7 @@ static int output_stream;
100 * 100 *
101 * @param cls closure, our meta data container 101 * @param cls closure, our meta data container
102 * @param plugin_name name of the plugin that produced this value; 102 * @param plugin_name name of the plugin that produced this value;
103 * special values can be used (i.e. '&lt;zlib&gt;' for zlib being 103 * special values can be used (e.g. '&lt;zlib&gt;' for zlib being
104 * used in the main libextractor library and yielding 104 * used in the main libextractor library and yielding
105 * meta data). 105 * meta data).
106 * @param type libextractor-type describing the meta data 106 * @param type libextractor-type describing the meta data
diff --git a/src/fs/gnunet-search.c b/src/fs/gnunet-search.c
index e49609b18..3bf013650 100644
--- a/src/fs/gnunet-search.c
+++ b/src/fs/gnunet-search.c
@@ -64,7 +64,7 @@ static struct GNUNET_SCHEDULER_Task *tt;
64 * 64 *
65 * @param cls closure (user-defined, unused) 65 * @param cls closure (user-defined, unused)
66 * @param plugin_name name of the plugin that produced this value; 66 * @param plugin_name name of the plugin that produced this value;
67 * special values can be used (i.e. '&lt;zlib&gt;' for zlib being 67 * special values can be used (e.g. '&lt;zlib&gt;' for zlib being
68 * used in the main libextractor library and yielding 68 * used in the main libextractor library and yielding
69 * meta data). 69 * meta data).
70 * @param type libextractor-type describing the meta data 70 * @param type libextractor-type describing the meta data
diff --git a/src/fs/perf_gnunet_service_fs_p2p_respect.c b/src/fs/perf_gnunet_service_fs_p2p_respect.c
index b7fe61be7..c48db2383 100644
--- a/src/fs/perf_gnunet_service_fs_p2p_respect.c
+++ b/src/fs/perf_gnunet_service_fs_p2p_respect.c
@@ -21,7 +21,7 @@
21/** 21/**
22 * @file fs/perf_gnunet_service_fs_p2p_respect.c 22 * @file fs/perf_gnunet_service_fs_p2p_respect.c
23 * @brief profile P2P routing respect mechanism. Creates 23 * @brief profile P2P routing respect mechanism. Creates
24 * a clique of NUM_DAEMONS (i.e. 3) where two 24 * a clique of NUM_DAEMONS (at least 3) where two
25 * peers share (seed) different files and download 25 * peers share (seed) different files and download
26 * them from each other while all the other peers 26 * them from each other while all the other peers
27 * just "leach" those files. Ideally, the seeders 27 * just "leach" those files. Ideally, the seeders
diff --git a/src/gns/gns_tld_api.c b/src/gns/gns_tld_api.c
index b883662ad..1b711cf40 100644
--- a/src/gns/gns_tld_api.c
+++ b/src/gns/gns_tld_api.c
@@ -235,7 +235,7 @@ identity_zone_cb (void *cls,
235 * @param options local options for the lookup 235 * @param options local options for the lookup
236 * @param proc processor to call on result 236 * @param proc processor to call on result
237 * @param proc_cls closure for @a proc 237 * @param proc_cls closure for @a proc
238 * @return handle to the get request, NULL on error (i.e. bad configuration) 238 * @return handle to the get request, NULL on error (e.g. bad configuration)
239 */ 239 */
240struct GNUNET_GNS_LookupWithTldRequest * 240struct GNUNET_GNS_LookupWithTldRequest *
241GNUNET_GNS_lookup_with_tld (struct GNUNET_GNS_Handle *handle, 241GNUNET_GNS_lookup_with_tld (struct GNUNET_GNS_Handle *handle,
diff --git a/src/gns/gnunet-gns-import.c b/src/gns/gnunet-gns-import.c
index 972fb49cd..e99c4d3dd 100644
--- a/src/gns/gnunet-gns-import.c
+++ b/src/gns/gnunet-gns-import.c
@@ -272,13 +272,12 @@ zone_iteration_finished (void *cls)
272 * with 'NULL' for 'ego'. That does NOT mean that the callback won't 272 * with 'NULL' for 'ego'. That does NOT mean that the callback won't
273 * be invoked in the future or that there was an error. 273 * be invoked in the future or that there was an error.
274 * 274 *
275 * When used with 'GNUNET_IDENTITY_create' or 'GNUNET_IDENTITY_get', 275 * When used with 'GNUNET_IDENTITY_create' or 'GNUNET_IDENTITY_get', this
276 * this function is only called ONCE, and 'NULL' being passed in 276 * function is only called ONCE, and 'NULL' being passed in 'ego' does
277 * 'ego' does indicate an error (i.e. name is taken or no default 277 * indicate an error (for example because name is taken or no default value is
278 * value is known). If 'ego' is non-NULL and if '*ctx' 278 * known). If 'ego' is non-NULL and if '*ctx' is set in those callbacks, the
279 * is set in those callbacks, the value WILL be passed to a subsequent 279 * value WILL be passed to a subsequent call to the identity callback of
280 * call to the identity callback of 'GNUNET_IDENTITY_connect' (if 280 * 'GNUNET_IDENTITY_connect' (if that one was not NULL).
281 * that one was not NULL).
282 * 281 *
283 * When an identity is renamed, this function is called with the 282 * When an identity is renamed, this function is called with the
284 * (known) ego but the NEW identifier. 283 * (known) ego but the NEW identifier.
diff --git a/src/gns/gnunet-gns-proxy-ca.template b/src/gns/gnunet-gns-proxy-ca.template
index 32ee27fcd..541e3a355 100644
--- a/src/gns/gnunet-gns-proxy-ca.template
+++ b/src/gns/gnunet-gns-proxy-ca.template
@@ -51,7 +51,7 @@ cn = "GNS Proxy CA"
51#dn = "cn = Nikos,st = New\, Something,C=GR,surName=Mavrogiannopoulos,2.5.4.9=Arkadias" 51#dn = "cn = Nikos,st = New\, Something,C=GR,surName=Mavrogiannopoulos,2.5.4.9=Arkadias"
52 52
53# The serial number of the certificate 53# The serial number of the certificate
54# The value is in decimal (i.e. 1963) or hex (i.e. 0x07ab). 54# The value is in decimal (e.g. 1963) or hex (e.g. 0x07ab).
55# Comment the field for a random serial number. 55# Comment the field for a random serial number.
56#serial = 007 56#serial = 007
57 57
@@ -283,7 +283,7 @@ tls_www_server
283#crl_next_update = 43 283#crl_next_update = 43
284 284
285# this is the 5th CRL by this CA 285# this is the 5th CRL by this CA
286# The value is in decimal (i.e. 1963) or hex (i.e. 0x07ab). 286# The value is in decimal (e.g. 1963) or hex (e.g. 0x07ab).
287# Comment the field for a time-based number. 287# Comment the field for a time-based number.
288# Time-based CRL numbers generated in GnuTLS 3.6.3 and later 288# Time-based CRL numbers generated in GnuTLS 3.6.3 and later
289# are significantly larger than those generated in previous 289# are significantly larger than those generated in previous
diff --git a/src/gns/gnunet-gns-proxy.c b/src/gns/gnunet-gns-proxy.c
index d02f0f576..5e3f9d6df 100644
--- a/src/gns/gnunet-gns-proxy.c
+++ b/src/gns/gnunet-gns-proxy.c
@@ -1811,7 +1811,7 @@ con_val_iter (void *cls,
1811 * @param con MHD connection handle 1811 * @param con MHD connection handle
1812 * @param url the url in the request 1812 * @param url the url in the request
1813 * @param meth the HTTP method used ("GET", "PUT", etc.) 1813 * @param meth the HTTP method used ("GET", "PUT", etc.)
1814 * @param ver the HTTP version string (i.e. "HTTP/1.1") 1814 * @param ver the HTTP version string ("HTTP/1.1" for version 1.1, etc.)
1815 * @param upload_data the data being uploaded (excluding HEADERS, 1815 * @param upload_data the data being uploaded (excluding HEADERS,
1816 * for a POST that fits into memory and that is encoded 1816 * for a POST that fits into memory and that is encoded
1817 * with a supported encoding, the POST data will NOT be 1817 * with a supported encoding, the POST data will NOT be
@@ -2855,7 +2855,7 @@ lookup_ssl_httpd (const char*domain)
2855 2855
2856/** 2856/**
2857 * Task run when a Socks5Request somehow fails to be associated with 2857 * Task run when a Socks5Request somehow fails to be associated with
2858 * an MHD connection (i.e. because the client never speaks HTTP after 2858 * an MHD connection (e.g. because the client never speaks HTTP after
2859 * the SOCKS5 handshake). Clean up. 2859 * the SOCKS5 handshake). Clean up.
2860 * 2860 *
2861 * @param cls the `struct Socks5Request *` 2861 * @param cls the `struct Socks5Request *`
diff --git a/src/gns/gnunet-service-gns.c b/src/gns/gnunet-service-gns.c
index 52300ae3b..5833f4d0b 100644
--- a/src/gns/gnunet-service-gns.c
+++ b/src/gns/gnunet-service-gns.c
@@ -104,7 +104,7 @@ struct GnsClient
104 104
105/** 105/**
106 * Representation of a TLD, mapping the respective TLD string 106 * Representation of a TLD, mapping the respective TLD string
107 * (i.e. ".gnu") to the respective public key of the zone. 107 * (e.g. ".gnu") to the respective public key of the zone.
108 */ 108 */
109struct GNS_TopLevelDomain 109struct GNS_TopLevelDomain
110{ 110{
diff --git a/src/gns/gnunet-service-gns_resolver.c b/src/gns/gnunet-service-gns_resolver.c
index 2f8a55804..784a6ee6d 100644
--- a/src/gns/gnunet-service-gns_resolver.c
+++ b/src/gns/gnunet-service-gns_resolver.c
@@ -418,7 +418,7 @@ struct GNS_ResolverHandle
418 418
419 /** 419 /**
420 * We increment the loop limiter for each step in a recursive 420 * We increment the loop limiter for each step in a recursive
421 * resolution. If it passes our @e loop_threshold (i.e. due to 421 * resolution. If it passes our @e loop_threshold (e.g. due to
422 * self-recursion in the resolution, i.e CNAME fun), we stop. 422 * self-recursion in the resolution, i.e CNAME fun), we stop.
423 */ 423 */
424 unsigned int loop_limiter; 424 unsigned int loop_limiter;
@@ -516,7 +516,7 @@ static const struct GNUNET_CONFIGURATION_Handle *cfg;
516/** 516/**
517 * Determine if this name is canonical (is a legal name in a zone, without delegation); 517 * Determine if this name is canonical (is a legal name in a zone, without delegation);
518 * note that we do not test that the name does not contain illegal characters, we only 518 * note that we do not test that the name does not contain illegal characters, we only
519 * test for delegation. Note that service records (i.e. _foo._srv) are canonical names 519 * test for delegation. Note that service records (like _foo._srv) are canonical names
520 * even though they consist of multiple labels. 520 * even though they consist of multiple labels.
521 * 521 *
522 * Examples: 522 * Examples:
diff --git a/src/gns/plugin_gnsrecord_gns.c b/src/gns/plugin_gnsrecord_gns.c
index a2ad0b905..391144925 100644
--- a/src/gns/plugin_gnsrecord_gns.c
+++ b/src/gns/plugin_gnsrecord_gns.c
@@ -327,7 +327,7 @@ static struct
327 327
328 328
329/** 329/**
330 * Convert a type name (i.e. "AAAA") to the corresponding number. 330 * Convert a type name (e.g. "AAAA") to the corresponding number.
331 * 331 *
332 * @param cls closure, unused 332 * @param cls closure, unused
333 * @param gns_typename name to convert 333 * @param gns_typename name to convert
@@ -347,7 +347,7 @@ gns_typename_to_number (void *cls, const char *gns_typename)
347 347
348 348
349/** 349/**
350 * Convert a type number (i.e. 1) to the corresponding type string (i.e. "A") 350 * Convert a type number to the corresponding type string (e.g. 1 to "A")
351 * 351 *
352 * @param cls closure, unused 352 * @param cls closure, unused
353 * @param type number of a type to convert 353 * @param type number of a type to convert
diff --git a/src/gnsrecord/gnsrecord.c b/src/gnsrecord/gnsrecord.c
index 31749a629..e9994a868 100644
--- a/src/gnsrecord/gnsrecord.c
+++ b/src/gnsrecord/gnsrecord.c
@@ -208,7 +208,7 @@ GNUNET_GNSRECORD_string_to_value (uint32_t type,
208 208
209 209
210/** 210/**
211 * Convert a type name (i.e. "AAAA") to the corresponding number. 211 * Convert a type name (e.g "AAAA") to the corresponding number.
212 * 212 *
213 * @param dns_typename name to convert 213 * @param dns_typename name to convert
214 * @return corresponding number, UINT32_MAX on error 214 * @return corresponding number, UINT32_MAX on error
@@ -235,7 +235,7 @@ GNUNET_GNSRECORD_typename_to_number (const char *dns_typename)
235 235
236 236
237/** 237/**
238 * Convert a type number (i.e. 1) to the corresponding type string (i.e. "A") 238 * Convert a type number to the corresponding type string (e.g. 1 to "A")
239 * 239 *
240 * @param type number of a type to convert 240 * @param type number of a type to convert
241 * @return corresponding typestring, NULL on error 241 * @return corresponding typestring, NULL on error
diff --git a/src/gnsrecord/plugin_gnsrecord_dns.c b/src/gnsrecord/plugin_gnsrecord_dns.c
index bde9944e2..123c59905 100644
--- a/src/gnsrecord/plugin_gnsrecord_dns.c
+++ b/src/gnsrecord/plugin_gnsrecord_dns.c
@@ -735,7 +735,7 @@ static struct
735 735
736 736
737/** 737/**
738 * Convert a type name (i.e. "AAAA") to the corresponding number. 738 * Convert a type name (e.g. "AAAA") to the corresponding number.
739 * 739 *
740 * @param cls closure, unused 740 * @param cls closure, unused
741 * @param dns_typename name to convert 741 * @param dns_typename name to convert
@@ -755,7 +755,7 @@ dns_typename_to_number (void *cls, const char *dns_typename)
755 755
756 756
757/** 757/**
758 * Convert a type number (i.e. 1) to the corresponding type string (i.e. "A") 758 * Convert a type number to the corresponding type string (e.g. 1 to "A")
759 * 759 *
760 * @param cls closure, unused 760 * @param cls closure, unused
761 * @param type number of a type to convert 761 * @param type number of a type to convert
diff --git a/src/hostlist/gnunet-daemon-hostlist_server.c b/src/hostlist/gnunet-daemon-hostlist_server.c
index b6c0495c0..fb80f6331 100644
--- a/src/hostlist/gnunet-daemon-hostlist_server.c
+++ b/src/hostlist/gnunet-daemon-hostlist_server.c
@@ -320,7 +320,7 @@ accept_policy_callback (void *cls,
320 * @param url the requested url 320 * @param url the requested url
321 * @param method the HTTP method used (#MHD_HTTP_METHOD_GET, 321 * @param method the HTTP method used (#MHD_HTTP_METHOD_GET,
322 * #MHD_HTTP_METHOD_PUT, etc.) 322 * #MHD_HTTP_METHOD_PUT, etc.)
323 * @param version the HTTP version string (i.e. 323 * @param version the HTTP version string (e.g.
324 * #MHD_HTTP_VERSION_1_1) 324 * #MHD_HTTP_VERSION_1_1)
325 * @param upload_data the data being uploaded (excluding HEADERS, 325 * @param upload_data the data being uploaded (excluding HEADERS,
326 * for a POST that fits into memory and that is encoded 326 * for a POST that fits into memory and that is encoded
@@ -335,7 +335,7 @@ accept_policy_callback (void *cls,
335 * @param con_cls pointer that the callback can set to some 335 * @param con_cls pointer that the callback can set to some
336 * address and that will be preserved by MHD for future 336 * address and that will be preserved by MHD for future
337 * calls for this request; since the access handler may 337 * calls for this request; since the access handler may
338 * be called many times (i.e., for a PUT/POST operation 338 * be called many times (e.g. for a PUT/POST operation
339 * with plenty of upload data) this allows the application 339 * with plenty of upload data) this allows the application
340 * to easily associate some request-specific state. 340 * to easily associate some request-specific state.
341 * If necessary, this state can be cleaned up in the 341 * If necessary, this state can be cleaned up in the
diff --git a/src/identity/gnunet-identity.c b/src/identity/gnunet-identity.c
index a01cd1ed7..d8dc936d3 100644
--- a/src/identity/gnunet-identity.c
+++ b/src/identity/gnunet-identity.c
@@ -268,13 +268,12 @@ set_done (void *cls, const char *emsg)
268 * with 'NULL' for 'ego'. That does NOT mean that the callback won't 268 * with 'NULL' for 'ego'. That does NOT mean that the callback won't
269 * be invoked in the future or that there was an error. 269 * be invoked in the future or that there was an error.
270 * 270 *
271 * When used with 'GNUNET_IDENTITY_create' or 'GNUNET_IDENTITY_get', 271 * When used with 'GNUNET_IDENTITY_create' or 'GNUNET_IDENTITY_get', this
272 * this function is only called ONCE, and 'NULL' being passed in 272 * function is only called ONCE, and 'NULL' being passed in 'ego' does
273 * 'ego' does indicate an error (i.e. name is taken or no default 273 * indicate an error (for example because name is taken or no default value is
274 * value is known). If 'ego' is non-NULL and if '*ctx' 274 * known). If 'ego' is non-NULL and if '*ctx' is set in those callbacks, the
275 * is set in those callbacks, the value WILL be passed to a subsequent 275 * value WILL be passed to a subsequent call to the identity callback of
276 * call to the identity callback of 'GNUNET_IDENTITY_connect' (if 276 * 'GNUNET_IDENTITY_connect' (if that one was not NULL).
277 * that one was not NULL).
278 * 277 *
279 * When an identity is renamed, this function is called with the 278 * When an identity is renamed, this function is called with the
280 * (known) ego but the NEW identifier. 279 * (known) ego but the NEW identifier.
diff --git a/src/include/gnunet_ats_service.h b/src/include/gnunet_ats_service.h
index 92572c72b..68ba8e6b2 100644
--- a/src/include/gnunet_ats_service.h
+++ b/src/include/gnunet_ats_service.h
@@ -94,7 +94,7 @@ struct GNUNET_ATS_Properties
94 94
95 /** 95 /**
96 * Distance on network layer (required for distance-vector routing) 96 * Distance on network layer (required for distance-vector routing)
97 * in hops. Zero for direct connections (i.e. plain TCP/UDP). 97 * in hops. Zero for direct connections (e.g. plain TCP/UDP).
98 */ 98 */
99 unsigned int distance; 99 unsigned int distance;
100 100
@@ -136,7 +136,7 @@ struct GNUNET_ATS_PropertiesNBO
136 136
137 /** 137 /**
138 * Distance on network layer (required for distance-vector routing) 138 * Distance on network layer (required for distance-vector routing)
139 * in hops. Zero for direct connections (i.e. plain TCP/UDP). 139 * in hops. Zero for direct connections (e.g. plain TCP/UDP).
140 */ 140 */
141 uint32_t distance GNUNET_PACKED; 141 uint32_t distance GNUNET_PACKED;
142 142
@@ -308,7 +308,7 @@ struct GNUNET_ATS_AddressRecord;
308 * 308 *
309 * @param sh handle 309 * @param sh handle
310 * @param address the address 310 * @param address the address
311 * @param session session handle (if available, i.e. for incoming connections) 311 * @param session session handle (if available, e.g for incoming connections)
312 * @param prop performance data for the address 312 * @param prop performance data for the address
313 * @return handle to the address representation inside ATS, NULL 313 * @return handle to the address representation inside ATS, NULL
314 * on error (i.e. ATS knows this exact address already, or 314 * on error (i.e. ATS knows this exact address already, or
diff --git a/src/include/gnunet_ats_transport_service.h b/src/include/gnunet_ats_transport_service.h
index b5848a36a..fd821baef 100644
--- a/src/include/gnunet_ats_transport_service.h
+++ b/src/include/gnunet_ats_transport_service.h
@@ -85,7 +85,7 @@ struct GNUNET_ATS_Properties
85 85
86 /** 86 /**
87 * Distance on network layer (required for distance-vector routing) 87 * Distance on network layer (required for distance-vector routing)
88 * in hops. Zero for direct connections (i.e. plain TCP/UDP). 88 * in hops. Zero for direct connections (e.g. plain TCP/UDP).
89 */ 89 */
90 uint32_t distance; 90 uint32_t distance;
91 91
diff --git a/src/include/gnunet_client_lib.h b/src/include/gnunet_client_lib.h
index aaa1f4a74..2ecd38b04 100644
--- a/src/include/gnunet_client_lib.h
+++ b/src/include/gnunet_client_lib.h
@@ -56,7 +56,7 @@ extern "C"
56 * #GNUNET_NO if the service is (definitively) down, 56 * #GNUNET_NO if the service is (definitively) down,
57 * #GNUNET_SYSERR if the configuration does not give us 57 * #GNUNET_SYSERR if the configuration does not give us
58 * the necessary information about the service, or if 58 * the necessary information about the service, or if
59 * we could not check (i.e. socket() failed) 59 * we could not check (e.g. socket() failed)
60 */ 60 */
61int 61int
62GNUNET_CLIENT_test (const struct GNUNET_CONFIGURATION_Handle *cfg, 62GNUNET_CLIENT_test (const struct GNUNET_CONFIGURATION_Handle *cfg,
diff --git a/src/include/gnunet_container_lib.h b/src/include/gnunet_container_lib.h
index 0d81abfd3..c8930746d 100644
--- a/src/include/gnunet_container_lib.h
+++ b/src/include/gnunet_container_lib.h
@@ -161,7 +161,7 @@ enum EXTRACTOR_MetaFormat
161 * 161 *
162 * @param cls closure (user-defined) 162 * @param cls closure (user-defined)
163 * @param plugin_name name of the plugin that produced this value; 163 * @param plugin_name name of the plugin that produced this value;
164 * special values can be used (i.e. '&lt;zlib&gt;' for zlib being 164 * special values can be used (e.g. '&lt;zlib&gt;' for zlib being
165 * used in the main libextractor library and yielding 165 * used in the main libextractor library and yielding
166 * meta data). 166 * meta data).
167 * @param type libextractor-type describing the meta data 167 * @param type libextractor-type describing the meta data
@@ -484,7 +484,7 @@ GNUNET_CONTAINER_meta_data_test_equal (
484 * 484 *
485 * @param md metadata to extend 485 * @param md metadata to extend
486 * @param plugin_name name of the plugin that produced this value; 486 * @param plugin_name name of the plugin that produced this value;
487 * special values can be used (i.e. '&lt;zlib&gt;' for zlib being 487 * special values can be used (e.g. '&lt;zlib&gt;' for zlib being
488 * used in the main libextractor library and yielding 488 * used in the main libextractor library and yielding
489 * meta data). 489 * meta data).
490 * @param type libextractor-type describing the meta data 490 * @param type libextractor-type describing the meta data
@@ -693,7 +693,7 @@ GNUNET_CONTAINER_meta_data_get_serialized_size (
693 * 693 *
694 * @param input serialized meta-data. 694 * @param input serialized meta-data.
695 * @param size number of bytes available 695 * @param size number of bytes available
696 * @return MD on success, NULL on error (i.e. 696 * @return MD on success, NULL on error (e.g.
697 * bad format) 697 * bad format)
698 */ 698 */
699struct GNUNET_CONTAINER_MetaData * 699struct GNUNET_CONTAINER_MetaData *
@@ -2441,7 +2441,7 @@ GNUNET_CONTAINER_multihashmap32_iterator_destroy (
2441 * Insertion sort of @a element into DLL from @a head to @a tail 2441 * Insertion sort of @a element into DLL from @a head to @a tail
2442 * sorted by @a comparator. 2442 * sorted by @a comparator.
2443 * 2443 *
2444 * @param TYPE element type of the elements, i.e. `struct ListElement` 2444 * @param TYPE element type of the elements, e.g. `struct ListElement`
2445 * @param comparator function like memcmp() to compare elements; takes 2445 * @param comparator function like memcmp() to compare elements; takes
2446 * three arguments, the @a comparator_cls and two elements, 2446 * three arguments, the @a comparator_cls and two elements,
2447 * returns an `int` (-1, 0 or 1) 2447 * returns an `int` (-1, 0 or 1)
diff --git a/src/include/gnunet_crypto_lib.h b/src/include/gnunet_crypto_lib.h
index 2a552e212..43cdfdfac 100644
--- a/src/include/gnunet_crypto_lib.h
+++ b/src/include/gnunet_crypto_lib.h
@@ -945,7 +945,7 @@ GNUNET_CRYPTO_hash_get_bit_rtl (const struct GNUNET_HashCode *code,
945/** 945/**
946 * @ingroup hash 946 * @ingroup hash
947 * Determine how many low order bits match in two 947 * Determine how many low order bits match in two
948 * `struct GNUNET_HashCodes`. i.e. - 010011 and 011111 share 948 * `struct GNUNET_HashCodes`. e.g. - 010011 and 011111 share
949 * the first two lowest order bits, and therefore the 949 * the first two lowest order bits, and therefore the
950 * return value is two (NOT XOR distance, nor how many 950 * return value is two (NOT XOR distance, nor how many
951 * bits match absolutely!). 951 * bits match absolutely!).
@@ -2048,7 +2048,7 @@ struct GNUNET_CRYPTO_RsaSignature;
2048/** 2048/**
2049 * Create a new private key. Caller must free return value. 2049 * Create a new private key. Caller must free return value.
2050 * 2050 *
2051 * @param len length of the key in bits (i.e. 2048) 2051 * @param len length of the key in bits (e.g. 2048)
2052 * @return fresh private key 2052 * @return fresh private key
2053 */ 2053 */
2054struct GNUNET_CRYPTO_RsaPrivateKey * 2054struct GNUNET_CRYPTO_RsaPrivateKey *
diff --git a/src/include/gnunet_curl_lib.h b/src/include/gnunet_curl_lib.h
index f291d6b14..f51e4b503 100644
--- a/src/include/gnunet_curl_lib.h
+++ b/src/include/gnunet_curl_lib.h
@@ -68,7 +68,7 @@ struct GNUNET_CURL_DownloadBuffer
68 68
69 /** 69 /**
70 * Error code (based on libc errno) if we failed to download 70 * Error code (based on libc errno) if we failed to download
71 * (i.e. response too large). 71 * (e.g. response too large).
72 */ 72 */
73 int eno; 73 int eno;
74}; 74};
diff --git a/src/include/gnunet_dht_service.h b/src/include/gnunet_dht_service.h
index ea3ea92fa..95d30ae6f 100644
--- a/src/include/gnunet_dht_service.h
+++ b/src/include/gnunet_dht_service.h
@@ -178,7 +178,7 @@ GNUNET_DHT_put (struct GNUNET_DHT_Handle *handle,
178 * has not yet been sent to the service, cancelling the PUT will stop 178 * has not yet been sent to the service, cancelling the PUT will stop
179 * this from happening (but there is no way for the user of this API 179 * this from happening (but there is no way for the user of this API
180 * to tell if that is the case). The only use for this API is to 180 * to tell if that is the case). The only use for this API is to
181 * prevent a later call to 'cont' from #GNUNET_DHT_put (i.e. because 181 * prevent a later call to 'cont' from #GNUNET_DHT_put (e.g. because
182 * the system is shutting down). 182 * the system is shutting down).
183 * 183 *
184 * @param ph put operation to cancel ('cont' will no longer be called) 184 * @param ph put operation to cancel ('cont' will no longer be called)
diff --git a/src/include/gnunet_getopt_lib.h b/src/include/gnunet_getopt_lib.h
index b37827ccc..731be4159 100644
--- a/src/include/gnunet_getopt_lib.h
+++ b/src/include/gnunet_getopt_lib.h
@@ -83,7 +83,7 @@ struct GNUNET_GETOPT_CommandLineProcessorContext
83 * 83 *
84 * @param ctx context for all options 84 * @param ctx context for all options
85 * @param scls specific closure (for this processor) 85 * @param scls specific closure (for this processor)
86 * @param option long name of the option (i.e. "config" for --config) 86 * @param option long name of the option (e.g. "config" for --config)
87 * @param value argument, NULL if none was given 87 * @param value argument, NULL if none was given
88 * @return #GNUNET_OK to continue processing other options, #GNUNET_SYSERR to abort 88 * @return #GNUNET_OK to continue processing other options, #GNUNET_SYSERR to abort
89 */ 89 */
diff --git a/src/include/gnunet_gnsrecord_lib.h b/src/include/gnunet_gnsrecord_lib.h
index aff56146e..61cbac2ca 100644
--- a/src/include/gnunet_gnsrecord_lib.h
+++ b/src/include/gnunet_gnsrecord_lib.h
@@ -308,7 +308,7 @@ GNUNET_GNSRECORD_string_to_value (uint32_t type, const char *s, void **data,
308 308
309 309
310/** 310/**
311 * Convert a type name (i.e. "AAAA") to the corresponding number. 311 * Convert a type name (e.g. "AAAA") to the corresponding number.
312 * 312 *
313 * @param dns_typename name to convert 313 * @param dns_typename name to convert
314 * @return corresponding number, UINT32_MAX on error 314 * @return corresponding number, UINT32_MAX on error
@@ -318,7 +318,7 @@ GNUNET_GNSRECORD_typename_to_number (const char *dns_typename);
318 318
319 319
320/** 320/**
321 * Convert a type number (i.e. 1) to the corresponding type string (i.e. "A") 321 * Convert a type number to the corresponding type string (e.g. 1 to "A")
322 * 322 *
323 * @param type number of a type to convert 323 * @param type number of a type to convert
324 * @return corresponding typestring, NULL on error 324 * @return corresponding typestring, NULL on error
diff --git a/src/include/gnunet_gnsrecord_plugin.h b/src/include/gnunet_gnsrecord_plugin.h
index 1435bc4b3..aec22c3af 100644
--- a/src/include/gnunet_gnsrecord_plugin.h
+++ b/src/include/gnunet_gnsrecord_plugin.h
@@ -81,7 +81,7 @@ typedef int
81 81
82 82
83/** 83/**
84 * Function called to convert a type name (i.e. "AAAA") to the 84 * Function called to convert a type name (e.g. "AAAA") to the
85 * corresponding number. 85 * corresponding number.
86 * 86 *
87 * @param cls closure 87 * @param cls closure
@@ -94,8 +94,8 @@ typedef uint32_t
94 94
95 95
96/** 96/**
97 * Function called to convert a type number (i.e. 1) to the 97 * Function called to convert a type number to the
98 * corresponding type string (i.e. "A") 98 * corresponding type string (e.g. 1 to "A")
99 * 99 *
100 * @param cls closure 100 * @param cls closure
101 * @param type number of a type to convert 101 * @param type number of a type to convert
diff --git a/src/include/gnunet_identity_service.h b/src/include/gnunet_identity_service.h
index 2974568db..c123983e2 100644
--- a/src/include/gnunet_identity_service.h
+++ b/src/include/gnunet_identity_service.h
@@ -210,13 +210,12 @@ GNUNET_IDENTITY_ego_get_public_key (struct GNUNET_IDENTITY_Ego *ego,
210 * with 'NULL' for @a ego. That does NOT mean that the callback won't 210 * with 'NULL' for @a ego. That does NOT mean that the callback won't
211 * be invoked in the future or that there was an error. 211 * be invoked in the future or that there was an error.
212 * 212 *
213 * When used with #GNUNET_IDENTITY_create or #GNUNET_IDENTITY_get, 213 * When used with #GNUNET_IDENTITY_create or #GNUNET_IDENTITY_get, this
214 * this function is only called ONCE, and 'NULL' being passed in 214 * function is only called ONCE, and 'NULL' being passed in @a ego does
215 * @a ego does indicate an error (i.e. name is taken or no default 215 * indicate an error (for example because name is taken or no default value is
216 * value is known). If @a ego is non-NULL and if '*ctx' 216 * known). If @a ego is non-NULL and if '*ctx' is set in those callbacks, the
217 * is set in those callbacks, the value WILL be passed to a subsequent 217 * value WILL be passed to a subsequent call to the identity callback of
218 * call to the identity callback of #GNUNET_IDENTITY_connect (if 218 * #GNUNET_IDENTITY_connect (if that one was not NULL).
219 * that one was not NULL).
220 * 219 *
221 * When an identity is renamed, this function is called with the 220 * When an identity is renamed, this function is called with the
222 * (known) @a ego but the NEW @a name. 221 * (known) @a ego but the NEW @a name.
@@ -768,7 +767,7 @@ struct GNUNET_IDENTITY_EgoSuffixLookup;
768 767
769/** 768/**
770 * Obtain the ego with the maximum suffix match between the 769 * Obtain the ego with the maximum suffix match between the
771 * ego's name and the given domain name @a suffix. I.e., given 770 * ego's name and the given domain name @a suffix. For example, given
772 * a @a suffix "a.b.c" and egos with names "d.a.b.c", "b.c" and "c", 771 * a @a suffix "a.b.c" and egos with names "d.a.b.c", "b.c" and "c",
773 * we return the ego for "b.c". 772 * we return the ego for "b.c".
774 * 773 *
diff --git a/src/include/gnunet_mq_lib.h b/src/include/gnunet_mq_lib.h
index 710664fe7..37bba8c1b 100644
--- a/src/include/gnunet_mq_lib.h
+++ b/src/include/gnunet_mq_lib.h
@@ -227,23 +227,23 @@ enum GNUNET_MQ_Error
227enum GNUNET_MQ_PriorityPreferences 227enum GNUNET_MQ_PriorityPreferences
228{ 228{
229 /** 229 /**
230 * Lowest priority, i.e. background traffic (i.e. NSE, FS). 230 * Lowest priority, i.e. background traffic (e.g. NSE, FS).
231 * This is the default! 231 * This is the default!
232 */ 232 */
233 GNUNET_MQ_PRIO_BACKGROUND = 0, 233 GNUNET_MQ_PRIO_BACKGROUND = 0,
234 234
235 /** 235 /**
236 * Best-effort traffic (i.e. CADET relay, DHT) 236 * Best-effort traffic (e.g. CADET relay, DHT)
237 */ 237 */
238 GNUNET_MQ_PRIO_BEST_EFFORT = 1, 238 GNUNET_MQ_PRIO_BEST_EFFORT = 1,
239 239
240 /** 240 /**
241 * Urgent traffic (local peer, i.e. Conversation). 241 * Urgent traffic (local peer, e.g. Conversation).
242 */ 242 */
243 GNUNET_MQ_PRIO_URGENT = 2, 243 GNUNET_MQ_PRIO_URGENT = 2,
244 244
245 /** 245 /**
246 * Highest priority, control traffic (i.e. CORE/CADET KX). 246 * Highest priority, control traffic (e.g. CORE/CADET KX).
247 */ 247 */
248 GNUNET_MQ_PRIO_CRITICAL_CONTROL = 3, 248 GNUNET_MQ_PRIO_CRITICAL_CONTROL = 3,
249 249
diff --git a/src/include/gnunet_network_lib.h b/src/include/gnunet_network_lib.h
index e40dacde7..97ab64add 100644
--- a/src/include/gnunet_network_lib.h
+++ b/src/include/gnunet_network_lib.h
@@ -561,7 +561,7 @@ GNUNET_NETWORK_fdset_destroy (struct GNUNET_NETWORK_FDSet *fds);
561/** 561/**
562 * Test if the given @a port is available. 562 * Test if the given @a port is available.
563 * 563 *
564 * @param ipproto transport protocol to test (i.e. IPPROTO_TCP) 564 * @param ipproto transport protocol to test (e.g. IPPROTO_TCP)
565 * @param port port number to test 565 * @param port port number to test
566 * @return #GNUNET_OK if the port is available, #GNUNET_NO if not 566 * @return #GNUNET_OK if the port is available, #GNUNET_NO if not
567 */ 567 */
diff --git a/src/include/gnunet_reclaim_plugin.h b/src/include/gnunet_reclaim_plugin.h
index 2ba8fc8a0..11d5d76f7 100644
--- a/src/include/gnunet_reclaim_plugin.h
+++ b/src/include/gnunet_reclaim_plugin.h
@@ -92,8 +92,8 @@ typedef uint32_t (*GNUNET_RECLAIM_AttributeTypenameToNumberFunction) (
92 92
93 93
94/** 94/**
95 * Function called to convert a type number (i.e. 1) to the 95 * Function called to convert a type number to the
96 * corresponding type string 96 * corresponding type string (e.g. 1 to "A")
97 * 97 *
98 * @param cls closure 98 * @param cls closure
99 * @param type number of a type to convert 99 * @param type number of a type to convert
@@ -154,8 +154,8 @@ typedef uint32_t (*GNUNET_RECLAIM_CredentialTypenameToNumberFunction) (
154 154
155 155
156/** 156/**
157 * Function called to convert a type number (i.e. 1) to the 157 * Function called to convert a type number to the
158 * corresponding type string 158 * corresponding type string (e.g. 1 to "A")
159 * 159 *
160 * @param cls closure 160 * @param cls closure
161 * @param type number of a type to convert 161 * @param type number of a type to convert
@@ -253,8 +253,8 @@ typedef uint32_t (*GNUNET_RECLAIM_PresentationTypenameToNumberFunction) (
253 253
254 254
255/** 255/**
256 * Function called to convert a type number (i.e. 1) to the 256 * Function called to convert a type number to the
257 * corresponding type string 257 * corresponding type string (e.g. 1 to "A")
258 * 258 *
259 * @param cls closure 259 * @param cls closure
260 * @param type number of a type to convert 260 * @param type number of a type to convert
diff --git a/src/include/gnunet_strings_lib.h b/src/include/gnunet_strings_lib.h
index cc655d0b0..955a3afca 100644
--- a/src/include/gnunet_strings_lib.h
+++ b/src/include/gnunet_strings_lib.h
@@ -59,7 +59,7 @@ extern "C"
59/** 59/**
60 * Convert a given fancy human-readable size to bytes. 60 * Convert a given fancy human-readable size to bytes.
61 * 61 *
62 * @param fancy_size human readable string (i.e. 1 MB) 62 * @param fancy_size human readable string (e.g. 1 MB)
63 * @param size set to the size in bytes 63 * @param size set to the size in bytes
64 * @return #GNUNET_OK on success, #GNUNET_SYSERR on error 64 * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
65 */ 65 */
@@ -72,7 +72,7 @@ GNUNET_STRINGS_fancy_size_to_bytes (const char *fancy_size,
72 * Convert a given fancy human-readable time to our internal 72 * Convert a given fancy human-readable time to our internal
73 * representation. 73 * representation.
74 * 74 *
75 * @param fancy_time human readable string (i.e. 1 minute) 75 * @param fancy_time human readable string (e.g. 1 minute)
76 * @param rtime set to the relative time 76 * @param rtime set to the relative time
77 * @return #GNUNET_OK on success, #GNUNET_SYSERR on error 77 * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
78 */ 78 */
@@ -87,7 +87,7 @@ GNUNET_STRINGS_fancy_time_to_relative (const char *fancy_time,
87 * representation. The human-readable time is expected to be 87 * representation. The human-readable time is expected to be
88 * in local time, whereas the returned value will be in UTC. 88 * in local time, whereas the returned value will be in UTC.
89 * 89 *
90 * @param fancy_time human readable string (i.e. %Y-%m-%d %H:%M:%S) 90 * @param fancy_time human readable string (e.g. %Y-%m-%d %H:%M:%S)
91 * @param atime set to the absolute time 91 * @param atime set to the absolute time
92 * @return #GNUNET_OK on success, #GNUNET_SYSERR on error 92 * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
93 */ 93 */
@@ -548,7 +548,7 @@ GNUNET_STRINGS_to_address_ipv4 (const char *zt_addr,
548 * `struct sockaddr`. 548 * `struct sockaddr`.
549 * 549 *
550 * @param addr the address 550 * @param addr the address
551 * @param[out] af set to the parsed address family (i.e. AF_INET) 551 * @param[out] af set to the parsed address family (e.g. AF_INET)
552 * @param[out] sa set to the parsed address 552 * @param[out] sa set to the parsed address
553 * @return 0 on error, otherwise number of bytes in @a sa 553 * @return 0 on error, otherwise number of bytes in @a sa
554 */ 554 */
diff --git a/src/include/gnunet_testbed_service.h b/src/include/gnunet_testbed_service.h
index acdfb2034..acb444de4 100644
--- a/src/include/gnunet_testbed_service.h
+++ b/src/include/gnunet_testbed_service.h
@@ -485,7 +485,7 @@ GNUNET_TESTBED_controller_stop (struct GNUNET_TESTBED_ControllerProc *cproc);
485 * @param event_mask bit mask with set of events to call 'cc' for; 485 * @param event_mask bit mask with set of events to call 'cc' for;
486 * or-ed values of "1LL" shifted by the 486 * or-ed values of "1LL" shifted by the
487 * respective 'enum GNUNET_TESTBED_EventType' 487 * respective 'enum GNUNET_TESTBED_EventType'
488 * (i.e. "(1LL << GNUNET_TESTBED_ET_CONNECT) | ...") 488 * (e.g. "(1LL << GNUNET_TESTBED_ET_CONNECT) | ...")
489 * @param cc controller callback to invoke on events 489 * @param cc controller callback to invoke on events
490 * @param cc_cls closure for cc 490 * @param cc_cls closure for cc
491 * @return handle to the controller 491 * @return handle to the controller
@@ -1415,7 +1415,7 @@ typedef void
1415 * @param event_mask bit mask with set of events to call 'cc' for; 1415 * @param event_mask bit mask with set of events to call 'cc' for;
1416 * or-ed values of "1LL" shifted by the 1416 * or-ed values of "1LL" shifted by the
1417 * respective 'enum GNUNET_TESTBED_EventType' 1417 * respective 'enum GNUNET_TESTBED_EventType'
1418 * (i.e. "(1LL << GNUNET_TESTBED_ET_CONNECT) || ...") 1418 * (e.g. "(1LL << GNUNET_TESTBED_ET_CONNECT) || ...")
1419 * @param cc controller callback to invoke on events; This callback is called 1419 * @param cc controller callback to invoke on events; This callback is called
1420 * for all peer start events even if GNUNET_TESTBED_ET_PEER_START isn't 1420 * for all peer start events even if GNUNET_TESTBED_ET_PEER_START isn't
1421 * set in the event_mask as this is the only way get access to the 1421 * set in the event_mask as this is the only way get access to the
@@ -1463,7 +1463,7 @@ GNUNET_TESTBED_run (const char *host_filename,
1463 * @param event_mask bit mask with set of events to call 'cc' for; 1463 * @param event_mask bit mask with set of events to call 'cc' for;
1464 * or-ed values of "1LL" shifted by the 1464 * or-ed values of "1LL" shifted by the
1465 * respective 'enum GNUNET_TESTBED_EventType' 1465 * respective 'enum GNUNET_TESTBED_EventType'
1466 * (i.e. "(1LL << GNUNET_TESTBED_ET_CONNECT) || ...") 1466 * (e.g. "(1LL << GNUNET_TESTBED_ET_CONNECT) || ...")
1467 * @param cc controller callback to invoke on events; This callback is called 1467 * @param cc controller callback to invoke on events; This callback is called
1468 * for all peer start events even if #GNUNET_TESTBED_ET_PEER_START isn't 1468 * for all peer start events even if #GNUNET_TESTBED_ET_PEER_START isn't
1469 * set in the event_mask as this is the only way get access to the 1469 * set in the event_mask as this is the only way get access to the
diff --git a/src/include/gnunet_time_lib.h b/src/include/gnunet_time_lib.h
index 38c372f23..b9e87fcbe 100644
--- a/src/include/gnunet_time_lib.h
+++ b/src/include/gnunet_time_lib.h
@@ -558,7 +558,7 @@ GNUNET_TIME_get_offset (void);
558 558
559 559
560/** 560/**
561 * Return the current year (i.e. '2011'). 561 * Return the current year (e.g. '2011').
562 */ 562 */
563unsigned int 563unsigned int
564GNUNET_TIME_get_current_year (void); 564GNUNET_TIME_get_current_year (void);
diff --git a/src/include/gnunet_transport_communication_service.h b/src/include/gnunet_transport_communication_service.h
index af2e36b4d..81a382fb2 100644
--- a/src/include/gnunet_transport_communication_service.h
+++ b/src/include/gnunet_transport_communication_service.h
@@ -94,17 +94,17 @@ struct GNUNET_TRANSPORT_CommunicatorHandle;
94enum GNUNET_TRANSPORT_CommunicatorCharacteristics 94enum GNUNET_TRANSPORT_CommunicatorCharacteristics
95{ 95{
96 /** 96 /**
97 * Characteristics are unknown (i.e. DV). 97 * Characteristics are unknown (e.g. DV).
98 */ 98 */
99 GNUNET_TRANSPORT_CC_UNKNOWN = 0, 99 GNUNET_TRANSPORT_CC_UNKNOWN = 0,
100 100
101 /** 101 /**
102 * Transmission is reliabile (with ACKs), i.e. TCP/HTTP/HTTPS. 102 * Transmission is reliabile (with ACKs), e.g. TCP/HTTP/HTTPS.
103 */ 103 */
104 GNUNET_TRANSPORT_CC_RELIABLE = 1, 104 GNUNET_TRANSPORT_CC_RELIABLE = 1,
105 105
106 /** 106 /**
107 * Transmission is unreliable (i.e. UDP) 107 * Transmission is unreliable (e.g. UDP)
108 */ 108 */
109 GNUNET_TRANSPORT_CC_UNRELIABLE = 2 109 GNUNET_TRANSPORT_CC_UNRELIABLE = 2
110}; 110};
diff --git a/src/include/gnunet_transport_plugin.h b/src/include/gnunet_transport_plugin.h
index 01b10f75c..3e6d1edc6 100644
--- a/src/include/gnunet_transport_plugin.h
+++ b/src/include/gnunet_transport_plugin.h
@@ -49,7 +49,7 @@
49 * connections to a given peer. Typically used by stateful plugins to 49 * connections to a given peer. Typically used by stateful plugins to
50 * allow the service to refer to specific streams instead of a more 50 * allow the service to refer to specific streams instead of a more
51 * general notion of "some connection" to the given peer. This is 51 * general notion of "some connection" to the given peer. This is
52 * useful since sometimes (i.e. for inbound TCP connections) a 52 * useful since sometimes (e.g. for inbound TCP connections) a
53 * connection may not have an address that can be used for meaningful 53 * connection may not have an address that can be used for meaningful
54 * distinction between sessions to the same peer. 54 * distinction between sessions to the same peer.
55 * 55 *
diff --git a/src/include/gnunet_tun_lib.h b/src/include/gnunet_tun_lib.h
index 0af9a1d3e..61880cea1 100644
--- a/src/include/gnunet_tun_lib.h
+++ b/src/include/gnunet_tun_lib.h
@@ -746,7 +746,7 @@ GNUNET_NETWORK_STRUCT_END
746 * Initialize an IPv4 header. 746 * Initialize an IPv4 header.
747 * 747 *
748 * @param ip header to initialize 748 * @param ip header to initialize
749 * @param protocol protocol to use (i.e. IPPROTO_UDP) 749 * @param protocol protocol to use (e.g. IPPROTO_UDP)
750 * @param payload_length number of bytes of payload that follow (excluding IPv4 750 * @param payload_length number of bytes of payload that follow (excluding IPv4
751 * header) 751 * header)
752 * @param src source IP address to use 752 * @param src source IP address to use
@@ -764,7 +764,7 @@ GNUNET_TUN_initialize_ipv4_header (struct GNUNET_TUN_IPv4Header *ip,
764 * Initialize an IPv6 header. 764 * Initialize an IPv6 header.
765 * 765 *
766 * @param ip header to initialize 766 * @param ip header to initialize
767 * @param protocol protocol to use (i.e. IPPROTO_UDP) 767 * @param protocol protocol to use (e.g. IPPROTO_UDP)
768 * @param payload_length number of bytes of payload that follow (excluding IPv4 768 * @param payload_length number of bytes of payload that follow (excluding IPv4
769 * header) 769 * header)
770 * @param src source IP address to use 770 * @param src source IP address to use
diff --git a/src/namestore/gnunet-namestore-fcfsd.c b/src/namestore/gnunet-namestore-fcfsd.c
index 22d108067..6d794746e 100644
--- a/src/namestore/gnunet-namestore-fcfsd.c
+++ b/src/namestore/gnunet-namestore-fcfsd.c
@@ -751,7 +751,7 @@ lookup_it_finished (void *cls)
751 * @param connection MHD connection handle 751 * @param connection MHD connection handle
752 * @param url the requested url 752 * @param url the requested url
753 * @param method the HTTP method used ("GET", "PUT", etc.) 753 * @param method the HTTP method used ("GET", "PUT", etc.)
754 * @param version the HTTP version string (i.e. "HTTP/1.1") 754 * @param version the HTTP version string ("HTTP/1.1" for version 1.1, etc.)
755 * @param upload_data the data being uploaded (excluding HEADERS, 755 * @param upload_data the data being uploaded (excluding HEADERS,
756 * for a POST that fits into memory and that is encoded 756 * for a POST that fits into memory and that is encoded
757 * with a supported encoding, the POST data will NOT be 757 * with a supported encoding, the POST data will NOT be
@@ -1057,13 +1057,12 @@ do_shutdown (void *cls)
1057/** 1057/**
1058 * Method called to inform about the egos of this peer. 1058 * Method called to inform about the egos of this peer.
1059 * 1059 *
1060 * When used with #GNUNET_IDENTITY_create or #GNUNET_IDENTITY_get, 1060 * When used with #GNUNET_IDENTITY_create or #GNUNET_IDENTITY_get, this
1061 * this function is only called ONCE, and 'NULL' being passed in 1061 * function is only called ONCE, and 'NULL' being passed in @a ego does
1062 * @a ego does indicate an error (i.e. name is taken or no default 1062 * indicate an error (for example because name is taken or no default value is
1063 * value is known). If @a ego is non-NULL and if '*ctx' 1063 * known). If @a ego is non-NULL and if '*ctx' is set in those callbacks, the
1064 * is set in those callbacks, the value WILL be passed to a subsequent 1064 * value WILL be passed to a subsequent call to the identity callback of
1065 * call to the identity callback of #GNUNET_IDENTITY_connect (if 1065 * #GNUNET_IDENTITY_connect (if that one was not NULL).
1066 * that one was not NULL).
1067 * 1066 *
1068 * @param cls closure, NULL 1067 * @param cls closure, NULL
1069 * @param ego ego handle 1068 * @param ego ego handle
diff --git a/src/namestore/gnunet-zoneimport.c b/src/namestore/gnunet-zoneimport.c
index ce62b52d5..68b43a016 100644
--- a/src/namestore/gnunet-zoneimport.c
+++ b/src/namestore/gnunet-zoneimport.c
@@ -1713,13 +1713,12 @@ process_stdin (void *cls)
1713 * with 'NULL' for @a ego. That does NOT mean that the callback won't 1713 * with 'NULL' for @a ego. That does NOT mean that the callback won't
1714 * be invoked in the future or that there was an error. 1714 * be invoked in the future or that there was an error.
1715 * 1715 *
1716 * When used with #GNUNET_IDENTITY_create or #GNUNET_IDENTITY_get, 1716 * When used with #GNUNET_IDENTITY_create or #GNUNET_IDENTITY_get, this
1717 * this function is only called ONCE, and 'NULL' being passed in 1717 * function is only called ONCE, and 'NULL' being passed in @a ego does
1718 * @a ego does indicate an error (i.e. name is taken or no default 1718 * indicate an error (for example because name is taken or no default value is
1719 * value is known). If @a ego is non-NULL and if '*ctx' 1719 * known). If @a ego is non-NULL and if '*ctx' is set in those callbacks, the
1720 * is set in those callbacks, the value WILL be passed to a subsequent 1720 * value WILL be passed to a subsequent call to the identity callback of
1721 * call to the identity callback of #GNUNET_IDENTITY_connect (if 1721 * #GNUNET_IDENTITY_connect (if that one was not NULL).
1722 * that one was not NULL).
1723 * 1722 *
1724 * When an identity is renamed, this function is called with the 1723 * When an identity is renamed, this function is called with the
1725 * (known) @a ego but the NEW @a name. 1724 * (known) @a ego but the NEW @a name.
diff --git a/src/peerinfo-tool/gnunet-peerinfo_plugins.c b/src/peerinfo-tool/gnunet-peerinfo_plugins.c
index 901ded014..e196ec58a 100644
--- a/src/peerinfo-tool/gnunet-peerinfo_plugins.c
+++ b/src/peerinfo-tool/gnunet-peerinfo_plugins.c
@@ -50,12 +50,12 @@ struct TransportPlugin
50 struct GNUNET_TRANSPORT_PluginFunctions *api; 50 struct GNUNET_TRANSPORT_PluginFunctions *api;
51 51
52 /** 52 /**
53 * Short name for the plugin (i.e. "tcp"). 53 * Short name for the plugin (e.g. "tcp").
54 */ 54 */
55 char *short_name; 55 char *short_name;
56 56
57 /** 57 /**
58 * Name of the library (i.e. "gnunet_plugin_transport_tcp"). 58 * Name of the library (e.g. "gnunet_plugin_transport_tcp").
59 */ 59 */
60 char *lib_name; 60 char *lib_name;
61 61
diff --git a/src/pt/test_gns_vpn.c b/src/pt/test_gns_vpn.c
index 7b4abaec2..e20d835f8 100644
--- a/src/pt/test_gns_vpn.c
+++ b/src/pt/test_gns_vpn.c
@@ -530,13 +530,12 @@ fork_and_exec (const char *file,
530 * with 'NULL' for @a ego. That does NOT mean that the callback won't 530 * with 'NULL' for @a ego. That does NOT mean that the callback won't
531 * be invoked in the future or that there was an error. 531 * be invoked in the future or that there was an error.
532 * 532 *
533 * When used with #GNUNET_IDENTITY_create or #GNUNET_IDENTITY_get, 533 * When used with #GNUNET_IDENTITY_create or #GNUNET_IDENTITY_get, this
534 * this function is only called ONCE, and 'NULL' being passed in 534 * function is only called ONCE, and 'NULL' being passed in @a ego does
535 * @a ego does indicate an error (i.e. name is taken or no default 535 * indicate an error (for example because name is taken or no default value is
536 * value is known). If @a ego is non-NULL and if '*ctx' 536 * known). If @a ego is non-NULL and if '*ctx' is set in those callbacks, the
537 * is set in those callbacks, the value WILL be passed to a subsequent 537 * value WILL be passed to a subsequent call to the identity callback of
538 * call to the identity callback of #GNUNET_IDENTITY_connect (if 538 * #GNUNET_IDENTITY_connect (if that one was not NULL).
539 * that one was not NULL).
540 * 539 *
541 * When an identity is renamed, this function is called with the 540 * When an identity is renamed, this function is called with the
542 * (known) @a ego but the NEW @a name. 541 * (known) @a ego but the NEW @a name.
diff --git a/src/reclaim/Makefile.am b/src/reclaim/Makefile.am
index 9463f19d9..1a0b7fae4 100644
--- a/src/reclaim/Makefile.am
+++ b/src/reclaim/Makefile.am
@@ -16,6 +16,11 @@ REST_PLUGIN = \
16CREDENTIAL_PLUGIN = \ 16CREDENTIAL_PLUGIN = \
17 libgnunet_plugin_reclaim_credential_jwt.la 17 libgnunet_plugin_reclaim_credential_jwt.la
18 18
19if HAVE_PABC
20 CREDENTIAL_PLUGIN += libgnunet_plugin_reclaim_credential_pabc.la
21 REST_PLUGIN += libgnunet_plugin_rest_pabc.la
22endif
23
19EXTRA_DIST = \ 24EXTRA_DIST = \
20 reclaim.conf \ 25 reclaim.conf \
21 test_reclaim_defaults.conf \ 26 test_reclaim_defaults.conf \
@@ -87,6 +92,26 @@ libgnunet_plugin_rest_openid_connect_la_LDFLAGS = \
87 $(GN_PLUGIN_LDFLAGS) 92 $(GN_PLUGIN_LDFLAGS)
88libgnunet_plugin_rest_openid_connect_la_CFLAGS = $(MHD_CFLAGS) $(AM_CFLAGS) 93libgnunet_plugin_rest_openid_connect_la_CFLAGS = $(MHD_CFLAGS) $(AM_CFLAGS)
89 94
95if HAVE_PABC
96libgnunet_plugin_rest_pabc_la_SOURCES = \
97 plugin_rest_pabc.c \
98 pabc_helper.c
99libgnunet_plugin_rest_pabc_la_LIBADD = \
100 libgnunetreclaim.la \
101 $(top_builddir)/src/json/libgnunetjson.la \
102 $(top_builddir)/src/rest/libgnunetrest.la \
103 $(top_builddir)/src/util/libgnunetutil.la $(XLIBS) \
104 $(LTLIBINTL) -ljansson -lpabc $(MHD_LIBS)
105libgnunet_plugin_rest_pabc_la_DEPENDENCIES = \
106 libgnunetreclaim.la \
107 $(top_builddir)/src/json/libgnunetjson.la \
108 $(top_builddir)/src/rest/libgnunetrest.la \
109 $(top_builddir)/src/util/libgnunetutil.la
110libgnunet_plugin_rest_pabc_la_LDFLAGS = \
111 $(GN_PLUGIN_LDFLAGS)
112libgnunet_plugin_rest_pabc_la_CFLAGS = $(MHD_CFLAGS) $(AM_CFLAGS)
113endif
114
90 115
91libgnunet_plugin_gnsrecord_reclaim_la_SOURCES = \ 116libgnunet_plugin_gnsrecord_reclaim_la_SOURCES = \
92 plugin_gnsrecord_reclaim.c 117 plugin_gnsrecord_reclaim.c
@@ -134,6 +159,21 @@ libgnunet_plugin_reclaim_attribute_basic_la_LIBADD = \
134libgnunet_plugin_reclaim_attribute_basic_la_LDFLAGS = \ 159libgnunet_plugin_reclaim_attribute_basic_la_LDFLAGS = \
135 $(GN_PLUGIN_LDFLAGS) 160 $(GN_PLUGIN_LDFLAGS)
136 161
162if HAVE_PABC
163libgnunet_plugin_reclaim_credential_pabc_la_SOURCES = \
164 plugin_reclaim_credential_pabc.c \
165 pabc_helper.c
166libgnunet_plugin_reclaim_credential_pabc_la_LIBADD = \
167 $(top_builddir)/src/util/libgnunetutil.la \
168 libgnunetreclaim.la \
169 -ljansson\
170 -lpabc \
171 $(LTLIBINTL)
172libgnunet_plugin_reclaim_credential_pabc_la_LDFLAGS = \
173 $(GN_PLUGIN_LDFLAGS)
174endif
175
176
137libgnunet_plugin_reclaim_credential_jwt_la_SOURCES = \ 177libgnunet_plugin_reclaim_credential_jwt_la_SOURCES = \
138 plugin_reclaim_credential_jwt.c 178 plugin_reclaim_credential_jwt.c
139libgnunet_plugin_reclaim_credential_jwt_la_LIBADD = \ 179libgnunet_plugin_reclaim_credential_jwt_la_LIBADD = \
diff --git a/src/reclaim/json_reclaim.c b/src/reclaim/json_reclaim.c
index 4eeb22bee..b1ca7a4a5 100644
--- a/src/reclaim/json_reclaim.c
+++ b/src/reclaim/json_reclaim.c
@@ -290,10 +290,11 @@ parse_credential (void *cls, json_t *root, struct GNUNET_JSON_Specification *spe
290{ 290{
291 struct GNUNET_RECLAIM_Credential *cred; 291 struct GNUNET_RECLAIM_Credential *cred;
292 const char *name_str = NULL; 292 const char *name_str = NULL;
293 const char *val_str = NULL;
294 const char *type_str = NULL; 293 const char *type_str = NULL;
295 const char *id_str = NULL; 294 const char *id_str = NULL;
296 char *data; 295 json_t *val_json;
296 char *data = NULL;
297 char *val_str = NULL;
297 int unpack_state; 298 int unpack_state;
298 uint32_t type; 299 uint32_t type;
299 size_t data_size; 300 size_t data_size;
@@ -308,7 +309,7 @@ parse_credential (void *cls, json_t *root, struct GNUNET_JSON_Specification *spe
308 } 309 }
309 // interpret single attribute 310 // interpret single attribute
310 unpack_state = json_unpack (root, 311 unpack_state = json_unpack (root,
311 "{s:s, s?s, s:s, s:s!}", 312 "{s:s, s?s, s:s, s:o!}",
312 "name", 313 "name",
313 &name_str, 314 &name_str,
314 "id", 315 "id",
@@ -316,14 +317,19 @@ parse_credential (void *cls, json_t *root, struct GNUNET_JSON_Specification *spe
316 "type", 317 "type",
317 &type_str, 318 &type_str,
318 "value", 319 "value",
319 &val_str); 320 &val_json);
320 if ((0 != unpack_state) || (NULL == name_str) || (NULL == val_str) || 321 if ((0 != unpack_state) || (NULL == name_str) || (NULL == val_json) ||
321 (NULL == type_str)) 322 (NULL == type_str))
322 { 323 {
323 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 324 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
324 "Error json object has a wrong format!\n"); 325 "Error json object has a wrong format!\n");
325 return GNUNET_SYSERR; 326 return GNUNET_SYSERR;
326 } 327 }
328 if (json_is_string (val_json)) {
329 val_str = GNUNET_strdup (json_string_value (val_json));
330 } else {
331 val_str = json_dumps (val_json, JSON_COMPACT);
332 }
327 type = GNUNET_RECLAIM_credential_typename_to_number (type_str); 333 type = GNUNET_RECLAIM_credential_typename_to_number (type_str);
328 if (GNUNET_SYSERR == 334 if (GNUNET_SYSERR ==
329 (GNUNET_RECLAIM_credential_string_to_value (type, 335 (GNUNET_RECLAIM_credential_string_to_value (type,
diff --git a/src/reclaim/pabc_helper.c b/src/reclaim/pabc_helper.c
new file mode 100644
index 000000000..1b1dbea0f
--- /dev/null
+++ b/src/reclaim/pabc_helper.c
@@ -0,0 +1,364 @@
1// maximilian.kaul@aisec.fraunhofer.de
2
3// WIP implementation of
4// https://github.com/ontio/ontology-crypto/wiki/Anonymous-Credential
5// using the relic library https://github.com/relic-toolkit/relic/
6
7#include "pabc_helper.h"
8#include <pwd.h>
9#include <stdlib.h>
10#include <unistd.h>
11
12static char pabc_dir[PATH_MAX + 1];
13
14static const char *
15get_homedir ()
16{
17 const char *homedir;
18 if ((homedir = getenv ("HOME")) == NULL)
19 {
20 homedir = getpwuid (getuid ())->pw_dir;
21 }
22 return homedir;
23}
24
25
26static enum GNUNET_GenericReturnValue
27write_file (char const *const filename, const char *buffer)
28{
29 struct GNUNET_DISK_FileHandle *fh;
30 fh = GNUNET_DISK_file_open (filename,
31 GNUNET_DISK_OPEN_WRITE
32 | GNUNET_DISK_OPEN_TRUNCATE
33 | GNUNET_DISK_OPEN_CREATE,
34 GNUNET_DISK_PERM_USER_WRITE
35 | GNUNET_DISK_PERM_USER_READ);
36 if (fh == NULL)
37 return GNUNET_SYSERR;
38 if (GNUNET_SYSERR == GNUNET_DISK_file_write (fh,
39 buffer, strlen (buffer) + 1))
40 goto fail;
41 GNUNET_DISK_file_close (fh);
42 return GNUNET_OK;
43
44fail:
45 GNUNET_DISK_file_close (fh);
46 return GNUNET_SYSERR;
47}
48
49
50static enum GNUNET_GenericReturnValue
51init_pabc_dir ()
52{
53 size_t filename_size = strlen (get_homedir ()) + 1 + strlen (".local") + 1
54 + strlen ("pabc-reclaim") + 1;
55 snprintf (pabc_dir, filename_size, "%s/%s/%s",
56 get_homedir (), ".local", "pabc-reclaim");
57 return GNUNET_DISK_directory_create (pabc_dir);
58}
59
60
61static const char *
62get_pabcdir ()
63{
64 init_pabc_dir ();
65 return pabc_dir;
66}
67
68
69enum GNUNET_GenericReturnValue
70read_file (char const *const filename, char **buffer)
71{
72 struct GNUNET_DISK_FileHandle *fh;
73 if (GNUNET_YES != GNUNET_DISK_file_test (filename))
74 return GNUNET_SYSERR;
75
76 fh = GNUNET_DISK_file_open (filename,
77 GNUNET_DISK_OPEN_READ,
78 GNUNET_DISK_PERM_USER_READ);
79 if (fh == NULL)
80 return GNUNET_SYSERR;
81 long lSize = GNUNET_DISK_file_seek (fh, 0, GNUNET_DISK_SEEK_END);
82 if (lSize < 0)
83 goto fail;
84 GNUNET_DISK_file_seek (fh, 0, GNUNET_DISK_SEEK_SET);
85 *buffer = calloc ((size_t) lSize + 1, sizeof(char));
86 if (*buffer == NULL)
87 goto fail;
88
89 // copy the file into the buffer:
90 size_t r = GNUNET_DISK_file_read (fh, *buffer, (size_t) lSize);
91 if (r != (size_t) lSize)
92 goto fail;
93
94 GNUNET_DISK_file_close (fh);
95 return GNUNET_OK;
96
97fail:
98 GNUNET_DISK_file_close (fh);
99 return GNUNET_SYSERR;
100}
101
102
103struct pabc_public_parameters *
104PABC_read_issuer_ppfile (const char *f, struct pabc_context *const ctx)
105{
106 if (NULL == ctx)
107 {
108 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No global context provided\n");
109 return NULL;
110 }
111 struct pabc_public_parameters *pp;
112 char *buffer;
113 int r;
114 r = read_file (f, &buffer);
115 if (GNUNET_OK != r)
116 {
117 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Error reading file\n");
118 return NULL;
119 }
120 if (PABC_OK != pabc_decode_and_new_public_parameters (ctx, &pp, buffer))
121 {
122 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
123 "Failed to decode public parameters\n");
124 PABC_FREE_NULL (buffer);
125 return NULL;
126 }
127 PABC_FREE_NULL (buffer);
128 return pp;
129}
130
131
132enum GNUNET_GenericReturnValue
133PABC_load_public_parameters (struct pabc_context *const ctx,
134 char const *const pp_name,
135 struct pabc_public_parameters **pp)
136{
137 char fname[PATH_MAX];
138 char *pp_filename;
139 const char *pdir = get_pabcdir ();
140
141 if (ctx == NULL)
142 return GNUNET_SYSERR;
143 if (pp_name == NULL)
144 return GNUNET_SYSERR;
145
146 GNUNET_STRINGS_urlencode (pp_name, strlen (pp_name), &pp_filename);
147 if (GNUNET_YES != GNUNET_DISK_directory_test (pdir, GNUNET_YES))
148 {
149 GNUNET_free (pp_filename);
150 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Error reading %s\n", pdir);
151 return GNUNET_SYSERR;
152 }
153 snprintf (fname, PATH_MAX, "%s/%s%s", pdir, pp_filename, PABC_PP_EXT);
154 if (GNUNET_YES != GNUNET_DISK_file_test (fname))
155 {
156 GNUNET_free (pp_filename);
157 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Error testing %s\n", fname);
158 return GNUNET_SYSERR;
159 }
160 *pp = PABC_read_issuer_ppfile (fname, ctx);
161 if (*pp)
162 return GNUNET_OK;
163 else
164 return GNUNET_SYSERR;
165}
166
167
168enum GNUNET_GenericReturnValue
169PABC_write_public_parameters (char const *const pp_name,
170 struct pabc_public_parameters *const pp)
171{
172 char *json;
173 char *filename;
174 char *pp_filename;
175 enum pabc_status status;
176 struct pabc_context *ctx = NULL;
177
178 GNUNET_STRINGS_urlencode (pp_name, strlen (pp_name), &pp_filename);
179 PABC_ASSERT (pabc_new_ctx (&ctx));
180 // store in json file
181 status = pabc_encode_public_parameters (ctx, pp, &json);
182 if (status != PABC_OK)
183 {
184 GNUNET_free (pp_filename);
185 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
186 "Failed to encode public parameters.\n");
187 pabc_free_ctx (&ctx);
188 return GNUNET_SYSERR;
189 }
190
191 size_t filename_size =
192 strlen (get_pabcdir ()) + 1 + strlen (pp_filename) + strlen (PABC_PP_EXT)
193 + 1;
194 filename = GNUNET_malloc (filename_size);
195 if (! filename)
196 {
197 GNUNET_free (pp_filename);
198 PABC_FREE_NULL (json);
199 pabc_free_ctx (&ctx);
200 return GNUNET_SYSERR;
201 }
202 snprintf (filename, filename_size, "%s/%s%s", get_pabcdir (), pp_filename,
203 PABC_PP_EXT);
204
205 GNUNET_free (pp_filename);
206 if (GNUNET_OK != write_file (filename, json))
207 {
208 PABC_FREE_NULL (filename);
209 PABC_FREE_NULL (json);
210 pabc_free_ctx (&ctx);
211 return GNUNET_SYSERR;
212 }
213 PABC_FREE_NULL (filename);
214 PABC_FREE_NULL (json);
215 pabc_free_ctx (&ctx);
216 return GNUNET_OK;
217}
218
219
220enum GNUNET_GenericReturnValue
221PABC_write_usr_ctx (char const *const usr_name,
222 char const *const pp_name,
223 struct pabc_context const *const ctx,
224 struct pabc_public_parameters const *const pp,
225 struct pabc_user_context *const usr_ctx)
226{
227
228 char *pp_filename;
229 char *json = NULL;
230 enum pabc_status status;
231 char *fname = NULL;
232
233 if (NULL == usr_name)
234 {
235 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No issuer given.\n");
236 return GNUNET_SYSERR;
237 }
238 if (NULL == pp_name)
239 {
240 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No user given.\n");
241 return GNUNET_SYSERR;
242 }
243 if (NULL == ctx)
244 {
245 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No context given.\n");
246 return GNUNET_SYSERR;
247 }
248 if (NULL == pp)
249 {
250 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No public parameters given.\n");
251 return GNUNET_SYSERR;
252 }
253 if (NULL == usr_ctx)
254 {
255 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No user context given.\n");
256 return GNUNET_SYSERR;
257 }
258
259 GNUNET_STRINGS_urlencode (pp_name, strlen (pp_name), &pp_filename);
260 status = pabc_encode_user_ctx (ctx, pp, usr_ctx, &json);
261 if (PABC_OK != status)
262 {
263 GNUNET_free (pp_filename);
264 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to encode user context.\n");
265 return status;
266 }
267
268 size_t fname_size = strlen (get_pabcdir ()) + 1 + strlen (usr_name) + 1
269 + strlen (pp_filename) + strlen (PABC_USR_EXT) + 1;
270 fname = GNUNET_malloc (fname_size);
271
272 snprintf (fname, fname_size, "%s/%s_%s%s", get_pabcdir (), usr_name,
273 pp_filename,
274 PABC_USR_EXT);
275
276 GNUNET_free (pp_filename);
277 if (GNUNET_OK == write_file (fname, json))
278 {
279 GNUNET_free (fname);
280 GNUNET_free (json);
281 return GNUNET_OK;
282 }
283 else
284 {
285 GNUNET_free (fname);
286 GNUNET_free (json);
287 return GNUNET_SYSERR;
288 }
289}
290
291
292enum GNUNET_GenericReturnValue
293PABC_read_usr_ctx (char const *const usr_name,
294 char const *const pp_name,
295 struct pabc_context const *const ctx,
296 struct pabc_public_parameters const *const pp,
297 struct pabc_user_context **usr_ctx)
298{
299 char *json = NULL;
300 char *pp_filename;
301 enum pabc_status status;
302
303 char *fname = NULL;
304
305 if (NULL == usr_name)
306 {
307 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No issuer given.\n");
308 return GNUNET_SYSERR;
309 }
310 if (NULL == pp_name)
311 {
312 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No user given.\n");
313 return GNUNET_SYSERR;
314 }
315 if (NULL == ctx)
316 {
317 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No context given.\n");
318 return GNUNET_SYSERR;
319 }
320 if (NULL == pp)
321 {
322 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No public parameters given.\n");
323 return GNUNET_SYSERR;
324 }
325 if (NULL == usr_ctx)
326 {
327 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No user context given.\n");
328 return GNUNET_SYSERR;
329 }
330 GNUNET_STRINGS_urlencode (pp_name, strlen (pp_name), &pp_filename);
331
332 size_t fname_size = strlen (get_pabcdir ()) + 1 + strlen (usr_name) + 1
333 + strlen (pp_filename) + strlen (PABC_USR_EXT) + 1;
334 fname = GNUNET_malloc (fname_size);
335 snprintf (fname, fname_size, "%s/%s_%s%s", get_pabcdir (), usr_name,
336 pp_filename,
337 PABC_USR_EXT);
338 GNUNET_free (pp_filename);
339 if (GNUNET_OK != read_file (fname, &json))
340 {
341 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
342 "Failed to read `%s'\n", fname);
343 PABC_FREE_NULL (fname);
344 return GNUNET_SYSERR;
345 }
346 GNUNET_free (fname);
347
348 status = pabc_new_user_context (ctx, pp, usr_ctx);
349 if (PABC_OK != status)
350 {
351 GNUNET_free (json);
352 return GNUNET_SYSERR;
353 }
354 status = pabc_decode_user_ctx (ctx, pp, *usr_ctx, json);
355 GNUNET_free (json);
356 if (PABC_OK != status)
357 {
358 pabc_free_user_context (ctx, pp, usr_ctx);
359 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to encode user context.\n");
360 return GNUNET_SYSERR;
361 }
362
363 return GNUNET_OK;
364}
diff --git a/src/reclaim/pabc_helper.h b/src/reclaim/pabc_helper.h
new file mode 100644
index 000000000..045ad5dda
--- /dev/null
+++ b/src/reclaim/pabc_helper.h
@@ -0,0 +1,41 @@
1#include "platform.h"
2#include "gnunet_util_lib.h"
3#include <pabc/pabc.h>
4
5#ifndef PATH_MAX
6#define PATH_MAX 4096
7#endif
8
9#define PABC_ISK_EXT ".isk"
10
11#define PABC_PP_EXT ".pp"
12
13#define PABC_USR_EXT ".usr"
14
15#define PABC_ATTR_DELIM "="
16
17enum GNUNET_GenericReturnValue
18PABC_write_public_parameters (char const *const pp_name,
19 struct pabc_public_parameters *const pp);
20
21
22enum GNUNET_GenericReturnValue
23PABC_load_public_parameters (struct pabc_context *const ctx,
24 char const *const pp_name,
25 struct pabc_public_parameters **pp);
26
27enum GNUNET_GenericReturnValue
28PABC_write_usr_ctx (char const *const user_name,
29 char const *const pp_name,
30 struct pabc_context const *const ctx,
31 struct pabc_public_parameters const *const
32 pp,
33 struct pabc_user_context *const usr_ctx);
34
35enum GNUNET_GenericReturnValue
36PABC_read_usr_ctx (char const *const user_name,
37 char const *const pp_name,
38 struct pabc_context const *const ctx,
39 struct pabc_public_parameters const *const
40 pp,
41 struct pabc_user_context **usr_ctx);
diff --git a/src/reclaim/plugin_gnsrecord_reclaim.c b/src/reclaim/plugin_gnsrecord_reclaim.c
index 9e4f0a5c4..ce6fe483d 100644
--- a/src/reclaim/plugin_gnsrecord_reclaim.c
+++ b/src/reclaim/plugin_gnsrecord_reclaim.c
@@ -118,7 +118,7 @@ static struct
118 118
119 119
120/** 120/**
121 * Convert a type name (i.e. "AAAA") to the corresponding number. 121 * Convert a type name (e.g. "AAAA") to the corresponding number.
122 * 122 *
123 * @param cls closure, unused 123 * @param cls closure, unused
124 * @param dns_typename name to convert 124 * @param dns_typename name to convert
@@ -138,7 +138,7 @@ typename_to_number (void *cls, const char *dns_typename)
138 138
139 139
140/** 140/**
141 * Convert a type number (i.e. 1) to the corresponding type string (i.e. "A") 141 * Convert a type number to the corresponding type string (e.g. 1 to "A")
142 * 142 *
143 * @param cls closure, unused 143 * @param cls closure, unused
144 * @param type number of a type to convert 144 * @param type number of a type to convert
diff --git a/src/reclaim/plugin_reclaim_attribute_basic.c b/src/reclaim/plugin_reclaim_attribute_basic.c
index c87922886..66f59998a 100644
--- a/src/reclaim/plugin_reclaim_attribute_basic.c
+++ b/src/reclaim/plugin_reclaim_attribute_basic.c
@@ -124,7 +124,7 @@ basic_typename_to_number (void *cls, const char *basic_typename)
124 124
125 125
126/** 126/**
127 * Convert a type number (i.e. 1) to the corresponding type string 127 * Convert a type number to the corresponding type string (e.g. 1 to "A")
128 * 128 *
129 * @param cls closure, unused 129 * @param cls closure, unused
130 * @param type number of a type to convert 130 * @param type number of a type to convert
diff --git a/src/reclaim/plugin_reclaim_credential_jwt.c b/src/reclaim/plugin_reclaim_credential_jwt.c
index aac0a6ea5..fb01903aa 100644
--- a/src/reclaim/plugin_reclaim_credential_jwt.c
+++ b/src/reclaim/plugin_reclaim_credential_jwt.c
@@ -122,7 +122,7 @@ jwt_typename_to_number (void *cls, const char *jwt_typename)
122 122
123 123
124/** 124/**
125 * Convert a type number (i.e. 1) to the corresponding type string 125 * Convert a type number to the corresponding type string (e.g. 1 to "A")
126 * 126 *
127 * @param cls closure, unused 127 * @param cls closure, unused
128 * @param type number of a type to convert 128 * @param type number of a type to convert
@@ -158,11 +158,10 @@ jwt_parse_attributes (void *cls,
158 struct GNUNET_RECLAIM_AttributeList *attrs; 158 struct GNUNET_RECLAIM_AttributeList *attrs;
159 char delim[] = "."; 159 char delim[] = ".";
160 char *val_str = NULL; 160 char *val_str = NULL;
161 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Parsing JWT attributes.\n");
162 char *decoded_jwt; 161 char *decoded_jwt;
163 char *tmp; 162 char *tmp;
164 json_t *json_val; 163 json_t *json_val;
165 json_error_t *json_err = NULL; 164 json_error_t json_err;
166 165
167 attrs = GNUNET_new (struct GNUNET_RECLAIM_AttributeList); 166 attrs = GNUNET_new (struct GNUNET_RECLAIM_AttributeList);
168 167
@@ -173,7 +172,7 @@ jwt_parse_attributes (void *cls,
173 (void **) &decoded_jwt); 172 (void **) &decoded_jwt);
174 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Decoded JWT: %s\n", decoded_jwt); 173 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Decoded JWT: %s\n", decoded_jwt);
175 GNUNET_assert (NULL != decoded_jwt); 174 GNUNET_assert (NULL != decoded_jwt);
176 json_val = json_loads (decoded_jwt, JSON_DECODE_ANY, json_err); 175 json_val = json_loads (decoded_jwt, JSON_DECODE_ANY, &json_err);
177 GNUNET_free (decoded_jwt); 176 GNUNET_free (decoded_jwt);
178 const char *key; 177 const char *key;
179 const char *addr_key; 178 const char *addr_key;
@@ -252,6 +251,8 @@ struct GNUNET_RECLAIM_AttributeList *
252jwt_parse_attributes_c (void *cls, 251jwt_parse_attributes_c (void *cls,
253 const struct GNUNET_RECLAIM_Credential *cred) 252 const struct GNUNET_RECLAIM_Credential *cred)
254{ 253{
254 if (cred->type != GNUNET_RECLAIM_CREDENTIAL_TYPE_JWT)
255 return NULL;
255 return jwt_parse_attributes (cls, cred->data, cred->data_size); 256 return jwt_parse_attributes (cls, cred->data, cred->data_size);
256} 257}
257 258
@@ -267,6 +268,8 @@ struct GNUNET_RECLAIM_AttributeList *
267jwt_parse_attributes_p (void *cls, 268jwt_parse_attributes_p (void *cls,
268 const struct GNUNET_RECLAIM_Presentation *cred) 269 const struct GNUNET_RECLAIM_Presentation *cred)
269{ 270{
271 if (cred->type != GNUNET_RECLAIM_CREDENTIAL_TYPE_JWT)
272 return NULL;
270 return jwt_parse_attributes (cls, cred->data, cred->data_size); 273 return jwt_parse_attributes (cls, cred->data, cred->data_size);
271} 274}
272 275
@@ -291,14 +294,14 @@ jwt_get_issuer (void *cls,
291 json_t *issuer_json; 294 json_t *issuer_json;
292 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Parsing JWT attributes.\n"); 295 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Parsing JWT attributes.\n");
293 json_t *json_val; 296 json_t *json_val;
294 json_error_t *json_err = NULL; 297 json_error_t json_err;
295 298
296 jwt_string = GNUNET_strndup (data, data_size); 299 jwt_string = GNUNET_strndup (data, data_size);
297 jwt_body = strtok (jwt_string, delim); 300 jwt_body = strtok (jwt_string, delim);
298 jwt_body = strtok (NULL, delim); 301 jwt_body = strtok (NULL, delim);
299 GNUNET_STRINGS_base64url_decode (jwt_body, strlen (jwt_body), 302 GNUNET_STRINGS_base64url_decode (jwt_body, strlen (jwt_body),
300 (void **) &decoded_jwt); 303 (void **) &decoded_jwt);
301 json_val = json_loads (decoded_jwt, JSON_DECODE_ANY, json_err); 304 json_val = json_loads (decoded_jwt, JSON_DECODE_ANY, &json_err);
302 GNUNET_free (decoded_jwt); 305 GNUNET_free (decoded_jwt);
303 GNUNET_free (jwt_string); 306 GNUNET_free (jwt_string);
304 if (NULL == json_val) 307 if (NULL == json_val)
@@ -355,7 +358,7 @@ jwt_get_issuer_p (void *cls,
355 * @param cred the jwt credential 358 * @param cred the jwt credential
356 * @return a string, containing the isser 359 * @return a string, containing the isser
357 */ 360 */
358int 361enum GNUNET_GenericReturnValue
359jwt_get_expiration (void *cls, 362jwt_get_expiration (void *cls,
360 const char *data, 363 const char *data,
361 size_t data_size, 364 size_t data_size,
@@ -368,14 +371,14 @@ jwt_get_expiration (void *cls,
368 json_t *exp_json; 371 json_t *exp_json;
369 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Parsing JWT attributes.\n"); 372 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Parsing JWT attributes.\n");
370 json_t *json_val; 373 json_t *json_val;
371 json_error_t *json_err = NULL; 374 json_error_t json_err;
372 375
373 jwt_string = GNUNET_strndup (data, data_size); 376 jwt_string = GNUNET_strndup (data, data_size);
374 jwt_body = strtok (jwt_string, delim); 377 jwt_body = strtok (jwt_string, delim);
375 jwt_body = strtok (NULL, delim); 378 jwt_body = strtok (NULL, delim);
376 GNUNET_STRINGS_base64url_decode (jwt_body, strlen (jwt_body), 379 GNUNET_STRINGS_base64url_decode (jwt_body, strlen (jwt_body),
377 (void **) &decoded_jwt); 380 (void **) &decoded_jwt);
378 json_val = json_loads (decoded_jwt, JSON_DECODE_ANY, json_err); 381 json_val = json_loads (decoded_jwt, JSON_DECODE_ANY, &json_err);
379 GNUNET_free (decoded_jwt); 382 GNUNET_free (decoded_jwt);
380 GNUNET_free (jwt_string); 383 GNUNET_free (jwt_string);
381 if (NULL == json_val) 384 if (NULL == json_val)
@@ -396,13 +399,15 @@ jwt_get_expiration (void *cls,
396 * 399 *
397 * @param cls the plugin 400 * @param cls the plugin
398 * @param cred the jwt credential 401 * @param cred the jwt credential
399 * @return a string, containing the isser 402 * @return the expirati
400 */ 403 */
401int 404enum GNUNET_GenericReturnValue
402jwt_get_expiration_c (void *cls, 405jwt_get_expiration_c (void *cls,
403 const struct GNUNET_RECLAIM_Credential *cred, 406 const struct GNUNET_RECLAIM_Credential *cred,
404 struct GNUNET_TIME_Absolute *exp) 407 struct GNUNET_TIME_Absolute *exp)
405{ 408{
409 if (GNUNET_RECLAIM_CREDENTIAL_TYPE_JWT != cred->type)
410 return GNUNET_NO;
406 return jwt_get_expiration (cls, cred->data, cred->data_size, exp); 411 return jwt_get_expiration (cls, cred->data, cred->data_size, exp);
407} 412}
408 413
@@ -414,22 +419,23 @@ jwt_get_expiration_c (void *cls,
414 * @param cred the jwt credential 419 * @param cred the jwt credential
415 * @return a string, containing the isser 420 * @return a string, containing the isser
416 */ 421 */
417int 422enum GNUNET_GenericReturnValue
418jwt_get_expiration_p (void *cls, 423jwt_get_expiration_p (void *cls,
419 const struct GNUNET_RECLAIM_Presentation *cred, 424 const struct GNUNET_RECLAIM_Presentation *cred,
420 struct GNUNET_TIME_Absolute *exp) 425 struct GNUNET_TIME_Absolute *exp)
421{ 426{
427 if (GNUNET_RECLAIM_CREDENTIAL_TYPE_JWT != cred->type)
428 return GNUNET_NO;
422 return jwt_get_expiration (cls, cred->data, cred->data_size, exp); 429 return jwt_get_expiration (cls, cred->data, cred->data_size, exp);
423} 430}
424 431
425 432
426int 433enum GNUNET_GenericReturnValue
427jwt_create_presentation (void *cls, 434jwt_create_presentation (void *cls,
428 const struct GNUNET_RECLAIM_Credential *cred, 435 const struct GNUNET_RECLAIM_Credential *cred,
429 const struct GNUNET_RECLAIM_AttributeList *attrs, 436 const struct GNUNET_RECLAIM_AttributeList *attrs,
430 struct GNUNET_RECLAIM_Presentation **pres) 437 struct GNUNET_RECLAIM_Presentation **pres)
431{ 438{
432 // FIXME sanity checks??
433 if (GNUNET_RECLAIM_CREDENTIAL_TYPE_JWT != cred->type) 439 if (GNUNET_RECLAIM_CREDENTIAL_TYPE_JWT != cred->type)
434 return GNUNET_NO; 440 return GNUNET_NO;
435 *pres = GNUNET_RECLAIM_presentation_new (GNUNET_RECLAIM_CREDENTIAL_TYPE_JWT, 441 *pres = GNUNET_RECLAIM_presentation_new (GNUNET_RECLAIM_CREDENTIAL_TYPE_JWT,
diff --git a/src/reclaim/plugin_reclaim_credential_pabc.c b/src/reclaim/plugin_reclaim_credential_pabc.c
new file mode 100644
index 000000000..2f6b7b8c4
--- /dev/null
+++ b/src/reclaim/plugin_reclaim_credential_pabc.c
@@ -0,0 +1,639 @@
1/*
2 This file is part of GNUnet
3 Copyright (C) 2013, 2014, 2016 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21/**
22 * @file reclaim/plugin_reclaim_credential_pabc.c
23 * @brief reclaim-credential-plugin-pabc attribute plugin to provide the API for
24 * pabc credentials.
25 *
26 * @author Martin Schanzenbach
27 */
28#include "platform.h"
29#include "gnunet_util_lib.h"
30#include "gnunet_reclaim_plugin.h"
31#include <inttypes.h>
32#include <jansson.h>
33#include <pabc/pabc.h>
34#include "pabc_helper.h"
35
36/**
37 * Convert the 'value' of an credential to a string.
38 *
39 * @param cls closure, unused
40 * @param type type of the credential
41 * @param data value in binary encoding
42 * @param data_size number of bytes in @a data
43 * @return NULL on error, otherwise human-readable representation of the value
44 */
45static char *
46pabc_value_to_string (void *cls,
47 uint32_t type,
48 const void *data,
49 size_t data_size)
50{
51 switch (type)
52 {
53 case GNUNET_RECLAIM_CREDENTIAL_TYPE_PABC:
54 return GNUNET_strndup (data, data_size);
55
56 default:
57 return NULL;
58 }
59}
60
61
62/**
63 * Convert human-readable version of a 'value' of an credential to the binary
64 * representation.
65 *
66 * @param cls closure, unused
67 * @param type type of the credential
68 * @param s human-readable string
69 * @param data set to value in binary encoding (will be allocated)
70 * @param data_size set to number of bytes in @a data
71 * @return #GNUNET_OK on success
72 */
73static int
74pabc_string_to_value (void *cls,
75 uint32_t type,
76 const char *s,
77 void **data,
78 size_t *data_size)
79{
80 if (NULL == s)
81 return GNUNET_SYSERR;
82 switch (type)
83 {
84 case GNUNET_RECLAIM_CREDENTIAL_TYPE_PABC:
85 *data = GNUNET_strdup (s);
86 *data_size = strlen (s) + 1;
87 return GNUNET_OK;
88
89 default:
90 return GNUNET_SYSERR;
91 }
92}
93
94
95/**
96 * Mapping of credential type numbers to human-readable
97 * credential type names.
98 */
99static struct
100{
101 const char *name;
102 uint32_t number;
103} pabc_cred_name_map[] = { { "PABC", GNUNET_RECLAIM_CREDENTIAL_TYPE_PABC },
104 { NULL, UINT32_MAX } };
105
106/**
107 * Convert a type name to the corresponding number.
108 *
109 * @param cls closure, unused
110 * @param pabc_typename name to convert
111 * @return corresponding number, UINT32_MAX on error
112 */
113static uint32_t
114pabc_typename_to_number (void *cls, const char *pabc_typename)
115{
116 unsigned int i;
117
118 i = 0;
119 while ((NULL != pabc_cred_name_map[i].name) &&
120 (0 != strcasecmp (pabc_typename, pabc_cred_name_map[i].name)))
121 i++;
122 return pabc_cred_name_map[i].number;
123}
124
125
126/**
127 * Convert a type number (i.e. 1) to the corresponding type string
128 *
129 * @param cls closure, unused
130 * @param type number of a type to convert
131 * @return corresponding typestring, NULL on error
132 */
133static const char *
134pabc_number_to_typename (void *cls, uint32_t type)
135{
136 unsigned int i;
137
138 i = 0;
139 while ((NULL != pabc_cred_name_map[i].name) && (type !=
140 pabc_cred_name_map[i].
141 number))
142 i++;
143 return pabc_cred_name_map[i].name;
144}
145
146
147static void
148inspect_attrs (char const *const key,
149 char const *const value,
150 void *ctx)
151{
152 struct GNUNET_RECLAIM_AttributeList *attrs = ctx;
153
154 if (NULL == value)
155 return;
156 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
157 "Found attribue in PABC credential: `%s': `%s'\n",
158 key, value);
159 if (0 == strcmp (key, "expiration"))
160 return;
161 if (0 == strcmp (key, "issuer"))
162 return;
163 if (0 == strcmp (key, "subject"))
164 return;
165 GNUNET_RECLAIM_attribute_list_add (attrs,
166 key,
167 NULL,
168 GNUNET_RECLAIM_ATTRIBUTE_TYPE_STRING,
169 value,
170 strlen (value));
171}
172
173
174/**
175 * Parse a pabc and return the respective claim value as Attribute
176 *
177 * @param cls the plugin
178 * @param cred the pabc credential
179 * @return a GNUNET_RECLAIM_Attribute, containing the new value
180 */
181struct GNUNET_RECLAIM_AttributeList *
182pabc_parse_attributes (void *cls,
183 const char *data,
184 size_t data_size)
185{
186 struct GNUNET_RECLAIM_AttributeList *attrs;
187
188 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
189 "Collecting PABC attributes...\n");
190 attrs = GNUNET_new (struct GNUNET_RECLAIM_AttributeList);
191 GNUNET_assert (PABC_OK ==
192 pabc_cred_inspect_credential (data,
193 &inspect_attrs, attrs));
194 return attrs;
195}
196
197
198/**
199 * Parse a pabc and return the respective claim value as Attribute
200 *
201 * @param cls the plugin
202 * @param cred the pabc credential
203 * @return a GNUNET_RECLAIM_Attribute, containing the new value
204 */
205struct GNUNET_RECLAIM_AttributeList *
206pabc_parse_attributes_c (void *cls,
207 const struct GNUNET_RECLAIM_Credential *cred)
208{
209 if (cred->type != GNUNET_RECLAIM_CREDENTIAL_TYPE_PABC)
210 return NULL;
211 return pabc_parse_attributes (cls, cred->data, cred->data_size);
212}
213
214
215/**
216 * Parse a pabc and return the respective claim value as Attribute
217 *
218 * @param cls the plugin
219 * @param cred the pabc credential
220 * @return a GNUNET_RECLAIM_Attribute, containing the new value
221 */
222struct GNUNET_RECLAIM_AttributeList *
223pabc_parse_attributes_p (void *cls,
224 const struct GNUNET_RECLAIM_Presentation *cred)
225{
226 if (cred->type != GNUNET_RECLAIM_CREDENTIAL_TYPE_PABC)
227 return NULL;
228 return pabc_parse_attributes (cls, cred->data, cred->data_size);
229}
230
231struct Finder
232{
233 const char* target;
234 char *result;
235};
236
237static void
238find_attr (char const *const key,
239 char const *const value,
240 void *ctx)
241{
242 struct Finder *fdr = ctx;
243 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
244 "Found `%s', looking for `%s'\n",
245 key, fdr->target);
246 if (0 == strcmp (key, fdr->target))
247 fdr->result = GNUNET_strdup (value);
248}
249
250
251
252/**
253 * Parse a pabc and return an attribute value.
254 *
255 * @param cls the plugin
256 * @param data the pabc credential data
257 * @param data_size the pabc credential size
258 * @param skey the attribute key to look for.
259 * @return a string, containing the isser
260 */
261char *
262pabc_get_attribute (void *cls,
263 const char *data,
264 size_t data_size,
265 const char *skey)
266{
267
268 struct Finder fdr;
269 memset (&fdr, 0, sizeof (fdr));
270 fdr.target = skey;
271 pabc_cred_inspect_credential (data, &find_attr, &fdr);
272 return fdr.result;
273}
274
275
276/**
277 * Parse a pabc and return the issuer
278 *
279 * @param cls the plugin
280 * @param cred the pabc credential
281 * @return a string, containing the isser
282 */
283char*
284pabc_get_issuer (void *cls,
285 const char *data,
286 size_t data_size)
287{
288 char *res;
289 if (PABC_OK != pabc_cred_get_attr_by_name_from_cred (data,
290 "issuer",
291 &res))
292 return NULL;
293 return res;
294}
295
296
297/**
298 * Parse a pabc and return the issuer
299 *
300 * @param cls the plugin
301 * @param cred the pabc credential
302 * @return a string, containing the isser
303 */
304char*
305pabc_get_issuer (void *cls,
306 const char *data,
307 size_t data_size)
308{
309 return pabc_get_attribute (cls, data, data_size, "issuer");
310}
311
312
313/**
314 * Parse a pabc and return the issuer
315 *
316 * @param cls the plugin
317 * @param cred the pabc credential
318 * @return a string, containing the isser
319 */
320char *
321pabc_get_issuer_c (void *cls,
322 const struct GNUNET_RECLAIM_Credential *cred)
323{
324 if (GNUNET_RECLAIM_CREDENTIAL_TYPE_PABC != cred->type)
325 return NULL;
326 return pabc_get_issuer (cls, cred->data, cred->data_size);
327}
328
329
330/**
331 * Parse a pabc and return the issuer
332 *
333 * @param cls the plugin
334 * @param cred the pabc credential
335 * @return a string, containing the isser
336 */
337char *
338pabc_get_issuer_p (void *cls,
339 const struct GNUNET_RECLAIM_Presentation *cred)
340{
341 if (GNUNET_RECLAIM_CREDENTIAL_TYPE_PABC != cred->type)
342 return NULL;
343 return pabc_get_issuer (cls, cred->data, cred->data_size);
344}
345
346
347/**
348 * Parse a pabc and return the expiration
349 *
350 * @param cls the plugin
351 * @param cred the pabc credential
352 * @return a string, containing the isser
353 */
354int
355pabc_get_expiration (void *cls,
356 const char *data,
357 size_t data_size,
358 struct GNUNET_TIME_Absolute *exp)
359{
360 json_t *json_root;
361 json_t *json_attrs;
362 json_t *value;
363 json_t *exp_j;
364 json_error_t *json_err = NULL;
365 const char*key;
366
367 json_root = json_loads (data, JSON_DECODE_ANY, json_err);
368 if ((NULL == json_root) ||
369 (! json_is_object (json_root)))
370 {
371 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
372 "Unable to retrive expiration from credential\n");
373 return GNUNET_SYSERR;
374 }
375
376 if (1 != sscanf (exp_str, "%llu", &exp_i))
377 {
378 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
379 "Invalid expiration `%s'\n", exp_str);
380 GNUNET_free (exp_str);
381 return GNUNET_SYSERR;
382 }
383 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
384 "Converted expiration string `%s' to %llu",
385 exp_str, exp_i);
386
387 GNUNET_free (exp_str);
388 exp->abs_value_us = exp_i * 1000 * 1000;
389 return GNUNET_OK;
390}
391
392
393/**
394 * Parse a pabc and return the expiration
395 *
396 * @param cls the plugin
397 * @param cred the pabc credential
398 * @return a string, containing the isser
399 */
400enum GNUNET_GenericReturnValue
401pabc_get_expiration_c (void *cls,
402 const struct GNUNET_RECLAIM_Credential *cred,
403 struct GNUNET_TIME_Absolute *exp)
404{
405 if (cred->type != GNUNET_RECLAIM_CREDENTIAL_TYPE_PABC)
406 return GNUNET_NO;
407 return pabc_get_expiration (cls, cred->data, cred->data_size, exp);
408}
409
410
411/**
412 * Parse a pabc and return the expiration
413 *
414 * @param cls the plugin
415 * @param cred the pabc credential
416 * @return a string, containing the isser
417 */
418enum GNUNET_GenericReturnValue
419pabc_get_expiration_p (void *cls,
420 const struct GNUNET_RECLAIM_Presentation *cred,
421 struct GNUNET_TIME_Absolute *exp)
422{
423 if (cred->type != GNUNET_RECLAIM_CREDENTIAL_TYPE_PABC)
424 return GNUNET_NO;
425 return pabc_get_expiration (cls, cred->data, cred->data_size, exp);
426}
427
428
429int
430pabc_create_presentation (void *cls,
431 const struct GNUNET_RECLAIM_Credential *credential,
432 const struct GNUNET_RECLAIM_AttributeList *attrs,
433 struct GNUNET_RECLAIM_Presentation **pres)
434{
435 struct pabc_context *ctx = NULL;
436 struct pabc_user_context *usr_ctx = NULL;
437 struct pabc_public_parameters *pp = NULL;
438 struct pabc_credential *cred = NULL;
439 struct pabc_blinded_proof *proof = NULL;
440 struct GNUNET_RECLAIM_AttributeListEntry *ale;
441 char *issuer;
442 char *subject;
443 enum pabc_status status;
444
445 if (GNUNET_RECLAIM_CREDENTIAL_TYPE_PABC != credential->type)
446 return GNUNET_NO;
447
448
449 PABC_ASSERT (pabc_new_ctx (&ctx));
450 issuer = pabc_get_issuer_c (cls, credential);
451 if (NULL == issuer)
452 {
453 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
454 "No issuer found in credential\n");
455 pabc_free_ctx (&ctx);
456 return GNUNET_SYSERR;
457 }
458 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
459 "Got issuer for credential: %s\n", issuer);
460 status = PABC_load_public_parameters (ctx, issuer, &pp);
461 if (status != PABC_OK)
462 {
463 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
464 "Failed to read public parameters.\n");
465 pabc_free_ctx (&ctx);
466 GNUNET_free (issuer);
467 return GNUNET_SYSERR;
468 }
469 if (PABC_OK != pabc_cred_get_attr_by_name_from_cred (credential->data,
470 "subject",
471 &subject))
472 {
473 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
474 "Failed to get subject.\n");
475 pabc_free_ctx (&ctx);
476 GNUNET_free (issuer);
477 return GNUNET_SYSERR;
478 }
479 status = PABC_read_usr_ctx (subject, issuer, ctx, pp, &usr_ctx);
480 GNUNET_free (issuer);
481 GNUNET_free (subject);
482 if (PABC_OK != status)
483 {
484 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
485 "Failed to read user context.\n");
486 pabc_free_public_parameters (ctx, &pp);
487 return GNUNET_SYSERR;
488 }
489
490 status = pabc_new_credential (ctx, pp, &cred);
491 if (status != PABC_OK)
492 {
493 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
494 "Failed to allocate credential.\n");
495 pabc_free_user_context (ctx, pp, &usr_ctx);
496 pabc_free_public_parameters (ctx, &pp);
497 return GNUNET_SYSERR;
498 }
499
500 status = pabc_decode_credential (ctx, pp, cred, credential->data);
501 if (status != PABC_OK)
502 {
503 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
504 "Failed to decode credential.\n");
505 pabc_free_credential (ctx, pp, &cred);
506 pabc_free_user_context (ctx, pp, &usr_ctx);
507 pabc_free_public_parameters (ctx, &pp);
508 return GNUNET_SYSERR;
509 }
510
511 status = pabc_new_proof (ctx, pp, &proof);
512 if (status != PABC_OK)
513 {
514 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
515 "Failed to allocate proof.\n");
516 pabc_free_credential (ctx, pp, &cred);
517 pabc_free_user_context (ctx, pp, &usr_ctx);
518 pabc_free_public_parameters (ctx, &pp);
519 return GNUNET_SYSERR;
520 }
521
522 // now we can parse the attributes to disclose and configure the proof
523 for (ale = attrs->list_head; NULL != ale; ale = ale->next)
524 {
525 status = pabc_set_disclosure_by_attribute_name (ctx, pp, proof,
526 ale->attribute->name,
527 PABC_DISCLOSED, cred);
528 if (status != PABC_OK)
529 {
530 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
531 "Failed to configure proof.\n");
532 pabc_free_credential (ctx, pp, &cred);
533 pabc_free_user_context (ctx, pp, &usr_ctx);
534 pabc_free_public_parameters (ctx, &pp);
535 return GNUNET_SYSERR;
536 }
537 }
538
539 // and finally -> sign the proof
540 status = pabc_gen_proof (ctx, usr_ctx, pp, proof, cred);
541 if (status != PABC_OK)
542 {
543 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
544 "Failed to sign proof.\n");
545 pabc_free_proof (ctx, pp, &proof);
546 pabc_free_credential (ctx, pp, &cred);
547 pabc_free_user_context (ctx, pp, &usr_ctx);
548 pabc_free_public_parameters (ctx, &pp);
549 return GNUNET_SYSERR;
550 }
551 // print the result
552 char *json = NULL;
553 char *ppid = NULL;
554 char *userid = NULL;
555 GNUNET_assert (PABC_OK == pabc_cred_get_userid_from_cred (credential->data,
556 &userid));
557 GNUNET_assert (PABC_OK == pabc_cred_get_ppid_from_cred (credential->data,
558 &ppid));
559 pabc_cred_encode_proof (ctx, pp, proof, userid, ppid, &json);
560 GNUNET_free (ppid);
561 GNUNET_free (userid);
562 if (PABC_OK != status)
563 {
564 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
565 "Failed to serialize proof.\n");
566 pabc_free_proof (ctx, pp, &proof);
567 pabc_free_credential (ctx, pp, &cred);
568 pabc_free_user_context (ctx, pp, &usr_ctx);
569 pabc_free_public_parameters (ctx, &pp);
570 return GNUNET_SYSERR;
571 }
572 char *json_enc;
573 GNUNET_STRINGS_base64_encode (json,
574 strlen (json) + 1,
575 &json_enc);
576 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
577 "Presentation: %s\n", json_enc);
578 // clean up
579 *pres = GNUNET_RECLAIM_presentation_new (GNUNET_RECLAIM_CREDENTIAL_TYPE_PABC,
580 json_enc,
581 strlen (json_enc) + 1);
582 GNUNET_free (json_enc);
583 PABC_FREE_NULL (json);
584 pabc_free_proof (ctx, pp, &proof);
585 pabc_free_credential (ctx, pp, &cred);
586 pabc_free_user_context (ctx, pp, &usr_ctx);
587 pabc_free_public_parameters (ctx, &pp);
588 return GNUNET_OK;
589}
590
591
592/**
593 * Entry point for the plugin.
594 *
595 * @param cls NULL
596 * @return the exported block API
597 */
598void *
599libgnunet_plugin_reclaim_credential_pabc_init (void *cls)
600{
601 struct GNUNET_RECLAIM_CredentialPluginFunctions *api;
602
603 api = GNUNET_new (struct GNUNET_RECLAIM_CredentialPluginFunctions);
604 api->value_to_string = &pabc_value_to_string;
605 api->string_to_value = &pabc_string_to_value;
606 api->typename_to_number = &pabc_typename_to_number;
607 api->number_to_typename = &pabc_number_to_typename;
608 api->get_attributes = &pabc_parse_attributes_c;
609 api->get_issuer = &pabc_get_issuer_c;
610 api->get_expiration = &pabc_get_expiration_c;
611 api->value_to_string_p = &pabc_value_to_string;
612 api->string_to_value_p = &pabc_string_to_value;
613 api->typename_to_number_p = &pabc_typename_to_number;
614 api->number_to_typename_p = &pabc_number_to_typename;
615 api->get_attributes_p = &pabc_parse_attributes_p;
616 api->get_issuer_p = &pabc_get_issuer_p;
617 api->get_expiration_p = &pabc_get_expiration_p;
618 api->create_presentation = &pabc_create_presentation;
619 return api;
620}
621
622
623/**
624 * Exit point from the plugin.
625 *
626 * @param cls the return value from #libgnunet_plugin_block_test_init()
627 * @return NULL
628 */
629void *
630libgnunet_plugin_reclaim_credential_pabc_done (void *cls)
631{
632 struct GNUNET_RECLAIM_CredentialPluginFunctions *api = cls;
633
634 GNUNET_free (api);
635 return NULL;
636}
637
638
639/* end of plugin_reclaim_credential_type_pabc.c */
diff --git a/src/reclaim/plugin_rest_openid_connect.c b/src/reclaim/plugin_rest_openid_connect.c
index c6259d745..fef79fb10 100644
--- a/src/reclaim/plugin_rest_openid_connect.c
+++ b/src/reclaim/plugin_rest_openid_connect.c
@@ -2478,13 +2478,12 @@ userinfo_endpoint (struct GNUNET_REST_RequestHandle *con_handle,
2478 * with 'NULL' for 'ego'. That does NOT mean that the callback won't 2478 * with 'NULL' for 'ego'. That does NOT mean that the callback won't
2479 * be invoked in the future or that there was an error. 2479 * be invoked in the future or that there was an error.
2480 * 2480 *
2481 * When used with 'GNUNET_IDENTITY_create' or 'GNUNET_IDENTITY_get', 2481 * When used with 'GNUNET_IDENTITY_create' or 'GNUNET_IDENTITY_get', this
2482 * this function is only called ONCE, and 'NULL' being passed in 2482 * function is only called ONCE, and 'NULL' being passed in 'ego' does
2483 * 'ego' does indicate an error (i.e. name is taken or no default 2483 * indicate an error (for example because name is taken or no default value is
2484 * value is known). If 'ego' is non-NULL and if '*ctx' 2484 * known). If 'ego' is non-NULL and if '*ctx' is set in those callbacks, the
2485 * is set in those callbacks, the value WILL be passed to a subsequent 2485 * value WILL be passed to a subsequent call to the identity callback of
2486 * call to the identity callback of 'GNUNET_IDENTITY_connect' (if 2486 * 'GNUNET_IDENTITY_connect' (if that one was not NULL).
2487 * that one was not NULL).
2488 * 2487 *
2489 * When an identity is renamed, this function is called with the 2488 * When an identity is renamed, this function is called with the
2490 * (known) ego but the NEW identifier. 2489 * (known) ego but the NEW identifier.
diff --git a/src/reclaim/plugin_rest_pabc.c b/src/reclaim/plugin_rest_pabc.c
new file mode 100644
index 000000000..6603fb888
--- /dev/null
+++ b/src/reclaim/plugin_rest_pabc.c
@@ -0,0 +1,666 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2012-2015 GNUnet e.V.
4
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
14
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 SPDX-License-Identifier: AGPL3.0-or-later
19 */
20/**
21 * @author Martin Schanzenbach
22 * @file reclaim/plugin_rest_pabc.c
23 * @brief GNUnet pabc REST plugin
24 *
25 */
26#include "platform.h"
27#include "microhttpd.h"
28#include <inttypes.h>
29#include <jansson.h>
30#include <pabc/pabc.h>
31#include "gnunet_reclaim_lib.h"
32#include "gnunet_reclaim_service.h"
33#include "gnunet_rest_lib.h"
34#include "gnunet_rest_plugin.h"
35#include "gnunet_signatures.h"
36#include "pabc_helper.h"
37
38/**
39 * REST root namespace
40 */
41#define GNUNET_REST_API_NS_PABC "/pabc"
42
43/**
44 * Credential request endpoint
45 */
46#define GNUNET_REST_API_NS_PABC_CR "/pabc/cr"
47
48/**
49 * The configuration handle
50 */
51const struct GNUNET_CONFIGURATION_Handle *cfg;
52
53/**
54 * HTTP methods allows for this plugin
55 */
56static char *allow_methods;
57
58/**
59 * @brief struct returned by the initialization function of the plugin
60 */
61struct Plugin
62{
63 const struct GNUNET_CONFIGURATION_Handle *cfg;
64};
65
66
67struct RequestHandle
68{
69 /**
70 * DLL
71 */
72 struct RequestHandle *next;
73
74 /**
75 * DLL
76 */
77 struct RequestHandle *prev;
78
79 /**
80 * Rest connection
81 */
82 struct GNUNET_REST_RequestHandle *rest_handle;
83
84 /**
85 * Desired timeout for the lookup (default is no timeout).
86 */
87 struct GNUNET_TIME_Relative timeout;
88
89 /**
90 * ID of a task associated with the resolution process.
91 */
92 struct GNUNET_SCHEDULER_Task *timeout_task;
93
94 /**
95 * The plugin result processor
96 */
97 GNUNET_REST_ResultProcessor proc;
98
99 /**
100 * The closure of the result processor
101 */
102 void *proc_cls;
103
104 /**
105 * The url
106 */
107 char *url;
108
109 /**
110 * Error response message
111 */
112 char *emsg;
113
114 /**
115 * Reponse code
116 */
117 int response_code;
118
119 /**
120 * Response object
121 */
122 json_t *resp_object;
123};
124
125/**
126 * DLL
127 */
128static struct RequestHandle *requests_head;
129
130/**
131 * DLL
132 */
133static struct RequestHandle *requests_tail;
134
135
136/**
137 * Cleanup lookup handle
138 * @param handle Handle to clean up
139 */
140static void
141cleanup_handle (void *cls)
142{
143 struct RequestHandle *handle = cls;
144
145 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Cleaning up\n");
146 if (NULL != handle->resp_object)
147 json_decref (handle->resp_object);
148 if (NULL != handle->timeout_task)
149 GNUNET_SCHEDULER_cancel (handle->timeout_task);
150 if (NULL != handle->url)
151 GNUNET_free (handle->url);
152 if (NULL != handle->emsg)
153 GNUNET_free (handle->emsg);
154 GNUNET_CONTAINER_DLL_remove (requests_head,
155 requests_tail,
156 handle);
157 GNUNET_free (handle);
158}
159
160
161/**
162 * Task run on error, sends error message. Cleans up everything.
163 *
164 * @param cls the `struct RequestHandle`
165 */
166static void
167do_error (void *cls)
168{
169 struct RequestHandle *handle = cls;
170 struct MHD_Response *resp;
171 char *json_error;
172
173 GNUNET_asprintf (&json_error, "{ \"error\" : \"%s\" }", handle->emsg);
174 if (0 == handle->response_code)
175 {
176 handle->response_code = MHD_HTTP_BAD_REQUEST;
177 }
178 resp = GNUNET_REST_create_response (json_error);
179 MHD_add_response_header (resp, "Content-Type", "application/json");
180 handle->proc (handle->proc_cls, resp, handle->response_code);
181 cleanup_handle (handle);
182 GNUNET_free (json_error);
183}
184
185
186/**
187 * Task run on timeout, sends error message. Cleans up everything.
188 *
189 * @param cls the `struct RequestHandle`
190 */
191static void
192do_timeout (void *cls)
193{
194 struct RequestHandle *handle = cls;
195
196 handle->timeout_task = NULL;
197 do_error (handle);
198}
199
200
201static void
202return_response (void *cls)
203{
204 char *result_str;
205 struct RequestHandle *handle = cls;
206 struct MHD_Response *resp;
207
208 result_str = json_dumps (handle->resp_object, 0);
209 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Result %s\n", result_str);
210 resp = GNUNET_REST_create_response (result_str);
211 MHD_add_response_header (resp, "Access-Control-Allow-Methods", allow_methods);
212 handle->proc (handle->proc_cls, resp, MHD_HTTP_OK);
213 GNUNET_free (result_str);
214 cleanup_handle (handle);
215}
216
217
218static enum pabc_status
219set_attributes_from_idtoken (const struct pabc_context *ctx,
220 const struct pabc_public_parameters *pp,
221 struct pabc_user_context *usr_ctx,
222 const char *id_token)
223{
224 json_t *payload_json;
225 json_t *value;
226 json_error_t json_err;
227 const char *key;
228 const char *jwt_body;
229 char *decoded_jwt;
230 char delim[] = ".";
231 char *jwt_string;
232 const char *pabc_key;
233 enum pabc_status status;
234
235 // FIXME parse JWT
236 jwt_string = GNUNET_strndup (id_token, strlen (id_token));
237 jwt_body = strtok (jwt_string, delim);
238 jwt_body = strtok (NULL, delim);
239 GNUNET_STRINGS_base64url_decode (jwt_body, strlen (jwt_body),
240 (void **) &decoded_jwt);
241 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Decoded ID Token: %s\n", decoded_jwt);
242 payload_json = json_loads (decoded_jwt, JSON_DECODE_ANY, &json_err);
243 GNUNET_free (decoded_jwt);
244
245 json_object_foreach (payload_json, key, value)
246 {
247 pabc_key = key;
248 if (0 == strcmp ("iss", key))
249 pabc_key = "issuer"; // rename
250 if (0 == strcmp ("sub", key))
251 pabc_key = "subject"; // rename
252 if (0 == strcmp ("jti", key))
253 continue;
254 if (0 == strcmp ("exp", key))
255 pabc_key = "expiration"; // rename
256 if (0 == strcmp ("iat", key))
257 continue;
258 if (0 == strcmp ("nbf", key))
259 continue;
260 if (0 == strcmp ("aud", key))
261 continue;
262 char *tmp_val;
263 if (json_is_string (value))
264 tmp_val = GNUNET_strdup (json_string_value (value));
265 else
266 tmp_val = json_dumps (value, JSON_ENCODE_ANY);
267 if (NULL == tmp_val)
268 {
269 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
270 "Unable to encode JSON value for `%s'\n", key);
271 continue;
272 }
273 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
274 "Setting `%s' to `%s'\n", key, tmp_val);
275 status = pabc_set_attribute_value_by_name (ctx, pp, usr_ctx,
276 pabc_key,
277 tmp_val);
278 GNUNET_free (tmp_val);
279 if (PABC_OK != status)
280 {
281 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
282 "Failed to set attribute `%s'.\n", key);
283 }
284 }
285 return PABC_OK;
286}
287
288
289static enum GNUNET_GenericReturnValue
290setup_new_user_context (struct pabc_context *ctx,
291 struct pabc_public_parameters *pp,
292 struct pabc_user_context **usr_ctx)
293{
294 if (PABC_OK != pabc_new_user_context (ctx, pp, usr_ctx))
295 return GNUNET_SYSERR;
296
297 if (PABC_OK != pabc_populate_user_context (ctx, *usr_ctx))
298 {
299 pabc_free_user_context (ctx, pp, usr_ctx);
300 return GNUNET_SYSERR;
301 }
302 return GNUNET_OK;
303}
304
305
306static void
307cr_cont (struct GNUNET_REST_RequestHandle *con_handle,
308 const char *url,
309 void *cls)
310{
311 struct RequestHandle *handle = cls;
312 char term_data[handle->rest_handle->data_size + 1];
313 char *response_str;
314 json_t *data_json;
315 json_t *nonce_json;
316 json_t *pp_json;
317 json_t *idtoken_json;
318 json_t *iss_json;
319 json_t *identity_json;
320 json_error_t err;
321 struct pabc_public_parameters *pp = NULL;
322 struct pabc_context *ctx = NULL;
323 struct pabc_user_context *usr_ctx = NULL;
324 struct pabc_credential_request *cr = NULL;
325 struct pabc_nonce *nonce = NULL;
326 enum pabc_status status;
327
328
329 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
330 "Credential request...\n");
331
332 if (0 >= handle->rest_handle->data_size)
333 {
334 GNUNET_SCHEDULER_add_now (&do_error, handle);
335 return;
336 }
337
338 term_data[handle->rest_handle->data_size] = '\0';
339 GNUNET_memcpy (term_data,
340 handle->rest_handle->data,
341 handle->rest_handle->data_size);
342 data_json = json_loads (term_data, JSON_DECODE_ANY, &err);
343 if (NULL == data_json)
344 {
345 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
346 "Unable to parse %s\n", term_data);
347 GNUNET_SCHEDULER_add_now (&do_error, handle);
348 return;
349 }
350 if (! json_is_object (data_json))
351 {
352 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
353 "Unable to parse %s\n", term_data);
354 json_decref (data_json);
355 GNUNET_SCHEDULER_add_now (&do_error, handle);
356 return;
357 }
358
359 nonce_json = json_object_get (data_json, "nonce");
360 if (NULL == nonce_json)
361 {
362 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
363 "Unable to parse nonce\n");
364 json_decref (data_json);
365 GNUNET_SCHEDULER_add_now (&do_error, handle);
366 return;
367 }
368 iss_json = json_object_get (data_json, "issuer");
369 if (NULL == iss_json)
370 {
371 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
372 "Unable to parse issuer\n");
373 json_decref (data_json);
374 GNUNET_SCHEDULER_add_now (&do_error, handle);
375 return;
376 }
377 identity_json = json_object_get (data_json, "identity");
378 if (NULL == identity_json)
379 {
380 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
381 "Unable to parse identity\n");
382 json_decref (data_json);
383 GNUNET_SCHEDULER_add_now (&do_error, handle);
384 return;
385 }
386 idtoken_json = json_object_get (data_json, "id_token");
387 if (NULL == idtoken_json)
388 {
389 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
390 "Unable to parse id_token\n");
391 json_decref (data_json);
392 GNUNET_SCHEDULER_add_now (&do_error, handle);
393 return;
394 }
395 pp_json = json_object_get (data_json, "public_params");
396 if (NULL == pp_json)
397 {
398 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
399 "Unable to parse public parameters\n");
400 json_decref (data_json);
401 GNUNET_SCHEDULER_add_now (&do_error, handle);
402 return;
403 }
404
405 PABC_ASSERT (pabc_new_ctx (&ctx));
406 char *pp_str = json_dumps (pp_json, JSON_ENCODE_ANY);
407 status = pabc_decode_and_new_public_parameters (ctx,
408 &pp,
409 pp_str);
410 char *ppid;
411 GNUNET_assert (PABC_OK == pabc_cred_get_ppid_from_pp (pp_str, &ppid));
412 GNUNET_free (pp_str);
413 if (status != PABC_OK)
414 {
415 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
416 "Failed to read public parameters: %s\n",
417 pp_str);
418 json_decref (data_json);
419 GNUNET_SCHEDULER_add_now (&do_error, handle);
420 return;
421 }
422 // (Over)write parameters
423 status = PABC_write_public_parameters (json_string_value (iss_json),
424 pp);
425 if (status != PABC_OK)
426 {
427 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
428 "Failed to write public parameters.\n");
429 json_decref (data_json);
430 GNUNET_SCHEDULER_add_now (&do_error, handle);
431 return;
432 }
433 status = PABC_read_usr_ctx (json_string_value (identity_json),
434 json_string_value (iss_json),
435 ctx, pp, &usr_ctx);
436 if (PABC_OK != status)
437 {
438 if (GNUNET_OK != setup_new_user_context (ctx, pp, &usr_ctx))
439 {
440 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to setup user context.\n");
441 pabc_free_public_parameters (ctx, &pp);
442 json_decref (data_json);
443 GNUNET_SCHEDULER_add_now (&do_error, handle);
444 return;
445 }
446 PABC_write_usr_ctx (json_string_value (identity_json),
447 json_string_value (iss_json),
448 ctx, pp, usr_ctx);
449 }
450
451 // Set attributes from JWT to context
452 status = set_attributes_from_idtoken (ctx,
453 pp,
454 usr_ctx,
455 json_string_value (idtoken_json));
456 if (status != PABC_OK)
457 {
458 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to set attributes.\n");
459 pabc_free_user_context (ctx, pp, &usr_ctx);
460 pabc_free_public_parameters (ctx, &pp);
461 json_decref (data_json);
462 GNUNET_SCHEDULER_add_now (&do_error, handle);
463 return;
464 }
465
466
467 // nonce
468 status = pabc_new_nonce (ctx, &nonce);
469 if (status != PABC_OK)
470 {
471 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to allocate nonce.\n");
472 pabc_free_user_context (ctx, pp, &usr_ctx);
473 pabc_free_public_parameters (ctx, &pp);
474 json_decref (data_json);
475 GNUNET_SCHEDULER_add_now (&do_error, handle);
476 return;
477 }
478 char *nonce_str = json_dumps (nonce_json, JSON_ENCODE_ANY);
479 status = pabc_decode_nonce (ctx, nonce, nonce_str);
480 if (status != PABC_OK)
481 {
482 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to decode nonce.\n");
483 pabc_free_nonce (ctx, &nonce);
484 pabc_free_user_context (ctx, pp, &usr_ctx);
485 pabc_free_public_parameters (ctx, &pp);
486 json_decref (data_json);
487 GNUNET_SCHEDULER_add_now (&do_error, handle);
488 return;
489 }
490
491 // cr
492 status = pabc_new_credential_request (ctx, pp, &cr);
493 if (PABC_OK != status)
494 {
495 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to allocate cr.\n");
496 pabc_free_nonce (ctx, &nonce);
497 pabc_free_user_context (ctx, pp, &usr_ctx);
498 pabc_free_public_parameters (ctx, &pp);
499 json_decref (data_json);
500 GNUNET_SCHEDULER_add_now (&do_error, handle);
501 return;
502 }
503
504 status = pabc_gen_credential_request (ctx, pp, usr_ctx, nonce, cr);
505 if (PABC_OK != status)
506 {
507 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to generate cr.\n");
508 pabc_free_nonce (ctx, &nonce);
509 pabc_free_credential_request (ctx, pp, &cr);
510 pabc_free_user_context (ctx, pp, &usr_ctx);
511 pabc_free_public_parameters (ctx, &pp);
512 json_decref (data_json);
513 GNUNET_SCHEDULER_add_now (&do_error, handle);
514 return;
515 }
516 handle->resp_object = json_object ();
517 GNUNET_assert (PABC_OK == pabc_cred_encode_cr (ctx, pp, cr,
518 json_string_value (
519 identity_json),
520 ppid, &response_str));
521 if (PABC_OK != status)
522 {
523 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to serialize cr.\n");
524 pabc_free_nonce (ctx, &nonce);
525 pabc_free_credential_request (ctx, pp, &cr);
526 pabc_free_user_context (ctx, pp, &usr_ctx);
527 pabc_free_public_parameters (ctx, &pp);
528 json_decref (data_json);
529 GNUNET_SCHEDULER_add_now (&do_error, handle);
530 return;
531 }
532 json_decref (handle->resp_object);
533 handle->resp_object = json_loads (response_str, JSON_DECODE_ANY, &err);
534 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "%s\n", response_str);
535 GNUNET_free (response_str);
536
537 // clean up
538 pabc_free_nonce (ctx, &nonce);
539 pabc_free_credential_request (ctx, pp, &cr);
540 pabc_free_user_context (ctx, pp, &usr_ctx);
541 pabc_free_public_parameters (ctx, &pp);
542 GNUNET_SCHEDULER_add_now (&return_response, handle);
543 json_decref (data_json);
544}
545
546
547/**
548 * Respond to OPTIONS request
549 *
550 * @param con_handle the connection handle
551 * @param url the url
552 * @param cls the RequestHandle
553 */
554static void
555options_cont (struct GNUNET_REST_RequestHandle *con_handle,
556 const char *url,
557 void *cls)
558{
559 struct MHD_Response *resp;
560 struct RequestHandle *handle = cls;
561
562 // For now, independent of path return all options
563 resp = GNUNET_REST_create_response (NULL);
564 MHD_add_response_header (resp, "Access-Control-Allow-Methods", allow_methods);
565 handle->proc (handle->proc_cls, resp, MHD_HTTP_OK);
566 cleanup_handle (handle);
567 return;
568}
569
570
571static enum GNUNET_GenericReturnValue
572rest_identity_process_request (struct GNUNET_REST_RequestHandle *rest_handle,
573 GNUNET_REST_ResultProcessor proc,
574 void *proc_cls)
575{
576 struct RequestHandle *handle = GNUNET_new (struct RequestHandle);
577 struct GNUNET_REST_RequestHandlerError err;
578 static const struct GNUNET_REST_RequestHandler handlers[] = {
579 {MHD_HTTP_METHOD_POST,
580 GNUNET_REST_API_NS_PABC_CR, &cr_cont },
581 { MHD_HTTP_METHOD_OPTIONS, GNUNET_REST_API_NS_PABC, &options_cont },
582 GNUNET_REST_HANDLER_END
583 };
584
585 handle->response_code = 0;
586 handle->timeout = GNUNET_TIME_UNIT_FOREVER_REL;
587 handle->proc_cls = proc_cls;
588 handle->proc = proc;
589 handle->rest_handle = rest_handle;
590
591 handle->url = GNUNET_strdup (rest_handle->url);
592 if (handle->url[strlen (handle->url) - 1] == '/')
593 handle->url[strlen (handle->url) - 1] = '\0';
594 handle->timeout_task =
595 GNUNET_SCHEDULER_add_delayed (handle->timeout, &do_timeout, handle);
596 GNUNET_CONTAINER_DLL_insert (requests_head,
597 requests_tail,
598 handle);
599 if (GNUNET_NO ==
600 GNUNET_REST_handle_request (handle->rest_handle, handlers, &err, handle))
601 {
602 cleanup_handle (handle);
603 return GNUNET_NO;
604 }
605
606 return GNUNET_YES;
607}
608
609
610/**
611 * Entry point for the plugin.
612 *
613 * @param cls Config info
614 * @return NULL on error, otherwise the plugin context
615 */
616void *
617libgnunet_plugin_rest_pabc_init (void *cls)
618{
619 static struct Plugin plugin;
620 struct GNUNET_REST_Plugin *api;
621
622 cfg = cls;
623 if (NULL != plugin.cfg)
624 return NULL; /* can only initialize once! */
625 memset (&plugin, 0, sizeof(struct Plugin));
626 plugin.cfg = cfg;
627 api = GNUNET_new (struct GNUNET_REST_Plugin);
628 api->cls = &plugin;
629 api->name = GNUNET_REST_API_NS_PABC;
630 api->process_request = &rest_identity_process_request;
631 GNUNET_asprintf (&allow_methods,
632 "%s, %s",
633 MHD_HTTP_METHOD_POST,
634 MHD_HTTP_METHOD_OPTIONS);
635 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
636 _ ("Identity Provider REST API initialized\n"));
637 return api;
638}
639
640
641/**
642 * Exit point from the plugin.
643 *
644 * @param cls the plugin context (as returned by "init")
645 * @return always NULL
646 */
647void *
648libgnunet_plugin_rest_reclaim_done (void *cls)
649{
650 struct GNUNET_REST_Plugin *api = cls;
651 struct Plugin *plugin = api->cls;
652 struct RequestHandle *request;
653
654 plugin->cfg = NULL;
655 while (NULL != (request = requests_head))
656 do_error (request);
657
658 GNUNET_free (allow_methods);
659 GNUNET_free (api);
660 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
661 "PABC REST plugin is finished\n");
662 return NULL;
663}
664
665
666/* end of plugin_rest_reclaim.c */
diff --git a/src/reclaim/plugin_rest_reclaim.c b/src/reclaim/plugin_rest_reclaim.c
index 39d24ea61..1d1231cbd 100644
--- a/src/reclaim/plugin_rest_reclaim.c
+++ b/src/reclaim/plugin_rest_reclaim.c
@@ -1332,13 +1332,12 @@ options_cont (struct GNUNET_REST_RequestHandle *con_handle,
1332 * with 'NULL' for 'ego'. That does NOT mean that the callback won't 1332 * with 'NULL' for 'ego'. That does NOT mean that the callback won't
1333 * be invoked in the future or that there was an error. 1333 * be invoked in the future or that there was an error.
1334 * 1334 *
1335 * When used with 'GNUNET_IDENTITY_create' or 'GNUNET_IDENTITY_get', 1335 * When used with 'GNUNET_IDENTITY_create' or 'GNUNET_IDENTITY_get', this
1336 * this function is only called ONCE, and 'NULL' being passed in 1336 * function is only called ONCE, and 'NULL' being passed in 'ego' does
1337 * 'ego' does indicate an error (i.e. name is taken or no default 1337 * indicate an error (for example because name is taken or no default value is
1338 * value is known). If 'ego' is non-NULL and if '*ctx' 1338 * known). If 'ego' is non-NULL and if '*ctx' is set in those callbacks, the
1339 * is set in those callbacks, the value WILL be passed to a subsequent 1339 * value WILL be passed to a subsequent call to the identity callback of
1340 * call to the identity callback of 'GNUNET_IDENTITY_connect' (if 1340 * 'GNUNET_IDENTITY_connect' (if that one was not NULL).
1341 * that one was not NULL).
1342 * 1341 *
1343 * When an identity is renamed, this function is called with the 1342 * When an identity is renamed, this function is called with the
1344 * (known) ego but the NEW identifier. 1343 * (known) ego but the NEW identifier.
diff --git a/src/reclaim/reclaim_credential.c b/src/reclaim/reclaim_credential.c
index c8c0d397c..da5cee988 100644
--- a/src/reclaim/reclaim_credential.c
+++ b/src/reclaim/reclaim_credential.c
@@ -1033,7 +1033,6 @@ GNUNET_RECLAIM_presentation_get_expiration (const struct
1033/** 1033/**
1034 * Create a presentation from a credential and a lift of (selected) 1034 * Create a presentation from a credential and a lift of (selected)
1035 * attributes in the credential. 1035 * attributes in the credential.
1036 * FIXME not yet implemented
1037 * 1036 *
1038 * @param cred the credential to use 1037 * @param cred the credential to use
1039 * @param attrs the attributes to present from the credential 1038 * @param attrs the attributes to present from the credential
diff --git a/src/rest/gnunet-rest-server.c b/src/rest/gnunet-rest-server.c
index ecb3e2ae5..63847587b 100644
--- a/src/rest/gnunet-rest-server.c
+++ b/src/rest/gnunet-rest-server.c
@@ -436,7 +436,7 @@ post_data_iter (void *cls,
436 * @param con MHD connection handle 436 * @param con MHD connection handle
437 * @param url the url in the request 437 * @param url the url in the request
438 * @param meth the HTTP method used ("GET", "PUT", etc.) 438 * @param meth the HTTP method used ("GET", "PUT", etc.)
439 * @param ver the HTTP version string (i.e. "HTTP/1.1") 439 * @param ver the HTTP version string ("HTTP/1.1" for version 1.1, etc.)
440 * @param upload_data the data being uploaded (excluding HEADERS, 440 * @param upload_data the data being uploaded (excluding HEADERS,
441 * for a POST that fits into memory and that is encoded 441 * for a POST that fits into memory and that is encoded
442 * with a supported encoding, the POST data will NOT be 442 * with a supported encoding, the POST data will NOT be
diff --git a/src/testbed/testbed_api.c b/src/testbed/testbed_api.c
index f291892c6..386850b89 100644
--- a/src/testbed/testbed_api.c
+++ b/src/testbed/testbed_api.c
@@ -1546,7 +1546,7 @@ mq_error_handler (void *cls, enum GNUNET_MQ_Error error)
1546 * @param event_mask bit mask with set of events to call 'cc' for; 1546 * @param event_mask bit mask with set of events to call 'cc' for;
1547 * or-ed values of "1LL" shifted by the 1547 * or-ed values of "1LL" shifted by the
1548 * respective 'enum GNUNET_TESTBED_EventType' 1548 * respective 'enum GNUNET_TESTBED_EventType'
1549 * (i.e. "(1LL << GNUNET_TESTBED_ET_CONNECT) | ...") 1549 * (e.g. "(1LL << GNUNET_TESTBED_ET_CONNECT) | ...")
1550 * @param cc controller callback to invoke on events 1550 * @param cc controller callback to invoke on events
1551 * @param cc_cls closure for cc 1551 * @param cc_cls closure for cc
1552 * @return handle to the controller 1552 * @return handle to the controller
diff --git a/src/testbed/testbed_api_test.c b/src/testbed/testbed_api_test.c
index 30dbe455d..dd43cf2f6 100644
--- a/src/testbed/testbed_api_test.c
+++ b/src/testbed/testbed_api_test.c
@@ -109,7 +109,7 @@ run (void *cls, char *const *args, const char *cfgfile,
109 * @param event_mask bit mask with set of events to call 'cc' for; 109 * @param event_mask bit mask with set of events to call 'cc' for;
110 * or-ed values of "1LL" shifted by the 110 * or-ed values of "1LL" shifted by the
111 * respective 'enum GNUNET_TESTBED_EventType' 111 * respective 'enum GNUNET_TESTBED_EventType'
112 * (i.e. "(1LL << GNUNET_TESTBED_ET_CONNECT) || ...") 112 * (e.g. "(1LL << GNUNET_TESTBED_ET_CONNECT) || ...")
113 * @param cc controller callback to invoke on events; This callback is called 113 * @param cc controller callback to invoke on events; This callback is called
114 * for all peer start events even if GNUNET_TESTBED_ET_PEER_START isn't 114 * for all peer start events even if GNUNET_TESTBED_ET_PEER_START isn't
115 * set in the event_mask as this is the only way get access to the 115 * set in the event_mask as this is the only way get access to the
diff --git a/src/testbed/testbed_api_testbed.c b/src/testbed/testbed_api_testbed.c
index 7ae30e0c6..1aa344e99 100644
--- a/src/testbed/testbed_api_testbed.c
+++ b/src/testbed/testbed_api_testbed.c
@@ -1237,7 +1237,7 @@ timeout_task (void *cls)
1237 * @param event_mask bit mask with set of events to call 'cc' for; 1237 * @param event_mask bit mask with set of events to call 'cc' for;
1238 * or-ed values of "1LL" shifted by the 1238 * or-ed values of "1LL" shifted by the
1239 * respective 'enum GNUNET_TESTBED_EventType' 1239 * respective 'enum GNUNET_TESTBED_EventType'
1240 * (i.e. "(1LL << GNUNET_TESTBED_ET_CONNECT) || ...") 1240 * (e.g. "(1LL << GNUNET_TESTBED_ET_CONNECT) || ...")
1241 * @param cc controller callback to invoke on events; This callback is called 1241 * @param cc controller callback to invoke on events; This callback is called
1242 * for all peer start events even if GNUNET_TESTBED_ET_PEER_START isn't 1242 * for all peer start events even if GNUNET_TESTBED_ET_PEER_START isn't
1243 * set in the event_mask as this is the only way get access to the 1243 * set in the event_mask as this is the only way get access to the
diff --git a/src/testing/testing.c b/src/testing/testing.c
index 9724fb55b..991c11a6c 100644
--- a/src/testing/testing.c
+++ b/src/testing/testing.c
@@ -91,7 +91,7 @@ struct SharedService
91struct GNUNET_TESTING_System 91struct GNUNET_TESTING_System
92{ 92{
93 /** 93 /**
94 * Prefix (i.e. "/tmp/gnunet-testing/") we prepend to each 94 * Prefix (e.g. "/tmp/gnunet-testing/") we prepend to each
95 * GNUNET_HOME. 95 * GNUNET_HOME.
96 */ 96 */
97 char *tmppath; 97 char *tmppath;
diff --git a/src/transport/gnunet-helper-transport-bluetooth.c b/src/transport/gnunet-helper-transport-bluetooth.c
index 4923e6428..ef3a6292b 100644
--- a/src/transport/gnunet-helper-transport-bluetooth.c
+++ b/src/transport/gnunet-helper-transport-bluetooth.c
@@ -1374,7 +1374,7 @@ inquiry_devices: // skip the conditions and force a inquiry for new devices
1374 * stdin/stdout of this process. Error messages are written to stderr. 1374 * stdin/stdout of this process. Error messages are written to stderr.
1375 * 1375 *
1376 * @param argc number of arguments, must be 2 1376 * @param argc number of arguments, must be 2
1377 * @param argv arguments only argument is the name of the interface (i.e. 'hci0') 1377 * @param argv arguments only argument is the name of the interface (e.g. 'hci0')
1378 * @return 0 on success (never happens, as we don't return unless aborted), 1 on error 1378 * @return 0 on success (never happens, as we don't return unless aborted), 1 on error
1379 * 1379 *
1380 **** similar to gnunet-helper-transport-wlan.c **** 1380 **** similar to gnunet-helper-transport-wlan.c ****
diff --git a/src/transport/gnunet-helper-transport-wlan.c b/src/transport/gnunet-helper-transport-wlan.c
index f1b190993..d90565c9c 100644
--- a/src/transport/gnunet-helper-transport-wlan.c
+++ b/src/transport/gnunet-helper-transport-wlan.c
@@ -1935,7 +1935,7 @@ stdin_send_hw (void *cls, const struct GNUNET_MessageHeader *hdr)
1935 * process. Error messages are written to stdout. 1935 * process. Error messages are written to stdout.
1936 * 1936 *
1937 * @param argc number of arguments, must be 2 1937 * @param argc number of arguments, must be 2
1938 * @param argv arguments only argument is the name of the interface (i.e. 'mon0') 1938 * @param argv arguments only argument is the name of the interface (e.g. 'mon0')
1939 * @return 0 on success (never happens, as we don't return unless aborted), 1 on error 1939 * @return 0 on success (never happens, as we don't return unless aborted), 1 on error
1940 */ 1940 */
1941int 1941int
diff --git a/src/transport/gnunet-service-transport_plugins.c b/src/transport/gnunet-service-transport_plugins.c
index d0a10cbc7..c88532806 100644
--- a/src/transport/gnunet-service-transport_plugins.c
+++ b/src/transport/gnunet-service-transport_plugins.c
@@ -51,12 +51,12 @@ struct TransportPlugin
51 struct GNUNET_TRANSPORT_PluginFunctions *api; 51 struct GNUNET_TRANSPORT_PluginFunctions *api;
52 52
53 /** 53 /**
54 * Short name for the plugin (i.e. "tcp"). 54 * Short name for the plugin (e.g. "tcp").
55 */ 55 */
56 char *short_name; 56 char *short_name;
57 57
58 /** 58 /**
59 * Name of the library (i.e. "gnunet_plugin_transport_tcp"). 59 * Name of the library (e.g. "gnunet_plugin_transport_tcp").
60 */ 60 */
61 char *lib_name; 61 char *lib_name;
62 62
diff --git a/src/util/client.c b/src/util/client.c
index 746c0eb55..afd2fe900 100644
--- a/src/util/client.c
+++ b/src/util/client.c
@@ -892,7 +892,7 @@ connection_client_cancel_impl (struct GNUNET_MQ_Handle *mq,
892 * #GNUNET_NO if the service is (definitively) down, 892 * #GNUNET_NO if the service is (definitively) down,
893 * #GNUNET_SYSERR if the configuration does not give us 893 * #GNUNET_SYSERR if the configuration does not give us
894 * the necessary information about the service, or if 894 * the necessary information about the service, or if
895 * we could not check (i.e. socket() failed) 895 * we could not check (e.g. socket() failed)
896 */ 896 */
897int 897int
898GNUNET_CLIENT_test (const struct GNUNET_CONFIGURATION_Handle *cfg, 898GNUNET_CLIENT_test (const struct GNUNET_CONFIGURATION_Handle *cfg,
diff --git a/src/util/common_logging.c b/src/util/common_logging.c
index b30175543..48cc6fe3b 100644
--- a/src/util/common_logging.c
+++ b/src/util/common_logging.c
@@ -246,27 +246,27 @@ static int gnunet_force_log_present;
246 246
247/** 247/**
248 * Convert a textual description of a loglevel 248 * Convert a textual description of a loglevel
249 * to the respective GNUNET_GE_KIND. 249 * to the respective enumeration type.
250 * 250 *
251 * @param log loglevel to parse 251 * @param log loglevel to parse
252 * @return GNUNET_GE_INVALID if log does not parse 252 * @return GNUNET_ERROR_TYPE_INVALID if log does not parse
253 */ 253 */
254static enum GNUNET_ErrorType 254static enum GNUNET_ErrorType
255get_type (const char *log) 255get_type (const char *log)
256{ 256{
257 if (NULL == log) 257 if (NULL == log)
258 return GNUNET_ERROR_TYPE_UNSPECIFIED; 258 return GNUNET_ERROR_TYPE_UNSPECIFIED;
259 if (0 == strcasecmp (log, _ ("DEBUG"))) 259 if (0 == strcasecmp (log, "DEBUG"))
260 return GNUNET_ERROR_TYPE_DEBUG; 260 return GNUNET_ERROR_TYPE_DEBUG;
261 if (0 == strcasecmp (log, _ ("INFO"))) 261 if (0 == strcasecmp (log, "INFO"))
262 return GNUNET_ERROR_TYPE_INFO; 262 return GNUNET_ERROR_TYPE_INFO;
263 if (0 == strcasecmp (log, _ ("MESSAGE"))) 263 if (0 == strcasecmp (log, "MESSAGE"))
264 return GNUNET_ERROR_TYPE_MESSAGE; 264 return GNUNET_ERROR_TYPE_MESSAGE;
265 if (0 == strcasecmp (log, _ ("WARNING"))) 265 if (0 == strcasecmp (log, "WARNING"))
266 return GNUNET_ERROR_TYPE_WARNING; 266 return GNUNET_ERROR_TYPE_WARNING;
267 if (0 == strcasecmp (log, _ ("ERROR"))) 267 if (0 == strcasecmp (log, "ERROR"))
268 return GNUNET_ERROR_TYPE_ERROR; 268 return GNUNET_ERROR_TYPE_ERROR;
269 if (0 == strcasecmp (log, _ ("NONE"))) 269 if (0 == strcasecmp (log, "NONE"))
270 return GNUNET_ERROR_TYPE_NONE; 270 return GNUNET_ERROR_TYPE_NONE;
271 return GNUNET_ERROR_TYPE_INVALID; 271 return GNUNET_ERROR_TYPE_INVALID;
272} 272}
diff --git a/src/util/container_meta_data.c b/src/util/container_meta_data.c
index efaac1136..2c477db40 100644
--- a/src/util/container_meta_data.c
+++ b/src/util/container_meta_data.c
@@ -337,7 +337,7 @@ GNUNET_CONTAINER_meta_data_test_equal (const struct GNUNET_CONTAINER_MetaData
337 * 337 *
338 * @param md metadata to extend 338 * @param md metadata to extend
339 * @param plugin_name name of the plugin that produced this value; 339 * @param plugin_name name of the plugin that produced this value;
340 * special values can be used (i.e. '&lt;zlib&gt;' for zlib being 340 * special values can be used (e.g. '&lt;zlib&gt;' for zlib being
341 * used in the main libextractor library and yielding 341 * used in the main libextractor library and yielding
342 * meta data). 342 * meta data).
343 * @param type libextractor-type describing the meta data 343 * @param type libextractor-type describing the meta data
@@ -427,7 +427,7 @@ GNUNET_CONTAINER_meta_data_insert (struct GNUNET_CONTAINER_MetaData *md,
427 * 427 *
428 * @param cls the `struct GNUNET_CONTAINER_MetaData` to merge into 428 * @param cls the `struct GNUNET_CONTAINER_MetaData` to merge into
429 * @param plugin_name name of the plugin that produced this value; 429 * @param plugin_name name of the plugin that produced this value;
430 * special values can be used (i.e. '&lt;zlib&gt;' for zlib being 430 * special values can be used (e.g. '&lt;zlib&gt;' for zlib being
431 * used in the main libextractor library and yielding 431 * used in the main libextractor library and yielding
432 * meta data). 432 * meta data).
433 * @param type libextractor-type describing the meta data 433 * @param type libextractor-type describing the meta data
diff --git a/src/util/crypto_rsa.c b/src/util/crypto_rsa.c
index 5e4c4d1e6..4d3de00bc 100644
--- a/src/util/crypto_rsa.c
+++ b/src/util/crypto_rsa.c
@@ -473,7 +473,7 @@ rsa_gcd_validate (gcry_mpi_t r, gcry_mpi_t n)
473/** 473/**
474 * Create a blinding key 474 * Create a blinding key
475 * 475 *
476 * @param len length of the key in bits (i.e. 2048) 476 * @param len length of the key in bits (e.g. 2048)
477 * @param bks pre-secret to use to derive the blinding key 477 * @param bks pre-secret to use to derive the blinding key
478 * @return the newly created blinding key, NULL if RSA key is malicious 478 * @return the newly created blinding key, NULL if RSA key is malicious
479 */ 479 */
diff --git a/src/util/gnunet-config.c b/src/util/gnunet-config.c
index 2b279dda2..4d050cdd3 100644
--- a/src/util/gnunet-config.c
+++ b/src/util/gnunet-config.c
@@ -65,10 +65,11 @@ static int list_sections;
65static int global_ret; 65static int global_ret;
66 66
67/** 67/**
68 * Should we generate a configuration file that is clean and 68 * Should the generated configuration file contain the whole configuration, or
69 * only contains the deltas to the defaults? 69 * just the differences with the defaults?
70 * If set to a non-zero value, the full configuration will be written to file.
70 */ 71 */
71static int rewrite; 72static int rewrite = 0;
72 73
73 74
74/** 75/**
@@ -157,7 +158,7 @@ run (void *cls,
157 GNUNET_free (name); 158 GNUNET_free (name);
158 return; 159 return;
159 } 160 }
160 if (rewrite) 161 if (!rewrite)
161 { 162 {
162 struct GNUNET_CONFIGURATION_Handle *def; 163 struct GNUNET_CONFIGURATION_Handle *def;
163 164
@@ -315,7 +316,7 @@ main (int argc, char *const *argv)
315 'w', 316 'w',
316 "rewrite", 317 "rewrite",
317 gettext_noop ( 318 gettext_noop (
318 "write configuration file that only contains delta to defaults"), 319 "write the full configuration file, including default values"),
319 &rewrite), 320 &rewrite),
320 GNUNET_GETOPT_OPTION_END }; 321 GNUNET_GETOPT_OPTION_END };
321 int ret; 322 int ret;
diff --git a/src/util/network.c b/src/util/network.c
index c4adefb8f..e771a9834 100644
--- a/src/util/network.c
+++ b/src/util/network.c
@@ -1269,7 +1269,7 @@ GNUNET_NETWORK_fdset_destroy (struct GNUNET_NETWORK_FDSet *fds)
1269/** 1269/**
1270 * Test if the given @a port is available. 1270 * Test if the given @a port is available.
1271 * 1271 *
1272 * @param ipproto transport protocol to test (i.e. IPPROTO_TCP) 1272 * @param ipproto transport protocol to test (e.g. IPPROTO_TCP)
1273 * @param port port number to test 1273 * @param port port number to test
1274 * @return #GNUNET_OK if the port is available, #GNUNET_NO if not 1274 * @return #GNUNET_OK if the port is available, #GNUNET_NO if not
1275 */ 1275 */
diff --git a/src/util/scheduler.c b/src/util/scheduler.c
index 759312df5..d5c7b964f 100644
--- a/src/util/scheduler.c
+++ b/src/util/scheduler.c
@@ -193,7 +193,7 @@ struct GNUNET_SCHEDULER_Task
193 /** 193 /**
194 * Why is the task ready? Set after task is added to ready queue. 194 * Why is the task ready? Set after task is added to ready queue.
195 * Initially set to zero. All reasons that have already been 195 * Initially set to zero. All reasons that have already been
196 * satisfied (i.e. read or write ready) will be set over time. 196 * satisfied (e.g. read or write ready) will be set over time.
197 */ 197 */
198 enum GNUNET_SCHEDULER_Reason reason; 198 enum GNUNET_SCHEDULER_Reason reason;
199 199
diff --git a/src/util/strings.c b/src/util/strings.c
index 61e04c457..b62d5f547 100644
--- a/src/util/strings.c
+++ b/src/util/strings.c
@@ -316,7 +316,7 @@ convert_with_table (const char *input,
316/** 316/**
317 * Convert a given fancy human-readable size to bytes. 317 * Convert a given fancy human-readable size to bytes.
318 * 318 *
319 * @param fancy_size human readable string (i.e. 1 MB) 319 * @param fancy_size human readable string (e.g. 1 MB)
320 * @param size set to the size in bytes 320 * @param size set to the size in bytes
321 * @return #GNUNET_OK on success, #GNUNET_SYSERR on error 321 * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
322 */ 322 */
@@ -348,7 +348,7 @@ GNUNET_STRINGS_fancy_size_to_bytes (const char *fancy_size,
348 * Convert a given fancy human-readable time to our internal 348 * Convert a given fancy human-readable time to our internal
349 * representation. 349 * representation.
350 * 350 *
351 * @param fancy_time human readable string (i.e. 1 minute) 351 * @param fancy_time human readable string (e.g. 1 minute)
352 * @param rtime set to the relative time 352 * @param rtime set to the relative time
353 * @return #GNUNET_OK on success, #GNUNET_SYSERR on error 353 * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
354 */ 354 */
@@ -399,7 +399,7 @@ GNUNET_STRINGS_fancy_time_to_relative (const char *fancy_time,
399 * representation. The human-readable time is expected to be 399 * representation. The human-readable time is expected to be
400 * in local time, whereas the returned value will be in UTC. 400 * in local time, whereas the returned value will be in UTC.
401 * 401 *
402 * @param fancy_time human readable string (i.e. %Y-%m-%d %H:%M:%S) 402 * @param fancy_time human readable string (e.g. %Y-%m-%d %H:%M:%S)
403 * @param atime set to the absolute time 403 * @param atime set to the absolute time
404 * @return #GNUNET_OK on success, #GNUNET_SYSERR on error 404 * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
405 */ 405 */
@@ -1364,7 +1364,7 @@ GNUNET_STRINGS_to_address_ip (const char *addr,
1364 * `struct sockaddr`. 1364 * `struct sockaddr`.
1365 * 1365 *
1366 * @param addr the address 1366 * @param addr the address
1367 * @param[out] af set to the parsed address family (i.e. AF_INET) 1367 * @param[out] af set to the parsed address family (e.g. AF_INET)
1368 * @param[out] sa set to the parsed address 1368 * @param[out] sa set to the parsed address
1369 * @return 0 on error, otherwise number of bytes in @a sa 1369 * @return 0 on error, otherwise number of bytes in @a sa
1370 */ 1370 */
diff --git a/src/util/tun.c b/src/util/tun.c
index 0e3017551..d2b675c71 100644
--- a/src/util/tun.c
+++ b/src/util/tun.c
@@ -37,7 +37,7 @@
37 * Initialize an IPv4 header. 37 * Initialize an IPv4 header.
38 * 38 *
39 * @param ip header to initialize 39 * @param ip header to initialize
40 * @param protocol protocol to use (i.e. IPPROTO_UDP) 40 * @param protocol protocol to use (e.g. IPPROTO_UDP)
41 * @param payload_length number of bytes of payload that follow (excluding IPv4 header) 41 * @param payload_length number of bytes of payload that follow (excluding IPv4 header)
42 * @param src source IP address to use 42 * @param src source IP address to use
43 * @param dst destination IP address to use 43 * @param dst destination IP address to use
@@ -72,7 +72,7 @@ GNUNET_TUN_initialize_ipv4_header (struct GNUNET_TUN_IPv4Header *ip,
72 * Initialize an IPv6 header. 72 * Initialize an IPv6 header.
73 * 73 *
74 * @param ip header to initialize 74 * @param ip header to initialize
75 * @param protocol protocol to use (i.e. IPPROTO_UDP), technically "next_header" for IPv6 75 * @param protocol protocol to use (e.g. IPPROTO_UDP), technically "next_header" for IPv6
76 * @param payload_length number of bytes of payload that follow (excluding IPv6 header) 76 * @param payload_length number of bytes of payload that follow (excluding IPv6 header)
77 * @param src source IP address to use 77 * @param src source IP address to use
78 * @param dst destination IP address to use 78 * @param dst destination IP address to use