aboutsummaryrefslogtreecommitdiff
path: root/net/gnunet/patches
diff options
context:
space:
mode:
authorDaniel Golle <daniel@makrotopia.org>2019-02-28 19:51:46 +0100
committerDaniel Golle <daniel@makrotopia.org>2019-02-28 19:58:26 +0100
commit77191eddb6306dc74c25558251049b45c02362ef (patch)
treec209e67f59ce6566ddd965ed0ae32be3d95bbd04 /net/gnunet/patches
parentb2493e01d1ad51d8f8932f85af1f40f75b09e76e (diff)
gnunet: GNUnet v0.11 release
Switch to v0.11 release sources (plus patches to still get it to build) gnunet-social was out-sourced into a separate repository and hence new OpenWrt package gnunet-secushare. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Diffstat (limited to 'net/gnunet/patches')
-rw-r--r--net/gnunet/patches/0001-fix-dist-for-experimental.patch777
-rw-r--r--net/gnunet/patches/0002-credential-include-headers-in-dist-sources.patch482
-rw-r--r--net/gnunet/patches/0003-reclaim-attribute-include-header-in-dist-sources.patch78
-rw-r--r--net/gnunet/patches/0004-reclaim-include-reclaim.conf-in-source-dist.patch50
-rw-r--r--net/gnunet/patches/0005-rest-plugins-include-headers-in-dist-sources.patch192
5 files changed, 1579 insertions, 0 deletions
diff --git a/net/gnunet/patches/0001-fix-dist-for-experimental.patch b/net/gnunet/patches/0001-fix-dist-for-experimental.patch
new file mode 100644
index 000000000..4fdde5af3
--- /dev/null
+++ b/net/gnunet/patches/0001-fix-dist-for-experimental.patch
@@ -0,0 +1,777 @@
+From 6603f7e1a837d3a51a1949a6f4e1802b6ef3d806 Mon Sep 17 00:00:00 2001
+From: "Schanzenbach, Martin" <mschanzenbach@posteo.de>
+Date: Thu, 28 Feb 2019 14:19:34 +0100
+Subject: [PATCH] fix dist for experimental
+
+---
+ po/POTFILES.in | 114 ++++++++++++++++++++--------------------
+ src/include/Makefile.am | 1 +
+ 2 files changed, 58 insertions(+), 57 deletions(-)
+
+--- a/po/POTFILES.in
++++ b/po/POTFILES.in
+@@ -4,6 +4,14 @@ src/arm/arm_monitor_api.c
+ src/arm/gnunet-arm.c
+ src/arm/gnunet-service-arm.c
+ src/arm/mockup-service.c
++src/ats-tests/ats-testing-experiment.c
++src/ats-tests/ats-testing-log.c
++src/ats-tests/ats-testing-preferences.c
++src/ats-tests/ats-testing-traffic.c
++src/ats-tests/ats-testing.c
++src/ats-tests/gnunet-ats-sim.c
++src/ats-tests/gnunet-solver-eval.c
++src/ats-tool/gnunet-ats.c
+ src/ats/ats_api2_application.c
+ src/ats/ats_api2_transport.c
+ src/ats/ats_api_connectivity.c
+@@ -11,10 +19,10 @@ src/ats/ats_api_performance.c
+ src/ats/ats_api_scanner.c
+ src/ats/ats_api_scheduling.c
+ src/ats/gnunet-ats-solver-eval.c
+-src/ats/gnunet-service-ats_addresses.c
++src/ats/gnunet-service-ats-new.c
+ src/ats/gnunet-service-ats.c
++src/ats/gnunet-service-ats_addresses.c
+ src/ats/gnunet-service-ats_connectivity.c
+-src/ats/gnunet-service-ats-new.c
+ src/ats/gnunet-service-ats_normalization.c
+ src/ats/gnunet-service-ats_performance.c
+ src/ats/gnunet-service-ats_plugins.c
+@@ -26,14 +34,6 @@ src/ats/plugin_ats2_simple.c
+ src/ats/plugin_ats_mlp.c
+ src/ats/plugin_ats_proportional.c
+ src/ats/plugin_ats_ril.c
+-src/ats-tests/ats-testing.c
+-src/ats-tests/ats-testing-experiment.c
+-src/ats-tests/ats-testing-log.c
+-src/ats-tests/ats-testing-preferences.c
+-src/ats-tests/ats-testing-traffic.c
+-src/ats-tests/gnunet-ats-sim.c
+-src/ats-tests/gnunet-solver-eval.c
+-src/ats-tool/gnunet-ats.c
+ src/auction/gnunet-auction-create.c
+ src/auction/gnunet-auction-info.c
+ src/auction/gnunet-auction-join.c
+@@ -50,8 +50,8 @@ src/cadet/cadet_api_list_peers.c
+ src/cadet/cadet_api_list_tunnels.c
+ src/cadet/cadet_test_lib.c
+ src/cadet/desirability_table.c
+-src/cadet/gnunet-cadet.c
+ src/cadet/gnunet-cadet-profiler.c
++src/cadet/gnunet-cadet.c
+ src/cadet/gnunet-service-cadet.c
+ src/cadet/gnunet-service-cadet_channel.c
+ src/cadet/gnunet-service-cadet_connection.c
+@@ -67,15 +67,15 @@ src/consensus/gnunet-service-consensus.c
+ src/consensus/plugin_block_consensus.c
+ src/conversation/conversation_api.c
+ src/conversation/conversation_api_call.c
+-src/conversation/gnunet-conversation.c
+ src/conversation/gnunet-conversation-test.c
+-src/conversation/gnunet_gst.c
+-src/conversation/gnunet_gst_test.c
+-src/conversation/gnunet-helper-audio-playback.c
++src/conversation/gnunet-conversation.c
+ src/conversation/gnunet-helper-audio-playback-gst.c
+-src/conversation/gnunet-helper-audio-record.c
++src/conversation/gnunet-helper-audio-playback.c
+ src/conversation/gnunet-helper-audio-record-gst.c
++src/conversation/gnunet-helper-audio-record.c
+ src/conversation/gnunet-service-conversation.c
++src/conversation/gnunet_gst.c
++src/conversation/gnunet_gst_test.c
+ src/conversation/microphone.c
+ src/conversation/plugin_gnsrecord_conversation.c
+ src/conversation/speaker.c
+@@ -111,7 +111,6 @@ src/dht/dht_api.c
+ src/dht/dht_test_lib.c
+ src/dht/gnunet-dht-get.c
+ src/dht/gnunet-dht-monitor.c
+-src/dht/gnunet_dht_profiler.c
+ src/dht/gnunet-dht-put.c
+ src/dht/gnunet-service-dht.c
+ src/dht/gnunet-service-dht_clients.c
+@@ -120,6 +119,7 @@ src/dht/gnunet-service-dht_hello.c
+ src/dht/gnunet-service-dht_neighbours.c
+ src/dht/gnunet-service-dht_nse.c
+ src/dht/gnunet-service-dht_routing.c
++src/dht/gnunet_dht_profiler.c
+ src/dht/plugin_block_dht.c
+ src/dns/dns_api.c
+ src/dns/gnunet-dns-monitor.c
+@@ -129,8 +129,8 @@ src/dns/gnunet-service-dns.c
+ src/dns/gnunet-zonewalk.c
+ src/dns/plugin_block_dns.c
+ src/exit/gnunet-daemon-exit.c
+-src/exit/gnunet-helper-exit.c
+ src/exit/gnunet-helper-exit-windows.c
++src/exit/gnunet-helper-exit.c
+ src/fragmentation/defragmentation.c
+ src/fragmentation/fragmentation.c
+ src/fs/fs_api.c
+@@ -155,8 +155,8 @@ src/fs/gnunet-auto-share.c
+ src/fs/gnunet-daemon-fsprofiler.c
+ src/fs/gnunet-directory.c
+ src/fs/gnunet-download.c
+-src/fs/gnunet-fs.c
+ src/fs/gnunet-fs-profiler.c
++src/fs/gnunet-fs.c
+ src/fs/gnunet-helper-fs-publish.c
+ src/fs/gnunet-publish.c
+ src/fs/gnunet-search.c
+@@ -176,10 +176,10 @@ src/gns/gns_tld_api.c
+ src/gns/gnunet-bcd.c
+ src/gns/gnunet-dns2gns.c
+ src/gns/gnunet-gns-benchmark.c
+-src/gns/gnunet-gns.c
+ src/gns/gnunet-gns-helper-service-w32.c
+ src/gns/gnunet-gns-import.c
+ src/gns/gnunet-gns-proxy.c
++src/gns/gnunet-gns.c
+ src/gns/gnunet-service-gns.c
+ src/gns/gnunet-service-gns_interceptor.c
+ src/gns/gnunet-service-gns_resolver.c
+@@ -187,19 +187,19 @@ src/gns/nss/nss_gns.c
+ src/gns/nss/nss_gns_query.c
+ src/gns/plugin_block_gns.c
+ src/gns/plugin_gnsrecord_gns.c
++src/gns/w32nsp-install.c
++src/gns/w32nsp-resolve.c
++src/gns/w32nsp-uninstall.c
++src/gns/w32nsp.c
+ src/gnsrecord/gnsrecord.c
+ src/gnsrecord/gnsrecord_crypto.c
+ src/gnsrecord/gnsrecord_misc.c
+ src/gnsrecord/gnsrecord_serialization.c
+ src/gnsrecord/plugin_gnsrecord_dns.c
+-src/gns/w32nsp.c
+-src/gns/w32nsp-install.c
+-src/gns/w32nsp-resolve.c
+-src/gns/w32nsp-uninstall.c
+ src/hello/address.c
+ src/hello/gnunet-hello.c
+-src/hello/hello.c
+ src/hello/hello-ng.c
++src/hello/hello.c
+ src/hostlist/gnunet-daemon-hostlist.c
+ src/hostlist/gnunet-daemon-hostlist_client.c
+ src/hostlist/gnunet-daemon-hostlist_server.c
+@@ -222,8 +222,8 @@ src/namecache/namecache_api.c
+ src/namecache/plugin_namecache_flat.c
+ src/namecache/plugin_namecache_postgres.c
+ src/namecache/plugin_namecache_sqlite.c
+-src/namestore/gnunet-namestore.c
+ src/namestore/gnunet-namestore-fcfsd.c
++src/namestore/gnunet-namestore.c
+ src/namestore/gnunet-service-namestore.c
+ src/namestore/gnunet-zoneimport.c
+ src/namestore/namestore_api.c
+@@ -238,10 +238,10 @@ src/nat-auto/gnunet-service-nat-auto.c
+ src/nat-auto/gnunet-service-nat-auto_legacy.c
+ src/nat-auto/nat_auto_api.c
+ src/nat-auto/nat_auto_api_test.c
+-src/nat/gnunet-helper-nat-client.c
+ src/nat/gnunet-helper-nat-client-windows.c
+-src/nat/gnunet-helper-nat-server.c
++src/nat/gnunet-helper-nat-client.c
+ src/nat/gnunet-helper-nat-server-windows.c
++src/nat/gnunet-helper-nat-server.c
+ src/nat/gnunet-nat.c
+ src/nat/gnunet-service-nat.c
+ src/nat/gnunet-service-nat_externalip.c
+@@ -250,16 +250,16 @@ src/nat/gnunet-service-nat_mini.c
+ src/nat/gnunet-service-nat_stun.c
+ src/nat/nat_api.c
+ src/nat/nat_api_stun.c
+-src/nse/gnunet-nse.c
+ src/nse/gnunet-nse-profiler.c
++src/nse/gnunet-nse.c
+ src/nse/gnunet-service-nse.c
+ src/nse/nse_api.c
+ src/nt/nt.c
++src/peerinfo-tool/gnunet-peerinfo.c
++src/peerinfo-tool/gnunet-peerinfo_plugins.c
+ src/peerinfo/gnunet-service-peerinfo.c
+ src/peerinfo/peerinfo_api.c
+ src/peerinfo/peerinfo_api_notify.c
+-src/peerinfo-tool/gnunet-peerinfo.c
+-src/peerinfo-tool/gnunet-peerinfo_plugins.c
+ src/peerstore/gnunet-peerstore.c
+ src/peerstore/gnunet-service-peerstore.c
+ src/peerstore/peerstore_api.c
+@@ -295,7 +295,6 @@ src/regex/regex_internal_dht.c
+ src/regex/regex_test_graph.c
+ src/regex/regex_test_lib.c
+ src/regex/regex_test_random.c
+-src/rest/gnunet-rest-server.c
+ src/rest-plugins/json_reclaim.c
+ src/rest-plugins/oidc_helper.c
+ src/rest-plugins/plugin_rest_copying.c
+@@ -306,27 +305,28 @@ src/rest-plugins/plugin_rest_namestore.c
+ src/rest-plugins/plugin_rest_openid_connect.c
+ src/rest-plugins/plugin_rest_peerinfo.c
+ src/rest-plugins/plugin_rest_reclaim.c
++src/rest/gnunet-rest-server.c
+ src/rest/rest.c
+ src/revocation/gnunet-revocation.c
+ src/revocation/gnunet-service-revocation.c
+ src/revocation/plugin_block_revocation.c
+ src/revocation/revocation_api.c
+-src/rps/gnunet-rps.c
+ src/rps/gnunet-rps-profiler.c
++src/rps/gnunet-rps.c
+ src/rps/gnunet-service-rps.c
+ src/rps/gnunet-service-rps_custommap.c
+ src/rps/gnunet-service-rps_sampler.c
+ src/rps/gnunet-service-rps_sampler_elem.c
+ src/rps/gnunet-service-rps_view.c
+-src/rps/rps_api.c
+ src/rps/rps-sampler_client.c
+ src/rps/rps-sampler_common.c
+ src/rps/rps-test_util.c
++src/rps/rps_api.c
+ src/scalarproduct/gnunet-scalarproduct.c
+-src/scalarproduct/gnunet-service-scalarproduct_alice.c
+-src/scalarproduct/gnunet-service-scalarproduct_bob.c
+ src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c
+ src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c
++src/scalarproduct/gnunet-service-scalarproduct_alice.c
++src/scalarproduct/gnunet-service-scalarproduct_bob.c
+ src/scalarproduct/scalarproduct_api.c
+ src/secretsharing/gnunet-secretsharing-profiler.c
+ src/secretsharing/gnunet-service-secretsharing.c
+@@ -352,15 +352,16 @@ src/statistics/gnunet-statistics.c
+ src/statistics/statistics_api.c
+ src/template/gnunet-service-template.c
+ src/template/gnunet-template.c
++src/testbed-logger/gnunet-service-testbed-logger.c
++src/testbed-logger/testbed_logger_api.c
+ src/testbed/generate-underlay-topology.c
+ src/testbed/gnunet-daemon-latency-logger.c
+ src/testbed/gnunet-daemon-testbed-blacklist.c
+ src/testbed/gnunet-daemon-testbed-underlay.c
+ src/testbed/gnunet-helper-testbed.c
+-src/testbed/gnunet_mpi_test.c
+ src/testbed/gnunet-service-test-barriers.c
+-src/testbed/gnunet-service-testbed_barriers.c
+ src/testbed/gnunet-service-testbed.c
++src/testbed/gnunet-service-testbed_barriers.c
+ src/testbed/gnunet-service-testbed_cache.c
+ src/testbed/gnunet-service-testbed_connectionpool.c
+ src/testbed/gnunet-service-testbed_cpustatus.c
+@@ -368,20 +369,19 @@ src/testbed/gnunet-service-testbed_links
+ src/testbed/gnunet-service-testbed_meminfo.c
+ src/testbed/gnunet-service-testbed_oc.c
+ src/testbed/gnunet-service-testbed_peers.c
+-src/testbed/gnunet_testbed_mpi_spawn.c
+ src/testbed/gnunet-testbed-profiler.c
+-src/testbed-logger/gnunet-service-testbed-logger.c
+-src/testbed-logger/testbed_logger_api.c
+-src/testbed/testbed_api_barriers.c
++src/testbed/gnunet_mpi_test.c
++src/testbed/gnunet_testbed_mpi_spawn.c
+ src/testbed/testbed_api.c
++src/testbed/testbed_api_barriers.c
+ src/testbed/testbed_api_hosts.c
+ src/testbed/testbed_api_operations.c
+ src/testbed/testbed_api_peers.c
+ src/testbed/testbed_api_sd.c
+ src/testbed/testbed_api_services.c
+ src/testbed/testbed_api_statistics.c
+-src/testbed/testbed_api_testbed.c
+ src/testbed/testbed_api_test.c
++src/testbed/testbed_api_testbed.c
+ src/testbed/testbed_api_topology.c
+ src/testbed/testbed_api_underlay.c
+ src/testing/gnunet-testing.c
+@@ -393,29 +393,29 @@ src/transport/gnunet-communicator-tcp.c
+ src/transport/gnunet-communicator-udp.c
+ src/transport/gnunet-communicator-unix.c
+ src/transport/gnunet-helper-transport-bluetooth.c
+-src/transport/gnunet-helper-transport-wlan.c
+ src/transport/gnunet-helper-transport-wlan-dummy.c
++src/transport/gnunet-helper-transport-wlan.c
+ src/transport/gnunet-service-tng.c
+-src/transport/gnunet-service-transport_ats.c
+ src/transport/gnunet-service-transport.c
++src/transport/gnunet-service-transport_ats.c
+ src/transport/gnunet-service-transport_hello.c
+ src/transport/gnunet-service-transport_manipulation.c
+ src/transport/gnunet-service-transport_neighbours.c
+ src/transport/gnunet-service-transport_plugins.c
+ src/transport/gnunet-service-transport_validation.c
+-src/transport/gnunet-transport.c
+ src/transport/gnunet-transport-certificate-creation.c
+ src/transport/gnunet-transport-profiler.c
+ src/transport/gnunet-transport-wlan-receiver.c
+ src/transport/gnunet-transport-wlan-sender.c
++src/transport/gnunet-transport.c
+ src/transport/plugin_transport_http_client.c
+ src/transport/plugin_transport_http_common.c
+ src/transport/plugin_transport_http_server.c
+ src/transport/plugin_transport_smtp.c
+ src/transport/plugin_transport_tcp.c
+ src/transport/plugin_transport_template.c
+-src/transport/plugin_transport_udp_broadcasting.c
+ src/transport/plugin_transport_udp.c
++src/transport/plugin_transport_udp_broadcasting.c
+ src/transport/plugin_transport_unix.c
+ src/transport/plugin_transport_wlan.c
+ src/transport/plugin_transport_xt.c
+@@ -424,6 +424,11 @@ src/transport/tcp_connection_legacy.c
+ src/transport/tcp_server_legacy.c
+ src/transport/tcp_server_mst_legacy.c
+ src/transport/tcp_service_legacy.c
++src/transport/transport-testing-filenames.c
++src/transport/transport-testing-loggers.c
++src/transport/transport-testing-main.c
++src/transport/transport-testing-send.c
++src/transport/transport-testing.c
+ src/transport/transport_api2_address.c
+ src/transport/transport_api2_communication.c
+ src/transport/transport_api2_core.c
+@@ -436,11 +441,6 @@ src/transport/transport_api_manipulation
+ src/transport/transport_api_monitor_peers.c
+ src/transport/transport_api_monitor_plugins.c
+ src/transport/transport_api_offer_hello.c
+-src/transport/transport-testing.c
+-src/transport/transport-testing-filenames.c
+-src/transport/transport-testing-loggers.c
+-src/transport/transport-testing-main.c
+-src/transport/transport-testing-send.c
+ src/util/bandwidth.c
+ src/util/benchmark.c
+ src/util/bio.c
+@@ -453,8 +453,8 @@ src/util/configuration_loader.c
+ src/util/container_bloomfilter.c
+ src/util/container_heap.c
+ src/util/container_meta_data.c
+-src/util/container_multihashmap32.c
+ src/util/container_multihashmap.c
++src/util/container_multihashmap32.c
+ src/util/container_multipeermap.c
+ src/util/container_multishortmap.c
+ src/util/crypto_abe.c
+@@ -476,15 +476,15 @@ src/util/dnsparser.c
+ src/util/dnsstub.c
+ src/util/getopt.c
+ src/util/getopt_helpers.c
+-src/util/gnunet-config.c
+ src/util/gnunet-config-diff.c
++src/util/gnunet-config.c
+ src/util/gnunet-ecc.c
+ src/util/gnunet-helper-w32-console.c
+ src/util/gnunet-resolver.c
+ src/util/gnunet-scrypt.c
+ src/util/gnunet-service-resolver.c
+-src/util/gnunet-timeout.c
+ src/util/gnunet-timeout-w32.c
++src/util/gnunet-timeout.c
+ src/util/gnunet-uri.c
+ src/util/helper.c
+ src/util/load.c
+@@ -513,13 +513,13 @@ src/util/tun.c
+ src/util/w32cat.c
+ src/util/win.c
+ src/util/winproc.c
+-src/vpn/gnunet-helper-vpn.c
+ src/vpn/gnunet-helper-vpn-windows.c
++src/vpn/gnunet-helper-vpn.c
+ src/vpn/gnunet-service-vpn.c
+ src/vpn/gnunet-vpn.c
+ src/vpn/vpn_api.c
+-src/zonemaster/gnunet-service-zonemaster.c
+ src/zonemaster/gnunet-service-zonemaster-monitor.c
++src/zonemaster/gnunet-service-zonemaster.c
+ src/fs/fs_api.h
+ src/include/compat.h
+ src/include/gnunet_common.h
+--- a/src/include/Makefile.am
++++ b/src/include/Makefile.am
+@@ -47,6 +47,7 @@ gnunetinclude_HEADERS = \
+ gnunet_container_lib.h \
+ gnunet_conversation_service.h \
+ gnunet_core_service.h \
++ gnunet_credential_service.h \
+ gnunet_crypto_lib.h \
+ gnunet_curl_lib.h \
+ gnunet_datacache_lib.h \
+--- /dev/null
++++ b/src/include/gnunet_credential_service.h
+@@ -0,0 +1,375 @@
++/*
++ This file is part of GNUnet
++ Copyright (C) 2012-2014 GNUnet e.V.
++
++ GNUnet is free software: you can redistribute it and/or modify it
++ under the terms of the GNU Affero General Public License as published
++ by the Free Software Foundation, either version 3 of the License,
++ or (at your option) any later version.
++
++ GNUnet is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Affero General Public License for more details.
++
++ You should have received a copy of the GNU Affero General Public License
++ along with this program. If not, see <http://www.gnu.org/licenses/>.
++
++ SPDX-License-Identifier: AGPL3.0-or-later
++ */
++
++/**
++ * @author Martin Schanzenbach
++ *
++ * @file
++ * API to the Credential service
++ *
++ * @defgroup credential Credential service
++ * Credentials
++ *
++ * @{
++ */
++#ifndef GNUNET_CREDENTIAL_SERVICE_H
++#define GNUNET_CREDENTIAL_SERVICE_H
++
++#include "gnunet_util_lib.h"
++#include "gnunet_gns_service.h"
++#include "gnunet_identity_service.h"
++
++#ifdef __cplusplus
++extern "C"
++{
++#if 0 /* keep Emacsens' auto-indent happy */
++}
++#endif
++#endif
++
++
++/**
++ * Connection to the Credential service.
++ */
++struct GNUNET_CREDENTIAL_Handle;
++
++/**
++ * Handle to control a lookup operation.
++ */
++struct GNUNET_CREDENTIAL_Request;
++
++/*
++* Enum used for checking whether the issuer has the authority to issue credentials or is just a subject
++*/
++enum GNUNET_CREDENTIAL_CredentialFlags {
++
++ //Subject had credentials before, but have been revoked now
++ GNUNET_CREDENTIAL_FLAG_REVOKED=0,
++
++ //Subject flag indicates that the subject is a holder of this credential and may present it as such
++ GNUNET_CREDENTIAL_FLAG_SUBJECT=1,
++
++ //Issuer flag is used to signify that the subject is allowed to issue this credential and delegate issuance
++ GNUNET_CREDENTIAL_FLAG_ISSUER=2
++
++};
++
++GNUNET_NETWORK_STRUCT_BEGIN
++/**
++ * The attribute delegation record
++ */
++struct GNUNET_CREDENTIAL_DelegationRecord {
++
++ /**
++ * Number of delegation sets in this record
++ */
++ uint32_t set_count;
++
++ /**
++ * Length of delegation sets
++ */
++ uint64_t data_size;
++ /**
++ * Followed by set_count DelegationSetRecords
++ *
++ */
++};
++
++/**
++ * The attribute delegation record
++ */
++struct GNUNET_CREDENTIAL_DelegationRecordSet {
++
++ /**
++ * Public key of the subject this attribute was delegated to
++ */
++ struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
++
++ /**
++ * Length of attribute, may be 0
++ */
++ uint32_t subject_attribute_len;
++};
++
++
++GNUNET_NETWORK_STRUCT_END
++
++/**
++ * The attribute delegation record
++ */
++struct GNUNET_CREDENTIAL_DelegationSet {
++
++ /**
++ * Public key of the subject this attribute was delegated to
++ */
++ struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
++
++ uint32_t subject_attribute_len;
++
++ /**
++ * The subject attribute
++ */
++ const char *subject_attribute;
++};
++
++
++/**
++ * A delegation
++ */
++struct GNUNET_CREDENTIAL_Delegation {
++
++ /**
++ * The issuer of the delegation
++ */
++ struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
++
++ /**
++ * Public key of the subject this attribute was delegated to
++ */
++ struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
++
++ /**
++ * Length of the attribute
++ */
++ uint32_t issuer_attribute_len;
++
++ /**
++ * The attribute
++ */
++ const char *issuer_attribute;
++
++ /**
++ * Length of the attribute
++ */
++ uint32_t subject_attribute_len;
++
++ /**
++ * The attribute
++ */
++ const char *subject_attribute;
++};
++
++
++/**
++ * A credential
++ */
++struct GNUNET_CREDENTIAL_Credential {
++
++ /**
++ * The issuer of the credential
++ */
++ struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
++
++ /**
++ * Public key of the subject this credential was issued to
++ */
++ struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
++
++ /**
++ * Signature of this credential
++ */
++ struct GNUNET_CRYPTO_EcdsaSignature signature;
++
++ /**
++ * Expiration of this credential
++ */
++ struct GNUNET_TIME_Absolute expiration;
++
++ /**
++ * Length of the attribute
++ */
++ uint32_t issuer_attribute_len;
++
++ /**
++ * The attribute
++ */
++ const char *issuer_attribute;
++
++};
++
++
++
++/**
++ * Initialize the connection with the Credential service.
++ *
++ * @param cfg configuration to use
++ * @return handle to the Credential service, or NULL on error
++ */
++struct GNUNET_CREDENTIAL_Handle *
++GNUNET_CREDENTIAL_connect (const struct GNUNET_CONFIGURATION_Handle *cfg);
++
++
++/**
++ * Shutdown connection with the Credentail service.
++ *
++ * @param handle connection to shut down
++ */
++void
++GNUNET_CREDENTIAL_disconnect (struct GNUNET_CREDENTIAL_Handle *handle);
++
++
++/**
++ * Iterator called on obtained result for an attribute verification.
++ *
++ * @param cls closure
++ * @param d_count the number of delegations processed
++ * @param delegation_chain the delegations processed
++ * @param c_count the number of credentials found
++ * @param credential the credentials
++ */
++typedef void (*GNUNET_CREDENTIAL_CredentialResultProcessor) (void *cls,
++ unsigned int d_count,
++ struct GNUNET_CREDENTIAL_Delegation *delegation_chain,
++ unsigned int c_count,
++ struct GNUNET_CREDENTIAL_Credential *credential);
++
++/**
++ * Iterator called on obtained result for an attribute delegation.
++ *
++ * @param cls closure
++ * @param success GNUNET_YES if successful
++ * @param result the record data that can be handed to the subject
++ */
++typedef void (*GNUNET_CREDENTIAL_DelegateResultProcessor) (void *cls,
++ uint32_t success);
++
++/**
++ * Iterator called on obtained result for an attribute delegation removal.
++ *
++ * @param cls closure
++ * @param success GNUNET_YES if successful
++ * @param result the record data that can be handed to the subject
++ */
++typedef void (*GNUNET_CREDENTIAL_RemoveDelegateResultProcessor) (void *cls,
++ uint32_t success);
++
++
++/**
++ * Performs attribute verification.
++ * Checks if there is a delegation chain from
++ * attribute ``issuer_attribute'' issued by the issuer
++ * with public key ``issuer_key'' maps to the attribute
++ * ``subject_attribute'' claimed by the subject with key
++ * ``subject_key''
++ *
++ * @param handle handle to the Credential service
++ * @param issuer_key the issuer public key
++ * @param issuer_attribute the issuer attribute
++ * @param subject_key the subject public key
++ * @param credential_count number of credentials
++ * @param credentials the subject credentials
++ * @param proc function to call on result
++ * @param proc_cls closure for processor
++ * @return handle to the queued request
++ */
++struct GNUNET_CREDENTIAL_Request*
++GNUNET_CREDENTIAL_verify (struct GNUNET_CREDENTIAL_Handle *handle,
++ const struct GNUNET_CRYPTO_EcdsaPublicKey *issuer_key,
++ const char *issuer_attribute,
++ const struct GNUNET_CRYPTO_EcdsaPublicKey *subject_key,
++ uint32_t credential_count,
++ const struct GNUNET_CREDENTIAL_Credential *credentials,
++ GNUNET_CREDENTIAL_CredentialResultProcessor proc,
++ void *proc_cls);
++
++struct GNUNET_CREDENTIAL_Request*
++GNUNET_CREDENTIAL_collect (struct GNUNET_CREDENTIAL_Handle *handle,
++ const struct GNUNET_CRYPTO_EcdsaPublicKey *issuer_key,
++ const char *issuer_attribute,
++ const struct GNUNET_CRYPTO_EcdsaPrivateKey *subject_key,
++ GNUNET_CREDENTIAL_CredentialResultProcessor proc,
++ void *proc_cls);
++
++/**
++ * Delegate an attribute
++ *
++ * @param handle handle to the Credential service
++ * @param issuer the ego that should be used to delegate the attribute
++ * @param attribute the name of the attribute to delegate
++ * @param subject the subject of the delegation
++ * @param delegated_attribute the name of the attribute that is delegated to
++ * @param proc the result callback
++ * @param proc_cls the result closure context
++ * @return handle to the queued request
++ */
++struct GNUNET_CREDENTIAL_Request *
++GNUNET_CREDENTIAL_add_delegation (struct GNUNET_CREDENTIAL_Handle *handle,
++ struct GNUNET_IDENTITY_Ego *issuer,
++ const char *attribute,
++ struct GNUNET_CRYPTO_EcdsaPublicKey *subject,
++ const char *delegated_attribute,
++ GNUNET_CREDENTIAL_DelegateResultProcessor proc,
++ void *proc_cls);
++
++/**
++ * Remove a delegation
++ *
++ * @param handle handle to the Credential service
++ * @param issuer the ego that was used to delegate the attribute
++ * @param attribute the name of the attribute that is delegated
++ * @param proc the callback
++ * @param proc_cls callback closure
++ * @return handle to the queued request
++ */
++struct GNUNET_CREDENTIAL_Request *
++GNUNET_CREDENTIAL_remove_delegation (struct GNUNET_CREDENTIAL_Handle *handle,
++ struct GNUNET_IDENTITY_Ego *issuer,
++ const char *attribute,
++ GNUNET_CREDENTIAL_RemoveDelegateResultProcessor proc,
++ void *proc_cls);
++
++
++
++/**
++ * Issue an attribute to a subject
++ *
++ * @param issuer the ego that should be used to issue the attribute
++ * @param subject the subject of the attribute
++ * @param attribute the name of the attribute
++ * @param expiration the TTL of the credential
++ * @return handle to the queued request
++ */
++struct GNUNET_CREDENTIAL_Credential*
++GNUNET_CREDENTIAL_credential_issue (const struct GNUNET_CRYPTO_EcdsaPrivateKey *issuer,
++ struct GNUNET_CRYPTO_EcdsaPublicKey *subject,
++ const char *attribute,
++ struct GNUNET_TIME_Absolute *expiration);
++
++
++
++/**
++ * Cancel pending lookup request
++ *
++ * @param lr the lookup request to cancel
++ */
++void
++GNUNET_CREDENTIAL_request_cancel (struct GNUNET_CREDENTIAL_Request *lr);
++
++
++#if 0 /* keep Emacsens' auto-indent happy */
++{
++#endif
++#ifdef __cplusplus
++}
++#endif
++
++#endif
++
++/** @} */ /* end of group */
diff --git a/net/gnunet/patches/0002-credential-include-headers-in-dist-sources.patch b/net/gnunet/patches/0002-credential-include-headers-in-dist-sources.patch
new file mode 100644
index 000000000..967b3db98
--- /dev/null
+++ b/net/gnunet/patches/0002-credential-include-headers-in-dist-sources.patch
@@ -0,0 +1,482 @@
+From 5be7a51b0980909719670953c938ee724627ad90 Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Thu, 28 Feb 2019 15:30:26 +0100
+Subject: [PATCH] credential: include headers in dist sources
+
+---
+ src/credential/Makefile.am | 3 +++
+ src/include/Makefile.am | 4 ++--
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+--- a/src/credential/Makefile.am
++++ b/src/credential/Makefile.am
+@@ -68,8 +68,11 @@ gnunet_service_credential_LDADD = \
+
+
+ libgnunetcredential_la_SOURCES = \
++ credential.h \
+ credential_api.c \
++ credential_serialization.h \
+ credential_serialization.c \
++ credential_misc.h \
+ credential_misc.c
+ libgnunetcredential_la_LIBADD = \
+ $(top_builddir)/src/util/libgnunetutil.la $(XLIB)
+--- a/src/include/Makefile.am
++++ b/src/include/Makefile.am
+@@ -47,7 +47,7 @@ gnunetinclude_HEADERS = \
+ gnunet_container_lib.h \
+ gnunet_conversation_service.h \
+ gnunet_core_service.h \
+- gnunet_credential_service.h \
++ gnunet_credential_service.h \
+ gnunet_crypto_lib.h \
+ gnunet_curl_lib.h \
+ gnunet_datacache_lib.h \
+@@ -107,7 +107,7 @@ gnunetinclude_HEADERS = \
+ gnunet_regex_service.h \
+ gnunet_rest_lib.h \
+ gnunet_rest_plugin.h \
+- gnunet_rps_service.h \
++ gnunet_rps_service.h \
+ gnunet_revocation_service.h \
+ gnunet_scalarproduct_service.h \
+ gnunet_scheduler_lib.h \
+--- /dev/null
++++ b/src/credential/credential.h
+@@ -0,0 +1,221 @@
++/*
++ This file is part of GNUnet
++ Copyright (C) 2012-2013 GNUnet e.V.
++
++ GNUnet is free software: you can redistribute it and/or modify it
++ under the terms of the GNU Affero General Public License as published
++ by the Free Software Foundation, either version 3 of the License,
++ or (at your option) any later version.
++
++ GNUnet is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Affero General Public License for more details.
++
++ You should have received a copy of the GNU Affero General Public License
++ along with this program. If not, see <http://www.gnu.org/licenses/>.
++
++ SPDX-License-Identifier: AGPL3.0-or-later
++ */
++/**
++ * @file credential/credential.h
++ * @brief IPC messages between CREDENTIAL API and CREDENTIAL service
++ * @author Martin Schanzenbach
++ */
++#ifndef CREDENTIAL_H
++#define CREDENTIAL_H
++
++#include "gnunet_credential_service.h"
++
++GNUNET_NETWORK_STRUCT_BEGIN
++
++/**
++ * Message from client to Credential service to collect credentials.
++ */
++struct CollectMessage
++{
++ /**
++ * Header of type #GNUNET_MESSAGE_TYPE_CREDENTIAL_VERIFY
++ */
++ struct GNUNET_MessageHeader header;
++
++ /**
++ * Subject public key
++ */
++ struct GNUNET_CRYPTO_EcdsaPrivateKey subject_key;
++
++ /**
++ * Trust anchor
++ */
++ struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
++
++ /**
++ * Length of the issuer attribute
++ */
++ uint16_t issuer_attribute_len;
++
++ /**
++ * Unique identifier for this request (for key collisions).
++ */
++ uint32_t id GNUNET_PACKED;
++
++ /* Followed by the zero-terminated attribute */
++
++};
++
++
++/**
++ * Message from client to Credential service to verify attributes.
++ */
++struct VerifyMessage
++{
++ /**
++ * Header of type #GNUNET_MESSAGE_TYPE_CREDENTIAL_VERIFY
++ */
++ struct GNUNET_MessageHeader header;
++
++ /**
++ * Subject public key
++ */
++ struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
++
++ /**
++ * Trust anchor
++ */
++ struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
++
++ /**
++ * Number of credentials
++ */
++ uint32_t c_count;
++
++ /**
++ * Length of the issuer attribute
++ */
++ uint16_t issuer_attribute_len;
++
++ /**
++ * Unique identifier for this request (for key collisions).
++ */
++ uint32_t id GNUNET_PACKED;
++
++ /* Followed by the zero-terminated attribute and credentials to look up */
++
++};
++
++
++/**
++ * Message from CREDENTIAL service to client: new results.
++ */
++struct DelegationChainResultMessage
++{
++ /**
++ * Header of type #GNUNET_MESSAGE_TYPE_CREDENTIAL_VERIFY_RESULT
++ */
++ struct GNUNET_MessageHeader header;
++
++ /**
++ * Unique identifier for this request (for key collisions).
++ */
++ uint32_t id GNUNET_PACKED;
++
++ /**
++ * Indicates if credential has been found at all
++ */
++ uint32_t cred_found GNUNET_PACKED;
++
++ /**
++ * The number of delegations in the response
++ */
++ uint32_t d_count GNUNET_PACKED;
++
++ /**
++ * The number of credentials in the response
++ */
++ uint32_t c_count GNUNET_PACKED;
++
++ /* followed by ad_count GNUNET_CREDENTIAL_RecordData structs*/
++
++};
++
++struct DelegationRecordData
++{
++ /**
++ * Subject key
++ */
++ struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
++
++ /**
++ * Subject attributes
++ */
++ uint32_t subject_attribute_len GNUNET_PACKED;
++};
++
++
++struct ChainEntry
++{
++ /**
++ * Issuer key
++ */
++ struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
++
++ /**
++ * Subject key
++ */
++ struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
++
++ /**
++ * Issuer attributes
++ */
++ uint32_t issuer_attribute_len GNUNET_PACKED;
++
++ /**
++ * Subject attributes
++ */
++ uint32_t subject_attribute_len GNUNET_PACKED;
++};
++
++
++struct CredentialEntry
++{
++
++ /**
++ * The signature for this credential by the issuer
++ */
++ struct GNUNET_CRYPTO_EcdsaSignature signature;
++
++ /**
++ * Signature meta
++ */
++ struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
++
++ /**
++ * Public key of the issuer
++ */
++ struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
++
++ /**
++ * Public key of the subject this credential was issued to
++ */
++ struct GNUNET_CRYPTO_EcdsaPublicKey subject_key;
++
++ /**
++ * Expiration time of this credential
++ */
++ uint64_t expiration GNUNET_PACKED;
++
++ /**
++ * Issuer attribute length
++ */
++ uint32_t issuer_attribute_len;
++
++ /**
++ * Followed by the attribute string
++ */
++};
++
++
++GNUNET_NETWORK_STRUCT_END
++
++#endif
++
+--- /dev/null
++++ b/src/credential/credential_misc.h
+@@ -0,0 +1,35 @@
++/*
++ This file is part of GNUnet
++ Copyright (C) 2012-2013 GNUnet e.V.
++
++ GNUnet is free software: you can redistribute it and/or modify it
++ under the terms of the GNU Affero General Public License as published
++ by the Free Software Foundation, either version 3 of the License,
++ or (at your option) any later version.
++
++ GNUnet is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Affero General Public License for more details.
++
++ You should have received a copy of the GNU Affero General Public License
++ along with this program. If not, see <http://www.gnu.org/licenses/>.
++
++ SPDX-License-Identifier: AGPL3.0-or-later
++ */
++/**
++ * @file credential/credential_misc.h
++ * @brief Credential helper functions
++ */
++#ifndef CREDENTIAL_MISC_H
++#define CREDENTIAL_MISC_H
++
++
++
++char*
++GNUNET_CREDENTIAL_credential_to_string (const struct GNUNET_CREDENTIAL_Credential *cred);
++
++struct GNUNET_CREDENTIAL_Credential*
++GNUNET_CREDENTIAL_credential_from_string (const char* str);
++
++#endif
+--- /dev/null
++++ b/src/credential/credential_serialization.h
+@@ -0,0 +1,159 @@
++/*
++ This file is part of GNUnet.
++ Copyright (C) 2009-2013, 2016 GNUnet e.V.
++
++ GNUnet is free software: you can redistribute it and/or modify it
++ under the terms of the GNU Affero General Public License as published
++ by the Free Software Foundation, either version 3 of the License,
++ or (at your option) any later version.
++
++ GNUnet is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Affero General Public License for more details.
++
++ You should have received a copy of the GNU Affero General Public License
++ along with this program. If not, see <http://www.gnu.org/licenses/>.
++
++ SPDX-License-Identifier: AGPL3.0-or-later
++*/
++
++
++/**
++ * @file credential/credential_serialization.h
++ * @brief API to serialize and deserialize delegation chains
++ * and credentials
++ * @author Martin Schanzenbach
++ */
++#ifndef CREDENTIAL_SERIALIZATION_H
++#define CREDENTIAL_SERIALIZATION_H
++
++#include "platform.h"
++#include "gnunet_util_lib.h"
++#include "gnunet_constants.h"
++#include "gnunet_credential_service.h"
++
++/**
++ * Calculate how many bytes we will need to serialize
++ * the given delegation record
++ *
++ * @param ds_count number of delegation chain entries
++ * @param dsr array of #GNUNET_CREDENTIAL_Delegation
++ * @return the required size to serialize
++ */
++size_t
++GNUNET_CREDENTIAL_delegation_set_get_size (unsigned int ds_count,
++ const struct GNUNET_CREDENTIAL_DelegationSet *dsr);
++
++/**
++ * Serizalize the given delegation record entries
++ *
++ * @param d_count number of delegation chain entries
++ * @param dsr array of #GNUNET_CREDENTIAL_Delegation
++ * @param dest_size size of the destination
++ * @param dest where to store the result
++ * @return the size of the data, -1 on failure
++ */
++ssize_t
++GNUNET_CREDENTIAL_delegation_set_serialize (unsigned int d_count,
++ const struct GNUNET_CREDENTIAL_DelegationSet *dsr,
++ size_t dest_size,
++ char *dest);
++
++
++/**
++ * Deserialize the given destination
++ *
++ * @param len size of the serialized delegation recird
++ * @param src the serialized data
++ * @param d_count the number of delegation chain entries
++ * @param dsr where to put the delegation chain entries
++ * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
++ */
++int
++GNUNET_CREDENTIAL_delegation_set_deserialize (size_t len,
++ const char *src,
++ unsigned int d_count,
++ struct GNUNET_CREDENTIAL_DelegationSet *dsr);
++
++ /**
++ * Calculate how many bytes we will need to serialize
++ * the given delegation chain and credential
++ *
++ * @param d_count number of delegation chain entries
++ * @param dd array of #GNUNET_CREDENTIAL_Delegation
++ * @param c_count number of credential entries
++ * @param cd a #GNUNET_CREDENTIAL_Credential
++ * @return the required size to serialize
++ */
++ size_t
++ GNUNET_CREDENTIAL_delegation_chain_get_size (unsigned int d_count,
++ const struct GNUNET_CREDENTIAL_Delegation *dd,
++ unsigned int c_count,
++ const struct GNUNET_CREDENTIAL_Credential *cd);
++
++ /**
++ * Serizalize the given delegation chain entries and credential
++ *
++ * @param d_count number of delegation chain entries
++ * @param dd array of #GNUNET_CREDENTIAL_Delegation
++ * @param c_count number of credential entries
++ * @param cd a #GNUNET_CREDENTIAL_Credential
++ * @param dest_size size of the destination
++ * @param dest where to store the result
++ * @return the size of the data, -1 on failure
++ */
++ ssize_t
++ GNUNET_CREDENTIAL_delegation_chain_serialize (unsigned int d_count,
++ const struct GNUNET_CREDENTIAL_Delegation *dd,
++ unsigned int c_count,
++ const struct GNUNET_CREDENTIAL_Credential *cd,
++ size_t dest_size,
++ char *dest);
++
++
++ /**
++ * Deserialize the given destination
++ *
++ * @param len size of the serialized delegation chain and cred
++ * @param src the serialized data
++ * @param d_count the number of delegation chain entries
++ * @param dd where to put the delegation chain entries
++ * @param c_count number of credential entries
++ * @param cd where to put the credential data
++ * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
++ */
++ int
++ GNUNET_CREDENTIAL_delegation_chain_deserialize (size_t len,
++ const char *src,
++ unsigned int d_count,
++ struct GNUNET_CREDENTIAL_Delegation *dd,
++ unsigned int c_count,
++ struct GNUNET_CREDENTIAL_Credential *cd);
++ size_t
++ GNUNET_CREDENTIAL_credentials_get_size (unsigned int c_count,
++ const struct GNUNET_CREDENTIAL_Credential *cd);
++
++ssize_t
++GNUNET_CREDENTIAL_credentials_serialize (unsigned int c_count,
++ const struct GNUNET_CREDENTIAL_Credential *cd,
++ size_t dest_size,
++ char *dest);
++
++
++int
++GNUNET_CREDENTIAL_credentials_deserialize (size_t len,
++ const char *src,
++ unsigned int c_count,
++ struct GNUNET_CREDENTIAL_Credential *cd);
++
++
++int
++GNUNET_CREDENTIAL_credential_serialize (struct GNUNET_CREDENTIAL_Credential *cred,
++ char **data);
++
++struct GNUNET_CREDENTIAL_Credential*
++GNUNET_CREDENTIAL_credential_deserialize (const char* data,
++ size_t data_size);
++#endif
++/* end of credential_serialization.h */
+--- a/src/credential/Makefile.in
++++ b/src/credential/Makefile.in
+@@ -714,8 +714,11 @@ gnunet_service_credential_LDADD = \
+ $(GN_LIBINTL)
+
+ libgnunetcredential_la_SOURCES = \
++ credential.h \
+ credential_api.c \
++ credential_serialization.h \
+ credential_serialization.c \
++ credential_misc.h \
+ credential_misc.c
+
+ libgnunetcredential_la_LIBADD = \
diff --git a/net/gnunet/patches/0003-reclaim-attribute-include-header-in-dist-sources.patch b/net/gnunet/patches/0003-reclaim-attribute-include-header-in-dist-sources.patch
new file mode 100644
index 000000000..2188c2cfe
--- /dev/null
+++ b/net/gnunet/patches/0003-reclaim-attribute-include-header-in-dist-sources.patch
@@ -0,0 +1,78 @@
+From c776664d488028f844ae6045e60f693a8624bfac Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Thu, 28 Feb 2019 16:06:06 +0100
+Subject: [PATCH] reclaim-attribute: include header in dist sources
+
+---
+ src/reclaim-attribute/Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/src/reclaim-attribute/Makefile.am
++++ b/src/reclaim-attribute/Makefile.am
+@@ -20,6 +20,7 @@ lib_LTLIBRARIES = \
+ libgnunetreclaimattribute.la
+
+ libgnunetreclaimattribute_la_SOURCES = \
++ reclaim_attribute.h \
+ reclaim_attribute.c
+ libgnunetreclaimattribute_la_LIBADD = \
+ $(top_builddir)/src/util/libgnunetutil.la \
+--- /dev/null
++++ b/src/reclaim-attribute/reclaim_attribute.h
+@@ -0,0 +1,56 @@
++/*
++ This file is part of GNUnet.
++ Copyright (C) 2012-2015 GNUnet e.V.
++
++ GNUnet is free software: you can redistribute it and/or modify it
++ under the terms of the GNU Affero General Public License as published
++ by the Free Software Foundation, either version 3 of the License,
++ or (at your option) any later version.
++
++ GNUnet is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Affero General Public License for more details.
++
++ You should have received a copy of the GNU Affero General Public License
++ along with this program. If not, see <http://www.gnu.org/licenses/>.
++
++ SPDX-License-Identifier: AGPL3.0-or-later
++ */
++/**
++ * @author Martin Schanzenbach
++ * @file reclaim-attribute/reclaim_attribute.h
++ * @brief GNUnet reclaim identity attributes
++ *
++ */
++#ifndef RECLAIM_ATTRIBUTE_H
++#define RECLAIM_ATTRIBUTE_H
++
++#include "gnunet_reclaim_service.h"
++
++struct Attribute
++{
++ /**
++ * Attribute type
++ */
++ uint32_t attribute_type;
++
++ /**
++ * Attribute version
++ */
++ uint32_t attribute_version;
++
++ /**
++ * Name length
++ */
++ uint32_t name_len;
++
++ /**
++ * Data size
++ */
++ uint32_t data_size;
++
++ //followed by data_size Attribute value data
++};
++
++#endif
diff --git a/net/gnunet/patches/0004-reclaim-include-reclaim.conf-in-source-dist.patch b/net/gnunet/patches/0004-reclaim-include-reclaim.conf-in-source-dist.patch
new file mode 100644
index 000000000..7417aef5f
--- /dev/null
+++ b/net/gnunet/patches/0004-reclaim-include-reclaim.conf-in-source-dist.patch
@@ -0,0 +1,50 @@
+From 6c0f43552d627b93f99f7fd40d63815f323958c3 Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Thu, 28 Feb 2019 16:16:13 +0100
+Subject: [PATCH] reclaim: include reclaim.conf in source dist
+
+---
+ src/reclaim/Makefile.am | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/src/reclaim/Makefile.am
++++ b/src/reclaim/Makefile.am
+@@ -17,9 +17,10 @@ SQLITE_PLUGIN = libgnunet_plugin_reclaim
+ endif
+
+ EXTRA_DIST = \
++ reclaim.conf \
+ test_reclaim_defaults.conf \
+- test_reclaim.conf \
+- $(check_SCRIPTS)
++ test_reclaim.conf \
++ $(check_SCRIPTS)
+
+ pkgcfgdir= $(pkgdatadir)/config.d/
+
+--- /dev/null
++++ b/src/reclaim/reclaim.conf
+@@ -0,0 +1,23 @@
++[reclaim]
++START_ON_DEMAND = NO
++RUN_PER_USER = YES
++#PORT = 2108
++HOSTNAME = localhost
++BINARY = gnunet-service-reclaim
++ACCEPT_FROM = 127.0.0.1;
++ACCEPT_FROM6 = ::1;
++UNIXPATH = $GNUNET_USER_RUNTIME_DIR/gnunet-service-reclaim.sock
++UNIX_MATCH_UID = NO
++UNIX_MATCH_GID = YES
++TOKEN_EXPIRATION_INTERVAL = 30 m
++DATABASE = sqlite
++
++[reclaim-rest-plugin]
++#ADDRESS = https://identity.gnu:8000#/login
++ADDRESS = https://ui.reclaim/#/login
++PSW = secret
++JWT_SECRET = secret
++EXPIRATION_TIME = 1d
++
++[reclaim-sqlite]
++FILENAME = $GNUNET_DATA_HOME/reclaim/sqlite.db
diff --git a/net/gnunet/patches/0005-rest-plugins-include-headers-in-dist-sources.patch b/net/gnunet/patches/0005-rest-plugins-include-headers-in-dist-sources.patch
new file mode 100644
index 000000000..bbe5d5a4c
--- /dev/null
+++ b/net/gnunet/patches/0005-rest-plugins-include-headers-in-dist-sources.patch
@@ -0,0 +1,192 @@
+From da16f9c20dda74dc689c9564d1791cc2af3ede9d Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Thu, 28 Feb 2019 16:23:40 +0100
+Subject: [PATCH] rest-plugins: include headers in dist sources
+
+---
+ src/rest-plugins/Makefile.am | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/src/rest-plugins/Makefile.am
++++ b/src/rest-plugins/Makefile.am
+@@ -30,6 +30,7 @@ endif
+
+ libgnunet_plugin_rest_reclaim_la_SOURCES = \
+ plugin_rest_reclaim.c \
++ json_reclaim.h \
+ json_reclaim.c
+ libgnunet_plugin_rest_reclaim_la_LIBADD = \
+ $(top_builddir)/src/identity/libgnunetidentity.la \
+@@ -117,6 +118,7 @@ libgnunet_plugin_rest_gns_la_LDFLAGS = \
+
+ libgnunet_plugin_rest_openid_connect_la_SOURCES = \
+ plugin_rest_openid_connect.c \
++ oidc_helper.h \
+ oidc_helper.c
+ libgnunet_plugin_rest_openid_connect_la_LIBADD = \
+ $(top_builddir)/src/identity/libgnunetidentity.la \
+--- /dev/null
++++ b/src/rest-plugins/oidc_helper.h
+@@ -0,0 +1,111 @@
++/*
++ This file is part of GNUnet
++ Copyright (C) 2010-2015 GNUnet e.V.
++
++ GNUnet is free software: you can redistribute it and/or modify it
++ under the terms of the GNU Affero General Public License as published
++ by the Free Software Foundation, either version 3 of the License,
++ or (at your option) any later version.
++
++ GNUnet is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Affero General Public License for more details.
++
++ You should have received a copy of the GNU Affero General Public License
++ along with this program. If not, see <http://www.gnu.org/licenses/>.
++
++ SPDX-License-Identifier: AGPL3.0-or-later
++ */
++
++/**
++ * @file reclaim/oidc_helper.h
++ * @brief helper library for OIDC related functions
++ * @author Martin Schanzenbach
++ */
++
++#ifndef JWT_H
++#define JWT_H
++
++#define JWT_ALG "alg"
++
++/* Use 512bit HMAC */
++#define JWT_ALG_VALUE "HS512"
++
++#define JWT_TYP "typ"
++
++#define JWT_TYP_VALUE "jwt"
++
++#define SERVER_ADDRESS "https://api.reclaim"
++
++/**
++ * Create a JWT from attributes
++ *
++ * @param aud_key the public of the audience
++ * @param sub_key the public key of the subject
++ * @param attrs the attribute list
++ * @param expiration_time the validity of the token
++ * @param secret_key the key used to sign the JWT
++ * @return a new base64-encoded JWT string.
++ */
++char*
++OIDC_id_token_new (const struct GNUNET_CRYPTO_EcdsaPublicKey *aud_key,
++ const struct GNUNET_CRYPTO_EcdsaPublicKey *sub_key,
++ const struct GNUNET_RECLAIM_ATTRIBUTE_ClaimList *attrs,
++ const struct GNUNET_TIME_Relative *expiration_time,
++ const char *nonce,
++ const char *secret_key);
++
++/**
++ * Builds an OIDC authorization code including
++ * a reclaim ticket and nonce
++ *
++ * @param issuer the issuer of the ticket, used to sign the ticket and nonce
++ * @param ticket the ticket to include in the code
++ * @param nonce the nonce to include in the code
++ * @return a new authorization code (caller must free)
++ */
++char*
++OIDC_build_authz_code (const struct GNUNET_CRYPTO_EcdsaPrivateKey *issuer,
++ const struct GNUNET_RECLAIM_Ticket *ticket,
++ const char* nonce);
++
++/**
++ * Parse reclaim ticket and nonce from
++ * authorization code.
++ * This also verifies the signature in the code.
++ *
++ * @param audience the expected audience of the code
++ * @param code the string representation of the code
++ * @param ticket where to store the ticket
++ * @param nonce where to store the nonce
++ * @return GNUNET_OK if successful, else GNUNET_SYSERR
++ */
++int
++OIDC_parse_authz_code (const struct GNUNET_CRYPTO_EcdsaPublicKey *audience,
++ const char* code,
++ struct GNUNET_RECLAIM_Ticket **ticket,
++ char **nonce);
++
++/**
++ * Build a token response for a token request
++ * TODO: Maybe we should add the scope here?
++ *
++ * @param access_token the access token to include
++ * @param id_token the id_token to include
++ * @param expiration_time the expiration time of the token(s)
++ * @param token_response where to store the response
++ */
++void
++OIDC_build_token_response (const char *access_token,
++ const char *id_token,
++ const struct GNUNET_TIME_Relative *expiration_time,
++ char **token_response);
++/**
++ * Generate a new access token
++ */
++char*
++OIDC_access_token_new ();
++
++
++#endif
+--- /dev/null
++++ b/src/rest-plugins/json_reclaim.h
+@@ -0,0 +1,48 @@
++/*
++ This file is part of GNUnet.
++ Copyright (C) 2009-2018 GNUnet e.V.
++
++ GNUnet is free software: you can redistribute it and/or modify it
++ under the terms of the GNU Affero General Public License as published
++ by the Free Software Foundation, either version 3 of the License,
++ or (at your option) any later version.
++
++ GNUnet is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Affero General Public License for more details.
++
++ You should have received a copy of the GNU Affero General Public License
++ along with this program. If not, see <http://www.gnu.org/licenses/>.
++
++ SPDX-License-Identifier: AGPL3.0-or-later
++*/
++
++/**
++ * @file rest-plugins/json_reclaim.h
++ * @brief JSON handling of reclaim data
++ * @author Martin Schanzenbach
++ */
++#include "platform.h"
++#include "gnunet_util_lib.h"
++#include "gnunet_json_lib.h"
++#include "gnunet_reclaim_service.h"
++#include "gnunet_reclaim_attribute_lib.h"
++
++/**
++ * JSON Specification for Reclaim claims.
++ *
++ * @param ticket struct of GNUNET_RECLAIM_ATTRIBUTE_Claim to fill
++ * @return JSON Specification
++ */
++struct GNUNET_JSON_Specification
++GNUNET_RECLAIM_JSON_spec_claim (struct GNUNET_RECLAIM_ATTRIBUTE_Claim **attr);
++
++/**
++ * JSON Specification for Reclaim tickets.
++ *
++ * @param ticket struct of GNUNET_RECLAIM_Ticket to fill
++ * @return JSON Specification
++ */
++struct GNUNET_JSON_Specification
++GNUNET_RECLAIM_JSON_spec_ticket (struct GNUNET_RECLAIM_Ticket **ticket);