diff options
author | t3sserakt <t3ss@posteo.de> | 2022-04-01 15:08:41 +0200 |
---|---|---|
committer | t3sserakt <t3ss@posteo.de> | 2022-04-03 14:29:27 +0200 |
commit | 8f5b71e500a10790bf72d42de03e2db4971bf772 (patch) | |
tree | 10507356b5df0d2d0ce0b3b60a91dc070ce1001d | |
parent | 027177be3bae0c60d530b0b88ed375b082c94d81 (diff) | |
parent | e6a0ea8cf388a05856aaedbc5444f266ae47a7ef (diff) | |
download | gnunet-8f5b71e500a10790bf72d42de03e2db4971bf772.tar.gz gnunet-8f5b71e500a10790bf72d42de03e2db4971bf772.zip |
Merge branch 'master' of ssh://git.gnunet.org/gnunet
42 files changed, 2636 insertions, 1426 deletions
@@ -1,3 +1,45 @@ | |||
1 | Tue, 29 Mar 2022 10:11:15 +0200 (a9b18aa64) | ||
2 | GNS: Do not fail on assertions in block processing - Martin Schanzenbach | ||
3 | |||
4 | Sun, 27 Mar 2022 17:12:52 +0200 (ce38d1f6c) | ||
5 | Edx25519 implemented - Özgür Kesim | ||
6 | |||
7 | Sun, 27 Mar 2022 12:25:01 +0200 (1e4d62567) | ||
8 | GNS: Sanitize APIs and align with LSD0001 - Martin Schanzenbach | ||
9 | |||
10 | Sat, 26 Mar 2022 07:17:12 +0100 (e598ffe0a) | ||
11 | add GNUNET_TIME_absolute_round_down() function - Christian Grothoff | ||
12 | |||
13 | Fri, 25 Mar 2022 11:28:37 -0500 (c93cf9ae1) | ||
14 | Remove bash-ism from get_version.sh - David Barksdale | ||
15 | |||
16 | Mon, 21 Mar 2022 13:54:28 +0100 (4e95b59a6) | ||
17 | NAMESTORE: Towards new transaction-based API - Martin Schanzenbach | ||
18 | |||
19 | Mon, 21 Mar 2022 03:37:29 +0100 (ec8a825b0) | ||
20 | add new approximate time cmp function - Christian Grothoff | ||
21 | |||
22 | Fri, 18 Mar 2022 13:51:02 +0100 (4f3c8d098) | ||
23 | configure.ac: use lo0 for the 3 listed BSD Systems. - Martin Schanzenbach | ||
24 | |||
25 | Fri, 18 Mar 2022 08:52:01 +0100 (fcbabc6b6) | ||
26 | GNS: Fix BOX handling in apex - Martin Schanzenbach | ||
27 | |||
28 | Thu, 17 Mar 2022 23:24:19 +0100 (c37f01bc9) | ||
29 | GNS: Fix BOX service port handling in NBO - Martin Schanzenbach | ||
30 | |||
31 | Wed, 16 Mar 2022 18:53:22 +0100 (68ac68b70) | ||
32 | NAMESTORE: Add record set blocking API - Martin Schanzenbach | ||
33 | |||
34 | Tue, 15 Mar 2022 08:42:42 +0100 (cfd3db44a) | ||
35 | NAMESTORE: Prevent storing records under invalid labels - Martin Schanzenbach | ||
36 | |||
37 | Sat, 5 Mar 2022 08:58:51 +0100 (2087b149d) | ||
38 | FS: Fix segfault in URI handling - Martin Schanzenbach | ||
39 | |||
40 | Fri, 4 Mar 2022 23:40:34 +0100 (343177a0b) | ||
41 | GNS: Fix including proxy test in make dist. Addresses issue #7182 - Martin Schanzenbach | ||
42 | |||
1 | Fri, 4 Mar 2022 14:17:37 +0100 (0e6b1f4a2) | 43 | Fri, 4 Mar 2022 14:17:37 +0100 (0e6b1f4a2) |
2 | NAMESTORE: Warn use of low relative expiration times - Martin Schanzenbach | 44 | NAMESTORE: Warn use of low relative expiration times - Martin Schanzenbach |
3 | 45 | ||
diff --git a/configure.ac b/configure.ac index 713817168..43d112572 100644 --- a/configure.ac +++ b/configure.ac | |||
@@ -20,7 +20,7 @@ | |||
20 | # | 20 | # |
21 | # | 21 | # |
22 | AC_PREREQ([2.69]) | 22 | AC_PREREQ([2.69]) |
23 | AC_INIT([gnunet], m4_esyscmd_s([contrib/get_version.sh]), [bug-gnunet@gnu.org]) | 23 | AC_INIT([gnunet], m4_esyscmd_s([sh contrib/get_version.sh]), [bug-gnunet@gnu.org]) |
24 | 24 | ||
25 | AC_CONFIG_AUX_DIR([build-aux]) | 25 | AC_CONFIG_AUX_DIR([build-aux]) |
26 | AC_CONFIG_MACRO_DIRS([m4]) | 26 | AC_CONFIG_MACRO_DIRS([m4]) |
@@ -128,6 +128,7 @@ AS_CASE(["$host_os"], | |||
128 | [*freebsd*], | 128 | [*freebsd*], |
129 | [CFLAGS="-D_THREAD_SAFE $CFLAGS" | 129 | [CFLAGS="-D_THREAD_SAFE $CFLAGS" |
130 | build_target="freebsd" | 130 | build_target="freebsd" |
131 | DEFAULT_INTERFACE="\"lo0\"" | ||
131 | xbsd="yes" | 132 | xbsd="yes" |
132 | LIBPREFIX= | 133 | LIBPREFIX= |
133 | DLLDIR=lib | 134 | DLLDIR=lib |
@@ -135,10 +136,11 @@ AS_CASE(["$host_os"], | |||
135 | ], | 136 | ], |
136 | [*openbsd*], | 137 | [*openbsd*], |
137 | [# libc needs to be linked explicitly | 138 | [# libc needs to be linked explicitly |
138 | LDFLAGS="$LDFLAGS -Wl -lc" | 139 | LDFLAGS="$OLD_LDFLAGS -lc" |
139 | # and PIC has to be enabled | 140 | # and PIC has to be enabled |
140 | CFLAGS="-fPIC $CFLAGS" | 141 | CFLAGS="-fPIC $CFLAGS" |
141 | build_target="openbsd" | 142 | build_target="openbsd" |
143 | DEFAULT_INTERFACE="\"lo0\"" | ||
142 | xbsd="yes" | 144 | xbsd="yes" |
143 | LIBPREFIX= | 145 | LIBPREFIX= |
144 | DLLDIR=lib | 146 | DLLDIR=lib |
@@ -146,6 +148,7 @@ AS_CASE(["$host_os"], | |||
146 | ], | 148 | ], |
147 | [*netbsd*], | 149 | [*netbsd*], |
148 | [build_target="netbsd" | 150 | [build_target="netbsd" |
151 | DEFAULT_INTERFACE="\"lo0\"" | ||
149 | xbsd="yes" | 152 | xbsd="yes" |
150 | LIBPREFIX= | 153 | LIBPREFIX= |
151 | DLLDIR=lib | 154 | DLLDIR=lib |
diff --git a/contrib/gana b/contrib/gana | |||
Subproject 048ad729b3177a5de1726517bc905e6cd7688d0 | Subproject 20f2185df6a7cb27cb2a175a300cd822ee8b063 | ||
diff --git a/contrib/get_version.sh b/contrib/get_version.sh index 35eed9f94..2a41ed4d6 100755 --- a/contrib/get_version.sh +++ b/contrib/get_version.sh | |||
@@ -1,18 +1,18 @@ | |||
1 | #!/bin/bash | 1 | #!/bin/sh |
2 | # Gets the version number from git, or from the contents of .version | 2 | # Gets the version number from git, or from the contents of .version |
3 | VERSION= | 3 | VERSION= |
4 | if test -f ".version" | 4 | if test -f ".version" |
5 | then | 5 | then |
6 | VERSION=$(cat .version) | 6 | VERSION=$(cat .version) |
7 | fi | 7 | fi |
8 | if test "x$VERSION" = "x" -a -d "./.git" | 8 | if test -d "./.git" |
9 | then | 9 | then |
10 | VERSION=$(git describe --tags) | 10 | VERSION=$(git describe --tags) |
11 | VERSION=${VERSION:1:${#VERSION}} | 11 | VERSION=${VERSION#v} |
12 | echo $VERSION > .version | 12 | echo $VERSION > .version |
13 | fi | 13 | fi |
14 | if test "x$VERSION" = "x" | 14 | if test "x$VERSION" = "x" |
15 | then | 15 | then |
16 | VERSION="unknown" | 16 | VERSION="unknown" |
17 | fi | 17 | fi |
18 | echo -n "$VERSION" | 18 | echo "$VERSION" |
diff --git a/po/POTFILES.in b/po/POTFILES.in index 64df0a13b..b7e7684c6 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in | |||
@@ -10,13 +10,14 @@ src/arm/arm_monitor_api.c | |||
10 | src/arm/gnunet-arm.c | 10 | src/arm/gnunet-arm.c |
11 | src/arm/gnunet-service-arm.c | 11 | src/arm/gnunet-service-arm.c |
12 | src/arm/mockup-service.c | 12 | src/arm/mockup-service.c |
13 | src/ats-tool/gnunet-ats.c | ||
13 | src/ats/ats_api_connectivity.c | 14 | src/ats/ats_api_connectivity.c |
14 | src/ats/ats_api_performance.c | 15 | src/ats/ats_api_performance.c |
15 | src/ats/ats_api_scanner.c | 16 | src/ats/ats_api_scanner.c |
16 | src/ats/ats_api_scheduling.c | 17 | src/ats/ats_api_scheduling.c |
17 | src/ats/gnunet-ats-solver-eval.c | 18 | src/ats/gnunet-ats-solver-eval.c |
18 | src/ats/gnunet-service-ats_addresses.c | ||
19 | src/ats/gnunet-service-ats.c | 19 | src/ats/gnunet-service-ats.c |
20 | src/ats/gnunet-service-ats_addresses.c | ||
20 | src/ats/gnunet-service-ats_connectivity.c | 21 | src/ats/gnunet-service-ats_connectivity.c |
21 | src/ats/gnunet-service-ats_normalization.c | 22 | src/ats/gnunet-service-ats_normalization.c |
22 | src/ats/gnunet-service-ats_performance.c | 23 | src/ats/gnunet-service-ats_performance.c |
@@ -25,7 +26,6 @@ src/ats/gnunet-service-ats_preferences.c | |||
25 | src/ats/gnunet-service-ats_reservations.c | 26 | src/ats/gnunet-service-ats_reservations.c |
26 | src/ats/gnunet-service-ats_scheduling.c | 27 | src/ats/gnunet-service-ats_scheduling.c |
27 | src/ats/plugin_ats_proportional.c | 28 | src/ats/plugin_ats_proportional.c |
28 | src/ats-tool/gnunet-ats.c | ||
29 | src/auction/gnunet-auction-create.c | 29 | src/auction/gnunet-auction-create.c |
30 | src/auction/gnunet-auction-info.c | 30 | src/auction/gnunet-auction-info.c |
31 | src/auction/gnunet-auction-join.c | 31 | src/auction/gnunet-auction-join.c |
@@ -43,8 +43,8 @@ src/cadet/cadet_api_list_peers.c | |||
43 | src/cadet/cadet_api_list_tunnels.c | 43 | src/cadet/cadet_api_list_tunnels.c |
44 | src/cadet/cadet_test_lib.c | 44 | src/cadet/cadet_test_lib.c |
45 | src/cadet/desirability_table.c | 45 | src/cadet/desirability_table.c |
46 | src/cadet/gnunet-cadet.c | ||
47 | src/cadet/gnunet-cadet-profiler.c | 46 | src/cadet/gnunet-cadet-profiler.c |
47 | src/cadet/gnunet-cadet.c | ||
48 | src/cadet/gnunet-service-cadet.c | 48 | src/cadet/gnunet-service-cadet.c |
49 | src/cadet/gnunet-service-cadet_channel.c | 49 | src/cadet/gnunet-service-cadet_channel.c |
50 | src/cadet/gnunet-service-cadet_connection.c | 50 | src/cadet/gnunet-service-cadet_connection.c |
@@ -60,15 +60,15 @@ src/consensus/gnunet-service-consensus.c | |||
60 | src/consensus/plugin_block_consensus.c | 60 | src/consensus/plugin_block_consensus.c |
61 | src/conversation/conversation_api.c | 61 | src/conversation/conversation_api.c |
62 | src/conversation/conversation_api_call.c | 62 | src/conversation/conversation_api_call.c |
63 | src/conversation/gnunet-conversation.c | ||
64 | src/conversation/gnunet-conversation-test.c | 63 | src/conversation/gnunet-conversation-test.c |
65 | src/conversation/gnunet_gst.c | 64 | src/conversation/gnunet-conversation.c |
66 | src/conversation/gnunet_gst_test.c | ||
67 | src/conversation/gnunet-helper-audio-playback.c | ||
68 | src/conversation/gnunet-helper-audio-playback-gst.c | 65 | src/conversation/gnunet-helper-audio-playback-gst.c |
69 | src/conversation/gnunet-helper-audio-record.c | 66 | src/conversation/gnunet-helper-audio-playback.c |
70 | src/conversation/gnunet-helper-audio-record-gst.c | 67 | src/conversation/gnunet-helper-audio-record-gst.c |
68 | src/conversation/gnunet-helper-audio-record.c | ||
71 | src/conversation/gnunet-service-conversation.c | 69 | src/conversation/gnunet-service-conversation.c |
70 | src/conversation/gnunet_gst.c | ||
71 | src/conversation/gnunet_gst_test.c | ||
72 | src/conversation/microphone.c | 72 | src/conversation/microphone.c |
73 | src/conversation/plugin_gnsrecord_conversation.c | 73 | src/conversation/plugin_gnsrecord_conversation.c |
74 | src/conversation/speaker.c | 74 | src/conversation/speaker.c |
@@ -99,13 +99,13 @@ src/dht/dht_test_lib.c | |||
99 | src/dht/gnunet-dht-get.c | 99 | src/dht/gnunet-dht-get.c |
100 | src/dht/gnunet-dht-hello.c | 100 | src/dht/gnunet-dht-hello.c |
101 | src/dht/gnunet-dht-monitor.c | 101 | src/dht/gnunet-dht-monitor.c |
102 | src/dht/gnunet_dht_profiler.c | ||
103 | src/dht/gnunet-dht-put.c | 102 | src/dht/gnunet-dht-put.c |
104 | src/dht/gnunet-service-dht.c | 103 | src/dht/gnunet-service-dht.c |
105 | src/dht/gnunet-service-dht_clients.c | 104 | src/dht/gnunet-service-dht_clients.c |
106 | src/dht/gnunet-service-dht_datacache.c | 105 | src/dht/gnunet-service-dht_datacache.c |
107 | src/dht/gnunet-service-dht_neighbours.c | 106 | src/dht/gnunet-service-dht_neighbours.c |
108 | src/dht/gnunet-service-dht_routing.c | 107 | src/dht/gnunet-service-dht_routing.c |
108 | src/dht/gnunet_dht_profiler.c | ||
109 | src/dht/plugin_block_dht.c | 109 | src/dht/plugin_block_dht.c |
110 | src/dhtu/plugin_dhtu_gnunet.c | 110 | src/dhtu/plugin_dhtu_gnunet.c |
111 | src/dhtu/plugin_dhtu_ip.c | 111 | src/dhtu/plugin_dhtu_ip.c |
@@ -143,8 +143,8 @@ src/fs/gnunet-auto-share.c | |||
143 | src/fs/gnunet-daemon-fsprofiler.c | 143 | src/fs/gnunet-daemon-fsprofiler.c |
144 | src/fs/gnunet-directory.c | 144 | src/fs/gnunet-directory.c |
145 | src/fs/gnunet-download.c | 145 | src/fs/gnunet-download.c |
146 | src/fs/gnunet-fs.c | ||
147 | src/fs/gnunet-fs-profiler.c | 146 | src/fs/gnunet-fs-profiler.c |
147 | src/fs/gnunet-fs.c | ||
148 | src/fs/gnunet-helper-fs-publish.c | 148 | src/fs/gnunet-helper-fs-publish.c |
149 | src/fs/gnunet-publish.c | 149 | src/fs/gnunet-publish.c |
150 | src/fs/gnunet-search.c | 150 | src/fs/gnunet-search.c |
@@ -164,9 +164,9 @@ src/gns/gns_tld_api.c | |||
164 | src/gns/gnunet-bcd.c | 164 | src/gns/gnunet-bcd.c |
165 | src/gns/gnunet-dns2gns.c | 165 | src/gns/gnunet-dns2gns.c |
166 | src/gns/gnunet-gns-benchmark.c | 166 | src/gns/gnunet-gns-benchmark.c |
167 | src/gns/gnunet-gns.c | ||
168 | src/gns/gnunet-gns-import.c | 167 | src/gns/gnunet-gns-import.c |
169 | src/gns/gnunet-gns-proxy.c | 168 | src/gns/gnunet-gns-proxy.c |
169 | src/gns/gnunet-gns.c | ||
170 | src/gns/gnunet-service-gns.c | 170 | src/gns/gnunet-service-gns.c |
171 | src/gns/gnunet-service-gns_interceptor.c | 171 | src/gns/gnunet-service-gns_interceptor.c |
172 | src/gns/gnunet-service-gns_resolver.c | 172 | src/gns/gnunet-service-gns_resolver.c |
@@ -184,9 +184,9 @@ src/gnsrecord/json_gnsrecord.c | |||
184 | src/gnsrecord/plugin_gnsrecord_dns.c | 184 | src/gnsrecord/plugin_gnsrecord_dns.c |
185 | src/hello/address.c | 185 | src/hello/address.c |
186 | src/hello/gnunet-hello.c | 186 | src/hello/gnunet-hello.c |
187 | src/hello/hello.c | ||
188 | src/hello/hello-ng.c | 187 | src/hello/hello-ng.c |
189 | src/hello/hello-uri.c | 188 | src/hello/hello-uri.c |
189 | src/hello/hello.c | ||
190 | src/hostlist/gnunet-daemon-hostlist.c | 190 | src/hostlist/gnunet-daemon-hostlist.c |
191 | src/hostlist/gnunet-daemon-hostlist_client.c | 191 | src/hostlist/gnunet-daemon-hostlist_client.c |
192 | src/hostlist/gnunet-daemon-hostlist_server.c | 192 | src/hostlist/gnunet-daemon-hostlist_server.c |
@@ -202,8 +202,8 @@ src/json/json_helper.c | |||
202 | src/json/json_mhd.c | 202 | src/json/json_mhd.c |
203 | src/json/json_pack.c | 203 | src/json/json_pack.c |
204 | src/messenger/gnunet-messenger.c | 204 | src/messenger/gnunet-messenger.c |
205 | src/messenger/gnunet-service-messenger_basement.c | ||
206 | src/messenger/gnunet-service-messenger.c | 205 | src/messenger/gnunet-service-messenger.c |
206 | src/messenger/gnunet-service-messenger_basement.c | ||
207 | src/messenger/gnunet-service-messenger_ego_store.c | 207 | src/messenger/gnunet-service-messenger_ego_store.c |
208 | src/messenger/gnunet-service-messenger_handle.c | 208 | src/messenger/gnunet-service-messenger_handle.c |
209 | src/messenger/gnunet-service-messenger_list_handles.c | 209 | src/messenger/gnunet-service-messenger_list_handles.c |
@@ -243,8 +243,8 @@ src/namecache/namecache_api.c | |||
243 | src/namecache/plugin_namecache_flat.c | 243 | src/namecache/plugin_namecache_flat.c |
244 | src/namecache/plugin_namecache_postgres.c | 244 | src/namecache/plugin_namecache_postgres.c |
245 | src/namecache/plugin_namecache_sqlite.c | 245 | src/namecache/plugin_namecache_sqlite.c |
246 | src/namestore/gnunet-namestore.c | ||
247 | src/namestore/gnunet-namestore-fcfsd.c | 246 | src/namestore/gnunet-namestore-fcfsd.c |
247 | src/namestore/gnunet-namestore.c | ||
248 | src/namestore/gnunet-service-namestore.c | 248 | src/namestore/gnunet-service-namestore.c |
249 | src/namestore/gnunet-zoneimport.c | 249 | src/namestore/gnunet-zoneimport.c |
250 | src/namestore/namestore_api.c | 250 | src/namestore/namestore_api.c |
@@ -270,17 +270,17 @@ src/nat/gnunet-service-nat_mini.c | |||
270 | src/nat/gnunet-service-nat_stun.c | 270 | src/nat/gnunet-service-nat_stun.c |
271 | src/nat/nat_api.c | 271 | src/nat/nat_api.c |
272 | src/nat/nat_api_stun.c | 272 | src/nat/nat_api_stun.c |
273 | src/nse/gnunet-nse.c | ||
274 | src/nse/gnunet-nse-profiler.c | 273 | src/nse/gnunet-nse-profiler.c |
274 | src/nse/gnunet-nse.c | ||
275 | src/nse/gnunet-service-nse.c | 275 | src/nse/gnunet-service-nse.c |
276 | src/nse/nse_api.c | 276 | src/nse/nse_api.c |
277 | src/nt/nt.c | 277 | src/nt/nt.c |
278 | src/peerinfo/gnunet-service-peerinfo.c | ||
279 | src/peerinfo/peerinfo_api.c | ||
280 | src/peerinfo/peerinfo_api_notify.c | ||
281 | src/peerinfo-tool/gnunet-peerinfo.c | 278 | src/peerinfo-tool/gnunet-peerinfo.c |
282 | src/peerinfo-tool/gnunet-peerinfo_plugins.c | 279 | src/peerinfo-tool/gnunet-peerinfo_plugins.c |
283 | src/peerinfo-tool/plugin_rest_peerinfo.c | 280 | src/peerinfo-tool/plugin_rest_peerinfo.c |
281 | src/peerinfo/gnunet-service-peerinfo.c | ||
282 | src/peerinfo/peerinfo_api.c | ||
283 | src/peerinfo/peerinfo_api_notify.c | ||
284 | src/peerstore/gnunet-peerstore.c | 284 | src/peerstore/gnunet-peerstore.c |
285 | src/peerstore/gnunet-service-peerstore.c | 285 | src/peerstore/gnunet-service-peerstore.c |
286 | src/peerstore/peerstore_api.c | 286 | src/peerstore/peerstore_api.c |
@@ -332,27 +332,27 @@ src/rest/gnunet-rest-server.c | |||
332 | src/rest/plugin_rest_config.c | 332 | src/rest/plugin_rest_config.c |
333 | src/rest/plugin_rest_copying.c | 333 | src/rest/plugin_rest_copying.c |
334 | src/rest/rest.c | 334 | src/rest/rest.c |
335 | src/revocation/gnunet-revocation.c | ||
336 | src/revocation/gnunet-revocation-tvg.c | 335 | src/revocation/gnunet-revocation-tvg.c |
336 | src/revocation/gnunet-revocation.c | ||
337 | src/revocation/gnunet-service-revocation.c | 337 | src/revocation/gnunet-service-revocation.c |
338 | src/revocation/plugin_block_revocation.c | 338 | src/revocation/plugin_block_revocation.c |
339 | src/revocation/revocation_api.c | 339 | src/revocation/revocation_api.c |
340 | src/rps/gnunet-rps.c | ||
341 | src/rps/gnunet-rps-profiler.c | 340 | src/rps/gnunet-rps-profiler.c |
341 | src/rps/gnunet-rps.c | ||
342 | src/rps/gnunet-service-rps.c | 342 | src/rps/gnunet-service-rps.c |
343 | src/rps/gnunet-service-rps_custommap.c | 343 | src/rps/gnunet-service-rps_custommap.c |
344 | src/rps/gnunet-service-rps_sampler.c | 344 | src/rps/gnunet-service-rps_sampler.c |
345 | src/rps/gnunet-service-rps_sampler_elem.c | 345 | src/rps/gnunet-service-rps_sampler_elem.c |
346 | src/rps/gnunet-service-rps_view.c | 346 | src/rps/gnunet-service-rps_view.c |
347 | src/rps/rps_api.c | ||
348 | src/rps/rps-sampler_client.c | 347 | src/rps/rps-sampler_client.c |
349 | src/rps/rps-sampler_common.c | 348 | src/rps/rps-sampler_common.c |
350 | src/rps/rps-test_util.c | 349 | src/rps/rps-test_util.c |
350 | src/rps/rps_api.c | ||
351 | src/scalarproduct/gnunet-scalarproduct.c | 351 | src/scalarproduct/gnunet-scalarproduct.c |
352 | src/scalarproduct/gnunet-service-scalarproduct_alice.c | ||
353 | src/scalarproduct/gnunet-service-scalarproduct_bob.c | ||
354 | src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c | 352 | src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c |
355 | src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c | 353 | src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c |
354 | src/scalarproduct/gnunet-service-scalarproduct_alice.c | ||
355 | src/scalarproduct/gnunet-service-scalarproduct_bob.c | ||
356 | src/scalarproduct/scalarproduct_api.c | 356 | src/scalarproduct/scalarproduct_api.c |
357 | src/secretsharing/gnunet-secretsharing-profiler.c | 357 | src/secretsharing/gnunet-secretsharing-profiler.c |
358 | src/secretsharing/gnunet-service-secretsharing.c | 358 | src/secretsharing/gnunet-service-secretsharing.c |
@@ -366,12 +366,12 @@ src/set/gnunet-set-ibf-profiler.c | |||
366 | src/set/gnunet-set-profiler.c | 366 | src/set/gnunet-set-profiler.c |
367 | src/set/ibf.c | 367 | src/set/ibf.c |
368 | src/set/ibf_sim.c | 368 | src/set/ibf_sim.c |
369 | src/set/plugin_block_set_test.c | ||
370 | src/set/set_api.c | ||
369 | src/seti/gnunet-service-seti.c | 371 | src/seti/gnunet-service-seti.c |
370 | src/seti/gnunet-seti-profiler.c | 372 | src/seti/gnunet-seti-profiler.c |
371 | src/seti/plugin_block_seti_test.c | 373 | src/seti/plugin_block_seti_test.c |
372 | src/seti/seti_api.c | 374 | src/seti/seti_api.c |
373 | src/set/plugin_block_set_test.c | ||
374 | src/set/set_api.c | ||
375 | src/setu/gnunet-service-setu.c | 375 | src/setu/gnunet-service-setu.c |
376 | src/setu/gnunet-service-setu_strata_estimator.c | 376 | src/setu/gnunet-service-setu_strata_estimator.c |
377 | src/setu/gnunet-setu-ibf-profiler.c | 377 | src/setu/gnunet-setu-ibf-profiler.c |
@@ -390,15 +390,16 @@ src/statistics/gnunet-statistics.c | |||
390 | src/statistics/statistics_api.c | 390 | src/statistics/statistics_api.c |
391 | src/template/gnunet-service-template.c | 391 | src/template/gnunet-service-template.c |
392 | src/template/gnunet-template.c | 392 | src/template/gnunet-template.c |
393 | src/testbed-logger/gnunet-service-testbed-logger.c | ||
394 | src/testbed-logger/testbed_logger_api.c | ||
393 | src/testbed/generate-underlay-topology.c | 395 | src/testbed/generate-underlay-topology.c |
394 | src/testbed/gnunet-daemon-latency-logger.c | 396 | src/testbed/gnunet-daemon-latency-logger.c |
395 | src/testbed/gnunet-daemon-testbed-blacklist.c | 397 | src/testbed/gnunet-daemon-testbed-blacklist.c |
396 | src/testbed/gnunet-daemon-testbed-underlay.c | 398 | src/testbed/gnunet-daemon-testbed-underlay.c |
397 | src/testbed/gnunet-helper-testbed.c | 399 | src/testbed/gnunet-helper-testbed.c |
398 | src/testbed/gnunet_mpi_test.c | ||
399 | src/testbed/gnunet-service-test-barriers.c | 400 | src/testbed/gnunet-service-test-barriers.c |
400 | src/testbed/gnunet-service-testbed_barriers.c | ||
401 | src/testbed/gnunet-service-testbed.c | 401 | src/testbed/gnunet-service-testbed.c |
402 | src/testbed/gnunet-service-testbed_barriers.c | ||
402 | src/testbed/gnunet-service-testbed_cache.c | 403 | src/testbed/gnunet-service-testbed_cache.c |
403 | src/testbed/gnunet-service-testbed_connectionpool.c | 404 | src/testbed/gnunet-service-testbed_connectionpool.c |
404 | src/testbed/gnunet-service-testbed_cpustatus.c | 405 | src/testbed/gnunet-service-testbed_cpustatus.c |
@@ -407,23 +408,23 @@ src/testbed/gnunet-service-testbed_meminfo.c | |||
407 | src/testbed/gnunet-service-testbed_oc.c | 408 | src/testbed/gnunet-service-testbed_oc.c |
408 | src/testbed/gnunet-service-testbed_peers.c | 409 | src/testbed/gnunet-service-testbed_peers.c |
409 | src/testbed/gnunet-testbed-profiler.c | 410 | src/testbed/gnunet-testbed-profiler.c |
410 | src/testbed-logger/gnunet-service-testbed-logger.c | 411 | src/testbed/gnunet_mpi_test.c |
411 | src/testbed-logger/testbed_logger_api.c | ||
412 | src/testbed/testbed_api_barriers.c | ||
413 | src/testbed/testbed_api.c | 412 | src/testbed/testbed_api.c |
413 | src/testbed/testbed_api_barriers.c | ||
414 | src/testbed/testbed_api_hosts.c | 414 | src/testbed/testbed_api_hosts.c |
415 | src/testbed/testbed_api_operations.c | 415 | src/testbed/testbed_api_operations.c |
416 | src/testbed/testbed_api_peers.c | 416 | src/testbed/testbed_api_peers.c |
417 | src/testbed/testbed_api_sd.c | 417 | src/testbed/testbed_api_sd.c |
418 | src/testbed/testbed_api_services.c | 418 | src/testbed/testbed_api_services.c |
419 | src/testbed/testbed_api_statistics.c | 419 | src/testbed/testbed_api_statistics.c |
420 | src/testbed/testbed_api_testbed.c | ||
421 | src/testbed/testbed_api_test.c | 420 | src/testbed/testbed_api_test.c |
421 | src/testbed/testbed_api_testbed.c | ||
422 | src/testbed/testbed_api_topology.c | 422 | src/testbed/testbed_api_topology.c |
423 | src/testbed/testbed_api_underlay.c | 423 | src/testbed/testbed_api_underlay.c |
424 | src/testing/gnunet-cmds-helper.c | 424 | src/testing/gnunet-cmds-helper.c |
425 | src/testing/gnunet-testing.c | 425 | src/testing/gnunet-testing.c |
426 | src/testing/list-keys.c | 426 | src/testing/list-keys.c |
427 | src/testing/testing.c | ||
427 | src/testing/testing_api_cmd_batch.c | 428 | src/testing/testing_api_cmd_batch.c |
428 | src/testing/testing_api_cmd_block_until_external_trigger.c | 429 | src/testing/testing_api_cmd_block_until_external_trigger.c |
429 | src/testing/testing_api_cmd_end.c | 430 | src/testing/testing_api_cmd_end.c |
@@ -439,41 +440,51 @@ src/testing/testing_api_cmd_system_create.c | |||
439 | src/testing/testing_api_cmd_system_destroy.c | 440 | src/testing/testing_api_cmd_system_destroy.c |
440 | src/testing/testing_api_loop.c | 441 | src/testing/testing_api_loop.c |
441 | src/testing/testing_api_traits.c | 442 | src/testing/testing_api_traits.c |
442 | src/testing/testing.c | ||
443 | src/topology/friends.c | 443 | src/topology/friends.c |
444 | src/topology/gnunet-daemon-topology.c | 444 | src/topology/gnunet-daemon-topology.c |
445 | src/transport/gnunet-communicator-tcp.c | 445 | src/transport/gnunet-communicator-tcp.c |
446 | src/transport/gnunet-communicator-udp.c | 446 | src/transport/gnunet-communicator-udp.c |
447 | src/transport/gnunet-communicator-unix.c | 447 | src/transport/gnunet-communicator-unix.c |
448 | src/transport/gnunet-helper-transport-bluetooth.c | 448 | src/transport/gnunet-helper-transport-bluetooth.c |
449 | src/transport/gnunet-helper-transport-wlan.c | ||
450 | src/transport/gnunet-helper-transport-wlan-dummy.c | 449 | src/transport/gnunet-helper-transport-wlan-dummy.c |
450 | src/transport/gnunet-helper-transport-wlan.c | ||
451 | src/transport/gnunet-service-tng.c | 451 | src/transport/gnunet-service-tng.c |
452 | src/transport/gnunet-service-transport_ats.c | ||
453 | src/transport/gnunet-service-transport.c | 452 | src/transport/gnunet-service-transport.c |
453 | src/transport/gnunet-service-transport_ats.c | ||
454 | src/transport/gnunet-service-transport_hello.c | 454 | src/transport/gnunet-service-transport_hello.c |
455 | src/transport/gnunet-service-transport_manipulation.c | 455 | src/transport/gnunet-service-transport_manipulation.c |
456 | src/transport/gnunet-service-transport_neighbours.c | 456 | src/transport/gnunet-service-transport_neighbours.c |
457 | src/transport/gnunet-service-transport_plugins.c | 457 | src/transport/gnunet-service-transport_plugins.c |
458 | src/transport/gnunet-service-transport_validation.c | 458 | src/transport/gnunet-service-transport_validation.c |
459 | src/transport/gnunet-transport.c | ||
460 | src/transport/gnunet-transport-profiler.c | 459 | src/transport/gnunet-transport-profiler.c |
461 | src/transport/gnunet-transport-wlan-receiver.c | 460 | src/transport/gnunet-transport-wlan-receiver.c |
462 | src/transport/gnunet-transport-wlan-sender.c | 461 | src/transport/gnunet-transport-wlan-sender.c |
462 | src/transport/gnunet-transport.c | ||
463 | src/transport/plugin_transport_http_client.c | 463 | src/transport/plugin_transport_http_client.c |
464 | src/transport/plugin_transport_http_common.c | 464 | src/transport/plugin_transport_http_common.c |
465 | src/transport/plugin_transport_http_server.c | 465 | src/transport/plugin_transport_http_server.c |
466 | src/transport/plugin_transport_smtp.c | 466 | src/transport/plugin_transport_smtp.c |
467 | src/transport/plugin_transport_tcp.c | 467 | src/transport/plugin_transport_tcp.c |
468 | src/transport/plugin_transport_template.c | 468 | src/transport/plugin_transport_template.c |
469 | src/transport/plugin_transport_udp_broadcasting.c | ||
470 | src/transport/plugin_transport_udp.c | 469 | src/transport/plugin_transport_udp.c |
470 | src/transport/plugin_transport_udp_broadcasting.c | ||
471 | src/transport/plugin_transport_unix.c | 471 | src/transport/plugin_transport_unix.c |
472 | src/transport/plugin_transport_wlan.c | 472 | src/transport/plugin_transport_wlan.c |
473 | src/transport/tcp_connection_legacy.c | 473 | src/transport/tcp_connection_legacy.c |
474 | src/transport/tcp_server_legacy.c | 474 | src/transport/tcp_server_legacy.c |
475 | src/transport/tcp_server_mst_legacy.c | 475 | src/transport/tcp_server_mst_legacy.c |
476 | src/transport/tcp_service_legacy.c | 476 | src/transport/tcp_service_legacy.c |
477 | src/transport/transport-testing-communicator.c | ||
478 | src/transport/transport-testing-filenames.c | ||
479 | src/transport/transport-testing-filenames2.c | ||
480 | src/transport/transport-testing-loggers.c | ||
481 | src/transport/transport-testing-loggers2.c | ||
482 | src/transport/transport-testing-main.c | ||
483 | src/transport/transport-testing-main2.c | ||
484 | src/transport/transport-testing-send.c | ||
485 | src/transport/transport-testing-send2.c | ||
486 | src/transport/transport-testing.c | ||
487 | src/transport/transport-testing2.c | ||
477 | src/transport/transport_api2_application.c | 488 | src/transport/transport_api2_application.c |
478 | src/transport/transport_api2_communication.c | 489 | src/transport/transport_api2_communication.c |
479 | src/transport/transport_api2_core.c | 490 | src/transport/transport_api2_core.c |
@@ -492,17 +503,6 @@ src/transport/transport_api_monitor_peers.c | |||
492 | src/transport/transport_api_monitor_plugins.c | 503 | src/transport/transport_api_monitor_plugins.c |
493 | src/transport/transport_api_offer_hello.c | 504 | src/transport/transport_api_offer_hello.c |
494 | src/transport/transport_api_traits.c | 505 | src/transport/transport_api_traits.c |
495 | src/transport/transport-testing2.c | ||
496 | src/transport/transport-testing.c | ||
497 | src/transport/transport-testing-communicator.c | ||
498 | src/transport/transport-testing-filenames2.c | ||
499 | src/transport/transport-testing-filenames.c | ||
500 | src/transport/transport-testing-loggers2.c | ||
501 | src/transport/transport-testing-loggers.c | ||
502 | src/transport/transport-testing-main2.c | ||
503 | src/transport/transport-testing-main.c | ||
504 | src/transport/transport-testing-send2.c | ||
505 | src/transport/transport-testing-send.c | ||
506 | src/util/bandwidth.c | 506 | src/util/bandwidth.c |
507 | src/util/benchmark.c | 507 | src/util/benchmark.c |
508 | src/util/bio.c | 508 | src/util/bio.c |
@@ -518,8 +518,8 @@ src/util/consttime_memcmp.c | |||
518 | src/util/container_bloomfilter.c | 518 | src/util/container_bloomfilter.c |
519 | src/util/container_heap.c | 519 | src/util/container_heap.c |
520 | src/util/container_meta_data.c | 520 | src/util/container_meta_data.c |
521 | src/util/container_multihashmap32.c | ||
522 | src/util/container_multihashmap.c | 521 | src/util/container_multihashmap.c |
522 | src/util/container_multihashmap32.c | ||
523 | src/util/container_multipeermap.c | 523 | src/util/container_multipeermap.c |
524 | src/util/container_multishortmap.c | 524 | src/util/container_multishortmap.c |
525 | src/util/container_multiuuidmap.c | 525 | src/util/container_multiuuidmap.c |
@@ -530,6 +530,7 @@ src/util/crypto_ecc.c | |||
530 | src/util/crypto_ecc_dlog.c | 530 | src/util/crypto_ecc_dlog.c |
531 | src/util/crypto_ecc_gnsrecord.c | 531 | src/util/crypto_ecc_gnsrecord.c |
532 | src/util/crypto_ecc_setup.c | 532 | src/util/crypto_ecc_setup.c |
533 | src/util/crypto_edx25519.c | ||
533 | src/util/crypto_hash.c | 534 | src/util/crypto_hash.c |
534 | src/util/crypto_hash_file.c | 535 | src/util/crypto_hash_file.c |
535 | src/util/crypto_hkdf.c | 536 | src/util/crypto_hkdf.c |
@@ -546,8 +547,8 @@ src/util/dnsstub.c | |||
546 | src/util/getopt.c | 547 | src/util/getopt.c |
547 | src/util/getopt_helpers.c | 548 | src/util/getopt_helpers.c |
548 | src/util/gnunet-base32.c | 549 | src/util/gnunet-base32.c |
549 | src/util/gnunet-config.c | ||
550 | src/util/gnunet-config-diff.c | 550 | src/util/gnunet-config-diff.c |
551 | src/util/gnunet-config.c | ||
551 | src/util/gnunet-crypto-tvg.c | 552 | src/util/gnunet-crypto-tvg.c |
552 | src/util/gnunet-ecc.c | 553 | src/util/gnunet-ecc.c |
553 | src/util/gnunet-qr.c | 554 | src/util/gnunet-qr.c |
@@ -585,8 +586,8 @@ src/vpn/gnunet-helper-vpn.c | |||
585 | src/vpn/gnunet-service-vpn.c | 586 | src/vpn/gnunet-service-vpn.c |
586 | src/vpn/gnunet-vpn.c | 587 | src/vpn/gnunet-vpn.c |
587 | src/vpn/vpn_api.c | 588 | src/vpn/vpn_api.c |
588 | src/zonemaster/gnunet-service-zonemaster.c | ||
589 | src/zonemaster/gnunet-service-zonemaster-monitor.c | 589 | src/zonemaster/gnunet-service-zonemaster-monitor.c |
590 | src/zonemaster/gnunet-service-zonemaster.c | ||
590 | src/fs/fs_api.h | 591 | src/fs/fs_api.h |
591 | src/include/gnunet_json_lib.h | 592 | src/include/gnunet_json_lib.h |
592 | src/testbed/testbed_api.h | 593 | src/testbed/testbed_api.h |
@@ -10,7 +10,7 @@ msgid "" | |||
10 | msgstr "" | 10 | msgstr "" |
11 | "Project-Id-Version: gnunet 0.10.1\n" | 11 | "Project-Id-Version: gnunet 0.10.1\n" |
12 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" | 12 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" |
13 | "POT-Creation-Date: 2022-03-04 22:23+0100\n" | 13 | "POT-Creation-Date: 2022-04-01 08:42+0200\n" |
14 | "PO-Revision-Date: 2015-03-08 16:16+0100\n" | 14 | "PO-Revision-Date: 2015-03-08 16:16+0100\n" |
15 | "Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n" | 15 | "Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n" |
16 | "Language-Team: German <translation-team-de@lists.sourceforge.net>\n" | 16 | "Language-Team: German <translation-team-de@lists.sourceforge.net>\n" |
@@ -21,7 +21,7 @@ msgstr "" | |||
21 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" | 21 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" |
22 | "X-Generator: Poedit 1.7.4\n" | 22 | "X-Generator: Poedit 1.7.4\n" |
23 | 23 | ||
24 | #: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1254 | 24 | #: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1245 |
25 | #, fuzzy, c-format | 25 | #, fuzzy, c-format |
26 | msgid "Ego `%s' not known to identity service\n" | 26 | msgid "Ego `%s' not known to identity service\n" |
27 | msgstr "`%s': unbekannter Dienst: %s\n" | 27 | msgstr "`%s': unbekannter Dienst: %s\n" |
@@ -2103,21 +2103,6 @@ msgstr "" | |||
2103 | msgid "Measure quality and performance of the DHT service." | 2103 | msgid "Measure quality and performance of the DHT service." |
2104 | msgstr "" | 2104 | msgstr "" |
2105 | 2105 | ||
2106 | #: src/dht/plugin_block_dht.c:404 | ||
2107 | #, fuzzy, c-format | ||
2108 | msgid "Block not of type %u\n" | ||
2109 | msgstr "Kein Transport des Typs %d bekannt.\n" | ||
2110 | |||
2111 | #: src/dht/plugin_block_dht.c:413 | ||
2112 | #, c-format | ||
2113 | msgid "Size mismatch for block with type %u\n" | ||
2114 | msgstr "" | ||
2115 | |||
2116 | #: src/dht/plugin_block_dht.c:424 | ||
2117 | #, c-format | ||
2118 | msgid "Block of type %u is malformed\n" | ||
2119 | msgstr "" | ||
2120 | |||
2121 | #: src/dns/gnunet-dns-monitor.c:371 src/dns/gnunet-dns-monitor.c:376 | 2106 | #: src/dns/gnunet-dns-monitor.c:371 src/dns/gnunet-dns-monitor.c:376 |
2122 | msgid "only monitor DNS queries" | 2107 | msgid "only monitor DNS queries" |
2123 | msgstr "" | 2108 | msgstr "" |
@@ -2850,20 +2835,20 @@ msgstr "" | |||
2850 | msgid "LOC URI malformed (signature failed validation)" | 2835 | msgid "LOC URI malformed (signature failed validation)" |
2851 | msgstr "" | 2836 | msgstr "" |
2852 | 2837 | ||
2853 | #: src/fs/fs_uri.c:652 | 2838 | #: src/fs/fs_uri.c:653 |
2854 | #, fuzzy | 2839 | #, fuzzy |
2855 | msgid "invalid argument" | 2840 | msgid "invalid argument" |
2856 | msgstr "Ungültiges Argument »%s«\n" | 2841 | msgstr "Ungültiges Argument »%s«\n" |
2857 | 2842 | ||
2858 | #: src/fs/fs_uri.c:671 | 2843 | #: src/fs/fs_uri.c:673 |
2859 | msgid "Unrecognized URI type" | 2844 | msgid "Unrecognized URI type" |
2860 | msgstr "" | 2845 | msgstr "" |
2861 | 2846 | ||
2862 | #: src/fs/fs_uri.c:1075 src/fs/fs_uri.c:1102 | 2847 | #: src/fs/fs_uri.c:1077 src/fs/fs_uri.c:1104 |
2863 | msgid "No keywords specified!\n" | 2848 | msgid "No keywords specified!\n" |
2864 | msgstr "Keine Schlüsselwörter angegeben!\n" | 2849 | msgstr "Keine Schlüsselwörter angegeben!\n" |
2865 | 2850 | ||
2866 | #: src/fs/fs_uri.c:1108 | 2851 | #: src/fs/fs_uri.c:1110 |
2867 | msgid "Number of double-quotes not balanced!\n" | 2852 | msgid "Number of double-quotes not balanced!\n" |
2868 | msgstr "" | 2853 | msgstr "" |
2869 | 2854 | ||
@@ -3606,99 +3591,99 @@ msgstr "# dht Anfragen weitergeleitet" | |||
3606 | msgid "# query plan entries" | 3591 | msgid "# query plan entries" |
3607 | msgstr "" | 3592 | msgstr "" |
3608 | 3593 | ||
3609 | #: src/fs/gnunet-service-fs_pr.c:329 | 3594 | #: src/fs/gnunet-service-fs_pr.c:330 |
3610 | #, fuzzy | 3595 | #, fuzzy |
3611 | msgid "# Pending requests created" | 3596 | msgid "# Pending requests created" |
3612 | msgstr "# dht Anfragen weitergeleitet" | 3597 | msgstr "# dht Anfragen weitergeleitet" |
3613 | 3598 | ||
3614 | #: src/fs/gnunet-service-fs_pr.c:421 src/fs/gnunet-service-fs_pr.c:658 | 3599 | #: src/fs/gnunet-service-fs_pr.c:422 src/fs/gnunet-service-fs_pr.c:662 |
3615 | #, fuzzy | 3600 | #, fuzzy |
3616 | msgid "# Pending requests active" | 3601 | msgid "# Pending requests active" |
3617 | msgstr "# Client Trace-Anfragen empfangen" | 3602 | msgstr "# Client Trace-Anfragen empfangen" |
3618 | 3603 | ||
3619 | #: src/fs/gnunet-service-fs_pr.c:838 | 3604 | #: src/fs/gnunet-service-fs_pr.c:837 |
3620 | #, fuzzy | 3605 | #, fuzzy |
3621 | msgid "# replies received and matched" | 3606 | msgid "# replies received and matched" |
3622 | msgstr "# Bytes empfangen über TCP" | 3607 | msgstr "# Bytes empfangen über TCP" |
3623 | 3608 | ||
3624 | #: src/fs/gnunet-service-fs_pr.c:916 | 3609 | #: src/fs/gnunet-service-fs_pr.c:911 |
3625 | msgid "# results found locally" | 3610 | msgid "# results found locally" |
3626 | msgstr "" | 3611 | msgstr "" |
3627 | 3612 | ||
3628 | #: src/fs/gnunet-service-fs_pr.c:1050 | 3613 | #: src/fs/gnunet-service-fs_pr.c:1045 |
3629 | msgid "# Datastore `PUT' failures" | 3614 | msgid "# Datastore `PUT' failures" |
3630 | msgstr "" | 3615 | msgstr "" |
3631 | 3616 | ||
3632 | #: src/fs/gnunet-service-fs_pr.c:1079 | 3617 | #: src/fs/gnunet-service-fs_pr.c:1074 |
3633 | #, fuzzy | 3618 | #, fuzzy |
3634 | msgid "# storage requests dropped due to high load" | 3619 | msgid "# storage requests dropped due to high load" |
3635 | msgstr "# Knotenankündigungen empfangen" | 3620 | msgstr "# Knotenankündigungen empfangen" |
3636 | 3621 | ||
3637 | #: src/fs/gnunet-service-fs_pr.c:1118 | 3622 | #: src/fs/gnunet-service-fs_pr.c:1113 |
3638 | #, fuzzy | 3623 | #, fuzzy |
3639 | msgid "# Replies received from DHT" | 3624 | msgid "# Replies received from DHT" |
3640 | msgstr "# Bytes empfangen über HTTP" | 3625 | msgstr "# Bytes empfangen über HTTP" |
3641 | 3626 | ||
3642 | #: src/fs/gnunet-service-fs_pr.c:1259 | 3627 | #: src/fs/gnunet-service-fs_pr.c:1268 |
3643 | #, fuzzy | 3628 | #, fuzzy |
3644 | msgid "# Replies received from CADET" | 3629 | msgid "# Replies received from CADET" |
3645 | msgstr "# Bytes empfangen über HTTP" | 3630 | msgstr "# Bytes empfangen über HTTP" |
3646 | 3631 | ||
3647 | #: src/fs/gnunet-service-fs_pr.c:1313 | 3632 | #: src/fs/gnunet-service-fs_pr.c:1323 |
3648 | #, c-format | 3633 | #, c-format |
3649 | msgid "Datastore lookup already took %s!\n" | 3634 | msgid "Datastore lookup already took %s!\n" |
3650 | msgstr "" | 3635 | msgstr "" |
3651 | 3636 | ||
3652 | #: src/fs/gnunet-service-fs_pr.c:1334 | 3637 | #: src/fs/gnunet-service-fs_pr.c:1344 |
3653 | #, c-format | 3638 | #, c-format |
3654 | msgid "On-demand lookup already took %s!\n" | 3639 | msgid "On-demand lookup already took %s!\n" |
3655 | msgstr "" | 3640 | msgstr "" |
3656 | 3641 | ||
3657 | #: src/fs/gnunet-service-fs_pr.c:1401 | 3642 | #: src/fs/gnunet-service-fs_pr.c:1411 |
3658 | msgid "# requested DBLOCK or IBLOCK not found" | 3643 | msgid "# requested DBLOCK or IBLOCK not found" |
3659 | msgstr "" | 3644 | msgstr "" |
3660 | 3645 | ||
3661 | #: src/fs/gnunet-service-fs_pr.c:1463 | 3646 | #: src/fs/gnunet-service-fs_pr.c:1473 |
3662 | msgid "# Datastore lookups concluded (error queueing)" | 3647 | msgid "# Datastore lookups concluded (error queueing)" |
3663 | msgstr "" | 3648 | msgstr "" |
3664 | 3649 | ||
3665 | #: src/fs/gnunet-service-fs_pr.c:1518 | 3650 | #: src/fs/gnunet-service-fs_pr.c:1528 |
3666 | msgid "# Datastore lookups concluded (no results)" | 3651 | msgid "# Datastore lookups concluded (no results)" |
3667 | msgstr "" | 3652 | msgstr "" |
3668 | 3653 | ||
3669 | #: src/fs/gnunet-service-fs_pr.c:1533 | 3654 | #: src/fs/gnunet-service-fs_pr.c:1543 |
3670 | msgid "# Datastore lookups concluded (seen all)" | 3655 | msgid "# Datastore lookups concluded (seen all)" |
3671 | msgstr "" | 3656 | msgstr "" |
3672 | 3657 | ||
3673 | #: src/fs/gnunet-service-fs_pr.c:1556 | 3658 | #: src/fs/gnunet-service-fs_pr.c:1566 |
3674 | msgid "# Datastore lookups aborted (more than MAX_RESULTS)" | 3659 | msgid "# Datastore lookups aborted (more than MAX_RESULTS)" |
3675 | msgstr "" | 3660 | msgstr "" |
3676 | 3661 | ||
3677 | #: src/fs/gnunet-service-fs_pr.c:1573 | 3662 | #: src/fs/gnunet-service-fs_pr.c:1583 |
3678 | msgid "# on-demand blocks matched requests" | 3663 | msgid "# on-demand blocks matched requests" |
3679 | msgstr "" | 3664 | msgstr "" |
3680 | 3665 | ||
3681 | #: src/fs/gnunet-service-fs_pr.c:1594 | 3666 | #: src/fs/gnunet-service-fs_pr.c:1604 |
3682 | msgid "# on-demand lookups performed successfully" | 3667 | msgid "# on-demand lookups performed successfully" |
3683 | msgstr "" | 3668 | msgstr "" |
3684 | 3669 | ||
3685 | #: src/fs/gnunet-service-fs_pr.c:1600 | 3670 | #: src/fs/gnunet-service-fs_pr.c:1610 |
3686 | msgid "# on-demand lookups failed" | 3671 | msgid "# on-demand lookups failed" |
3687 | msgstr "" | 3672 | msgstr "" |
3688 | 3673 | ||
3689 | #: src/fs/gnunet-service-fs_pr.c:1641 | 3674 | #: src/fs/gnunet-service-fs_pr.c:1656 |
3690 | msgid "# Datastore lookups concluded (found last result)" | 3675 | msgid "# Datastore lookups concluded (found last result)" |
3691 | msgstr "" | 3676 | msgstr "" |
3692 | 3677 | ||
3693 | #: src/fs/gnunet-service-fs_pr.c:1654 | 3678 | #: src/fs/gnunet-service-fs_pr.c:1669 |
3694 | msgid "# Datastore lookups concluded (load too high)" | 3679 | msgid "# Datastore lookups concluded (load too high)" |
3695 | msgstr "" | 3680 | msgstr "" |
3696 | 3681 | ||
3697 | #: src/fs/gnunet-service-fs_pr.c:1705 | 3682 | #: src/fs/gnunet-service-fs_pr.c:1720 |
3698 | msgid "# Datastore lookups initiated" | 3683 | msgid "# Datastore lookups initiated" |
3699 | msgstr "" | 3684 | msgstr "" |
3700 | 3685 | ||
3701 | #: src/fs/gnunet-service-fs_pr.c:1755 | 3686 | #: src/fs/gnunet-service-fs_pr.c:1784 |
3702 | #, fuzzy | 3687 | #, fuzzy |
3703 | msgid "# GAP PUT messages received" | 3688 | msgid "# GAP PUT messages received" |
3704 | msgstr "# verschlüsselter PONG Nachrichten empfangen" | 3689 | msgstr "# verschlüsselter PONG Nachrichten empfangen" |
@@ -4016,65 +4001,65 @@ msgstr "Fehler beim Konvertieren von Parametern in URI!\n" | |||
4016 | msgid "Failed to connect to the DNS service!\n" | 4001 | msgid "Failed to connect to the DNS service!\n" |
4017 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" | 4002 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" |
4018 | 4003 | ||
4019 | #: src/gns/gnunet-service-gns_resolver.c:659 | 4004 | #: src/gns/gnunet-service-gns_resolver.c:672 |
4020 | #, c-format | 4005 | #, c-format |
4021 | msgid "Protocol `%s' unknown, skipping labels.\n" | 4006 | msgid "Protocol `%s' unknown, skipping labels.\n" |
4022 | msgstr "" | 4007 | msgstr "" |
4023 | 4008 | ||
4024 | #: src/gns/gnunet-service-gns_resolver.c:671 | 4009 | #: src/gns/gnunet-service-gns_resolver.c:684 |
4025 | #, c-format | 4010 | #, c-format |
4026 | msgid "Service `%s' unknown for protocol `%s', trying as number.\n" | 4011 | msgid "Service `%s' unknown for protocol `%s', trying as number.\n" |
4027 | msgstr "" | 4012 | msgstr "" |
4028 | 4013 | ||
4029 | #: src/gns/gnunet-service-gns_resolver.c:677 | 4014 | #: src/gns/gnunet-service-gns_resolver.c:690 |
4030 | #, fuzzy, c-format | 4015 | #, fuzzy, c-format |
4031 | msgid "Service `%s' not a port, skipping service labels.\n" | 4016 | msgid "Service `%s' not a port, skipping service labels.\n" |
4032 | msgstr "Kommando `%s' wurde nicht gefunden!\n" | 4017 | msgstr "Kommando `%s' wurde nicht gefunden!\n" |
4033 | 4018 | ||
4034 | #: src/gns/gnunet-service-gns_resolver.c:891 | 4019 | #: src/gns/gnunet-service-gns_resolver.c:904 |
4035 | #, fuzzy | 4020 | #, fuzzy |
4036 | msgid "Failed to parse DNS response\n" | 4021 | msgid "Failed to parse DNS response\n" |
4037 | msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n" | 4022 | msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n" |
4038 | 4023 | ||
4039 | #: src/gns/gnunet-service-gns_resolver.c:1082 | 4024 | #: src/gns/gnunet-service-gns_resolver.c:1095 |
4040 | #, c-format | 4025 | #, c-format |
4041 | msgid "Skipping record of unsupported type %d\n" | 4026 | msgid "Skipping record of unsupported type %d\n" |
4042 | msgstr "" | 4027 | msgstr "" |
4043 | 4028 | ||
4044 | #: src/gns/gnunet-service-gns_resolver.c:1859 | 4029 | #: src/gns/gnunet-service-gns_resolver.c:1872 |
4045 | #, c-format | 4030 | #, c-format |
4046 | msgid "Name `%s' cannot be converted to IDNA." | 4031 | msgid "Name `%s' cannot be converted to IDNA." |
4047 | msgstr "" | 4032 | msgstr "" |
4048 | 4033 | ||
4049 | #: src/gns/gnunet-service-gns_resolver.c:1874 | 4034 | #: src/gns/gnunet-service-gns_resolver.c:1887 |
4050 | #, c-format | 4035 | #, c-format |
4051 | msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" | 4036 | msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" |
4052 | msgstr "" | 4037 | msgstr "" |
4053 | 4038 | ||
4054 | #: src/gns/gnunet-service-gns_resolver.c:1914 | 4039 | #: src/gns/gnunet-service-gns_resolver.c:1927 |
4055 | #, fuzzy, c-format | 4040 | #, fuzzy, c-format |
4056 | msgid "GNS lookup failed (zero records found for `%s')\n" | 4041 | msgid "GNS lookup failed (zero records found for `%s')\n" |
4057 | msgstr "Dienst `%s' konnte nicht ordentlich entladen werden!\n" | 4042 | msgstr "Dienst `%s' konnte nicht ordentlich entladen werden!\n" |
4058 | 4043 | ||
4059 | #: src/gns/gnunet-service-gns_resolver.c:2312 | 4044 | #: src/gns/gnunet-service-gns_resolver.c:2329 |
4060 | msgid "Unable to process critical delegation record\n" | 4045 | msgid "Unable to process critical delegation record\n" |
4061 | msgstr "" | 4046 | msgstr "" |
4062 | 4047 | ||
4063 | #: src/gns/gnunet-service-gns_resolver.c:2317 | 4048 | #: src/gns/gnunet-service-gns_resolver.c:2334 |
4064 | msgid "GNS lookup recursion failed (no delegation record found)\n" | 4049 | msgid "GNS lookup recursion failed (no delegation record found)\n" |
4065 | msgstr "" | 4050 | msgstr "" |
4066 | 4051 | ||
4067 | #: src/gns/gnunet-service-gns_resolver.c:2340 | 4052 | #: src/gns/gnunet-service-gns_resolver.c:2357 |
4068 | #, fuzzy, c-format | 4053 | #, fuzzy, c-format |
4069 | msgid "Failed to cache GNS resolution: %s\n" | 4054 | msgid "Failed to cache GNS resolution: %s\n" |
4070 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" | 4055 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" |
4071 | 4056 | ||
4072 | #: src/gns/gnunet-service-gns_resolver.c:2505 | 4057 | #: src/gns/gnunet-service-gns_resolver.c:2522 |
4073 | #, c-format | 4058 | #, c-format |
4074 | msgid "GNS namecache returned empty result for `%s'\n" | 4059 | msgid "GNS namecache returned empty result for `%s'\n" |
4075 | msgstr "" | 4060 | msgstr "" |
4076 | 4061 | ||
4077 | #: src/gns/gnunet-service-gns_resolver.c:2652 | 4062 | #: src/gns/gnunet-service-gns_resolver.c:2669 |
4078 | #, c-format | 4063 | #, c-format |
4079 | msgid "Zone %s was revoked, resolution fails\n" | 4064 | msgid "Zone %s was revoked, resolution fails\n" |
4080 | msgstr "" | 4065 | msgstr "" |
@@ -4117,31 +4102,39 @@ msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':" | |||
4117 | msgid "Gns REST API initialized\n" | 4102 | msgid "Gns REST API initialized\n" |
4118 | msgstr " Verbindung fehlgeschlagen\n" | 4103 | msgstr " Verbindung fehlgeschlagen\n" |
4119 | 4104 | ||
4120 | #: src/gnsrecord/gnsrecord_misc.c:448 | 4105 | #: src/gnsrecord/gnsrecord_misc.c:52 |
4106 | msgid "Label is NULL which is not allowed\n" | ||
4107 | msgstr "" | ||
4108 | |||
4109 | #: src/gnsrecord/gnsrecord_misc.c:57 | ||
4110 | msgid "Label contains `.' which is not allowed\n" | ||
4111 | msgstr "" | ||
4112 | |||
4113 | #: src/gnsrecord/gnsrecord_misc.c:464 | ||
4121 | msgid "Zone delegation record not allowed in apex." | 4114 | msgid "Zone delegation record not allowed in apex." |
4122 | msgstr "" | 4115 | msgstr "" |
4123 | 4116 | ||
4124 | #: src/gnsrecord/gnsrecord_misc.c:456 | 4117 | #: src/gnsrecord/gnsrecord_misc.c:472 |
4125 | msgid "Zone delegation record set contains mutually exclusive records." | 4118 | msgid "Zone delegation record set contains mutually exclusive records." |
4126 | msgstr "" | 4119 | msgstr "" |
4127 | 4120 | ||
4128 | #: src/gnsrecord/gnsrecord_misc.c:466 | 4121 | #: src/gnsrecord/gnsrecord_misc.c:482 |
4129 | msgid "Multiple REDIRECT records." | 4122 | msgid "Multiple REDIRECT records." |
4130 | msgstr "" | 4123 | msgstr "" |
4131 | 4124 | ||
4132 | #: src/gnsrecord/gnsrecord_misc.c:475 src/gnsrecord/gnsrecord_misc.c:501 | 4125 | #: src/gnsrecord/gnsrecord_misc.c:491 src/gnsrecord/gnsrecord_misc.c:517 |
4133 | msgid "Redirection record set conains mutually exclusive records." | 4126 | msgid "Redirection record set conains mutually exclusive records." |
4134 | msgstr "" | 4127 | msgstr "" |
4135 | 4128 | ||
4136 | #: src/gnsrecord/gnsrecord_misc.c:482 | 4129 | #: src/gnsrecord/gnsrecord_misc.c:498 |
4137 | msgid "Redirection records not allowed in apex." | 4130 | msgid "Redirection records not allowed in apex." |
4138 | msgstr "" | 4131 | msgstr "" |
4139 | 4132 | ||
4140 | #: src/gnsrecord/gnsrecord_misc.c:493 | 4133 | #: src/gnsrecord/gnsrecord_misc.c:509 |
4141 | msgid "Redirection records not allowed in apex.." | 4134 | msgid "Redirection records not allowed in apex.." |
4142 | msgstr "" | 4135 | msgstr "" |
4143 | 4136 | ||
4144 | #: src/gnsrecord/gnsrecord_misc.c:515 | 4137 | #: src/gnsrecord/gnsrecord_misc.c:531 |
4145 | msgid "Mutually exclusive records." | 4138 | msgid "Mutually exclusive records." |
4146 | msgstr "" | 4139 | msgstr "" |
4147 | 4140 | ||
@@ -4713,12 +4706,18 @@ msgstr "" | |||
4713 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" | 4706 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" |
4714 | msgstr "Datei wurde als `%s' gespeichert.\n" | 4707 | msgstr "Datei wurde als `%s' gespeichert.\n" |
4715 | 4708 | ||
4716 | #: src/messenger/plugin_gnsrecord_messenger.c:118 | 4709 | #: src/messenger/plugin_gnsrecord_messenger.c:136 |
4717 | #: src/messenger/plugin_gnsrecord_messenger.c:133 | 4710 | #: src/messenger/plugin_gnsrecord_messenger.c:151 |
4718 | #, fuzzy, c-format | 4711 | #, fuzzy, c-format |
4719 | msgid "Unable to parse MESSENGER_ROOM_ENTRY record `%s'\n" | 4712 | msgid "Unable to parse MESSENGER_ROOM_ENTRY record `%s'\n" |
4720 | msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" | 4713 | msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" |
4721 | 4714 | ||
4715 | #: src/messenger/plugin_gnsrecord_messenger.c:172 | ||
4716 | #: src/messenger/plugin_gnsrecord_messenger.c:187 | ||
4717 | #, fuzzy, c-format | ||
4718 | msgid "Unable to parse MESSENGER_ROOM_DETAILS record `%s'\n" | ||
4719 | msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n" | ||
4720 | |||
4722 | #: src/my/my.c:196 src/my/my.c:215 | 4721 | #: src/my/my.c:196 src/my/my.c:215 |
4723 | #, fuzzy, c-format | 4722 | #, fuzzy, c-format |
4724 | msgid "%s failed at %s:%d with error: %s\n" | 4723 | msgid "%s failed at %s:%d with error: %s\n" |
@@ -4759,7 +4758,7 @@ msgstr "Ungültiger Parameter: `%s'\n" | |||
4759 | msgid "You must specify a name\n" | 4758 | msgid "You must specify a name\n" |
4760 | msgstr "Sie müssen einen Empfänger angeben!\n" | 4759 | msgstr "Sie müssen einen Empfänger angeben!\n" |
4761 | 4760 | ||
4762 | #: src/namecache/gnunet-namecache.c:214 src/namestore/gnunet-namestore.c:1591 | 4761 | #: src/namecache/gnunet-namecache.c:214 src/namestore/gnunet-namestore.c:1582 |
4763 | msgid "name of the record to add/delete/display" | 4762 | msgid "name of the record to add/delete/display" |
4764 | msgstr "" | 4763 | msgstr "" |
4765 | 4764 | ||
@@ -4768,7 +4767,7 @@ msgstr "" | |||
4768 | msgid "specifies the public key of the zone to look in" | 4767 | msgid "specifies the public key of the zone to look in" |
4769 | msgstr "Die Priorität des Inhalts angeben" | 4768 | msgstr "Die Priorität des Inhalts angeben" |
4770 | 4769 | ||
4771 | #: src/namecache/gnunet-namecache.c:233 src/namestore/gnunet-namestore.c:1652 | 4770 | #: src/namecache/gnunet-namecache.c:233 src/namestore/gnunet-namestore.c:1643 |
4772 | #, fuzzy | 4771 | #, fuzzy |
4773 | msgid "GNUnet zone manipulation tool" | 4772 | msgid "GNUnet zone manipulation tool" |
4774 | msgstr "GNUnet Konfiguration" | 4773 | msgstr "GNUnet Konfiguration" |
@@ -5017,12 +5016,7 @@ msgstr "" | |||
5017 | msgid "Invalid URI `%s'\n" | 5016 | msgid "Invalid URI `%s'\n" |
5018 | msgstr "Ungültiger Parameter: `%s'\n" | 5017 | msgstr "Ungültiger Parameter: `%s'\n" |
5019 | 5018 | ||
5020 | #: src/namestore/gnunet-namestore.c:1242 | 5019 | #: src/namestore/gnunet-namestore.c:1283 |
5021 | #, c-format | ||
5022 | msgid "Label `%s' contains `.' which is not allowed\n" | ||
5023 | msgstr "" | ||
5024 | |||
5025 | #: src/namestore/gnunet-namestore.c:1292 | ||
5026 | #, c-format | 5020 | #, c-format |
5027 | msgid "" | 5021 | msgid "" |
5028 | "No default identity configured for `namestore' subsystem\n" | 5022 | "No default identity configured for `namestore' subsystem\n" |
@@ -5030,99 +5024,99 @@ msgid "" | |||
5030 | "Run gnunet-identity -d to get a list of choices for $NAME\n" | 5024 | "Run gnunet-identity -d to get a list of choices for $NAME\n" |
5031 | msgstr "" | 5025 | msgstr "" |
5032 | 5026 | ||
5033 | #: src/namestore/gnunet-namestore.c:1357 | 5027 | #: src/namestore/gnunet-namestore.c:1348 |
5034 | #, c-format | 5028 | #, c-format |
5035 | msgid "Superfluous command line arguments (starting with `%s') ignored\n" | 5029 | msgid "Superfluous command line arguments (starting with `%s') ignored\n" |
5036 | msgstr "" | 5030 | msgstr "" |
5037 | 5031 | ||
5038 | #: src/namestore/gnunet-namestore.c:1386 | 5032 | #: src/namestore/gnunet-namestore.c:1377 |
5039 | #, fuzzy, c-format | 5033 | #, fuzzy, c-format |
5040 | msgid "Cannot connect to identity service\n" | 5034 | msgid "Cannot connect to identity service\n" |
5041 | msgstr "Verbindung zu %u.%u.%u.%u:%u fehlgeschlagen: %s\n" | 5035 | msgstr "Verbindung zu %u.%u.%u.%u:%u fehlgeschlagen: %s\n" |
5042 | 5036 | ||
5043 | #: src/namestore/gnunet-namestore.c:1433 | 5037 | #: src/namestore/gnunet-namestore.c:1424 |
5044 | msgid "Empty record line argument is not allowed.\n" | 5038 | msgid "Empty record line argument is not allowed.\n" |
5045 | msgstr "" | 5039 | msgstr "" |
5046 | 5040 | ||
5047 | #: src/namestore/gnunet-namestore.c:1445 | 5041 | #: src/namestore/gnunet-namestore.c:1436 |
5048 | #, c-format | 5042 | #, c-format |
5049 | msgid "Invalid expiration time `%s' (must be without unit)\n" | 5043 | msgid "Invalid expiration time `%s' (must be without unit)\n" |
5050 | msgstr "" | 5044 | msgstr "" |
5051 | 5045 | ||
5052 | #: src/namestore/gnunet-namestore.c:1457 src/namestore/gnunet-namestore.c:1473 | 5046 | #: src/namestore/gnunet-namestore.c:1448 src/namestore/gnunet-namestore.c:1464 |
5053 | #: src/namestore/gnunet-namestore.c:1490 | 5047 | #: src/namestore/gnunet-namestore.c:1481 |
5054 | #, fuzzy, c-format | 5048 | #, fuzzy, c-format |
5055 | msgid "Missing entries in record line `%s'.\n" | 5049 | msgid "Missing entries in record line `%s'.\n" |
5056 | msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n" | 5050 | msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n" |
5057 | 5051 | ||
5058 | #: src/namestore/gnunet-namestore.c:1465 | 5052 | #: src/namestore/gnunet-namestore.c:1456 |
5059 | #, fuzzy, c-format | 5053 | #, fuzzy, c-format |
5060 | msgid "Unknown record type `%s'\n" | 5054 | msgid "Unknown record type `%s'\n" |
5061 | msgstr "Unbekannter Befehl »%s«\n" | 5055 | msgstr "Unbekannter Befehl »%s«\n" |
5062 | 5056 | ||
5063 | #: src/namestore/gnunet-namestore.c:1503 | 5057 | #: src/namestore/gnunet-namestore.c:1494 |
5064 | #, fuzzy, c-format | 5058 | #, fuzzy, c-format |
5065 | msgid "Invalid record data for type %s: `%s'.\n" | 5059 | msgid "Invalid record data for type %s: `%s'.\n" |
5066 | msgstr "Ungültiges Format für IP: »%s«\n" | 5060 | msgstr "Ungültiges Format für IP: »%s«\n" |
5067 | 5061 | ||
5068 | #: src/namestore/gnunet-namestore.c:1560 | 5062 | #: src/namestore/gnunet-namestore.c:1551 |
5069 | msgid "add record" | 5063 | msgid "add record" |
5070 | msgstr "" | 5064 | msgstr "" |
5071 | 5065 | ||
5072 | #: src/namestore/gnunet-namestore.c:1563 | 5066 | #: src/namestore/gnunet-namestore.c:1554 |
5073 | msgid "delete record" | 5067 | msgid "delete record" |
5074 | msgstr "" | 5068 | msgstr "" |
5075 | 5069 | ||
5076 | #: src/namestore/gnunet-namestore.c:1567 | 5070 | #: src/namestore/gnunet-namestore.c:1558 |
5077 | msgid "display records" | 5071 | msgid "display records" |
5078 | msgstr "" | 5072 | msgstr "" |
5079 | 5073 | ||
5080 | #: src/namestore/gnunet-namestore.c:1574 | 5074 | #: src/namestore/gnunet-namestore.c:1565 |
5081 | msgid "" | 5075 | msgid "" |
5082 | "expiration time for record to use (for adding only), \"never\" is possible" | 5076 | "expiration time for record to use (for adding only), \"never\" is possible" |
5083 | msgstr "" | 5077 | msgstr "" |
5084 | 5078 | ||
5085 | #: src/namestore/gnunet-namestore.c:1580 | 5079 | #: src/namestore/gnunet-namestore.c:1571 |
5086 | msgid "set the desired nick name for the zone" | 5080 | msgid "set the desired nick name for the zone" |
5087 | msgstr "" | 5081 | msgstr "" |
5088 | 5082 | ||
5089 | #: src/namestore/gnunet-namestore.c:1585 | 5083 | #: src/namestore/gnunet-namestore.c:1576 |
5090 | msgid "monitor changes in the namestore" | 5084 | msgid "monitor changes in the namestore" |
5091 | msgstr "" | 5085 | msgstr "" |
5092 | 5086 | ||
5093 | #: src/namestore/gnunet-namestore.c:1597 | 5087 | #: src/namestore/gnunet-namestore.c:1588 |
5094 | msgid "determine our name for the given PKEY" | 5088 | msgid "determine our name for the given PKEY" |
5095 | msgstr "" | 5089 | msgstr "" |
5096 | 5090 | ||
5097 | #: src/namestore/gnunet-namestore.c:1604 | 5091 | #: src/namestore/gnunet-namestore.c:1595 |
5098 | msgid "" | 5092 | msgid "" |
5099 | "set record set to values given by (possibly multiple) RECORDLINES; can be " | 5093 | "set record set to values given by (possibly multiple) RECORDLINES; can be " |
5100 | "specified multiple times" | 5094 | "specified multiple times" |
5101 | msgstr "" | 5095 | msgstr "" |
5102 | 5096 | ||
5103 | #: src/namestore/gnunet-namestore.c:1610 | 5097 | #: src/namestore/gnunet-namestore.c:1601 |
5104 | msgid "type of the record to add/delete/display" | 5098 | msgid "type of the record to add/delete/display" |
5105 | msgstr "" | 5099 | msgstr "" |
5106 | 5100 | ||
5107 | #: src/namestore/gnunet-namestore.c:1615 | 5101 | #: src/namestore/gnunet-namestore.c:1606 |
5108 | msgid "URI to import into our zone" | 5102 | msgid "URI to import into our zone" |
5109 | msgstr "" | 5103 | msgstr "" |
5110 | 5104 | ||
5111 | #: src/namestore/gnunet-namestore.c:1621 | 5105 | #: src/namestore/gnunet-namestore.c:1612 |
5112 | msgid "value of the record to add/delete" | 5106 | msgid "value of the record to add/delete" |
5113 | msgstr "" | 5107 | msgstr "" |
5114 | 5108 | ||
5115 | #: src/namestore/gnunet-namestore.c:1625 | 5109 | #: src/namestore/gnunet-namestore.c:1616 |
5116 | msgid "create or list public record" | 5110 | msgid "create or list public record" |
5117 | msgstr "" | 5111 | msgstr "" |
5118 | 5112 | ||
5119 | #: src/namestore/gnunet-namestore.c:1631 | 5113 | #: src/namestore/gnunet-namestore.c:1622 |
5120 | msgid "" | 5114 | msgid "" |
5121 | "create shadow record (only valid if all other records of the same type have " | 5115 | "create shadow record (only valid if all other records of the same type have " |
5122 | "expired" | 5116 | "expired" |
5123 | msgstr "" | 5117 | msgstr "" |
5124 | 5118 | ||
5125 | #: src/namestore/gnunet-namestore.c:1637 | 5119 | #: src/namestore/gnunet-namestore.c:1628 |
5126 | msgid "name of the ego controlling the zone" | 5120 | msgid "name of the ego controlling the zone" |
5127 | msgstr "" | 5121 | msgstr "" |
5128 | 5122 | ||
@@ -5131,7 +5125,17 @@ msgstr "" | |||
5131 | msgid "Failed to replicate block in namecache: %s\n" | 5125 | msgid "Failed to replicate block in namecache: %s\n" |
5132 | msgstr "" | 5126 | msgstr "" |
5133 | 5127 | ||
5134 | #: src/namestore/gnunet-service-namestore.c:1668 | 5128 | #: src/namestore/gnunet-service-namestore.c:1559 |
5129 | #, fuzzy | ||
5130 | msgid "Error normalizing name." | ||
5131 | msgstr "Fehler beim Anlegen des Tunnels\n" | ||
5132 | |||
5133 | #: src/namestore/gnunet-service-namestore.c:1582 | ||
5134 | #, fuzzy | ||
5135 | msgid "Error deserializing records." | ||
5136 | msgstr "=\tFehler beim Lesen des Verzeichnisses.\n" | ||
5137 | |||
5138 | #: src/namestore/gnunet-service-namestore.c:1691 | ||
5135 | #, fuzzy | 5139 | #, fuzzy |
5136 | msgid "Store failed" | 5140 | msgid "Store failed" |
5137 | msgstr "Verbindung fehlgeschlagen: %s\n" | 5141 | msgstr "Verbindung fehlgeschlagen: %s\n" |
@@ -6880,8 +6884,8 @@ msgid "GNUnet topology control" | |||
6880 | msgstr "" | 6884 | msgstr "" |
6881 | 6885 | ||
6882 | #: src/transport/gnunet-communicator-tcp.c:3338 | 6886 | #: src/transport/gnunet-communicator-tcp.c:3338 |
6883 | #: src/transport/gnunet-communicator-udp.c:3856 | 6887 | #: src/transport/gnunet-communicator-udp.c:3867 |
6884 | #: src/transport/gnunet-service-tng.c:10623 | 6888 | #: src/transport/gnunet-service-tng.c:10926 |
6885 | #: src/transport/gnunet-service-transport.c:2627 | 6889 | #: src/transport/gnunet-service-transport.c:2627 |
6886 | msgid "Transport service is lacking key configuration settings. Exiting.\n" | 6890 | msgid "Transport service is lacking key configuration settings. Exiting.\n" |
6887 | msgstr "" | 6891 | msgstr "" |
@@ -6890,7 +6894,7 @@ msgstr "" | |||
6890 | msgid "GNUnet TCP communicator" | 6894 | msgid "GNUnet TCP communicator" |
6891 | msgstr "" | 6895 | msgstr "" |
6892 | 6896 | ||
6893 | #: src/transport/gnunet-communicator-udp.c:3931 | 6897 | #: src/transport/gnunet-communicator-udp.c:3942 |
6894 | msgid "GNUnet UDP communicator" | 6898 | msgid "GNUnet UDP communicator" |
6895 | msgstr "" | 6899 | msgstr "" |
6896 | 6900 | ||
@@ -8261,12 +8265,12 @@ msgid "libgcrypt has not the expected version (version %s is required).\n" | |||
8261 | msgstr "" | 8265 | msgstr "" |
8262 | "libgcrypt hat nicht die erwartete Version (Version %s wird vorausgesetzt).\n" | 8266 | "libgcrypt hat nicht die erwartete Version (Version %s wird vorausgesetzt).\n" |
8263 | 8267 | ||
8264 | #: src/util/crypto_rsa.c:901 | 8268 | #: src/util/crypto_rsa.c:907 |
8265 | #, fuzzy, c-format | 8269 | #, fuzzy, c-format |
8266 | msgid "RSA signing failed at %s:%d: %s\n" | 8270 | msgid "RSA signing failed at %s:%d: %s\n" |
8267 | msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n" | 8271 | msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n" |
8268 | 8272 | ||
8269 | #: src/util/crypto_rsa.c:1201 | 8273 | #: src/util/crypto_rsa.c:1207 |
8270 | #, fuzzy, c-format | 8274 | #, fuzzy, c-format |
8271 | msgid "RSA signature verification failed at %s:%d: %s\n" | 8275 | msgid "RSA signature verification failed at %s:%d: %s\n" |
8272 | msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n" | 8276 | msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n" |
@@ -8946,12 +8950,12 @@ msgstr "Falsches Format `%s' für Netzmaske: %s\n" | |||
8946 | msgid "Wrong format `%s' for network\n" | 8950 | msgid "Wrong format `%s' for network\n" |
8947 | msgstr "Falsches Format `%s' für Netzwerk: %s\n" | 8951 | msgstr "Falsches Format `%s' für Netzwerk: %s\n" |
8948 | 8952 | ||
8949 | #: src/util/time.c:870 src/util/time.c:898 | 8953 | #: src/util/time.c:900 src/util/time.c:928 |
8950 | #, c-format | 8954 | #, c-format |
8951 | msgid "Failed to map `%s', cannot assure monotonic time!\n" | 8955 | msgid "Failed to map `%s', cannot assure monotonic time!\n" |
8952 | msgstr "" | 8956 | msgstr "" |
8953 | 8957 | ||
8954 | #: src/util/time.c:906 | 8958 | #: src/util/time.c:936 |
8955 | #, c-format | 8959 | #, c-format |
8956 | msgid "" | 8960 | msgid "" |
8957 | "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n" | 8961 | "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n" |
@@ -9137,6 +9141,10 @@ msgstr "Tunnel über VPN einrichten." | |||
9137 | msgid "Failed to connect to the namestore!\n" | 9141 | msgid "Failed to connect to the namestore!\n" |
9138 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" | 9142 | msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n" |
9139 | 9143 | ||
9144 | #, fuzzy, c-format | ||
9145 | #~ msgid "Block not of type %u\n" | ||
9146 | #~ msgstr "Kein Transport des Typs %d bekannt.\n" | ||
9147 | |||
9140 | #~ msgid "# items stored" | 9148 | #~ msgid "# items stored" |
9141 | #~ msgstr "# gespeicherte Objekte" | 9149 | #~ msgstr "# gespeicherte Objekte" |
9142 | 9150 | ||
@@ -8,7 +8,7 @@ msgid "" | |||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: gnunet 0.9.5a\n" | 9 | "Project-Id-Version: gnunet 0.9.5a\n" |
10 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" | 10 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" |
11 | "POT-Creation-Date: 2022-03-04 22:23+0100\n" | 11 | "POT-Creation-Date: 2022-04-01 08:42+0200\n" |
12 | "PO-Revision-Date: 2013-02-23 17:50+0100\n" | 12 | "PO-Revision-Date: 2013-02-23 17:50+0100\n" |
13 | "Last-Translator: Miguel Ángel Arruga Vivas <rosen644835@gmail.com>\n" | 13 | "Last-Translator: Miguel Ángel Arruga Vivas <rosen644835@gmail.com>\n" |
14 | "Language-Team: Spanish <es@li.org>\n" | 14 | "Language-Team: Spanish <es@li.org>\n" |
@@ -18,7 +18,7 @@ msgstr "" | |||
18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" |
20 | 20 | ||
21 | #: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1254 | 21 | #: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1245 |
22 | #, fuzzy, c-format | 22 | #, fuzzy, c-format |
23 | msgid "Ego `%s' not known to identity service\n" | 23 | msgid "Ego `%s' not known to identity service\n" |
24 | msgstr "'%s': servicio desconocido: %s\n" | 24 | msgstr "'%s': servicio desconocido: %s\n" |
@@ -2194,21 +2194,6 @@ msgstr "" | |||
2194 | msgid "Measure quality and performance of the DHT service." | 2194 | msgid "Measure quality and performance of the DHT service." |
2195 | msgstr "Medir la calidad y rendimiento del servicio NSE." | 2195 | msgstr "Medir la calidad y rendimiento del servicio NSE." |
2196 | 2196 | ||
2197 | #: src/dht/plugin_block_dht.c:404 | ||
2198 | #, c-format | ||
2199 | msgid "Block not of type %u\n" | ||
2200 | msgstr "El bloque no es del tipo %u\n" | ||
2201 | |||
2202 | #: src/dht/plugin_block_dht.c:413 | ||
2203 | #, fuzzy, c-format | ||
2204 | msgid "Size mismatch for block with type %u\n" | ||
2205 | msgstr "Discrepancias de tamaños para el bloque\n" | ||
2206 | |||
2207 | #: src/dht/plugin_block_dht.c:424 | ||
2208 | #, c-format | ||
2209 | msgid "Block of type %u is malformed\n" | ||
2210 | msgstr "El bloque del tipo %u está mal formado\n" | ||
2211 | |||
2212 | #: src/dns/gnunet-dns-monitor.c:371 src/dns/gnunet-dns-monitor.c:376 | 2197 | #: src/dns/gnunet-dns-monitor.c:371 src/dns/gnunet-dns-monitor.c:376 |
2213 | msgid "only monitor DNS queries" | 2198 | msgid "only monitor DNS queries" |
2214 | msgstr "sólo monitorizar consultas DNS" | 2199 | msgstr "sólo monitorizar consultas DNS" |
@@ -2972,20 +2957,20 @@ msgstr "URI SKS mal formada (no se encuentra el tiempo de expiración)" | |||
2972 | msgid "LOC URI malformed (signature failed validation)" | 2957 | msgid "LOC URI malformed (signature failed validation)" |
2973 | msgstr "URI SKS mal formada (se produjo un fallo al validar la firma)" | 2958 | msgstr "URI SKS mal formada (se produjo un fallo al validar la firma)" |
2974 | 2959 | ||
2975 | #: src/fs/fs_uri.c:652 | 2960 | #: src/fs/fs_uri.c:653 |
2976 | #, fuzzy | 2961 | #, fuzzy |
2977 | msgid "invalid argument" | 2962 | msgid "invalid argument" |
2978 | msgstr "Parámetro no válido «%s»\n" | 2963 | msgstr "Parámetro no válido «%s»\n" |
2979 | 2964 | ||
2980 | #: src/fs/fs_uri.c:671 | 2965 | #: src/fs/fs_uri.c:673 |
2981 | msgid "Unrecognized URI type" | 2966 | msgid "Unrecognized URI type" |
2982 | msgstr "Tipo de URI no reconocido" | 2967 | msgstr "Tipo de URI no reconocido" |
2983 | 2968 | ||
2984 | #: src/fs/fs_uri.c:1075 src/fs/fs_uri.c:1102 | 2969 | #: src/fs/fs_uri.c:1077 src/fs/fs_uri.c:1104 |
2985 | msgid "No keywords specified!\n" | 2970 | msgid "No keywords specified!\n" |
2986 | msgstr "¡Ninguna palabra clave especificada!\n" | 2971 | msgstr "¡Ninguna palabra clave especificada!\n" |
2987 | 2972 | ||
2988 | #: src/fs/fs_uri.c:1108 | 2973 | #: src/fs/fs_uri.c:1110 |
2989 | msgid "Number of double-quotes not balanced!\n" | 2974 | msgid "Number of double-quotes not balanced!\n" |
2990 | msgstr "¡Número de comillas dobles no balanceado!\n" | 2975 | msgstr "¡Número de comillas dobles no balanceado!\n" |
2991 | 2976 | ||
@@ -3740,95 +3725,95 @@ msgstr "# peticiones refrescadas" | |||
3740 | msgid "# query plan entries" | 3725 | msgid "# query plan entries" |
3741 | msgstr "# entradas de planes de búsqueda" | 3726 | msgstr "# entradas de planes de búsqueda" |
3742 | 3727 | ||
3743 | #: src/fs/gnunet-service-fs_pr.c:329 | 3728 | #: src/fs/gnunet-service-fs_pr.c:330 |
3744 | msgid "# Pending requests created" | 3729 | msgid "# Pending requests created" |
3745 | msgstr "# Peticiones pendientes creadas" | 3730 | msgstr "# Peticiones pendientes creadas" |
3746 | 3731 | ||
3747 | #: src/fs/gnunet-service-fs_pr.c:421 src/fs/gnunet-service-fs_pr.c:658 | 3732 | #: src/fs/gnunet-service-fs_pr.c:422 src/fs/gnunet-service-fs_pr.c:662 |
3748 | msgid "# Pending requests active" | 3733 | msgid "# Pending requests active" |
3749 | msgstr "# Peticiones pendientes activas" | 3734 | msgstr "# Peticiones pendientes activas" |
3750 | 3735 | ||
3751 | #: src/fs/gnunet-service-fs_pr.c:838 | 3736 | #: src/fs/gnunet-service-fs_pr.c:837 |
3752 | msgid "# replies received and matched" | 3737 | msgid "# replies received and matched" |
3753 | msgstr "# respuestas recibidas y asociadas" | 3738 | msgstr "# respuestas recibidas y asociadas" |
3754 | 3739 | ||
3755 | #: src/fs/gnunet-service-fs_pr.c:916 | 3740 | #: src/fs/gnunet-service-fs_pr.c:911 |
3756 | msgid "# results found locally" | 3741 | msgid "# results found locally" |
3757 | msgstr "# resultados hallados localmente" | 3742 | msgstr "# resultados hallados localmente" |
3758 | 3743 | ||
3759 | #: src/fs/gnunet-service-fs_pr.c:1050 | 3744 | #: src/fs/gnunet-service-fs_pr.c:1045 |
3760 | msgid "# Datastore `PUT' failures" | 3745 | msgid "# Datastore `PUT' failures" |
3761 | msgstr "# «PUT» en el almacén de datos fallidos" | 3746 | msgstr "# «PUT» en el almacén de datos fallidos" |
3762 | 3747 | ||
3763 | #: src/fs/gnunet-service-fs_pr.c:1079 | 3748 | #: src/fs/gnunet-service-fs_pr.c:1074 |
3764 | msgid "# storage requests dropped due to high load" | 3749 | msgid "# storage requests dropped due to high load" |
3765 | msgstr "# peticiones de almacenamiento omitidas debido a alta carga" | 3750 | msgstr "# peticiones de almacenamiento omitidas debido a alta carga" |
3766 | 3751 | ||
3767 | #: src/fs/gnunet-service-fs_pr.c:1118 | 3752 | #: src/fs/gnunet-service-fs_pr.c:1113 |
3768 | msgid "# Replies received from DHT" | 3753 | msgid "# Replies received from DHT" |
3769 | msgstr "# Respuestas recibidas de la DHT" | 3754 | msgstr "# Respuestas recibidas de la DHT" |
3770 | 3755 | ||
3771 | #: src/fs/gnunet-service-fs_pr.c:1259 | 3756 | #: src/fs/gnunet-service-fs_pr.c:1268 |
3772 | #, fuzzy | 3757 | #, fuzzy |
3773 | msgid "# Replies received from CADET" | 3758 | msgid "# Replies received from CADET" |
3774 | msgstr "# Respuestas recibidas de la DHT" | 3759 | msgstr "# Respuestas recibidas de la DHT" |
3775 | 3760 | ||
3776 | #: src/fs/gnunet-service-fs_pr.c:1313 | 3761 | #: src/fs/gnunet-service-fs_pr.c:1323 |
3777 | #, c-format | 3762 | #, c-format |
3778 | msgid "Datastore lookup already took %s!\n" | 3763 | msgid "Datastore lookup already took %s!\n" |
3779 | msgstr "¡La búsqueda en el almacén de datos toma %s!\n" | 3764 | msgstr "¡La búsqueda en el almacén de datos toma %s!\n" |
3780 | 3765 | ||
3781 | #: src/fs/gnunet-service-fs_pr.c:1334 | 3766 | #: src/fs/gnunet-service-fs_pr.c:1344 |
3782 | #, c-format | 3767 | #, c-format |
3783 | msgid "On-demand lookup already took %s!\n" | 3768 | msgid "On-demand lookup already took %s!\n" |
3784 | msgstr "¡La búsqueda en bajo demanda toma %s!\n" | 3769 | msgstr "¡La búsqueda en bajo demanda toma %s!\n" |
3785 | 3770 | ||
3786 | #: src/fs/gnunet-service-fs_pr.c:1401 | 3771 | #: src/fs/gnunet-service-fs_pr.c:1411 |
3787 | msgid "# requested DBLOCK or IBLOCK not found" | 3772 | msgid "# requested DBLOCK or IBLOCK not found" |
3788 | msgstr "# «DBLOCK» o «IBLOCK» pedido no encontrado" | 3773 | msgstr "# «DBLOCK» o «IBLOCK» pedido no encontrado" |
3789 | 3774 | ||
3790 | #: src/fs/gnunet-service-fs_pr.c:1463 | 3775 | #: src/fs/gnunet-service-fs_pr.c:1473 |
3791 | msgid "# Datastore lookups concluded (error queueing)" | 3776 | msgid "# Datastore lookups concluded (error queueing)" |
3792 | msgstr "# Búsquedas en el almacén de datos finalizadas (error encolando)" | 3777 | msgstr "# Búsquedas en el almacén de datos finalizadas (error encolando)" |
3793 | 3778 | ||
3794 | #: src/fs/gnunet-service-fs_pr.c:1518 | 3779 | #: src/fs/gnunet-service-fs_pr.c:1528 |
3795 | msgid "# Datastore lookups concluded (no results)" | 3780 | msgid "# Datastore lookups concluded (no results)" |
3796 | msgstr "# Búsquedas en el almacén de datos finalizadas (sin resultados)" | 3781 | msgstr "# Búsquedas en el almacén de datos finalizadas (sin resultados)" |
3797 | 3782 | ||
3798 | #: src/fs/gnunet-service-fs_pr.c:1533 | 3783 | #: src/fs/gnunet-service-fs_pr.c:1543 |
3799 | msgid "# Datastore lookups concluded (seen all)" | 3784 | msgid "# Datastore lookups concluded (seen all)" |
3800 | msgstr "# Búsquedas en el almacén de datos finalizadas (vistos todos)" | 3785 | msgstr "# Búsquedas en el almacén de datos finalizadas (vistos todos)" |
3801 | 3786 | ||
3802 | #: src/fs/gnunet-service-fs_pr.c:1556 | 3787 | #: src/fs/gnunet-service-fs_pr.c:1566 |
3803 | msgid "# Datastore lookups aborted (more than MAX_RESULTS)" | 3788 | msgid "# Datastore lookups aborted (more than MAX_RESULTS)" |
3804 | msgstr "# Búsquedas en el almacén de datos finalizadas (más de «MAX_RESULTS»)" | 3789 | msgstr "# Búsquedas en el almacén de datos finalizadas (más de «MAX_RESULTS»)" |
3805 | 3790 | ||
3806 | #: src/fs/gnunet-service-fs_pr.c:1573 | 3791 | #: src/fs/gnunet-service-fs_pr.c:1583 |
3807 | msgid "# on-demand blocks matched requests" | 3792 | msgid "# on-demand blocks matched requests" |
3808 | msgstr "# peticiones asociadas de bloques bajo demanda" | 3793 | msgstr "# peticiones asociadas de bloques bajo demanda" |
3809 | 3794 | ||
3810 | #: src/fs/gnunet-service-fs_pr.c:1594 | 3795 | #: src/fs/gnunet-service-fs_pr.c:1604 |
3811 | msgid "# on-demand lookups performed successfully" | 3796 | msgid "# on-demand lookups performed successfully" |
3812 | msgstr "# búsquedas satisfactorias de bloques bajo demanda" | 3797 | msgstr "# búsquedas satisfactorias de bloques bajo demanda" |
3813 | 3798 | ||
3814 | #: src/fs/gnunet-service-fs_pr.c:1600 | 3799 | #: src/fs/gnunet-service-fs_pr.c:1610 |
3815 | msgid "# on-demand lookups failed" | 3800 | msgid "# on-demand lookups failed" |
3816 | msgstr "# búsquedas fallidas de bloques bajo demanda" | 3801 | msgstr "# búsquedas fallidas de bloques bajo demanda" |
3817 | 3802 | ||
3818 | #: src/fs/gnunet-service-fs_pr.c:1641 | 3803 | #: src/fs/gnunet-service-fs_pr.c:1656 |
3819 | msgid "# Datastore lookups concluded (found last result)" | 3804 | msgid "# Datastore lookups concluded (found last result)" |
3820 | msgstr "" | 3805 | msgstr "" |
3821 | "# Búsquedas en el almacén de datos finalizadas (encontrado último resultado)" | 3806 | "# Búsquedas en el almacén de datos finalizadas (encontrado último resultado)" |
3822 | 3807 | ||
3823 | #: src/fs/gnunet-service-fs_pr.c:1654 | 3808 | #: src/fs/gnunet-service-fs_pr.c:1669 |
3824 | msgid "# Datastore lookups concluded (load too high)" | 3809 | msgid "# Datastore lookups concluded (load too high)" |
3825 | msgstr "# Búsquedas en el almacén de datos finalizadas (carga demasiado alta)" | 3810 | msgstr "# Búsquedas en el almacén de datos finalizadas (carga demasiado alta)" |
3826 | 3811 | ||
3827 | #: src/fs/gnunet-service-fs_pr.c:1705 | 3812 | #: src/fs/gnunet-service-fs_pr.c:1720 |
3828 | msgid "# Datastore lookups initiated" | 3813 | msgid "# Datastore lookups initiated" |
3829 | msgstr "# Búsquedas en el almacén de datos iniciadas" | 3814 | msgstr "# Búsquedas en el almacén de datos iniciadas" |
3830 | 3815 | ||
3831 | #: src/fs/gnunet-service-fs_pr.c:1755 | 3816 | #: src/fs/gnunet-service-fs_pr.c:1784 |
3832 | msgid "# GAP PUT messages received" | 3817 | msgid "# GAP PUT messages received" |
3833 | msgstr "# Mensajes «GAP PUT» recibidos" | 3818 | msgstr "# Mensajes «GAP PUT» recibidos" |
3834 | 3819 | ||
@@ -4145,65 +4130,65 @@ msgstr "¡Se produjo un error al convertir los argumentos a una URI!\n" | |||
4145 | msgid "Failed to connect to the DNS service!\n" | 4130 | msgid "Failed to connect to the DNS service!\n" |
4146 | msgstr "¡Se produjo un fallo al conectar con el servicio GNS!\n" | 4131 | msgstr "¡Se produjo un fallo al conectar con el servicio GNS!\n" |
4147 | 4132 | ||
4148 | #: src/gns/gnunet-service-gns_resolver.c:659 | 4133 | #: src/gns/gnunet-service-gns_resolver.c:672 |
4149 | #, fuzzy, c-format | 4134 | #, fuzzy, c-format |
4150 | msgid "Protocol `%s' unknown, skipping labels.\n" | 4135 | msgid "Protocol `%s' unknown, skipping labels.\n" |
4151 | msgstr "Módulo «%s» no encontrado\n" | 4136 | msgstr "Módulo «%s» no encontrado\n" |
4152 | 4137 | ||
4153 | #: src/gns/gnunet-service-gns_resolver.c:671 | 4138 | #: src/gns/gnunet-service-gns_resolver.c:684 |
4154 | #, c-format | 4139 | #, c-format |
4155 | msgid "Service `%s' unknown for protocol `%s', trying as number.\n" | 4140 | msgid "Service `%s' unknown for protocol `%s', trying as number.\n" |
4156 | msgstr "" | 4141 | msgstr "" |
4157 | 4142 | ||
4158 | #: src/gns/gnunet-service-gns_resolver.c:677 | 4143 | #: src/gns/gnunet-service-gns_resolver.c:690 |
4159 | #, fuzzy, c-format | 4144 | #, fuzzy, c-format |
4160 | msgid "Service `%s' not a port, skipping service labels.\n" | 4145 | msgid "Service `%s' not a port, skipping service labels.\n" |
4161 | msgstr "Módulo «%s» no encontrado\n" | 4146 | msgstr "Módulo «%s» no encontrado\n" |
4162 | 4147 | ||
4163 | #: src/gns/gnunet-service-gns_resolver.c:891 | 4148 | #: src/gns/gnunet-service-gns_resolver.c:904 |
4164 | #, fuzzy | 4149 | #, fuzzy |
4165 | msgid "Failed to parse DNS response\n" | 4150 | msgid "Failed to parse DNS response\n" |
4166 | msgstr "Se produjo un fallo al procesar la petición DNS. Omitiendo.\n" | 4151 | msgstr "Se produjo un fallo al procesar la petición DNS. Omitiendo.\n" |
4167 | 4152 | ||
4168 | #: src/gns/gnunet-service-gns_resolver.c:1082 | 4153 | #: src/gns/gnunet-service-gns_resolver.c:1095 |
4169 | #, c-format | 4154 | #, c-format |
4170 | msgid "Skipping record of unsupported type %d\n" | 4155 | msgid "Skipping record of unsupported type %d\n" |
4171 | msgstr "" | 4156 | msgstr "" |
4172 | 4157 | ||
4173 | #: src/gns/gnunet-service-gns_resolver.c:1859 | 4158 | #: src/gns/gnunet-service-gns_resolver.c:1872 |
4174 | #, c-format | 4159 | #, c-format |
4175 | msgid "Name `%s' cannot be converted to IDNA." | 4160 | msgid "Name `%s' cannot be converted to IDNA." |
4176 | msgstr "" | 4161 | msgstr "" |
4177 | 4162 | ||
4178 | #: src/gns/gnunet-service-gns_resolver.c:1874 | 4163 | #: src/gns/gnunet-service-gns_resolver.c:1887 |
4179 | #, c-format | 4164 | #, c-format |
4180 | msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" | 4165 | msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" |
4181 | msgstr "" | 4166 | msgstr "" |
4182 | 4167 | ||
4183 | #: src/gns/gnunet-service-gns_resolver.c:1914 | 4168 | #: src/gns/gnunet-service-gns_resolver.c:1927 |
4184 | #, fuzzy, c-format | 4169 | #, fuzzy, c-format |
4185 | msgid "GNS lookup failed (zero records found for `%s')\n" | 4170 | msgid "GNS lookup failed (zero records found for `%s')\n" |
4186 | msgstr "No se han encontrado ficheros en «%s»\n" | 4171 | msgstr "No se han encontrado ficheros en «%s»\n" |
4187 | 4172 | ||
4188 | #: src/gns/gnunet-service-gns_resolver.c:2312 | 4173 | #: src/gns/gnunet-service-gns_resolver.c:2329 |
4189 | msgid "Unable to process critical delegation record\n" | 4174 | msgid "Unable to process critical delegation record\n" |
4190 | msgstr "" | 4175 | msgstr "" |
4191 | 4176 | ||
4192 | #: src/gns/gnunet-service-gns_resolver.c:2317 | 4177 | #: src/gns/gnunet-service-gns_resolver.c:2334 |
4193 | msgid "GNS lookup recursion failed (no delegation record found)\n" | 4178 | msgid "GNS lookup recursion failed (no delegation record found)\n" |
4194 | msgstr "" | 4179 | msgstr "" |
4195 | 4180 | ||
4196 | #: src/gns/gnunet-service-gns_resolver.c:2340 | 4181 | #: src/gns/gnunet-service-gns_resolver.c:2357 |
4197 | #, fuzzy, c-format | 4182 | #, fuzzy, c-format |
4198 | msgid "Failed to cache GNS resolution: %s\n" | 4183 | msgid "Failed to cache GNS resolution: %s\n" |
4199 | msgstr "Se produjo un fallo al mandar la petición DNS a %s\n" | 4184 | msgstr "Se produjo un fallo al mandar la petición DNS a %s\n" |
4200 | 4185 | ||
4201 | #: src/gns/gnunet-service-gns_resolver.c:2505 | 4186 | #: src/gns/gnunet-service-gns_resolver.c:2522 |
4202 | #, c-format | 4187 | #, c-format |
4203 | msgid "GNS namecache returned empty result for `%s'\n" | 4188 | msgid "GNS namecache returned empty result for `%s'\n" |
4204 | msgstr "" | 4189 | msgstr "" |
4205 | 4190 | ||
4206 | #: src/gns/gnunet-service-gns_resolver.c:2652 | 4191 | #: src/gns/gnunet-service-gns_resolver.c:2669 |
4207 | #, c-format | 4192 | #, c-format |
4208 | msgid "Zone %s was revoked, resolution fails\n" | 4193 | msgid "Zone %s was revoked, resolution fails\n" |
4209 | msgstr "" | 4194 | msgstr "" |
@@ -4248,31 +4233,39 @@ msgstr "No se pudo procesar la cadena de registro VPN «%s»\n" | |||
4248 | msgid "Gns REST API initialized\n" | 4233 | msgid "Gns REST API initialized\n" |
4249 | msgstr "Conexión fallida\n" | 4234 | msgstr "Conexión fallida\n" |
4250 | 4235 | ||
4251 | #: src/gnsrecord/gnsrecord_misc.c:448 | 4236 | #: src/gnsrecord/gnsrecord_misc.c:52 |
4237 | msgid "Label is NULL which is not allowed\n" | ||
4238 | msgstr "" | ||
4239 | |||
4240 | #: src/gnsrecord/gnsrecord_misc.c:57 | ||
4241 | msgid "Label contains `.' which is not allowed\n" | ||
4242 | msgstr "" | ||
4243 | |||
4244 | #: src/gnsrecord/gnsrecord_misc.c:464 | ||
4252 | msgid "Zone delegation record not allowed in apex." | 4245 | msgid "Zone delegation record not allowed in apex." |
4253 | msgstr "" | 4246 | msgstr "" |
4254 | 4247 | ||
4255 | #: src/gnsrecord/gnsrecord_misc.c:456 | 4248 | #: src/gnsrecord/gnsrecord_misc.c:472 |
4256 | msgid "Zone delegation record set contains mutually exclusive records." | 4249 | msgid "Zone delegation record set contains mutually exclusive records." |
4257 | msgstr "" | 4250 | msgstr "" |
4258 | 4251 | ||
4259 | #: src/gnsrecord/gnsrecord_misc.c:466 | 4252 | #: src/gnsrecord/gnsrecord_misc.c:482 |
4260 | msgid "Multiple REDIRECT records." | 4253 | msgid "Multiple REDIRECT records." |
4261 | msgstr "" | 4254 | msgstr "" |
4262 | 4255 | ||
4263 | #: src/gnsrecord/gnsrecord_misc.c:475 src/gnsrecord/gnsrecord_misc.c:501 | 4256 | #: src/gnsrecord/gnsrecord_misc.c:491 src/gnsrecord/gnsrecord_misc.c:517 |
4264 | msgid "Redirection record set conains mutually exclusive records." | 4257 | msgid "Redirection record set conains mutually exclusive records." |
4265 | msgstr "" | 4258 | msgstr "" |
4266 | 4259 | ||
4267 | #: src/gnsrecord/gnsrecord_misc.c:482 | 4260 | #: src/gnsrecord/gnsrecord_misc.c:498 |
4268 | msgid "Redirection records not allowed in apex." | 4261 | msgid "Redirection records not allowed in apex." |
4269 | msgstr "" | 4262 | msgstr "" |
4270 | 4263 | ||
4271 | #: src/gnsrecord/gnsrecord_misc.c:493 | 4264 | #: src/gnsrecord/gnsrecord_misc.c:509 |
4272 | msgid "Redirection records not allowed in apex.." | 4265 | msgid "Redirection records not allowed in apex.." |
4273 | msgstr "" | 4266 | msgstr "" |
4274 | 4267 | ||
4275 | #: src/gnsrecord/gnsrecord_misc.c:515 | 4268 | #: src/gnsrecord/gnsrecord_misc.c:531 |
4276 | msgid "Mutually exclusive records." | 4269 | msgid "Mutually exclusive records." |
4277 | msgstr "" | 4270 | msgstr "" |
4278 | 4271 | ||
@@ -4883,12 +4876,18 @@ msgstr "Conexión fallida\n" | |||
4883 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" | 4876 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" |
4884 | msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n" | 4877 | msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n" |
4885 | 4878 | ||
4886 | #: src/messenger/plugin_gnsrecord_messenger.c:118 | 4879 | #: src/messenger/plugin_gnsrecord_messenger.c:136 |
4887 | #: src/messenger/plugin_gnsrecord_messenger.c:133 | 4880 | #: src/messenger/plugin_gnsrecord_messenger.c:151 |
4888 | #, fuzzy, c-format | 4881 | #, fuzzy, c-format |
4889 | msgid "Unable to parse MESSENGER_ROOM_ENTRY record `%s'\n" | 4882 | msgid "Unable to parse MESSENGER_ROOM_ENTRY record `%s'\n" |
4890 | msgstr "No se pudo procesar el registro SOA «%s»\n" | 4883 | msgstr "No se pudo procesar el registro SOA «%s»\n" |
4891 | 4884 | ||
4885 | #: src/messenger/plugin_gnsrecord_messenger.c:172 | ||
4886 | #: src/messenger/plugin_gnsrecord_messenger.c:187 | ||
4887 | #, fuzzy, c-format | ||
4888 | msgid "Unable to parse MESSENGER_ROOM_DETAILS record `%s'\n" | ||
4889 | msgstr "No se pudo procesar el registro SOA «%s»\n" | ||
4890 | |||
4892 | #: src/my/my.c:196 src/my/my.c:215 | 4891 | #: src/my/my.c:196 src/my/my.c:215 |
4893 | #, fuzzy, c-format | 4892 | #, fuzzy, c-format |
4894 | msgid "%s failed at %s:%d with error: %s\n" | 4893 | msgid "%s failed at %s:%d with error: %s\n" |
@@ -4929,7 +4928,7 @@ msgstr "Parámetro no válido «%s»\n" | |||
4929 | msgid "You must specify a name\n" | 4928 | msgid "You must specify a name\n" |
4930 | msgstr "¡Debes especificar un receptor!\n" | 4929 | msgstr "¡Debes especificar un receptor!\n" |
4931 | 4930 | ||
4932 | #: src/namecache/gnunet-namecache.c:214 src/namestore/gnunet-namestore.c:1591 | 4931 | #: src/namecache/gnunet-namecache.c:214 src/namestore/gnunet-namestore.c:1582 |
4933 | msgid "name of the record to add/delete/display" | 4932 | msgid "name of the record to add/delete/display" |
4934 | msgstr "nombre del registro a añadir/borrar/mostrar" | 4933 | msgstr "nombre del registro a añadir/borrar/mostrar" |
4935 | 4934 | ||
@@ -4938,7 +4937,7 @@ msgstr "nombre del registro a añadir/borrar/mostrar" | |||
4938 | msgid "specifies the public key of the zone to look in" | 4937 | msgid "specifies the public key of the zone to look in" |
4939 | msgstr "Especificar el tipo del registro a buscar" | 4938 | msgstr "Especificar el tipo del registro a buscar" |
4940 | 4939 | ||
4941 | #: src/namecache/gnunet-namecache.c:233 src/namestore/gnunet-namestore.c:1652 | 4940 | #: src/namecache/gnunet-namecache.c:233 src/namestore/gnunet-namestore.c:1643 |
4942 | msgid "GNUnet zone manipulation tool" | 4941 | msgid "GNUnet zone manipulation tool" |
4943 | msgstr "Herramienta de manipulación de zona de GNUnet" | 4942 | msgstr "Herramienta de manipulación de zona de GNUnet" |
4944 | 4943 | ||
@@ -5191,12 +5190,7 @@ msgstr "Parámetro no válido «%s»\n" | |||
5191 | msgid "Invalid URI `%s'\n" | 5190 | msgid "Invalid URI `%s'\n" |
5192 | msgstr "URI no válida: «%s»\n" | 5191 | msgstr "URI no válida: «%s»\n" |
5193 | 5192 | ||
5194 | #: src/namestore/gnunet-namestore.c:1242 | 5193 | #: src/namestore/gnunet-namestore.c:1283 |
5195 | #, c-format | ||
5196 | msgid "Label `%s' contains `.' which is not allowed\n" | ||
5197 | msgstr "" | ||
5198 | |||
5199 | #: src/namestore/gnunet-namestore.c:1292 | ||
5200 | #, c-format | 5194 | #, c-format |
5201 | msgid "" | 5195 | msgid "" |
5202 | "No default identity configured for `namestore' subsystem\n" | 5196 | "No default identity configured for `namestore' subsystem\n" |
@@ -5204,104 +5198,104 @@ msgid "" | |||
5204 | "Run gnunet-identity -d to get a list of choices for $NAME\n" | 5198 | "Run gnunet-identity -d to get a list of choices for $NAME\n" |
5205 | msgstr "" | 5199 | msgstr "" |
5206 | 5200 | ||
5207 | #: src/namestore/gnunet-namestore.c:1357 | 5201 | #: src/namestore/gnunet-namestore.c:1348 |
5208 | #, fuzzy, c-format | 5202 | #, fuzzy, c-format |
5209 | msgid "Superfluous command line arguments (starting with `%s') ignored\n" | 5203 | msgid "Superfluous command line arguments (starting with `%s') ignored\n" |
5210 | msgstr "Argumentos superfluos (ignorados).\n" | 5204 | msgstr "Argumentos superfluos (ignorados).\n" |
5211 | 5205 | ||
5212 | #: src/namestore/gnunet-namestore.c:1386 | 5206 | #: src/namestore/gnunet-namestore.c:1377 |
5213 | #, fuzzy, c-format | 5207 | #, fuzzy, c-format |
5214 | msgid "Cannot connect to identity service\n" | 5208 | msgid "Cannot connect to identity service\n" |
5215 | msgstr "¡No se pudo conectar al servicio %s!\n" | 5209 | msgstr "¡No se pudo conectar al servicio %s!\n" |
5216 | 5210 | ||
5217 | #: src/namestore/gnunet-namestore.c:1433 | 5211 | #: src/namestore/gnunet-namestore.c:1424 |
5218 | msgid "Empty record line argument is not allowed.\n" | 5212 | msgid "Empty record line argument is not allowed.\n" |
5219 | msgstr "" | 5213 | msgstr "" |
5220 | 5214 | ||
5221 | #: src/namestore/gnunet-namestore.c:1445 | 5215 | #: src/namestore/gnunet-namestore.c:1436 |
5222 | #, c-format | 5216 | #, c-format |
5223 | msgid "Invalid expiration time `%s' (must be without unit)\n" | 5217 | msgid "Invalid expiration time `%s' (must be without unit)\n" |
5224 | msgstr "" | 5218 | msgstr "" |
5225 | 5219 | ||
5226 | #: src/namestore/gnunet-namestore.c:1457 src/namestore/gnunet-namestore.c:1473 | 5220 | #: src/namestore/gnunet-namestore.c:1448 src/namestore/gnunet-namestore.c:1464 |
5227 | #: src/namestore/gnunet-namestore.c:1490 | 5221 | #: src/namestore/gnunet-namestore.c:1481 |
5228 | #, fuzzy, c-format | 5222 | #, fuzzy, c-format |
5229 | msgid "Missing entries in record line `%s'.\n" | 5223 | msgid "Missing entries in record line `%s'.\n" |
5230 | msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n" | 5224 | msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n" |
5231 | 5225 | ||
5232 | #: src/namestore/gnunet-namestore.c:1465 | 5226 | #: src/namestore/gnunet-namestore.c:1456 |
5233 | #, fuzzy, c-format | 5227 | #, fuzzy, c-format |
5234 | msgid "Unknown record type `%s'\n" | 5228 | msgid "Unknown record type `%s'\n" |
5235 | msgstr "Comando desconocido «%s»\n" | 5229 | msgstr "Comando desconocido «%s»\n" |
5236 | 5230 | ||
5237 | #: src/namestore/gnunet-namestore.c:1503 | 5231 | #: src/namestore/gnunet-namestore.c:1494 |
5238 | #, fuzzy, c-format | 5232 | #, fuzzy, c-format |
5239 | msgid "Invalid record data for type %s: `%s'.\n" | 5233 | msgid "Invalid record data for type %s: `%s'.\n" |
5240 | msgstr "Formato no válido para la IP: «%s»\n" | 5234 | msgstr "Formato no válido para la IP: «%s»\n" |
5241 | 5235 | ||
5242 | #: src/namestore/gnunet-namestore.c:1560 | 5236 | #: src/namestore/gnunet-namestore.c:1551 |
5243 | msgid "add record" | 5237 | msgid "add record" |
5244 | msgstr "añadir registro" | 5238 | msgstr "añadir registro" |
5245 | 5239 | ||
5246 | #: src/namestore/gnunet-namestore.c:1563 | 5240 | #: src/namestore/gnunet-namestore.c:1554 |
5247 | msgid "delete record" | 5241 | msgid "delete record" |
5248 | msgstr "borrar registro" | 5242 | msgstr "borrar registro" |
5249 | 5243 | ||
5250 | #: src/namestore/gnunet-namestore.c:1567 | 5244 | #: src/namestore/gnunet-namestore.c:1558 |
5251 | msgid "display records" | 5245 | msgid "display records" |
5252 | msgstr "mostrar registros" | 5246 | msgstr "mostrar registros" |
5253 | 5247 | ||
5254 | #: src/namestore/gnunet-namestore.c:1574 | 5248 | #: src/namestore/gnunet-namestore.c:1565 |
5255 | msgid "" | 5249 | msgid "" |
5256 | "expiration time for record to use (for adding only), \"never\" is possible" | 5250 | "expiration time for record to use (for adding only), \"never\" is possible" |
5257 | msgstr "" | 5251 | msgstr "" |
5258 | "tiempo de expiración del registro a usar (únicamente para añadir), nunca " | 5252 | "tiempo de expiración del registro a usar (únicamente para añadir), nunca " |
5259 | "(\"never\") es posible" | 5253 | "(\"never\") es posible" |
5260 | 5254 | ||
5261 | #: src/namestore/gnunet-namestore.c:1580 | 5255 | #: src/namestore/gnunet-namestore.c:1571 |
5262 | #, fuzzy | 5256 | #, fuzzy |
5263 | msgid "set the desired nick name for the zone" | 5257 | msgid "set the desired nick name for the zone" |
5264 | msgstr "establece el nivel LEVEL deseado de replicación" | 5258 | msgstr "establece el nivel LEVEL deseado de replicación" |
5265 | 5259 | ||
5266 | #: src/namestore/gnunet-namestore.c:1585 | 5260 | #: src/namestore/gnunet-namestore.c:1576 |
5267 | #, fuzzy | 5261 | #, fuzzy |
5268 | msgid "monitor changes in the namestore" | 5262 | msgid "monitor changes in the namestore" |
5269 | msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n" | 5263 | msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n" |
5270 | 5264 | ||
5271 | #: src/namestore/gnunet-namestore.c:1597 | 5265 | #: src/namestore/gnunet-namestore.c:1588 |
5272 | #, fuzzy | 5266 | #, fuzzy |
5273 | msgid "determine our name for the given PKEY" | 5267 | msgid "determine our name for the given PKEY" |
5274 | msgstr "establece las preferencias para el par dado" | 5268 | msgstr "establece las preferencias para el par dado" |
5275 | 5269 | ||
5276 | #: src/namestore/gnunet-namestore.c:1604 | 5270 | #: src/namestore/gnunet-namestore.c:1595 |
5277 | msgid "" | 5271 | msgid "" |
5278 | "set record set to values given by (possibly multiple) RECORDLINES; can be " | 5272 | "set record set to values given by (possibly multiple) RECORDLINES; can be " |
5279 | "specified multiple times" | 5273 | "specified multiple times" |
5280 | msgstr "" | 5274 | msgstr "" |
5281 | 5275 | ||
5282 | #: src/namestore/gnunet-namestore.c:1610 | 5276 | #: src/namestore/gnunet-namestore.c:1601 |
5283 | msgid "type of the record to add/delete/display" | 5277 | msgid "type of the record to add/delete/display" |
5284 | msgstr "tipo del registro a añadir/borrar/mostrar" | 5278 | msgstr "tipo del registro a añadir/borrar/mostrar" |
5285 | 5279 | ||
5286 | #: src/namestore/gnunet-namestore.c:1615 | 5280 | #: src/namestore/gnunet-namestore.c:1606 |
5287 | msgid "URI to import into our zone" | 5281 | msgid "URI to import into our zone" |
5288 | msgstr "URI a importar a nuestra zona" | 5282 | msgstr "URI a importar a nuestra zona" |
5289 | 5283 | ||
5290 | #: src/namestore/gnunet-namestore.c:1621 | 5284 | #: src/namestore/gnunet-namestore.c:1612 |
5291 | msgid "value of the record to add/delete" | 5285 | msgid "value of the record to add/delete" |
5292 | msgstr "valor del registro a añadir/borrar" | 5286 | msgstr "valor del registro a añadir/borrar" |
5293 | 5287 | ||
5294 | #: src/namestore/gnunet-namestore.c:1625 | 5288 | #: src/namestore/gnunet-namestore.c:1616 |
5295 | msgid "create or list public record" | 5289 | msgid "create or list public record" |
5296 | msgstr "crear o listar registros públicos" | 5290 | msgstr "crear o listar registros públicos" |
5297 | 5291 | ||
5298 | #: src/namestore/gnunet-namestore.c:1631 | 5292 | #: src/namestore/gnunet-namestore.c:1622 |
5299 | msgid "" | 5293 | msgid "" |
5300 | "create shadow record (only valid if all other records of the same type have " | 5294 | "create shadow record (only valid if all other records of the same type have " |
5301 | "expired" | 5295 | "expired" |
5302 | msgstr "" | 5296 | msgstr "" |
5303 | 5297 | ||
5304 | #: src/namestore/gnunet-namestore.c:1637 | 5298 | #: src/namestore/gnunet-namestore.c:1628 |
5305 | #, fuzzy | 5299 | #, fuzzy |
5306 | msgid "name of the ego controlling the zone" | 5300 | msgid "name of the ego controlling the zone" |
5307 | msgstr "nombre de la sección a la que acceder" | 5301 | msgstr "nombre de la sección a la que acceder" |
@@ -5311,7 +5305,17 @@ msgstr "nombre de la sección a la que acceder" | |||
5311 | msgid "Failed to replicate block in namecache: %s\n" | 5305 | msgid "Failed to replicate block in namecache: %s\n" |
5312 | msgstr "Se produjo un fallo al crear el espacio de nombres «%s»\n" | 5306 | msgstr "Se produjo un fallo al crear el espacio de nombres «%s»\n" |
5313 | 5307 | ||
5314 | #: src/namestore/gnunet-service-namestore.c:1668 | 5308 | #: src/namestore/gnunet-service-namestore.c:1559 |
5309 | #, fuzzy | ||
5310 | msgid "Error normalizing name." | ||
5311 | msgstr "Error creando el túnel\n" | ||
5312 | |||
5313 | #: src/namestore/gnunet-service-namestore.c:1582 | ||
5314 | #, fuzzy | ||
5315 | msgid "Error deserializing records." | ||
5316 | msgstr "Error interno escaneando directorio.\n" | ||
5317 | |||
5318 | #: src/namestore/gnunet-service-namestore.c:1691 | ||
5315 | #, fuzzy | 5319 | #, fuzzy |
5316 | msgid "Store failed" | 5320 | msgid "Store failed" |
5317 | msgstr "«gnunet-ecc» falló" | 5321 | msgstr "«gnunet-ecc» falló" |
@@ -7123,8 +7127,8 @@ msgid "GNUnet topology control" | |||
7123 | msgstr "" | 7127 | msgstr "" |
7124 | 7128 | ||
7125 | #: src/transport/gnunet-communicator-tcp.c:3338 | 7129 | #: src/transport/gnunet-communicator-tcp.c:3338 |
7126 | #: src/transport/gnunet-communicator-udp.c:3856 | 7130 | #: src/transport/gnunet-communicator-udp.c:3867 |
7127 | #: src/transport/gnunet-service-tng.c:10623 | 7131 | #: src/transport/gnunet-service-tng.c:10926 |
7128 | #: src/transport/gnunet-service-transport.c:2627 | 7132 | #: src/transport/gnunet-service-transport.c:2627 |
7129 | #, fuzzy | 7133 | #, fuzzy |
7130 | msgid "Transport service is lacking key configuration settings. Exiting.\n" | 7134 | msgid "Transport service is lacking key configuration settings. Exiting.\n" |
@@ -7137,7 +7141,7 @@ msgstr "" | |||
7137 | msgid "GNUnet TCP communicator" | 7141 | msgid "GNUnet TCP communicator" |
7138 | msgstr "Configurador Gtk de GNUnet" | 7142 | msgstr "Configurador Gtk de GNUnet" |
7139 | 7143 | ||
7140 | #: src/transport/gnunet-communicator-udp.c:3931 | 7144 | #: src/transport/gnunet-communicator-udp.c:3942 |
7141 | #, fuzzy | 7145 | #, fuzzy |
7142 | msgid "GNUnet UDP communicator" | 7146 | msgid "GNUnet UDP communicator" |
7143 | msgstr "Configurador Gtk de GNUnet" | 7147 | msgstr "Configurador Gtk de GNUnet" |
@@ -8574,12 +8578,12 @@ msgstr "No se pudo acceder a la clave de máquina.\n" | |||
8574 | msgid "libgcrypt has not the expected version (version %s is required).\n" | 8578 | msgid "libgcrypt has not the expected version (version %s is required).\n" |
8575 | msgstr "libgcrypt no tiene la versión esperada (se necesita la versión %s).\n" | 8579 | msgstr "libgcrypt no tiene la versión esperada (se necesita la versión %s).\n" |
8576 | 8580 | ||
8577 | #: src/util/crypto_rsa.c:901 | 8581 | #: src/util/crypto_rsa.c:907 |
8578 | #, fuzzy, c-format | 8582 | #, fuzzy, c-format |
8579 | msgid "RSA signing failed at %s:%d: %s\n" | 8583 | msgid "RSA signing failed at %s:%d: %s\n" |
8580 | msgstr "El firmado ECC falló en %s:%d: %s\n" | 8584 | msgstr "El firmado ECC falló en %s:%d: %s\n" |
8581 | 8585 | ||
8582 | #: src/util/crypto_rsa.c:1201 | 8586 | #: src/util/crypto_rsa.c:1207 |
8583 | #, c-format | 8587 | #, c-format |
8584 | msgid "RSA signature verification failed at %s:%d: %s\n" | 8588 | msgid "RSA signature verification failed at %s:%d: %s\n" |
8585 | msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n" | 8589 | msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n" |
@@ -9278,14 +9282,14 @@ msgstr "Formato «%s» erroneo para máscara de red\n" | |||
9278 | msgid "Wrong format `%s' for network\n" | 9282 | msgid "Wrong format `%s' for network\n" |
9279 | msgstr "Formato «%s» erroneo para red\n" | 9283 | msgstr "Formato «%s» erroneo para red\n" |
9280 | 9284 | ||
9281 | #: src/util/time.c:870 src/util/time.c:898 | 9285 | #: src/util/time.c:900 src/util/time.c:928 |
9282 | #, fuzzy, c-format | 9286 | #, fuzzy, c-format |
9283 | msgid "Failed to map `%s', cannot assure monotonic time!\n" | 9287 | msgid "Failed to map `%s', cannot assure monotonic time!\n" |
9284 | msgstr "" | 9288 | msgstr "" |
9285 | "Se produjo un fallo al recuperar el espacio de nombres «%s», no se pudo " | 9289 | "Se produjo un fallo al recuperar el espacio de nombres «%s», no se pudo " |
9286 | "retomar la operación de publicación.\n" | 9290 | "retomar la operación de publicación.\n" |
9287 | 9291 | ||
9288 | #: src/util/time.c:906 | 9292 | #: src/util/time.c:936 |
9289 | #, c-format | 9293 | #, c-format |
9290 | msgid "" | 9294 | msgid "" |
9291 | "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n" | 9295 | "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n" |
@@ -9472,6 +9476,18 @@ msgstr "Configurar túneles vía VPN." | |||
9472 | msgid "Failed to connect to the namestore!\n" | 9476 | msgid "Failed to connect to the namestore!\n" |
9473 | msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n" | 9477 | msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n" |
9474 | 9478 | ||
9479 | #, c-format | ||
9480 | #~ msgid "Block not of type %u\n" | ||
9481 | #~ msgstr "El bloque no es del tipo %u\n" | ||
9482 | |||
9483 | #, fuzzy, c-format | ||
9484 | #~ msgid "Size mismatch for block with type %u\n" | ||
9485 | #~ msgstr "Discrepancias de tamaños para el bloque\n" | ||
9486 | |||
9487 | #, c-format | ||
9488 | #~ msgid "Block of type %u is malformed\n" | ||
9489 | #~ msgstr "El bloque del tipo %u está mal formado\n" | ||
9490 | |||
9475 | #~ msgid "# items stored" | 9491 | #~ msgid "# items stored" |
9476 | #~ msgstr "# elementos almacenados" | 9492 | #~ msgstr "# elementos almacenados" |
9477 | 9493 | ||
@@ -7,7 +7,7 @@ msgid "" | |||
7 | msgstr "" | 7 | msgstr "" |
8 | "Project-Id-Version: gnunet 0.10.1\n" | 8 | "Project-Id-Version: gnunet 0.10.1\n" |
9 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" | 9 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" |
10 | "POT-Creation-Date: 2022-03-04 22:23+0100\n" | 10 | "POT-Creation-Date: 2022-04-01 08:42+0200\n" |
11 | "PO-Revision-Date: 2021-11-21 00:53+0100\n" | 11 | "PO-Revision-Date: 2021-11-21 00:53+0100\n" |
12 | "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n" | 12 | "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n" |
13 | "Language-Team: French <traduc@traduc.org>\n" | 13 | "Language-Team: French <traduc@traduc.org>\n" |
@@ -17,7 +17,7 @@ msgstr "" | |||
17 | "Content-Transfer-Encoding: 8bit\n" | 17 | "Content-Transfer-Encoding: 8bit\n" |
18 | "X-Bugs: Report translation errors to the Language-Team address.\n" | 18 | "X-Bugs: Report translation errors to the Language-Team address.\n" |
19 | 19 | ||
20 | #: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1254 | 20 | #: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1245 |
21 | #, c-format | 21 | #, c-format |
22 | msgid "Ego `%s' not known to identity service\n" | 22 | msgid "Ego `%s' not known to identity service\n" |
23 | msgstr "" | 23 | msgstr "" |
@@ -2045,21 +2045,6 @@ msgstr "" | |||
2045 | msgid "Measure quality and performance of the DHT service." | 2045 | msgid "Measure quality and performance of the DHT service." |
2046 | msgstr "" | 2046 | msgstr "" |
2047 | 2047 | ||
2048 | #: src/dht/plugin_block_dht.c:404 | ||
2049 | #, c-format | ||
2050 | msgid "Block not of type %u\n" | ||
2051 | msgstr "" | ||
2052 | |||
2053 | #: src/dht/plugin_block_dht.c:413 | ||
2054 | #, c-format | ||
2055 | msgid "Size mismatch for block with type %u\n" | ||
2056 | msgstr "" | ||
2057 | |||
2058 | #: src/dht/plugin_block_dht.c:424 | ||
2059 | #, c-format | ||
2060 | msgid "Block of type %u is malformed\n" | ||
2061 | msgstr "" | ||
2062 | |||
2063 | #: src/dns/gnunet-dns-monitor.c:371 src/dns/gnunet-dns-monitor.c:376 | 2048 | #: src/dns/gnunet-dns-monitor.c:371 src/dns/gnunet-dns-monitor.c:376 |
2064 | msgid "only monitor DNS queries" | 2049 | msgid "only monitor DNS queries" |
2065 | msgstr "" | 2050 | msgstr "" |
@@ -2746,20 +2731,20 @@ msgstr "" | |||
2746 | msgid "LOC URI malformed (signature failed validation)" | 2731 | msgid "LOC URI malformed (signature failed validation)" |
2747 | msgstr "" | 2732 | msgstr "" |
2748 | 2733 | ||
2749 | #: src/fs/fs_uri.c:652 | 2734 | #: src/fs/fs_uri.c:653 |
2750 | #, fuzzy | 2735 | #, fuzzy |
2751 | msgid "invalid argument" | 2736 | msgid "invalid argument" |
2752 | msgstr "Argument invalide « %s »\n" | 2737 | msgstr "Argument invalide « %s »\n" |
2753 | 2738 | ||
2754 | #: src/fs/fs_uri.c:671 | 2739 | #: src/fs/fs_uri.c:673 |
2755 | msgid "Unrecognized URI type" | 2740 | msgid "Unrecognized URI type" |
2756 | msgstr "Type d’URI non reconnu" | 2741 | msgstr "Type d’URI non reconnu" |
2757 | 2742 | ||
2758 | #: src/fs/fs_uri.c:1075 src/fs/fs_uri.c:1102 | 2743 | #: src/fs/fs_uri.c:1077 src/fs/fs_uri.c:1104 |
2759 | msgid "No keywords specified!\n" | 2744 | msgid "No keywords specified!\n" |
2760 | msgstr "" | 2745 | msgstr "" |
2761 | 2746 | ||
2762 | #: src/fs/fs_uri.c:1108 | 2747 | #: src/fs/fs_uri.c:1110 |
2763 | msgid "Number of double-quotes not balanced!\n" | 2748 | msgid "Number of double-quotes not balanced!\n" |
2764 | msgstr "" | 2749 | msgstr "" |
2765 | 2750 | ||
@@ -3457,93 +3442,93 @@ msgstr "" | |||
3457 | msgid "# query plan entries" | 3442 | msgid "# query plan entries" |
3458 | msgstr "" | 3443 | msgstr "" |
3459 | 3444 | ||
3460 | #: src/fs/gnunet-service-fs_pr.c:329 | 3445 | #: src/fs/gnunet-service-fs_pr.c:330 |
3461 | msgid "# Pending requests created" | 3446 | msgid "# Pending requests created" |
3462 | msgstr "" | 3447 | msgstr "" |
3463 | 3448 | ||
3464 | #: src/fs/gnunet-service-fs_pr.c:421 src/fs/gnunet-service-fs_pr.c:658 | 3449 | #: src/fs/gnunet-service-fs_pr.c:422 src/fs/gnunet-service-fs_pr.c:662 |
3465 | msgid "# Pending requests active" | 3450 | msgid "# Pending requests active" |
3466 | msgstr "" | 3451 | msgstr "" |
3467 | 3452 | ||
3468 | #: src/fs/gnunet-service-fs_pr.c:838 | 3453 | #: src/fs/gnunet-service-fs_pr.c:837 |
3469 | msgid "# replies received and matched" | 3454 | msgid "# replies received and matched" |
3470 | msgstr "" | 3455 | msgstr "" |
3471 | 3456 | ||
3472 | #: src/fs/gnunet-service-fs_pr.c:916 | 3457 | #: src/fs/gnunet-service-fs_pr.c:911 |
3473 | msgid "# results found locally" | 3458 | msgid "# results found locally" |
3474 | msgstr "" | 3459 | msgstr "" |
3475 | 3460 | ||
3476 | #: src/fs/gnunet-service-fs_pr.c:1050 | 3461 | #: src/fs/gnunet-service-fs_pr.c:1045 |
3477 | msgid "# Datastore `PUT' failures" | 3462 | msgid "# Datastore `PUT' failures" |
3478 | msgstr "" | 3463 | msgstr "" |
3479 | 3464 | ||
3480 | #: src/fs/gnunet-service-fs_pr.c:1079 | 3465 | #: src/fs/gnunet-service-fs_pr.c:1074 |
3481 | msgid "# storage requests dropped due to high load" | 3466 | msgid "# storage requests dropped due to high load" |
3482 | msgstr "" | 3467 | msgstr "" |
3483 | 3468 | ||
3484 | #: src/fs/gnunet-service-fs_pr.c:1118 | 3469 | #: src/fs/gnunet-service-fs_pr.c:1113 |
3485 | msgid "# Replies received from DHT" | 3470 | msgid "# Replies received from DHT" |
3486 | msgstr "" | 3471 | msgstr "" |
3487 | 3472 | ||
3488 | #: src/fs/gnunet-service-fs_pr.c:1259 | 3473 | #: src/fs/gnunet-service-fs_pr.c:1268 |
3489 | msgid "# Replies received from CADET" | 3474 | msgid "# Replies received from CADET" |
3490 | msgstr "" | 3475 | msgstr "" |
3491 | 3476 | ||
3492 | #: src/fs/gnunet-service-fs_pr.c:1313 | 3477 | #: src/fs/gnunet-service-fs_pr.c:1323 |
3493 | #, c-format | 3478 | #, c-format |
3494 | msgid "Datastore lookup already took %s!\n" | 3479 | msgid "Datastore lookup already took %s!\n" |
3495 | msgstr "" | 3480 | msgstr "" |
3496 | 3481 | ||
3497 | #: src/fs/gnunet-service-fs_pr.c:1334 | 3482 | #: src/fs/gnunet-service-fs_pr.c:1344 |
3498 | #, c-format | 3483 | #, c-format |
3499 | msgid "On-demand lookup already took %s!\n" | 3484 | msgid "On-demand lookup already took %s!\n" |
3500 | msgstr "" | 3485 | msgstr "" |
3501 | 3486 | ||
3502 | #: src/fs/gnunet-service-fs_pr.c:1401 | 3487 | #: src/fs/gnunet-service-fs_pr.c:1411 |
3503 | msgid "# requested DBLOCK or IBLOCK not found" | 3488 | msgid "# requested DBLOCK or IBLOCK not found" |
3504 | msgstr "" | 3489 | msgstr "" |
3505 | 3490 | ||
3506 | #: src/fs/gnunet-service-fs_pr.c:1463 | 3491 | #: src/fs/gnunet-service-fs_pr.c:1473 |
3507 | msgid "# Datastore lookups concluded (error queueing)" | 3492 | msgid "# Datastore lookups concluded (error queueing)" |
3508 | msgstr "" | 3493 | msgstr "" |
3509 | 3494 | ||
3510 | #: src/fs/gnunet-service-fs_pr.c:1518 | 3495 | #: src/fs/gnunet-service-fs_pr.c:1528 |
3511 | msgid "# Datastore lookups concluded (no results)" | 3496 | msgid "# Datastore lookups concluded (no results)" |
3512 | msgstr "" | 3497 | msgstr "" |
3513 | 3498 | ||
3514 | #: src/fs/gnunet-service-fs_pr.c:1533 | 3499 | #: src/fs/gnunet-service-fs_pr.c:1543 |
3515 | msgid "# Datastore lookups concluded (seen all)" | 3500 | msgid "# Datastore lookups concluded (seen all)" |
3516 | msgstr "" | 3501 | msgstr "" |
3517 | 3502 | ||
3518 | #: src/fs/gnunet-service-fs_pr.c:1556 | 3503 | #: src/fs/gnunet-service-fs_pr.c:1566 |
3519 | msgid "# Datastore lookups aborted (more than MAX_RESULTS)" | 3504 | msgid "# Datastore lookups aborted (more than MAX_RESULTS)" |
3520 | msgstr "" | 3505 | msgstr "" |
3521 | 3506 | ||
3522 | #: src/fs/gnunet-service-fs_pr.c:1573 | 3507 | #: src/fs/gnunet-service-fs_pr.c:1583 |
3523 | msgid "# on-demand blocks matched requests" | 3508 | msgid "# on-demand blocks matched requests" |
3524 | msgstr "" | 3509 | msgstr "" |
3525 | 3510 | ||
3526 | #: src/fs/gnunet-service-fs_pr.c:1594 | 3511 | #: src/fs/gnunet-service-fs_pr.c:1604 |
3527 | msgid "# on-demand lookups performed successfully" | 3512 | msgid "# on-demand lookups performed successfully" |
3528 | msgstr "" | 3513 | msgstr "" |
3529 | 3514 | ||
3530 | #: src/fs/gnunet-service-fs_pr.c:1600 | 3515 | #: src/fs/gnunet-service-fs_pr.c:1610 |
3531 | msgid "# on-demand lookups failed" | 3516 | msgid "# on-demand lookups failed" |
3532 | msgstr "" | 3517 | msgstr "" |
3533 | 3518 | ||
3534 | #: src/fs/gnunet-service-fs_pr.c:1641 | 3519 | #: src/fs/gnunet-service-fs_pr.c:1656 |
3535 | msgid "# Datastore lookups concluded (found last result)" | 3520 | msgid "# Datastore lookups concluded (found last result)" |
3536 | msgstr "" | 3521 | msgstr "" |
3537 | 3522 | ||
3538 | #: src/fs/gnunet-service-fs_pr.c:1654 | 3523 | #: src/fs/gnunet-service-fs_pr.c:1669 |
3539 | msgid "# Datastore lookups concluded (load too high)" | 3524 | msgid "# Datastore lookups concluded (load too high)" |
3540 | msgstr "" | 3525 | msgstr "" |
3541 | 3526 | ||
3542 | #: src/fs/gnunet-service-fs_pr.c:1705 | 3527 | #: src/fs/gnunet-service-fs_pr.c:1720 |
3543 | msgid "# Datastore lookups initiated" | 3528 | msgid "# Datastore lookups initiated" |
3544 | msgstr "" | 3529 | msgstr "" |
3545 | 3530 | ||
3546 | #: src/fs/gnunet-service-fs_pr.c:1755 | 3531 | #: src/fs/gnunet-service-fs_pr.c:1784 |
3547 | msgid "# GAP PUT messages received" | 3532 | msgid "# GAP PUT messages received" |
3548 | msgstr "" | 3533 | msgstr "" |
3549 | 3534 | ||
@@ -3844,64 +3829,64 @@ msgstr "" | |||
3844 | msgid "Failed to connect to the DNS service!\n" | 3829 | msgid "Failed to connect to the DNS service!\n" |
3845 | msgstr "" | 3830 | msgstr "" |
3846 | 3831 | ||
3847 | #: src/gns/gnunet-service-gns_resolver.c:659 | 3832 | #: src/gns/gnunet-service-gns_resolver.c:672 |
3848 | #, c-format | 3833 | #, c-format |
3849 | msgid "Protocol `%s' unknown, skipping labels.\n" | 3834 | msgid "Protocol `%s' unknown, skipping labels.\n" |
3850 | msgstr "" | 3835 | msgstr "" |
3851 | 3836 | ||
3852 | #: src/gns/gnunet-service-gns_resolver.c:671 | 3837 | #: src/gns/gnunet-service-gns_resolver.c:684 |
3853 | #, c-format | 3838 | #, c-format |
3854 | msgid "Service `%s' unknown for protocol `%s', trying as number.\n" | 3839 | msgid "Service `%s' unknown for protocol `%s', trying as number.\n" |
3855 | msgstr "" | 3840 | msgstr "" |
3856 | 3841 | ||
3857 | #: src/gns/gnunet-service-gns_resolver.c:677 | 3842 | #: src/gns/gnunet-service-gns_resolver.c:690 |
3858 | #, c-format | 3843 | #, c-format |
3859 | msgid "Service `%s' not a port, skipping service labels.\n" | 3844 | msgid "Service `%s' not a port, skipping service labels.\n" |
3860 | msgstr "" | 3845 | msgstr "" |
3861 | 3846 | ||
3862 | #: src/gns/gnunet-service-gns_resolver.c:891 | 3847 | #: src/gns/gnunet-service-gns_resolver.c:904 |
3863 | msgid "Failed to parse DNS response\n" | 3848 | msgid "Failed to parse DNS response\n" |
3864 | msgstr "" | 3849 | msgstr "" |
3865 | 3850 | ||
3866 | #: src/gns/gnunet-service-gns_resolver.c:1082 | 3851 | #: src/gns/gnunet-service-gns_resolver.c:1095 |
3867 | #, c-format | 3852 | #, c-format |
3868 | msgid "Skipping record of unsupported type %d\n" | 3853 | msgid "Skipping record of unsupported type %d\n" |
3869 | msgstr "" | 3854 | msgstr "" |
3870 | 3855 | ||
3871 | #: src/gns/gnunet-service-gns_resolver.c:1859 | 3856 | #: src/gns/gnunet-service-gns_resolver.c:1872 |
3872 | #, c-format | 3857 | #, c-format |
3873 | msgid "Name `%s' cannot be converted to IDNA." | 3858 | msgid "Name `%s' cannot be converted to IDNA." |
3874 | msgstr "" | 3859 | msgstr "" |
3875 | 3860 | ||
3876 | #: src/gns/gnunet-service-gns_resolver.c:1874 | 3861 | #: src/gns/gnunet-service-gns_resolver.c:1887 |
3877 | #, c-format | 3862 | #, c-format |
3878 | msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" | 3863 | msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" |
3879 | msgstr "" | 3864 | msgstr "" |
3880 | 3865 | ||
3881 | #: src/gns/gnunet-service-gns_resolver.c:1914 | 3866 | #: src/gns/gnunet-service-gns_resolver.c:1927 |
3882 | #, c-format | 3867 | #, c-format |
3883 | msgid "GNS lookup failed (zero records found for `%s')\n" | 3868 | msgid "GNS lookup failed (zero records found for `%s')\n" |
3884 | msgstr "" | 3869 | msgstr "" |
3885 | 3870 | ||
3886 | #: src/gns/gnunet-service-gns_resolver.c:2312 | 3871 | #: src/gns/gnunet-service-gns_resolver.c:2329 |
3887 | msgid "Unable to process critical delegation record\n" | 3872 | msgid "Unable to process critical delegation record\n" |
3888 | msgstr "" | 3873 | msgstr "" |
3889 | 3874 | ||
3890 | #: src/gns/gnunet-service-gns_resolver.c:2317 | 3875 | #: src/gns/gnunet-service-gns_resolver.c:2334 |
3891 | msgid "GNS lookup recursion failed (no delegation record found)\n" | 3876 | msgid "GNS lookup recursion failed (no delegation record found)\n" |
3892 | msgstr "" | 3877 | msgstr "" |
3893 | 3878 | ||
3894 | #: src/gns/gnunet-service-gns_resolver.c:2340 | 3879 | #: src/gns/gnunet-service-gns_resolver.c:2357 |
3895 | #, c-format | 3880 | #, c-format |
3896 | msgid "Failed to cache GNS resolution: %s\n" | 3881 | msgid "Failed to cache GNS resolution: %s\n" |
3897 | msgstr "" | 3882 | msgstr "" |
3898 | 3883 | ||
3899 | #: src/gns/gnunet-service-gns_resolver.c:2505 | 3884 | #: src/gns/gnunet-service-gns_resolver.c:2522 |
3900 | #, c-format | 3885 | #, c-format |
3901 | msgid "GNS namecache returned empty result for `%s'\n" | 3886 | msgid "GNS namecache returned empty result for `%s'\n" |
3902 | msgstr "" | 3887 | msgstr "" |
3903 | 3888 | ||
3904 | #: src/gns/gnunet-service-gns_resolver.c:2652 | 3889 | #: src/gns/gnunet-service-gns_resolver.c:2669 |
3905 | #, c-format | 3890 | #, c-format |
3906 | msgid "Zone %s was revoked, resolution fails\n" | 3891 | msgid "Zone %s was revoked, resolution fails\n" |
3907 | msgstr "" | 3892 | msgstr "" |
@@ -3943,31 +3928,39 @@ msgstr "" | |||
3943 | msgid "Gns REST API initialized\n" | 3928 | msgid "Gns REST API initialized\n" |
3944 | msgstr "" | 3929 | msgstr "" |
3945 | 3930 | ||
3946 | #: src/gnsrecord/gnsrecord_misc.c:448 | 3931 | #: src/gnsrecord/gnsrecord_misc.c:52 |
3932 | msgid "Label is NULL which is not allowed\n" | ||
3933 | msgstr "" | ||
3934 | |||
3935 | #: src/gnsrecord/gnsrecord_misc.c:57 | ||
3936 | msgid "Label contains `.' which is not allowed\n" | ||
3937 | msgstr "" | ||
3938 | |||
3939 | #: src/gnsrecord/gnsrecord_misc.c:464 | ||
3947 | msgid "Zone delegation record not allowed in apex." | 3940 | msgid "Zone delegation record not allowed in apex." |
3948 | msgstr "" | 3941 | msgstr "" |
3949 | 3942 | ||
3950 | #: src/gnsrecord/gnsrecord_misc.c:456 | 3943 | #: src/gnsrecord/gnsrecord_misc.c:472 |
3951 | msgid "Zone delegation record set contains mutually exclusive records." | 3944 | msgid "Zone delegation record set contains mutually exclusive records." |
3952 | msgstr "" | 3945 | msgstr "" |
3953 | 3946 | ||
3954 | #: src/gnsrecord/gnsrecord_misc.c:466 | 3947 | #: src/gnsrecord/gnsrecord_misc.c:482 |
3955 | msgid "Multiple REDIRECT records." | 3948 | msgid "Multiple REDIRECT records." |
3956 | msgstr "" | 3949 | msgstr "" |
3957 | 3950 | ||
3958 | #: src/gnsrecord/gnsrecord_misc.c:475 src/gnsrecord/gnsrecord_misc.c:501 | 3951 | #: src/gnsrecord/gnsrecord_misc.c:491 src/gnsrecord/gnsrecord_misc.c:517 |
3959 | msgid "Redirection record set conains mutually exclusive records." | 3952 | msgid "Redirection record set conains mutually exclusive records." |
3960 | msgstr "" | 3953 | msgstr "" |
3961 | 3954 | ||
3962 | #: src/gnsrecord/gnsrecord_misc.c:482 | 3955 | #: src/gnsrecord/gnsrecord_misc.c:498 |
3963 | msgid "Redirection records not allowed in apex." | 3956 | msgid "Redirection records not allowed in apex." |
3964 | msgstr "" | 3957 | msgstr "" |
3965 | 3958 | ||
3966 | #: src/gnsrecord/gnsrecord_misc.c:493 | 3959 | #: src/gnsrecord/gnsrecord_misc.c:509 |
3967 | msgid "Redirection records not allowed in apex.." | 3960 | msgid "Redirection records not allowed in apex.." |
3968 | msgstr "" | 3961 | msgstr "" |
3969 | 3962 | ||
3970 | #: src/gnsrecord/gnsrecord_misc.c:515 | 3963 | #: src/gnsrecord/gnsrecord_misc.c:531 |
3971 | msgid "Mutually exclusive records." | 3964 | msgid "Mutually exclusive records." |
3972 | msgstr "" | 3965 | msgstr "" |
3973 | 3966 | ||
@@ -4527,12 +4520,18 @@ msgstr "" | |||
4527 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" | 4520 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" |
4528 | msgstr "Résolution de « %s » échouée : %s\n" | 4521 | msgstr "Résolution de « %s » échouée : %s\n" |
4529 | 4522 | ||
4530 | #: src/messenger/plugin_gnsrecord_messenger.c:118 | 4523 | #: src/messenger/plugin_gnsrecord_messenger.c:136 |
4531 | #: src/messenger/plugin_gnsrecord_messenger.c:133 | 4524 | #: src/messenger/plugin_gnsrecord_messenger.c:151 |
4532 | #, c-format | 4525 | #, c-format |
4533 | msgid "Unable to parse MESSENGER_ROOM_ENTRY record `%s'\n" | 4526 | msgid "Unable to parse MESSENGER_ROOM_ENTRY record `%s'\n" |
4534 | msgstr "" | 4527 | msgstr "" |
4535 | 4528 | ||
4529 | #: src/messenger/plugin_gnsrecord_messenger.c:172 | ||
4530 | #: src/messenger/plugin_gnsrecord_messenger.c:187 | ||
4531 | #, c-format | ||
4532 | msgid "Unable to parse MESSENGER_ROOM_DETAILS record `%s'\n" | ||
4533 | msgstr "" | ||
4534 | |||
4536 | #: src/my/my.c:196 src/my/my.c:215 | 4535 | #: src/my/my.c:196 src/my/my.c:215 |
4537 | #, c-format | 4536 | #, c-format |
4538 | msgid "%s failed at %s:%d with error: %s\n" | 4537 | msgid "%s failed at %s:%d with error: %s\n" |
@@ -4573,7 +4572,7 @@ msgstr "fornat invalide : « %s »\n" | |||
4573 | msgid "You must specify a name\n" | 4572 | msgid "You must specify a name\n" |
4574 | msgstr "" | 4573 | msgstr "" |
4575 | 4574 | ||
4576 | #: src/namecache/gnunet-namecache.c:214 src/namestore/gnunet-namestore.c:1591 | 4575 | #: src/namecache/gnunet-namecache.c:214 src/namestore/gnunet-namestore.c:1582 |
4577 | msgid "name of the record to add/delete/display" | 4576 | msgid "name of the record to add/delete/display" |
4578 | msgstr "" | 4577 | msgstr "" |
4579 | 4578 | ||
@@ -4581,7 +4580,7 @@ msgstr "" | |||
4581 | msgid "specifies the public key of the zone to look in" | 4580 | msgid "specifies the public key of the zone to look in" |
4582 | msgstr "" | 4581 | msgstr "" |
4583 | 4582 | ||
4584 | #: src/namecache/gnunet-namecache.c:233 src/namestore/gnunet-namestore.c:1652 | 4583 | #: src/namecache/gnunet-namecache.c:233 src/namestore/gnunet-namestore.c:1643 |
4585 | msgid "GNUnet zone manipulation tool" | 4584 | msgid "GNUnet zone manipulation tool" |
4586 | msgstr "" | 4585 | msgstr "" |
4587 | 4586 | ||
@@ -4823,12 +4822,7 @@ msgstr "" | |||
4823 | msgid "Invalid URI `%s'\n" | 4822 | msgid "Invalid URI `%s'\n" |
4824 | msgstr "URI invalide « %s »\n" | 4823 | msgstr "URI invalide « %s »\n" |
4825 | 4824 | ||
4826 | #: src/namestore/gnunet-namestore.c:1242 | 4825 | #: src/namestore/gnunet-namestore.c:1283 |
4827 | #, c-format | ||
4828 | msgid "Label `%s' contains `.' which is not allowed\n" | ||
4829 | msgstr "" | ||
4830 | |||
4831 | #: src/namestore/gnunet-namestore.c:1292 | ||
4832 | #, c-format | 4826 | #, c-format |
4833 | msgid "" | 4827 | msgid "" |
4834 | "No default identity configured for `namestore' subsystem\n" | 4828 | "No default identity configured for `namestore' subsystem\n" |
@@ -4836,99 +4830,99 @@ msgid "" | |||
4836 | "Run gnunet-identity -d to get a list of choices for $NAME\n" | 4830 | "Run gnunet-identity -d to get a list of choices for $NAME\n" |
4837 | msgstr "" | 4831 | msgstr "" |
4838 | 4832 | ||
4839 | #: src/namestore/gnunet-namestore.c:1357 | 4833 | #: src/namestore/gnunet-namestore.c:1348 |
4840 | #, c-format | 4834 | #, c-format |
4841 | msgid "Superfluous command line arguments (starting with `%s') ignored\n" | 4835 | msgid "Superfluous command line arguments (starting with `%s') ignored\n" |
4842 | msgstr "" | 4836 | msgstr "" |
4843 | 4837 | ||
4844 | #: src/namestore/gnunet-namestore.c:1386 | 4838 | #: src/namestore/gnunet-namestore.c:1377 |
4845 | #, c-format | 4839 | #, c-format |
4846 | msgid "Cannot connect to identity service\n" | 4840 | msgid "Cannot connect to identity service\n" |
4847 | msgstr "" | 4841 | msgstr "" |
4848 | 4842 | ||
4849 | #: src/namestore/gnunet-namestore.c:1433 | 4843 | #: src/namestore/gnunet-namestore.c:1424 |
4850 | msgid "Empty record line argument is not allowed.\n" | 4844 | msgid "Empty record line argument is not allowed.\n" |
4851 | msgstr "" | 4845 | msgstr "" |
4852 | 4846 | ||
4853 | #: src/namestore/gnunet-namestore.c:1445 | 4847 | #: src/namestore/gnunet-namestore.c:1436 |
4854 | #, c-format | 4848 | #, c-format |
4855 | msgid "Invalid expiration time `%s' (must be without unit)\n" | 4849 | msgid "Invalid expiration time `%s' (must be without unit)\n" |
4856 | msgstr "" | 4850 | msgstr "" |
4857 | 4851 | ||
4858 | #: src/namestore/gnunet-namestore.c:1457 src/namestore/gnunet-namestore.c:1473 | 4852 | #: src/namestore/gnunet-namestore.c:1448 src/namestore/gnunet-namestore.c:1464 |
4859 | #: src/namestore/gnunet-namestore.c:1490 | 4853 | #: src/namestore/gnunet-namestore.c:1481 |
4860 | #, c-format | 4854 | #, c-format |
4861 | msgid "Missing entries in record line `%s'.\n" | 4855 | msgid "Missing entries in record line `%s'.\n" |
4862 | msgstr "" | 4856 | msgstr "" |
4863 | 4857 | ||
4864 | #: src/namestore/gnunet-namestore.c:1465 | 4858 | #: src/namestore/gnunet-namestore.c:1456 |
4865 | #, fuzzy, c-format | 4859 | #, fuzzy, c-format |
4866 | msgid "Unknown record type `%s'\n" | 4860 | msgid "Unknown record type `%s'\n" |
4867 | msgstr "Commande « %s » inconnue\n" | 4861 | msgstr "Commande « %s » inconnue\n" |
4868 | 4862 | ||
4869 | #: src/namestore/gnunet-namestore.c:1503 | 4863 | #: src/namestore/gnunet-namestore.c:1494 |
4870 | #, fuzzy, c-format | 4864 | #, fuzzy, c-format |
4871 | msgid "Invalid record data for type %s: `%s'.\n" | 4865 | msgid "Invalid record data for type %s: `%s'.\n" |
4872 | msgstr "fornat invalide : « %s »\n" | 4866 | msgstr "fornat invalide : « %s »\n" |
4873 | 4867 | ||
4874 | #: src/namestore/gnunet-namestore.c:1560 | 4868 | #: src/namestore/gnunet-namestore.c:1551 |
4875 | msgid "add record" | 4869 | msgid "add record" |
4876 | msgstr "ajouter un enregistrement" | 4870 | msgstr "ajouter un enregistrement" |
4877 | 4871 | ||
4878 | #: src/namestore/gnunet-namestore.c:1563 | 4872 | #: src/namestore/gnunet-namestore.c:1554 |
4879 | msgid "delete record" | 4873 | msgid "delete record" |
4880 | msgstr "suprimer un enregistrement" | 4874 | msgstr "suprimer un enregistrement" |
4881 | 4875 | ||
4882 | #: src/namestore/gnunet-namestore.c:1567 | 4876 | #: src/namestore/gnunet-namestore.c:1558 |
4883 | msgid "display records" | 4877 | msgid "display records" |
4884 | msgstr "afficher les enregistrements" | 4878 | msgstr "afficher les enregistrements" |
4885 | 4879 | ||
4886 | #: src/namestore/gnunet-namestore.c:1574 | 4880 | #: src/namestore/gnunet-namestore.c:1565 |
4887 | msgid "" | 4881 | msgid "" |
4888 | "expiration time for record to use (for adding only), \"never\" is possible" | 4882 | "expiration time for record to use (for adding only), \"never\" is possible" |
4889 | msgstr "" | 4883 | msgstr "" |
4890 | 4884 | ||
4891 | #: src/namestore/gnunet-namestore.c:1580 | 4885 | #: src/namestore/gnunet-namestore.c:1571 |
4892 | msgid "set the desired nick name for the zone" | 4886 | msgid "set the desired nick name for the zone" |
4893 | msgstr "" | 4887 | msgstr "" |
4894 | 4888 | ||
4895 | #: src/namestore/gnunet-namestore.c:1585 | 4889 | #: src/namestore/gnunet-namestore.c:1576 |
4896 | msgid "monitor changes in the namestore" | 4890 | msgid "monitor changes in the namestore" |
4897 | msgstr "" | 4891 | msgstr "" |
4898 | 4892 | ||
4899 | #: src/namestore/gnunet-namestore.c:1597 | 4893 | #: src/namestore/gnunet-namestore.c:1588 |
4900 | msgid "determine our name for the given PKEY" | 4894 | msgid "determine our name for the given PKEY" |
4901 | msgstr "" | 4895 | msgstr "" |
4902 | 4896 | ||
4903 | #: src/namestore/gnunet-namestore.c:1604 | 4897 | #: src/namestore/gnunet-namestore.c:1595 |
4904 | msgid "" | 4898 | msgid "" |
4905 | "set record set to values given by (possibly multiple) RECORDLINES; can be " | 4899 | "set record set to values given by (possibly multiple) RECORDLINES; can be " |
4906 | "specified multiple times" | 4900 | "specified multiple times" |
4907 | msgstr "" | 4901 | msgstr "" |
4908 | 4902 | ||
4909 | #: src/namestore/gnunet-namestore.c:1610 | 4903 | #: src/namestore/gnunet-namestore.c:1601 |
4910 | msgid "type of the record to add/delete/display" | 4904 | msgid "type of the record to add/delete/display" |
4911 | msgstr "" | 4905 | msgstr "" |
4912 | 4906 | ||
4913 | #: src/namestore/gnunet-namestore.c:1615 | 4907 | #: src/namestore/gnunet-namestore.c:1606 |
4914 | msgid "URI to import into our zone" | 4908 | msgid "URI to import into our zone" |
4915 | msgstr "" | 4909 | msgstr "" |
4916 | 4910 | ||
4917 | #: src/namestore/gnunet-namestore.c:1621 | 4911 | #: src/namestore/gnunet-namestore.c:1612 |
4918 | msgid "value of the record to add/delete" | 4912 | msgid "value of the record to add/delete" |
4919 | msgstr "" | 4913 | msgstr "" |
4920 | 4914 | ||
4921 | #: src/namestore/gnunet-namestore.c:1625 | 4915 | #: src/namestore/gnunet-namestore.c:1616 |
4922 | msgid "create or list public record" | 4916 | msgid "create or list public record" |
4923 | msgstr "" | 4917 | msgstr "" |
4924 | 4918 | ||
4925 | #: src/namestore/gnunet-namestore.c:1631 | 4919 | #: src/namestore/gnunet-namestore.c:1622 |
4926 | msgid "" | 4920 | msgid "" |
4927 | "create shadow record (only valid if all other records of the same type have " | 4921 | "create shadow record (only valid if all other records of the same type have " |
4928 | "expired" | 4922 | "expired" |
4929 | msgstr "" | 4923 | msgstr "" |
4930 | 4924 | ||
4931 | #: src/namestore/gnunet-namestore.c:1637 | 4925 | #: src/namestore/gnunet-namestore.c:1628 |
4932 | msgid "name of the ego controlling the zone" | 4926 | msgid "name of the ego controlling the zone" |
4933 | msgstr "" | 4927 | msgstr "" |
4934 | 4928 | ||
@@ -4937,7 +4931,17 @@ msgstr "" | |||
4937 | msgid "Failed to replicate block in namecache: %s\n" | 4931 | msgid "Failed to replicate block in namecache: %s\n" |
4938 | msgstr "" | 4932 | msgstr "" |
4939 | 4933 | ||
4940 | #: src/namestore/gnunet-service-namestore.c:1668 | 4934 | #: src/namestore/gnunet-service-namestore.c:1559 |
4935 | #, fuzzy | ||
4936 | msgid "Error normalizing name." | ||
4937 | msgstr "Erreur de création du tunnel\n" | ||
4938 | |||
4939 | #: src/namestore/gnunet-service-namestore.c:1582 | ||
4940 | #, fuzzy | ||
4941 | msgid "Error deserializing records." | ||
4942 | msgstr "Erreur de création du tunnel\n" | ||
4943 | |||
4944 | #: src/namestore/gnunet-service-namestore.c:1691 | ||
4941 | #, fuzzy | 4945 | #, fuzzy |
4942 | msgid "Store failed" | 4946 | msgid "Store failed" |
4943 | msgstr "pa_stream_new() échoué : %s\n" | 4947 | msgstr "pa_stream_new() échoué : %s\n" |
@@ -6630,8 +6634,8 @@ msgid "GNUnet topology control" | |||
6630 | msgstr "" | 6634 | msgstr "" |
6631 | 6635 | ||
6632 | #: src/transport/gnunet-communicator-tcp.c:3338 | 6636 | #: src/transport/gnunet-communicator-tcp.c:3338 |
6633 | #: src/transport/gnunet-communicator-udp.c:3856 | 6637 | #: src/transport/gnunet-communicator-udp.c:3867 |
6634 | #: src/transport/gnunet-service-tng.c:10623 | 6638 | #: src/transport/gnunet-service-tng.c:10926 |
6635 | #: src/transport/gnunet-service-transport.c:2627 | 6639 | #: src/transport/gnunet-service-transport.c:2627 |
6636 | msgid "Transport service is lacking key configuration settings. Exiting.\n" | 6640 | msgid "Transport service is lacking key configuration settings. Exiting.\n" |
6637 | msgstr "" | 6641 | msgstr "" |
@@ -6640,7 +6644,7 @@ msgstr "" | |||
6640 | msgid "GNUnet TCP communicator" | 6644 | msgid "GNUnet TCP communicator" |
6641 | msgstr "" | 6645 | msgstr "" |
6642 | 6646 | ||
6643 | #: src/transport/gnunet-communicator-udp.c:3931 | 6647 | #: src/transport/gnunet-communicator-udp.c:3942 |
6644 | msgid "GNUnet UDP communicator" | 6648 | msgid "GNUnet UDP communicator" |
6645 | msgstr "" | 6649 | msgstr "" |
6646 | 6650 | ||
@@ -7960,12 +7964,12 @@ msgstr "" | |||
7960 | msgid "libgcrypt has not the expected version (version %s is required).\n" | 7964 | msgid "libgcrypt has not the expected version (version %s is required).\n" |
7961 | msgstr "" | 7965 | msgstr "" |
7962 | 7966 | ||
7963 | #: src/util/crypto_rsa.c:901 | 7967 | #: src/util/crypto_rsa.c:907 |
7964 | #, c-format | 7968 | #, c-format |
7965 | msgid "RSA signing failed at %s:%d: %s\n" | 7969 | msgid "RSA signing failed at %s:%d: %s\n" |
7966 | msgstr "" | 7970 | msgstr "" |
7967 | 7971 | ||
7968 | #: src/util/crypto_rsa.c:1201 | 7972 | #: src/util/crypto_rsa.c:1207 |
7969 | #, c-format | 7973 | #, c-format |
7970 | msgid "RSA signature verification failed at %s:%d: %s\n" | 7974 | msgid "RSA signature verification failed at %s:%d: %s\n" |
7971 | msgstr "" | 7975 | msgstr "" |
@@ -8633,12 +8637,12 @@ msgstr "" | |||
8633 | msgid "Wrong format `%s' for network\n" | 8637 | msgid "Wrong format `%s' for network\n" |
8634 | msgstr "" | 8638 | msgstr "" |
8635 | 8639 | ||
8636 | #: src/util/time.c:870 src/util/time.c:898 | 8640 | #: src/util/time.c:900 src/util/time.c:928 |
8637 | #, c-format | 8641 | #, c-format |
8638 | msgid "Failed to map `%s', cannot assure monotonic time!\n" | 8642 | msgid "Failed to map `%s', cannot assure monotonic time!\n" |
8639 | msgstr "" | 8643 | msgstr "" |
8640 | 8644 | ||
8641 | #: src/util/time.c:906 | 8645 | #: src/util/time.c:936 |
8642 | #, c-format | 8646 | #, c-format |
8643 | msgid "" | 8647 | msgid "" |
8644 | "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n" | 8648 | "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n" |
@@ -8,7 +8,7 @@ msgid "" | |||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: gnunet 0.10.1\n" | 9 | "Project-Id-Version: gnunet 0.10.1\n" |
10 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" | 10 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" |
11 | "POT-Creation-Date: 2022-03-04 22:23+0100\n" | 11 | "POT-Creation-Date: 2022-04-01 08:42+0200\n" |
12 | "PO-Revision-Date: 2019-10-16 11:00+0200\n" | 12 | "PO-Revision-Date: 2019-10-16 11:00+0200\n" |
13 | "Last-Translator: Sebastiano Pistore <sebastianopistore.info@protonmail.ch>\n" | 13 | "Last-Translator: Sebastiano Pistore <sebastianopistore.info@protonmail.ch>\n" |
14 | "Language-Team: Italian <tp@lists.linux.it>\n" | 14 | "Language-Team: Italian <tp@lists.linux.it>\n" |
@@ -20,7 +20,7 @@ msgstr "" | |||
20 | "X-Generator: Poedit 2.2.3\n" | 20 | "X-Generator: Poedit 2.2.3\n" |
21 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" | 21 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" |
22 | 22 | ||
23 | #: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1254 | 23 | #: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1245 |
24 | #, c-format | 24 | #, c-format |
25 | msgid "Ego `%s' not known to identity service\n" | 25 | msgid "Ego `%s' not known to identity service\n" |
26 | msgstr "" | 26 | msgstr "" |
@@ -2048,21 +2048,6 @@ msgstr "" | |||
2048 | msgid "Measure quality and performance of the DHT service." | 2048 | msgid "Measure quality and performance of the DHT service." |
2049 | msgstr "" | 2049 | msgstr "" |
2050 | 2050 | ||
2051 | #: src/dht/plugin_block_dht.c:404 | ||
2052 | #, c-format | ||
2053 | msgid "Block not of type %u\n" | ||
2054 | msgstr "" | ||
2055 | |||
2056 | #: src/dht/plugin_block_dht.c:413 | ||
2057 | #, c-format | ||
2058 | msgid "Size mismatch for block with type %u\n" | ||
2059 | msgstr "" | ||
2060 | |||
2061 | #: src/dht/plugin_block_dht.c:424 | ||
2062 | #, c-format | ||
2063 | msgid "Block of type %u is malformed\n" | ||
2064 | msgstr "" | ||
2065 | |||
2066 | #: src/dns/gnunet-dns-monitor.c:371 src/dns/gnunet-dns-monitor.c:376 | 2051 | #: src/dns/gnunet-dns-monitor.c:371 src/dns/gnunet-dns-monitor.c:376 |
2067 | msgid "only monitor DNS queries" | 2052 | msgid "only monitor DNS queries" |
2068 | msgstr "" | 2053 | msgstr "" |
@@ -2760,19 +2745,19 @@ msgstr "" | |||
2760 | msgid "LOC URI malformed (signature failed validation)" | 2745 | msgid "LOC URI malformed (signature failed validation)" |
2761 | msgstr "" | 2746 | msgstr "" |
2762 | 2747 | ||
2763 | #: src/fs/fs_uri.c:652 | 2748 | #: src/fs/fs_uri.c:653 |
2764 | msgid "invalid argument" | 2749 | msgid "invalid argument" |
2765 | msgstr "argomento non valido" | 2750 | msgstr "argomento non valido" |
2766 | 2751 | ||
2767 | #: src/fs/fs_uri.c:671 | 2752 | #: src/fs/fs_uri.c:673 |
2768 | msgid "Unrecognized URI type" | 2753 | msgid "Unrecognized URI type" |
2769 | msgstr "" | 2754 | msgstr "" |
2770 | 2755 | ||
2771 | #: src/fs/fs_uri.c:1075 src/fs/fs_uri.c:1102 | 2756 | #: src/fs/fs_uri.c:1077 src/fs/fs_uri.c:1104 |
2772 | msgid "No keywords specified!\n" | 2757 | msgid "No keywords specified!\n" |
2773 | msgstr "" | 2758 | msgstr "" |
2774 | 2759 | ||
2775 | #: src/fs/fs_uri.c:1108 | 2760 | #: src/fs/fs_uri.c:1110 |
2776 | msgid "Number of double-quotes not balanced!\n" | 2761 | msgid "Number of double-quotes not balanced!\n" |
2777 | msgstr "" | 2762 | msgstr "" |
2778 | 2763 | ||
@@ -3479,93 +3464,93 @@ msgstr "" | |||
3479 | msgid "# query plan entries" | 3464 | msgid "# query plan entries" |
3480 | msgstr "" | 3465 | msgstr "" |
3481 | 3466 | ||
3482 | #: src/fs/gnunet-service-fs_pr.c:329 | 3467 | #: src/fs/gnunet-service-fs_pr.c:330 |
3483 | msgid "# Pending requests created" | 3468 | msgid "# Pending requests created" |
3484 | msgstr "" | 3469 | msgstr "" |
3485 | 3470 | ||
3486 | #: src/fs/gnunet-service-fs_pr.c:421 src/fs/gnunet-service-fs_pr.c:658 | 3471 | #: src/fs/gnunet-service-fs_pr.c:422 src/fs/gnunet-service-fs_pr.c:662 |
3487 | msgid "# Pending requests active" | 3472 | msgid "# Pending requests active" |
3488 | msgstr "" | 3473 | msgstr "" |
3489 | 3474 | ||
3490 | #: src/fs/gnunet-service-fs_pr.c:838 | 3475 | #: src/fs/gnunet-service-fs_pr.c:837 |
3491 | msgid "# replies received and matched" | 3476 | msgid "# replies received and matched" |
3492 | msgstr "" | 3477 | msgstr "" |
3493 | 3478 | ||
3494 | #: src/fs/gnunet-service-fs_pr.c:916 | 3479 | #: src/fs/gnunet-service-fs_pr.c:911 |
3495 | msgid "# results found locally" | 3480 | msgid "# results found locally" |
3496 | msgstr "" | 3481 | msgstr "" |
3497 | 3482 | ||
3498 | #: src/fs/gnunet-service-fs_pr.c:1050 | 3483 | #: src/fs/gnunet-service-fs_pr.c:1045 |
3499 | msgid "# Datastore `PUT' failures" | 3484 | msgid "# Datastore `PUT' failures" |
3500 | msgstr "" | 3485 | msgstr "" |
3501 | 3486 | ||
3502 | #: src/fs/gnunet-service-fs_pr.c:1079 | 3487 | #: src/fs/gnunet-service-fs_pr.c:1074 |
3503 | msgid "# storage requests dropped due to high load" | 3488 | msgid "# storage requests dropped due to high load" |
3504 | msgstr "" | 3489 | msgstr "" |
3505 | 3490 | ||
3506 | #: src/fs/gnunet-service-fs_pr.c:1118 | 3491 | #: src/fs/gnunet-service-fs_pr.c:1113 |
3507 | msgid "# Replies received from DHT" | 3492 | msgid "# Replies received from DHT" |
3508 | msgstr "" | 3493 | msgstr "" |
3509 | 3494 | ||
3510 | #: src/fs/gnunet-service-fs_pr.c:1259 | 3495 | #: src/fs/gnunet-service-fs_pr.c:1268 |
3511 | msgid "# Replies received from CADET" | 3496 | msgid "# Replies received from CADET" |
3512 | msgstr "" | 3497 | msgstr "" |
3513 | 3498 | ||
3514 | #: src/fs/gnunet-service-fs_pr.c:1313 | 3499 | #: src/fs/gnunet-service-fs_pr.c:1323 |
3515 | #, c-format | 3500 | #, c-format |
3516 | msgid "Datastore lookup already took %s!\n" | 3501 | msgid "Datastore lookup already took %s!\n" |
3517 | msgstr "" | 3502 | msgstr "" |
3518 | 3503 | ||
3519 | #: src/fs/gnunet-service-fs_pr.c:1334 | 3504 | #: src/fs/gnunet-service-fs_pr.c:1344 |
3520 | #, c-format | 3505 | #, c-format |
3521 | msgid "On-demand lookup already took %s!\n" | 3506 | msgid "On-demand lookup already took %s!\n" |
3522 | msgstr "" | 3507 | msgstr "" |
3523 | 3508 | ||
3524 | #: src/fs/gnunet-service-fs_pr.c:1401 | 3509 | #: src/fs/gnunet-service-fs_pr.c:1411 |
3525 | msgid "# requested DBLOCK or IBLOCK not found" | 3510 | msgid "# requested DBLOCK or IBLOCK not found" |
3526 | msgstr "" | 3511 | msgstr "" |
3527 | 3512 | ||
3528 | #: src/fs/gnunet-service-fs_pr.c:1463 | 3513 | #: src/fs/gnunet-service-fs_pr.c:1473 |
3529 | msgid "# Datastore lookups concluded (error queueing)" | 3514 | msgid "# Datastore lookups concluded (error queueing)" |
3530 | msgstr "" | 3515 | msgstr "" |
3531 | 3516 | ||
3532 | #: src/fs/gnunet-service-fs_pr.c:1518 | 3517 | #: src/fs/gnunet-service-fs_pr.c:1528 |
3533 | msgid "# Datastore lookups concluded (no results)" | 3518 | msgid "# Datastore lookups concluded (no results)" |
3534 | msgstr "" | 3519 | msgstr "" |
3535 | 3520 | ||
3536 | #: src/fs/gnunet-service-fs_pr.c:1533 | 3521 | #: src/fs/gnunet-service-fs_pr.c:1543 |
3537 | msgid "# Datastore lookups concluded (seen all)" | 3522 | msgid "# Datastore lookups concluded (seen all)" |
3538 | msgstr "" | 3523 | msgstr "" |
3539 | 3524 | ||
3540 | #: src/fs/gnunet-service-fs_pr.c:1556 | 3525 | #: src/fs/gnunet-service-fs_pr.c:1566 |
3541 | msgid "# Datastore lookups aborted (more than MAX_RESULTS)" | 3526 | msgid "# Datastore lookups aborted (more than MAX_RESULTS)" |
3542 | msgstr "" | 3527 | msgstr "" |
3543 | 3528 | ||
3544 | #: src/fs/gnunet-service-fs_pr.c:1573 | 3529 | #: src/fs/gnunet-service-fs_pr.c:1583 |
3545 | msgid "# on-demand blocks matched requests" | 3530 | msgid "# on-demand blocks matched requests" |
3546 | msgstr "" | 3531 | msgstr "" |
3547 | 3532 | ||
3548 | #: src/fs/gnunet-service-fs_pr.c:1594 | 3533 | #: src/fs/gnunet-service-fs_pr.c:1604 |
3549 | msgid "# on-demand lookups performed successfully" | 3534 | msgid "# on-demand lookups performed successfully" |
3550 | msgstr "" | 3535 | msgstr "" |
3551 | 3536 | ||
3552 | #: src/fs/gnunet-service-fs_pr.c:1600 | 3537 | #: src/fs/gnunet-service-fs_pr.c:1610 |
3553 | msgid "# on-demand lookups failed" | 3538 | msgid "# on-demand lookups failed" |
3554 | msgstr "" | 3539 | msgstr "" |
3555 | 3540 | ||
3556 | #: src/fs/gnunet-service-fs_pr.c:1641 | 3541 | #: src/fs/gnunet-service-fs_pr.c:1656 |
3557 | msgid "# Datastore lookups concluded (found last result)" | 3542 | msgid "# Datastore lookups concluded (found last result)" |
3558 | msgstr "" | 3543 | msgstr "" |
3559 | 3544 | ||
3560 | #: src/fs/gnunet-service-fs_pr.c:1654 | 3545 | #: src/fs/gnunet-service-fs_pr.c:1669 |
3561 | msgid "# Datastore lookups concluded (load too high)" | 3546 | msgid "# Datastore lookups concluded (load too high)" |
3562 | msgstr "" | 3547 | msgstr "" |
3563 | 3548 | ||
3564 | #: src/fs/gnunet-service-fs_pr.c:1705 | 3549 | #: src/fs/gnunet-service-fs_pr.c:1720 |
3565 | msgid "# Datastore lookups initiated" | 3550 | msgid "# Datastore lookups initiated" |
3566 | msgstr "" | 3551 | msgstr "" |
3567 | 3552 | ||
3568 | #: src/fs/gnunet-service-fs_pr.c:1755 | 3553 | #: src/fs/gnunet-service-fs_pr.c:1784 |
3569 | msgid "# GAP PUT messages received" | 3554 | msgid "# GAP PUT messages received" |
3570 | msgstr "" | 3555 | msgstr "" |
3571 | 3556 | ||
@@ -3868,64 +3853,64 @@ msgstr "" | |||
3868 | msgid "Failed to connect to the DNS service!\n" | 3853 | msgid "Failed to connect to the DNS service!\n" |
3869 | msgstr "" | 3854 | msgstr "" |
3870 | 3855 | ||
3871 | #: src/gns/gnunet-service-gns_resolver.c:659 | 3856 | #: src/gns/gnunet-service-gns_resolver.c:672 |
3872 | #, c-format | 3857 | #, c-format |
3873 | msgid "Protocol `%s' unknown, skipping labels.\n" | 3858 | msgid "Protocol `%s' unknown, skipping labels.\n" |
3874 | msgstr "" | 3859 | msgstr "" |
3875 | 3860 | ||
3876 | #: src/gns/gnunet-service-gns_resolver.c:671 | 3861 | #: src/gns/gnunet-service-gns_resolver.c:684 |
3877 | #, c-format | 3862 | #, c-format |
3878 | msgid "Service `%s' unknown for protocol `%s', trying as number.\n" | 3863 | msgid "Service `%s' unknown for protocol `%s', trying as number.\n" |
3879 | msgstr "" | 3864 | msgstr "" |
3880 | 3865 | ||
3881 | #: src/gns/gnunet-service-gns_resolver.c:677 | 3866 | #: src/gns/gnunet-service-gns_resolver.c:690 |
3882 | #, c-format | 3867 | #, c-format |
3883 | msgid "Service `%s' not a port, skipping service labels.\n" | 3868 | msgid "Service `%s' not a port, skipping service labels.\n" |
3884 | msgstr "" | 3869 | msgstr "" |
3885 | 3870 | ||
3886 | #: src/gns/gnunet-service-gns_resolver.c:891 | 3871 | #: src/gns/gnunet-service-gns_resolver.c:904 |
3887 | msgid "Failed to parse DNS response\n" | 3872 | msgid "Failed to parse DNS response\n" |
3888 | msgstr "" | 3873 | msgstr "" |
3889 | 3874 | ||
3890 | #: src/gns/gnunet-service-gns_resolver.c:1082 | 3875 | #: src/gns/gnunet-service-gns_resolver.c:1095 |
3891 | #, c-format | 3876 | #, c-format |
3892 | msgid "Skipping record of unsupported type %d\n" | 3877 | msgid "Skipping record of unsupported type %d\n" |
3893 | msgstr "" | 3878 | msgstr "" |
3894 | 3879 | ||
3895 | #: src/gns/gnunet-service-gns_resolver.c:1859 | 3880 | #: src/gns/gnunet-service-gns_resolver.c:1872 |
3896 | #, c-format | 3881 | #, c-format |
3897 | msgid "Name `%s' cannot be converted to IDNA." | 3882 | msgid "Name `%s' cannot be converted to IDNA." |
3898 | msgstr "" | 3883 | msgstr "" |
3899 | 3884 | ||
3900 | #: src/gns/gnunet-service-gns_resolver.c:1874 | 3885 | #: src/gns/gnunet-service-gns_resolver.c:1887 |
3901 | #, c-format | 3886 | #, c-format |
3902 | msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" | 3887 | msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" |
3903 | msgstr "" | 3888 | msgstr "" |
3904 | 3889 | ||
3905 | #: src/gns/gnunet-service-gns_resolver.c:1914 | 3890 | #: src/gns/gnunet-service-gns_resolver.c:1927 |
3906 | #, c-format | 3891 | #, c-format |
3907 | msgid "GNS lookup failed (zero records found for `%s')\n" | 3892 | msgid "GNS lookup failed (zero records found for `%s')\n" |
3908 | msgstr "" | 3893 | msgstr "" |
3909 | 3894 | ||
3910 | #: src/gns/gnunet-service-gns_resolver.c:2312 | 3895 | #: src/gns/gnunet-service-gns_resolver.c:2329 |
3911 | msgid "Unable to process critical delegation record\n" | 3896 | msgid "Unable to process critical delegation record\n" |
3912 | msgstr "" | 3897 | msgstr "" |
3913 | 3898 | ||
3914 | #: src/gns/gnunet-service-gns_resolver.c:2317 | 3899 | #: src/gns/gnunet-service-gns_resolver.c:2334 |
3915 | msgid "GNS lookup recursion failed (no delegation record found)\n" | 3900 | msgid "GNS lookup recursion failed (no delegation record found)\n" |
3916 | msgstr "" | 3901 | msgstr "" |
3917 | 3902 | ||
3918 | #: src/gns/gnunet-service-gns_resolver.c:2340 | 3903 | #: src/gns/gnunet-service-gns_resolver.c:2357 |
3919 | #, c-format | 3904 | #, c-format |
3920 | msgid "Failed to cache GNS resolution: %s\n" | 3905 | msgid "Failed to cache GNS resolution: %s\n" |
3921 | msgstr "" | 3906 | msgstr "" |
3922 | 3907 | ||
3923 | #: src/gns/gnunet-service-gns_resolver.c:2505 | 3908 | #: src/gns/gnunet-service-gns_resolver.c:2522 |
3924 | #, c-format | 3909 | #, c-format |
3925 | msgid "GNS namecache returned empty result for `%s'\n" | 3910 | msgid "GNS namecache returned empty result for `%s'\n" |
3926 | msgstr "" | 3911 | msgstr "" |
3927 | 3912 | ||
3928 | #: src/gns/gnunet-service-gns_resolver.c:2652 | 3913 | #: src/gns/gnunet-service-gns_resolver.c:2669 |
3929 | #, c-format | 3914 | #, c-format |
3930 | msgid "Zone %s was revoked, resolution fails\n" | 3915 | msgid "Zone %s was revoked, resolution fails\n" |
3931 | msgstr "" | 3916 | msgstr "" |
@@ -3967,31 +3952,39 @@ msgstr "Impossibile avviare il servizio ' %s'\n" | |||
3967 | msgid "Gns REST API initialized\n" | 3952 | msgid "Gns REST API initialized\n" |
3968 | msgstr "" | 3953 | msgstr "" |
3969 | 3954 | ||
3970 | #: src/gnsrecord/gnsrecord_misc.c:448 | 3955 | #: src/gnsrecord/gnsrecord_misc.c:52 |
3956 | msgid "Label is NULL which is not allowed\n" | ||
3957 | msgstr "" | ||
3958 | |||
3959 | #: src/gnsrecord/gnsrecord_misc.c:57 | ||
3960 | msgid "Label contains `.' which is not allowed\n" | ||
3961 | msgstr "" | ||
3962 | |||
3963 | #: src/gnsrecord/gnsrecord_misc.c:464 | ||
3971 | msgid "Zone delegation record not allowed in apex." | 3964 | msgid "Zone delegation record not allowed in apex." |
3972 | msgstr "" | 3965 | msgstr "" |
3973 | 3966 | ||
3974 | #: src/gnsrecord/gnsrecord_misc.c:456 | 3967 | #: src/gnsrecord/gnsrecord_misc.c:472 |
3975 | msgid "Zone delegation record set contains mutually exclusive records." | 3968 | msgid "Zone delegation record set contains mutually exclusive records." |
3976 | msgstr "" | 3969 | msgstr "" |
3977 | 3970 | ||
3978 | #: src/gnsrecord/gnsrecord_misc.c:466 | 3971 | #: src/gnsrecord/gnsrecord_misc.c:482 |
3979 | msgid "Multiple REDIRECT records." | 3972 | msgid "Multiple REDIRECT records." |
3980 | msgstr "" | 3973 | msgstr "" |
3981 | 3974 | ||
3982 | #: src/gnsrecord/gnsrecord_misc.c:475 src/gnsrecord/gnsrecord_misc.c:501 | 3975 | #: src/gnsrecord/gnsrecord_misc.c:491 src/gnsrecord/gnsrecord_misc.c:517 |
3983 | msgid "Redirection record set conains mutually exclusive records." | 3976 | msgid "Redirection record set conains mutually exclusive records." |
3984 | msgstr "" | 3977 | msgstr "" |
3985 | 3978 | ||
3986 | #: src/gnsrecord/gnsrecord_misc.c:482 | 3979 | #: src/gnsrecord/gnsrecord_misc.c:498 |
3987 | msgid "Redirection records not allowed in apex." | 3980 | msgid "Redirection records not allowed in apex." |
3988 | msgstr "" | 3981 | msgstr "" |
3989 | 3982 | ||
3990 | #: src/gnsrecord/gnsrecord_misc.c:493 | 3983 | #: src/gnsrecord/gnsrecord_misc.c:509 |
3991 | msgid "Redirection records not allowed in apex.." | 3984 | msgid "Redirection records not allowed in apex.." |
3992 | msgstr "" | 3985 | msgstr "" |
3993 | 3986 | ||
3994 | #: src/gnsrecord/gnsrecord_misc.c:515 | 3987 | #: src/gnsrecord/gnsrecord_misc.c:531 |
3995 | msgid "Mutually exclusive records." | 3988 | msgid "Mutually exclusive records." |
3996 | msgstr "" | 3989 | msgstr "" |
3997 | 3990 | ||
@@ -4552,12 +4545,18 @@ msgstr "" | |||
4552 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" | 4545 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" |
4553 | msgstr "Impossibile avviare il servizio ' %s'\n" | 4546 | msgstr "Impossibile avviare il servizio ' %s'\n" |
4554 | 4547 | ||
4555 | #: src/messenger/plugin_gnsrecord_messenger.c:118 | 4548 | #: src/messenger/plugin_gnsrecord_messenger.c:136 |
4556 | #: src/messenger/plugin_gnsrecord_messenger.c:133 | 4549 | #: src/messenger/plugin_gnsrecord_messenger.c:151 |
4557 | #, fuzzy, c-format | 4550 | #, fuzzy, c-format |
4558 | msgid "Unable to parse MESSENGER_ROOM_ENTRY record `%s'\n" | 4551 | msgid "Unable to parse MESSENGER_ROOM_ENTRY record `%s'\n" |
4559 | msgstr "Impossibile avviare il servizio ' %s'\n" | 4552 | msgstr "Impossibile avviare il servizio ' %s'\n" |
4560 | 4553 | ||
4554 | #: src/messenger/plugin_gnsrecord_messenger.c:172 | ||
4555 | #: src/messenger/plugin_gnsrecord_messenger.c:187 | ||
4556 | #, fuzzy, c-format | ||
4557 | msgid "Unable to parse MESSENGER_ROOM_DETAILS record `%s'\n" | ||
4558 | msgstr "Impossibile avviare il servizio ' %s'\n" | ||
4559 | |||
4561 | #: src/my/my.c:196 src/my/my.c:215 | 4560 | #: src/my/my.c:196 src/my/my.c:215 |
4562 | #, c-format | 4561 | #, c-format |
4563 | msgid "%s failed at %s:%d with error: %s\n" | 4562 | msgid "%s failed at %s:%d with error: %s\n" |
@@ -4598,7 +4597,7 @@ msgstr "# messaggi PONG ricevuti" | |||
4598 | msgid "You must specify a name\n" | 4597 | msgid "You must specify a name\n" |
4599 | msgstr "È necessario specificare un nome\n" | 4598 | msgstr "È necessario specificare un nome\n" |
4600 | 4599 | ||
4601 | #: src/namecache/gnunet-namecache.c:214 src/namestore/gnunet-namestore.c:1591 | 4600 | #: src/namecache/gnunet-namecache.c:214 src/namestore/gnunet-namestore.c:1582 |
4602 | msgid "name of the record to add/delete/display" | 4601 | msgid "name of the record to add/delete/display" |
4603 | msgstr "" | 4602 | msgstr "" |
4604 | 4603 | ||
@@ -4606,7 +4605,7 @@ msgstr "" | |||
4606 | msgid "specifies the public key of the zone to look in" | 4605 | msgid "specifies the public key of the zone to look in" |
4607 | msgstr "" | 4606 | msgstr "" |
4608 | 4607 | ||
4609 | #: src/namecache/gnunet-namecache.c:233 src/namestore/gnunet-namestore.c:1652 | 4608 | #: src/namecache/gnunet-namecache.c:233 src/namestore/gnunet-namestore.c:1643 |
4610 | msgid "GNUnet zone manipulation tool" | 4609 | msgid "GNUnet zone manipulation tool" |
4611 | msgstr "" | 4610 | msgstr "" |
4612 | 4611 | ||
@@ -4849,12 +4848,7 @@ msgstr "" | |||
4849 | msgid "Invalid URI `%s'\n" | 4848 | msgid "Invalid URI `%s'\n" |
4850 | msgstr "" | 4849 | msgstr "" |
4851 | 4850 | ||
4852 | #: src/namestore/gnunet-namestore.c:1242 | 4851 | #: src/namestore/gnunet-namestore.c:1283 |
4853 | #, c-format | ||
4854 | msgid "Label `%s' contains `.' which is not allowed\n" | ||
4855 | msgstr "" | ||
4856 | |||
4857 | #: src/namestore/gnunet-namestore.c:1292 | ||
4858 | #, c-format | 4852 | #, c-format |
4859 | msgid "" | 4853 | msgid "" |
4860 | "No default identity configured for `namestore' subsystem\n" | 4854 | "No default identity configured for `namestore' subsystem\n" |
@@ -4862,99 +4856,99 @@ msgid "" | |||
4862 | "Run gnunet-identity -d to get a list of choices for $NAME\n" | 4856 | "Run gnunet-identity -d to get a list of choices for $NAME\n" |
4863 | msgstr "" | 4857 | msgstr "" |
4864 | 4858 | ||
4865 | #: src/namestore/gnunet-namestore.c:1357 | 4859 | #: src/namestore/gnunet-namestore.c:1348 |
4866 | #, c-format | 4860 | #, c-format |
4867 | msgid "Superfluous command line arguments (starting with `%s') ignored\n" | 4861 | msgid "Superfluous command line arguments (starting with `%s') ignored\n" |
4868 | msgstr "" | 4862 | msgstr "" |
4869 | 4863 | ||
4870 | #: src/namestore/gnunet-namestore.c:1386 | 4864 | #: src/namestore/gnunet-namestore.c:1377 |
4871 | #, c-format | 4865 | #, c-format |
4872 | msgid "Cannot connect to identity service\n" | 4866 | msgid "Cannot connect to identity service\n" |
4873 | msgstr "" | 4867 | msgstr "" |
4874 | 4868 | ||
4875 | #: src/namestore/gnunet-namestore.c:1433 | 4869 | #: src/namestore/gnunet-namestore.c:1424 |
4876 | msgid "Empty record line argument is not allowed.\n" | 4870 | msgid "Empty record line argument is not allowed.\n" |
4877 | msgstr "" | 4871 | msgstr "" |
4878 | 4872 | ||
4879 | #: src/namestore/gnunet-namestore.c:1445 | 4873 | #: src/namestore/gnunet-namestore.c:1436 |
4880 | #, c-format | 4874 | #, c-format |
4881 | msgid "Invalid expiration time `%s' (must be without unit)\n" | 4875 | msgid "Invalid expiration time `%s' (must be without unit)\n" |
4882 | msgstr "" | 4876 | msgstr "" |
4883 | 4877 | ||
4884 | #: src/namestore/gnunet-namestore.c:1457 src/namestore/gnunet-namestore.c:1473 | 4878 | #: src/namestore/gnunet-namestore.c:1448 src/namestore/gnunet-namestore.c:1464 |
4885 | #: src/namestore/gnunet-namestore.c:1490 | 4879 | #: src/namestore/gnunet-namestore.c:1481 |
4886 | #, c-format | 4880 | #, c-format |
4887 | msgid "Missing entries in record line `%s'.\n" | 4881 | msgid "Missing entries in record line `%s'.\n" |
4888 | msgstr "" | 4882 | msgstr "" |
4889 | 4883 | ||
4890 | #: src/namestore/gnunet-namestore.c:1465 | 4884 | #: src/namestore/gnunet-namestore.c:1456 |
4891 | #, fuzzy, c-format | 4885 | #, fuzzy, c-format |
4892 | msgid "Unknown record type `%s'\n" | 4886 | msgid "Unknown record type `%s'\n" |
4893 | msgstr "Comando `%s' sconosciuto.\n" | 4887 | msgstr "Comando `%s' sconosciuto.\n" |
4894 | 4888 | ||
4895 | #: src/namestore/gnunet-namestore.c:1503 | 4889 | #: src/namestore/gnunet-namestore.c:1494 |
4896 | #, fuzzy, c-format | 4890 | #, fuzzy, c-format |
4897 | msgid "Invalid record data for type %s: `%s'.\n" | 4891 | msgid "Invalid record data for type %s: `%s'.\n" |
4898 | msgstr "Indirizzo IPv6 non valido: `%s'\n" | 4892 | msgstr "Indirizzo IPv6 non valido: `%s'\n" |
4899 | 4893 | ||
4900 | #: src/namestore/gnunet-namestore.c:1560 | 4894 | #: src/namestore/gnunet-namestore.c:1551 |
4901 | msgid "add record" | 4895 | msgid "add record" |
4902 | msgstr "" | 4896 | msgstr "" |
4903 | 4897 | ||
4904 | #: src/namestore/gnunet-namestore.c:1563 | 4898 | #: src/namestore/gnunet-namestore.c:1554 |
4905 | msgid "delete record" | 4899 | msgid "delete record" |
4906 | msgstr "" | 4900 | msgstr "" |
4907 | 4901 | ||
4908 | #: src/namestore/gnunet-namestore.c:1567 | 4902 | #: src/namestore/gnunet-namestore.c:1558 |
4909 | msgid "display records" | 4903 | msgid "display records" |
4910 | msgstr "" | 4904 | msgstr "" |
4911 | 4905 | ||
4912 | #: src/namestore/gnunet-namestore.c:1574 | 4906 | #: src/namestore/gnunet-namestore.c:1565 |
4913 | msgid "" | 4907 | msgid "" |
4914 | "expiration time for record to use (for adding only), \"never\" is possible" | 4908 | "expiration time for record to use (for adding only), \"never\" is possible" |
4915 | msgstr "" | 4909 | msgstr "" |
4916 | 4910 | ||
4917 | #: src/namestore/gnunet-namestore.c:1580 | 4911 | #: src/namestore/gnunet-namestore.c:1571 |
4918 | msgid "set the desired nick name for the zone" | 4912 | msgid "set the desired nick name for the zone" |
4919 | msgstr "" | 4913 | msgstr "" |
4920 | 4914 | ||
4921 | #: src/namestore/gnunet-namestore.c:1585 | 4915 | #: src/namestore/gnunet-namestore.c:1576 |
4922 | msgid "monitor changes in the namestore" | 4916 | msgid "monitor changes in the namestore" |
4923 | msgstr "" | 4917 | msgstr "" |
4924 | 4918 | ||
4925 | #: src/namestore/gnunet-namestore.c:1597 | 4919 | #: src/namestore/gnunet-namestore.c:1588 |
4926 | msgid "determine our name for the given PKEY" | 4920 | msgid "determine our name for the given PKEY" |
4927 | msgstr "" | 4921 | msgstr "" |
4928 | 4922 | ||
4929 | #: src/namestore/gnunet-namestore.c:1604 | 4923 | #: src/namestore/gnunet-namestore.c:1595 |
4930 | msgid "" | 4924 | msgid "" |
4931 | "set record set to values given by (possibly multiple) RECORDLINES; can be " | 4925 | "set record set to values given by (possibly multiple) RECORDLINES; can be " |
4932 | "specified multiple times" | 4926 | "specified multiple times" |
4933 | msgstr "" | 4927 | msgstr "" |
4934 | 4928 | ||
4935 | #: src/namestore/gnunet-namestore.c:1610 | 4929 | #: src/namestore/gnunet-namestore.c:1601 |
4936 | msgid "type of the record to add/delete/display" | 4930 | msgid "type of the record to add/delete/display" |
4937 | msgstr "" | 4931 | msgstr "" |
4938 | 4932 | ||
4939 | #: src/namestore/gnunet-namestore.c:1615 | 4933 | #: src/namestore/gnunet-namestore.c:1606 |
4940 | msgid "URI to import into our zone" | 4934 | msgid "URI to import into our zone" |
4941 | msgstr "" | 4935 | msgstr "" |
4942 | 4936 | ||
4943 | #: src/namestore/gnunet-namestore.c:1621 | 4937 | #: src/namestore/gnunet-namestore.c:1612 |
4944 | msgid "value of the record to add/delete" | 4938 | msgid "value of the record to add/delete" |
4945 | msgstr "" | 4939 | msgstr "" |
4946 | 4940 | ||
4947 | #: src/namestore/gnunet-namestore.c:1625 | 4941 | #: src/namestore/gnunet-namestore.c:1616 |
4948 | msgid "create or list public record" | 4942 | msgid "create or list public record" |
4949 | msgstr "" | 4943 | msgstr "" |
4950 | 4944 | ||
4951 | #: src/namestore/gnunet-namestore.c:1631 | 4945 | #: src/namestore/gnunet-namestore.c:1622 |
4952 | msgid "" | 4946 | msgid "" |
4953 | "create shadow record (only valid if all other records of the same type have " | 4947 | "create shadow record (only valid if all other records of the same type have " |
4954 | "expired" | 4948 | "expired" |
4955 | msgstr "" | 4949 | msgstr "" |
4956 | 4950 | ||
4957 | #: src/namestore/gnunet-namestore.c:1637 | 4951 | #: src/namestore/gnunet-namestore.c:1628 |
4958 | msgid "name of the ego controlling the zone" | 4952 | msgid "name of the ego controlling the zone" |
4959 | msgstr "" | 4953 | msgstr "" |
4960 | 4954 | ||
@@ -4963,7 +4957,17 @@ msgstr "" | |||
4963 | msgid "Failed to replicate block in namecache: %s\n" | 4957 | msgid "Failed to replicate block in namecache: %s\n" |
4964 | msgstr "" | 4958 | msgstr "" |
4965 | 4959 | ||
4966 | #: src/namestore/gnunet-service-namestore.c:1668 | 4960 | #: src/namestore/gnunet-service-namestore.c:1559 |
4961 | #, fuzzy | ||
4962 | msgid "Error normalizing name." | ||
4963 | msgstr "Errore durante la scrittura di `%s'.\n" | ||
4964 | |||
4965 | #: src/namestore/gnunet-service-namestore.c:1582 | ||
4966 | #, fuzzy | ||
4967 | msgid "Error deserializing records." | ||
4968 | msgstr "Errore interno." | ||
4969 | |||
4970 | #: src/namestore/gnunet-service-namestore.c:1691 | ||
4967 | msgid "Store failed" | 4971 | msgid "Store failed" |
4968 | msgstr "" | 4972 | msgstr "" |
4969 | 4973 | ||
@@ -6659,8 +6663,8 @@ msgid "GNUnet topology control" | |||
6659 | msgstr "" | 6663 | msgstr "" |
6660 | 6664 | ||
6661 | #: src/transport/gnunet-communicator-tcp.c:3338 | 6665 | #: src/transport/gnunet-communicator-tcp.c:3338 |
6662 | #: src/transport/gnunet-communicator-udp.c:3856 | 6666 | #: src/transport/gnunet-communicator-udp.c:3867 |
6663 | #: src/transport/gnunet-service-tng.c:10623 | 6667 | #: src/transport/gnunet-service-tng.c:10926 |
6664 | #: src/transport/gnunet-service-transport.c:2627 | 6668 | #: src/transport/gnunet-service-transport.c:2627 |
6665 | msgid "Transport service is lacking key configuration settings. Exiting.\n" | 6669 | msgid "Transport service is lacking key configuration settings. Exiting.\n" |
6666 | msgstr "" | 6670 | msgstr "" |
@@ -6669,7 +6673,7 @@ msgstr "" | |||
6669 | msgid "GNUnet TCP communicator" | 6673 | msgid "GNUnet TCP communicator" |
6670 | msgstr "" | 6674 | msgstr "" |
6671 | 6675 | ||
6672 | #: src/transport/gnunet-communicator-udp.c:3931 | 6676 | #: src/transport/gnunet-communicator-udp.c:3942 |
6673 | msgid "GNUnet UDP communicator" | 6677 | msgid "GNUnet UDP communicator" |
6674 | msgstr "" | 6678 | msgstr "" |
6675 | 6679 | ||
@@ -8011,12 +8015,12 @@ msgstr "" | |||
8011 | msgid "libgcrypt has not the expected version (version %s is required).\n" | 8015 | msgid "libgcrypt has not the expected version (version %s is required).\n" |
8012 | msgstr "" | 8016 | msgstr "" |
8013 | 8017 | ||
8014 | #: src/util/crypto_rsa.c:901 | 8018 | #: src/util/crypto_rsa.c:907 |
8015 | #, c-format | 8019 | #, c-format |
8016 | msgid "RSA signing failed at %s:%d: %s\n" | 8020 | msgid "RSA signing failed at %s:%d: %s\n" |
8017 | msgstr "" | 8021 | msgstr "" |
8018 | 8022 | ||
8019 | #: src/util/crypto_rsa.c:1201 | 8023 | #: src/util/crypto_rsa.c:1207 |
8020 | #, c-format | 8024 | #, c-format |
8021 | msgid "RSA signature verification failed at %s:%d: %s\n" | 8025 | msgid "RSA signature verification failed at %s:%d: %s\n" |
8022 | msgstr "" | 8026 | msgstr "" |
@@ -8685,12 +8689,12 @@ msgstr "" | |||
8685 | msgid "Wrong format `%s' for network\n" | 8689 | msgid "Wrong format `%s' for network\n" |
8686 | msgstr "" | 8690 | msgstr "" |
8687 | 8691 | ||
8688 | #: src/util/time.c:870 src/util/time.c:898 | 8692 | #: src/util/time.c:900 src/util/time.c:928 |
8689 | #, c-format | 8693 | #, c-format |
8690 | msgid "Failed to map `%s', cannot assure monotonic time!\n" | 8694 | msgid "Failed to map `%s', cannot assure monotonic time!\n" |
8691 | msgstr "" | 8695 | msgstr "" |
8692 | 8696 | ||
8693 | #: src/util/time.c:906 | 8697 | #: src/util/time.c:936 |
8694 | #, c-format | 8698 | #, c-format |
8695 | msgid "" | 8699 | msgid "" |
8696 | "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n" | 8700 | "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n" |
@@ -6,7 +6,7 @@ msgid "" | |||
6 | msgstr "" | 6 | msgstr "" |
7 | "Project-Id-Version: gnunet-0.10.1\n" | 7 | "Project-Id-Version: gnunet-0.10.1\n" |
8 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" | 8 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" |
9 | "POT-Creation-Date: 2022-03-04 22:23+0100\n" | 9 | "POT-Creation-Date: 2022-04-01 08:42+0200\n" |
10 | "PO-Revision-Date: 2020-10-23 18:39+0200\n" | 10 | "PO-Revision-Date: 2020-10-23 18:39+0200\n" |
11 | "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n" | 11 | "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n" |
12 | "Language-Team: Serbian <(nothing)>\n" | 12 | "Language-Team: Serbian <(nothing)>\n" |
@@ -18,7 +18,7 @@ msgstr "" | |||
18 | "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" | 18 | "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" |
19 | "X-Bugs: Report translation errors to the Language-Team address.\n" | 19 | "X-Bugs: Report translation errors to the Language-Team address.\n" |
20 | 20 | ||
21 | #: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1254 | 21 | #: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1245 |
22 | #, c-format | 22 | #, c-format |
23 | msgid "Ego `%s' not known to identity service\n" | 23 | msgid "Ego `%s' not known to identity service\n" |
24 | msgstr "Его „%s“ није познат услузи идентитета\n" | 24 | msgstr "Его „%s“ није познат услузи идентитета\n" |
@@ -2131,21 +2131,6 @@ msgstr "" | |||
2131 | msgid "Measure quality and performance of the DHT service." | 2131 | msgid "Measure quality and performance of the DHT service." |
2132 | msgstr "Мери квалитет и учинковитост НСЕ услуге." | 2132 | msgstr "Мери квалитет и учинковитост НСЕ услуге." |
2133 | 2133 | ||
2134 | #: src/dht/plugin_block_dht.c:404 | ||
2135 | #, c-format | ||
2136 | msgid "Block not of type %u\n" | ||
2137 | msgstr "Блок није врсте %u\n" | ||
2138 | |||
2139 | #: src/dht/plugin_block_dht.c:413 | ||
2140 | #, fuzzy, c-format | ||
2141 | msgid "Size mismatch for block with type %u\n" | ||
2142 | msgstr "Величин не одговара за блок\n" | ||
2143 | |||
2144 | #: src/dht/plugin_block_dht.c:424 | ||
2145 | #, c-format | ||
2146 | msgid "Block of type %u is malformed\n" | ||
2147 | msgstr "Блок врсте %u је лош\n" | ||
2148 | |||
2149 | #: src/dns/gnunet-dns-monitor.c:371 src/dns/gnunet-dns-monitor.c:376 | 2134 | #: src/dns/gnunet-dns-monitor.c:371 src/dns/gnunet-dns-monitor.c:376 |
2150 | msgid "only monitor DNS queries" | 2135 | msgid "only monitor DNS queries" |
2151 | msgstr "само надгледа ДНС упите" | 2136 | msgstr "само надгледа ДНС упите" |
@@ -2880,20 +2865,20 @@ msgstr "SKS УРИ је лоше (не могу да обрадим време | |||
2880 | msgid "LOC URI malformed (signature failed validation)" | 2865 | msgid "LOC URI malformed (signature failed validation)" |
2881 | msgstr "SKS УРИ је лоше (потврђивање потписа није успело)" | 2866 | msgstr "SKS УРИ је лоше (потврђивање потписа није успело)" |
2882 | 2867 | ||
2883 | #: src/fs/fs_uri.c:652 | 2868 | #: src/fs/fs_uri.c:653 |
2884 | #, fuzzy | 2869 | #, fuzzy |
2885 | msgid "invalid argument" | 2870 | msgid "invalid argument" |
2886 | msgstr "Неисправан аргумент „%s“\n" | 2871 | msgstr "Неисправан аргумент „%s“\n" |
2887 | 2872 | ||
2888 | #: src/fs/fs_uri.c:671 | 2873 | #: src/fs/fs_uri.c:673 |
2889 | msgid "Unrecognized URI type" | 2874 | msgid "Unrecognized URI type" |
2890 | msgstr "Непозната УРИ врста" | 2875 | msgstr "Непозната УРИ врста" |
2891 | 2876 | ||
2892 | #: src/fs/fs_uri.c:1075 src/fs/fs_uri.c:1102 | 2877 | #: src/fs/fs_uri.c:1077 src/fs/fs_uri.c:1104 |
2893 | msgid "No keywords specified!\n" | 2878 | msgid "No keywords specified!\n" |
2894 | msgstr "Нису наведене речи кључа!\n" | 2879 | msgstr "Нису наведене речи кључа!\n" |
2895 | 2880 | ||
2896 | #: src/fs/fs_uri.c:1108 | 2881 | #: src/fs/fs_uri.c:1110 |
2897 | msgid "Number of double-quotes not balanced!\n" | 2882 | msgid "Number of double-quotes not balanced!\n" |
2898 | msgstr "Број двоструких квота које нису уравнотежене!\n" | 2883 | msgstr "Број двоструких квота које нису уравнотежене!\n" |
2899 | 2884 | ||
@@ -3634,94 +3619,94 @@ msgstr "# захтеви су освежени" | |||
3634 | msgid "# query plan entries" | 3619 | msgid "# query plan entries" |
3635 | msgstr "# пропитује обичне уносе" | 3620 | msgstr "# пропитује обичне уносе" |
3636 | 3621 | ||
3637 | #: src/fs/gnunet-service-fs_pr.c:329 | 3622 | #: src/fs/gnunet-service-fs_pr.c:330 |
3638 | msgid "# Pending requests created" | 3623 | msgid "# Pending requests created" |
3639 | msgstr "# Захтеви на чекању су створени" | 3624 | msgstr "# Захтеви на чекању су створени" |
3640 | 3625 | ||
3641 | #: src/fs/gnunet-service-fs_pr.c:421 src/fs/gnunet-service-fs_pr.c:658 | 3626 | #: src/fs/gnunet-service-fs_pr.c:422 src/fs/gnunet-service-fs_pr.c:662 |
3642 | msgid "# Pending requests active" | 3627 | msgid "# Pending requests active" |
3643 | msgstr "# Захтеви на чекању су активни" | 3628 | msgstr "# Захтеви на чекању су активни" |
3644 | 3629 | ||
3645 | #: src/fs/gnunet-service-fs_pr.c:838 | 3630 | #: src/fs/gnunet-service-fs_pr.c:837 |
3646 | msgid "# replies received and matched" | 3631 | msgid "# replies received and matched" |
3647 | msgstr "# одговори су примљени и подударени" | 3632 | msgstr "# одговори су примљени и подударени" |
3648 | 3633 | ||
3649 | #: src/fs/gnunet-service-fs_pr.c:916 | 3634 | #: src/fs/gnunet-service-fs_pr.c:911 |
3650 | msgid "# results found locally" | 3635 | msgid "# results found locally" |
3651 | msgstr "# резултати су пронађени локално" | 3636 | msgstr "# резултати су пронађени локално" |
3652 | 3637 | ||
3653 | #: src/fs/gnunet-service-fs_pr.c:1050 | 3638 | #: src/fs/gnunet-service-fs_pr.c:1045 |
3654 | msgid "# Datastore `PUT' failures" | 3639 | msgid "# Datastore `PUT' failures" |
3655 | msgstr "# Неуспеси „СТАВИ“ смештаја података" | 3640 | msgstr "# Неуспеси „СТАВИ“ смештаја података" |
3656 | 3641 | ||
3657 | #: src/fs/gnunet-service-fs_pr.c:1079 | 3642 | #: src/fs/gnunet-service-fs_pr.c:1074 |
3658 | msgid "# storage requests dropped due to high load" | 3643 | msgid "# storage requests dropped due to high load" |
3659 | msgstr "# захтеви смештаја су одбачени услед високог утовара" | 3644 | msgstr "# захтеви смештаја су одбачени услед високог утовара" |
3660 | 3645 | ||
3661 | #: src/fs/gnunet-service-fs_pr.c:1118 | 3646 | #: src/fs/gnunet-service-fs_pr.c:1113 |
3662 | msgid "# Replies received from DHT" | 3647 | msgid "# Replies received from DHT" |
3663 | msgstr "# Одговори су примљени од DHT-а" | 3648 | msgstr "# Одговори су примљени од DHT-а" |
3664 | 3649 | ||
3665 | #: src/fs/gnunet-service-fs_pr.c:1259 | 3650 | #: src/fs/gnunet-service-fs_pr.c:1268 |
3666 | #, fuzzy | 3651 | #, fuzzy |
3667 | msgid "# Replies received from CADET" | 3652 | msgid "# Replies received from CADET" |
3668 | msgstr "# Одговори су примљени од DHT-а" | 3653 | msgstr "# Одговори су примљени од DHT-а" |
3669 | 3654 | ||
3670 | #: src/fs/gnunet-service-fs_pr.c:1313 | 3655 | #: src/fs/gnunet-service-fs_pr.c:1323 |
3671 | #, c-format | 3656 | #, c-format |
3672 | msgid "Datastore lookup already took %s!\n" | 3657 | msgid "Datastore lookup already took %s!\n" |
3673 | msgstr "Претрага смештаја података је већ узела „%s“!\n" | 3658 | msgstr "Претрага смештаја података је већ узела „%s“!\n" |
3674 | 3659 | ||
3675 | #: src/fs/gnunet-service-fs_pr.c:1334 | 3660 | #: src/fs/gnunet-service-fs_pr.c:1344 |
3676 | #, c-format | 3661 | #, c-format |
3677 | msgid "On-demand lookup already took %s!\n" | 3662 | msgid "On-demand lookup already took %s!\n" |
3678 | msgstr "Претрага на-захтев је већ узела „%s“!\n" | 3663 | msgstr "Претрага на-захтев је већ узела „%s“!\n" |
3679 | 3664 | ||
3680 | #: src/fs/gnunet-service-fs_pr.c:1401 | 3665 | #: src/fs/gnunet-service-fs_pr.c:1411 |
3681 | msgid "# requested DBLOCK or IBLOCK not found" | 3666 | msgid "# requested DBLOCK or IBLOCK not found" |
3682 | msgstr "# захтевани DBLOCK или IBLOCK нису нађени" | 3667 | msgstr "# захтевани DBLOCK или IBLOCK нису нађени" |
3683 | 3668 | ||
3684 | #: src/fs/gnunet-service-fs_pr.c:1463 | 3669 | #: src/fs/gnunet-service-fs_pr.c:1473 |
3685 | msgid "# Datastore lookups concluded (error queueing)" | 3670 | msgid "# Datastore lookups concluded (error queueing)" |
3686 | msgstr "# Претраге смештаја података су закључене (грешка стављања у ред)" | 3671 | msgstr "# Претраге смештаја података су закључене (грешка стављања у ред)" |
3687 | 3672 | ||
3688 | #: src/fs/gnunet-service-fs_pr.c:1518 | 3673 | #: src/fs/gnunet-service-fs_pr.c:1528 |
3689 | msgid "# Datastore lookups concluded (no results)" | 3674 | msgid "# Datastore lookups concluded (no results)" |
3690 | msgstr "# Претраге смештаја података су закључене (нема резултата)" | 3675 | msgstr "# Претраге смештаја података су закључене (нема резултата)" |
3691 | 3676 | ||
3692 | #: src/fs/gnunet-service-fs_pr.c:1533 | 3677 | #: src/fs/gnunet-service-fs_pr.c:1543 |
3693 | msgid "# Datastore lookups concluded (seen all)" | 3678 | msgid "# Datastore lookups concluded (seen all)" |
3694 | msgstr "# Претраге смештаја података су закључене (видех све)" | 3679 | msgstr "# Претраге смештаја података су закључене (видех све)" |
3695 | 3680 | ||
3696 | #: src/fs/gnunet-service-fs_pr.c:1556 | 3681 | #: src/fs/gnunet-service-fs_pr.c:1566 |
3697 | msgid "# Datastore lookups aborted (more than MAX_RESULTS)" | 3682 | msgid "# Datastore lookups aborted (more than MAX_RESULTS)" |
3698 | msgstr "# Претраге смештаја података су прекинуте (више од „MAX_RESULTS“)" | 3683 | msgstr "# Претраге смештаја података су прекинуте (више од „MAX_RESULTS“)" |
3699 | 3684 | ||
3700 | #: src/fs/gnunet-service-fs_pr.c:1573 | 3685 | #: src/fs/gnunet-service-fs_pr.c:1583 |
3701 | msgid "# on-demand blocks matched requests" | 3686 | msgid "# on-demand blocks matched requests" |
3702 | msgstr "# блокови на-захтев одговарају захтевима" | 3687 | msgstr "# блокови на-захтев одговарају захтевима" |
3703 | 3688 | ||
3704 | #: src/fs/gnunet-service-fs_pr.c:1594 | 3689 | #: src/fs/gnunet-service-fs_pr.c:1604 |
3705 | msgid "# on-demand lookups performed successfully" | 3690 | msgid "# on-demand lookups performed successfully" |
3706 | msgstr "# претраге на-захтев су обављене успешно" | 3691 | msgstr "# претраге на-захтев су обављене успешно" |
3707 | 3692 | ||
3708 | #: src/fs/gnunet-service-fs_pr.c:1600 | 3693 | #: src/fs/gnunet-service-fs_pr.c:1610 |
3709 | msgid "# on-demand lookups failed" | 3694 | msgid "# on-demand lookups failed" |
3710 | msgstr "# претраге на-захтев нису успеле" | 3695 | msgstr "# претраге на-захтев нису успеле" |
3711 | 3696 | ||
3712 | #: src/fs/gnunet-service-fs_pr.c:1641 | 3697 | #: src/fs/gnunet-service-fs_pr.c:1656 |
3713 | msgid "# Datastore lookups concluded (found last result)" | 3698 | msgid "# Datastore lookups concluded (found last result)" |
3714 | msgstr "# Претраге смештаја података су закључене (нађох последњи резултат)" | 3699 | msgstr "# Претраге смештаја података су закључене (нађох последњи резултат)" |
3715 | 3700 | ||
3716 | #: src/fs/gnunet-service-fs_pr.c:1654 | 3701 | #: src/fs/gnunet-service-fs_pr.c:1669 |
3717 | msgid "# Datastore lookups concluded (load too high)" | 3702 | msgid "# Datastore lookups concluded (load too high)" |
3718 | msgstr "# Претраге смештаја података су закључене (утовар је превелик)" | 3703 | msgstr "# Претраге смештаја података су закључене (утовар је превелик)" |
3719 | 3704 | ||
3720 | #: src/fs/gnunet-service-fs_pr.c:1705 | 3705 | #: src/fs/gnunet-service-fs_pr.c:1720 |
3721 | msgid "# Datastore lookups initiated" | 3706 | msgid "# Datastore lookups initiated" |
3722 | msgstr "# Претраге смештаја података су покренуте" | 3707 | msgstr "# Претраге смештаја података су покренуте" |
3723 | 3708 | ||
3724 | #: src/fs/gnunet-service-fs_pr.c:1755 | 3709 | #: src/fs/gnunet-service-fs_pr.c:1784 |
3725 | msgid "# GAP PUT messages received" | 3710 | msgid "# GAP PUT messages received" |
3726 | msgstr "# поруке ЈАЗ СТАВИ су примљене" | 3711 | msgstr "# поруке ЈАЗ СТАВИ су примљене" |
3727 | 3712 | ||
@@ -4033,64 +4018,64 @@ msgstr "Грешка претварања ГНС одговора у ДНС од | |||
4033 | msgid "Failed to connect to the DNS service!\n" | 4018 | msgid "Failed to connect to the DNS service!\n" |
4034 | msgstr "Нисам успео да се повежем са ДНС услугом!\n" | 4019 | msgstr "Нисам успео да се повежем са ДНС услугом!\n" |
4035 | 4020 | ||
4036 | #: src/gns/gnunet-service-gns_resolver.c:659 | 4021 | #: src/gns/gnunet-service-gns_resolver.c:672 |
4037 | #, c-format | 4022 | #, c-format |
4038 | msgid "Protocol `%s' unknown, skipping labels.\n" | 4023 | msgid "Protocol `%s' unknown, skipping labels.\n" |
4039 | msgstr "" | 4024 | msgstr "" |
4040 | 4025 | ||
4041 | #: src/gns/gnunet-service-gns_resolver.c:671 | 4026 | #: src/gns/gnunet-service-gns_resolver.c:684 |
4042 | #, c-format | 4027 | #, c-format |
4043 | msgid "Service `%s' unknown for protocol `%s', trying as number.\n" | 4028 | msgid "Service `%s' unknown for protocol `%s', trying as number.\n" |
4044 | msgstr "" | 4029 | msgstr "" |
4045 | 4030 | ||
4046 | #: src/gns/gnunet-service-gns_resolver.c:677 | 4031 | #: src/gns/gnunet-service-gns_resolver.c:690 |
4047 | #, c-format | 4032 | #, c-format |
4048 | msgid "Service `%s' not a port, skipping service labels.\n" | 4033 | msgid "Service `%s' not a port, skipping service labels.\n" |
4049 | msgstr "" | 4034 | msgstr "" |
4050 | 4035 | ||
4051 | #: src/gns/gnunet-service-gns_resolver.c:891 | 4036 | #: src/gns/gnunet-service-gns_resolver.c:904 |
4052 | msgid "Failed to parse DNS response\n" | 4037 | msgid "Failed to parse DNS response\n" |
4053 | msgstr "Нисам успео да обрадим ДНС одговор\n" | 4038 | msgstr "Нисам успео да обрадим ДНС одговор\n" |
4054 | 4039 | ||
4055 | #: src/gns/gnunet-service-gns_resolver.c:1082 | 4040 | #: src/gns/gnunet-service-gns_resolver.c:1095 |
4056 | #, c-format | 4041 | #, c-format |
4057 | msgid "Skipping record of unsupported type %d\n" | 4042 | msgid "Skipping record of unsupported type %d\n" |
4058 | msgstr "Прескачем запис неподржане врсте %d\n" | 4043 | msgstr "Прескачем запис неподржане врсте %d\n" |
4059 | 4044 | ||
4060 | #: src/gns/gnunet-service-gns_resolver.c:1859 | 4045 | #: src/gns/gnunet-service-gns_resolver.c:1872 |
4061 | #, c-format | 4046 | #, c-format |
4062 | msgid "Name `%s' cannot be converted to IDNA." | 4047 | msgid "Name `%s' cannot be converted to IDNA." |
4063 | msgstr "" | 4048 | msgstr "" |
4064 | 4049 | ||
4065 | #: src/gns/gnunet-service-gns_resolver.c:1874 | 4050 | #: src/gns/gnunet-service-gns_resolver.c:1887 |
4066 | #, c-format | 4051 | #, c-format |
4067 | msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" | 4052 | msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" |
4068 | msgstr "ГНС претраживање је резултирало ДНС називом који је предуг („%s“)\n" | 4053 | msgstr "ГНС претраживање је резултирало ДНС називом који је предуг („%s“)\n" |
4069 | 4054 | ||
4070 | #: src/gns/gnunet-service-gns_resolver.c:1914 | 4055 | #: src/gns/gnunet-service-gns_resolver.c:1927 |
4071 | #, fuzzy, c-format | 4056 | #, fuzzy, c-format |
4072 | msgid "GNS lookup failed (zero records found for `%s')\n" | 4057 | msgid "GNS lookup failed (zero records found for `%s')\n" |
4073 | msgstr "Дубачење ГНС претраге није успело (нисам нашао запис изасланства)\n" | 4058 | msgstr "Дубачење ГНС претраге није успело (нисам нашао запис изасланства)\n" |
4074 | 4059 | ||
4075 | #: src/gns/gnunet-service-gns_resolver.c:2312 | 4060 | #: src/gns/gnunet-service-gns_resolver.c:2329 |
4076 | msgid "Unable to process critical delegation record\n" | 4061 | msgid "Unable to process critical delegation record\n" |
4077 | msgstr "" | 4062 | msgstr "" |
4078 | 4063 | ||
4079 | #: src/gns/gnunet-service-gns_resolver.c:2317 | 4064 | #: src/gns/gnunet-service-gns_resolver.c:2334 |
4080 | msgid "GNS lookup recursion failed (no delegation record found)\n" | 4065 | msgid "GNS lookup recursion failed (no delegation record found)\n" |
4081 | msgstr "Дубачење ГНС претраге није успело (нисам нашао запис изасланства)\n" | 4066 | msgstr "Дубачење ГНС претраге није успело (нисам нашао запис изасланства)\n" |
4082 | 4067 | ||
4083 | #: src/gns/gnunet-service-gns_resolver.c:2340 | 4068 | #: src/gns/gnunet-service-gns_resolver.c:2357 |
4084 | #, c-format | 4069 | #, c-format |
4085 | msgid "Failed to cache GNS resolution: %s\n" | 4070 | msgid "Failed to cache GNS resolution: %s\n" |
4086 | msgstr "Нисам успео да сместим у оставу ГНС резолуцију: %s\n" | 4071 | msgstr "Нисам успео да сместим у оставу ГНС резолуцију: %s\n" |
4087 | 4072 | ||
4088 | #: src/gns/gnunet-service-gns_resolver.c:2505 | 4073 | #: src/gns/gnunet-service-gns_resolver.c:2522 |
4089 | #, fuzzy, c-format | 4074 | #, fuzzy, c-format |
4090 | msgid "GNS namecache returned empty result for `%s'\n" | 4075 | msgid "GNS namecache returned empty result for `%s'\n" |
4091 | msgstr "АТС је вратио резултате за %u адресе\n" | 4076 | msgstr "АТС је вратио резултате за %u адресе\n" |
4092 | 4077 | ||
4093 | #: src/gns/gnunet-service-gns_resolver.c:2652 | 4078 | #: src/gns/gnunet-service-gns_resolver.c:2669 |
4094 | #, c-format | 4079 | #, c-format |
4095 | msgid "Zone %s was revoked, resolution fails\n" | 4080 | msgid "Zone %s was revoked, resolution fails\n" |
4096 | msgstr "Зона %s је опозвана, резолуција није успела\n" | 4081 | msgstr "Зона %s је опозвана, резолуција није успела\n" |
@@ -4133,31 +4118,39 @@ msgstr "Не могу да обрадим ниску ВПН записа „%s | |||
4133 | msgid "Gns REST API initialized\n" | 4118 | msgid "Gns REST API initialized\n" |
4134 | msgstr "Меш је покренут\n" | 4119 | msgstr "Меш је покренут\n" |
4135 | 4120 | ||
4136 | #: src/gnsrecord/gnsrecord_misc.c:448 | 4121 | #: src/gnsrecord/gnsrecord_misc.c:52 |
4122 | msgid "Label is NULL which is not allowed\n" | ||
4123 | msgstr "" | ||
4124 | |||
4125 | #: src/gnsrecord/gnsrecord_misc.c:57 | ||
4126 | msgid "Label contains `.' which is not allowed\n" | ||
4127 | msgstr "" | ||
4128 | |||
4129 | #: src/gnsrecord/gnsrecord_misc.c:464 | ||
4137 | msgid "Zone delegation record not allowed in apex." | 4130 | msgid "Zone delegation record not allowed in apex." |
4138 | msgstr "" | 4131 | msgstr "" |
4139 | 4132 | ||
4140 | #: src/gnsrecord/gnsrecord_misc.c:456 | 4133 | #: src/gnsrecord/gnsrecord_misc.c:472 |
4141 | msgid "Zone delegation record set contains mutually exclusive records." | 4134 | msgid "Zone delegation record set contains mutually exclusive records." |
4142 | msgstr "" | 4135 | msgstr "" |
4143 | 4136 | ||
4144 | #: src/gnsrecord/gnsrecord_misc.c:466 | 4137 | #: src/gnsrecord/gnsrecord_misc.c:482 |
4145 | msgid "Multiple REDIRECT records." | 4138 | msgid "Multiple REDIRECT records." |
4146 | msgstr "" | 4139 | msgstr "" |
4147 | 4140 | ||
4148 | #: src/gnsrecord/gnsrecord_misc.c:475 src/gnsrecord/gnsrecord_misc.c:501 | 4141 | #: src/gnsrecord/gnsrecord_misc.c:491 src/gnsrecord/gnsrecord_misc.c:517 |
4149 | msgid "Redirection record set conains mutually exclusive records." | 4142 | msgid "Redirection record set conains mutually exclusive records." |
4150 | msgstr "" | 4143 | msgstr "" |
4151 | 4144 | ||
4152 | #: src/gnsrecord/gnsrecord_misc.c:482 | 4145 | #: src/gnsrecord/gnsrecord_misc.c:498 |
4153 | msgid "Redirection records not allowed in apex." | 4146 | msgid "Redirection records not allowed in apex." |
4154 | msgstr "" | 4147 | msgstr "" |
4155 | 4148 | ||
4156 | #: src/gnsrecord/gnsrecord_misc.c:493 | 4149 | #: src/gnsrecord/gnsrecord_misc.c:509 |
4157 | msgid "Redirection records not allowed in apex.." | 4150 | msgid "Redirection records not allowed in apex.." |
4158 | msgstr "" | 4151 | msgstr "" |
4159 | 4152 | ||
4160 | #: src/gnsrecord/gnsrecord_misc.c:515 | 4153 | #: src/gnsrecord/gnsrecord_misc.c:531 |
4161 | msgid "Mutually exclusive records." | 4154 | msgid "Mutually exclusive records." |
4162 | msgstr "" | 4155 | msgstr "" |
4163 | 4156 | ||
@@ -4740,12 +4733,18 @@ msgstr "" | |||
4740 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" | 4733 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" |
4741 | msgstr "Нисам успео да обрадим „HELLO“ у датотеци „%s“: %s\n" | 4734 | msgstr "Нисам успео да обрадим „HELLO“ у датотеци „%s“: %s\n" |
4742 | 4735 | ||
4743 | #: src/messenger/plugin_gnsrecord_messenger.c:118 | 4736 | #: src/messenger/plugin_gnsrecord_messenger.c:136 |
4744 | #: src/messenger/plugin_gnsrecord_messenger.c:133 | 4737 | #: src/messenger/plugin_gnsrecord_messenger.c:151 |
4745 | #, fuzzy, c-format | 4738 | #, fuzzy, c-format |
4746 | msgid "Unable to parse MESSENGER_ROOM_ENTRY record `%s'\n" | 4739 | msgid "Unable to parse MESSENGER_ROOM_ENTRY record `%s'\n" |
4747 | msgstr "Не могу да обрадим „SOA“ запис „%s“\n" | 4740 | msgstr "Не могу да обрадим „SOA“ запис „%s“\n" |
4748 | 4741 | ||
4742 | #: src/messenger/plugin_gnsrecord_messenger.c:172 | ||
4743 | #: src/messenger/plugin_gnsrecord_messenger.c:187 | ||
4744 | #, fuzzy, c-format | ||
4745 | msgid "Unable to parse MESSENGER_ROOM_DETAILS record `%s'\n" | ||
4746 | msgstr "Не могу да обрадим „SOA“ запис „%s“\n" | ||
4747 | |||
4749 | #: src/my/my.c:196 src/my/my.c:215 | 4748 | #: src/my/my.c:196 src/my/my.c:215 |
4750 | #, fuzzy, c-format | 4749 | #, fuzzy, c-format |
4751 | msgid "%s failed at %s:%d with error: %s\n" | 4750 | msgid "%s failed at %s:%d with error: %s\n" |
@@ -4786,7 +4785,7 @@ msgstr "Неисправан јавни кључ за обратну претр | |||
4786 | msgid "You must specify a name\n" | 4785 | msgid "You must specify a name\n" |
4787 | msgstr "Морате навести назив\n" | 4786 | msgstr "Морате навести назив\n" |
4788 | 4787 | ||
4789 | #: src/namecache/gnunet-namecache.c:214 src/namestore/gnunet-namestore.c:1591 | 4788 | #: src/namecache/gnunet-namecache.c:214 src/namestore/gnunet-namestore.c:1582 |
4790 | msgid "name of the record to add/delete/display" | 4789 | msgid "name of the record to add/delete/display" |
4791 | msgstr "назив записа за додавање/брисање/приказ" | 4790 | msgstr "назив записа за додавање/брисање/приказ" |
4792 | 4791 | ||
@@ -4795,7 +4794,7 @@ msgstr "назив записа за додавање/брисање/прика | |||
4795 | msgid "specifies the public key of the zone to look in" | 4794 | msgid "specifies the public key of the zone to look in" |
4796 | msgstr "наводи јавни кључ зоне за претраживање" | 4795 | msgstr "наводи јавни кључ зоне за претраживање" |
4797 | 4796 | ||
4798 | #: src/namecache/gnunet-namecache.c:233 src/namestore/gnunet-namestore.c:1652 | 4797 | #: src/namecache/gnunet-namecache.c:233 src/namestore/gnunet-namestore.c:1643 |
4799 | msgid "GNUnet zone manipulation tool" | 4798 | msgid "GNUnet zone manipulation tool" |
4800 | msgstr "Алат манипуслисања ГНУнет зоном" | 4799 | msgstr "Алат манипуслисања ГНУнет зоном" |
4801 | 4800 | ||
@@ -5042,12 +5041,7 @@ msgstr "Неисправан јавни кључ за обратну претр | |||
5042 | msgid "Invalid URI `%s'\n" | 5041 | msgid "Invalid URI `%s'\n" |
5043 | msgstr "Неисправан УРИ „%s“\n" | 5042 | msgstr "Неисправан УРИ „%s“\n" |
5044 | 5043 | ||
5045 | #: src/namestore/gnunet-namestore.c:1242 | 5044 | #: src/namestore/gnunet-namestore.c:1283 |
5046 | #, c-format | ||
5047 | msgid "Label `%s' contains `.' which is not allowed\n" | ||
5048 | msgstr "" | ||
5049 | |||
5050 | #: src/namestore/gnunet-namestore.c:1292 | ||
5051 | #, c-format | 5045 | #, c-format |
5052 | msgid "" | 5046 | msgid "" |
5053 | "No default identity configured for `namestore' subsystem\n" | 5047 | "No default identity configured for `namestore' subsystem\n" |
@@ -5055,100 +5049,100 @@ msgid "" | |||
5055 | "Run gnunet-identity -d to get a list of choices for $NAME\n" | 5049 | "Run gnunet-identity -d to get a list of choices for $NAME\n" |
5056 | msgstr "" | 5050 | msgstr "" |
5057 | 5051 | ||
5058 | #: src/namestore/gnunet-namestore.c:1357 | 5052 | #: src/namestore/gnunet-namestore.c:1348 |
5059 | #, c-format | 5053 | #, c-format |
5060 | msgid "Superfluous command line arguments (starting with `%s') ignored\n" | 5054 | msgid "Superfluous command line arguments (starting with `%s') ignored\n" |
5061 | msgstr "" | 5055 | msgstr "" |
5062 | 5056 | ||
5063 | #: src/namestore/gnunet-namestore.c:1386 | 5057 | #: src/namestore/gnunet-namestore.c:1377 |
5064 | #, c-format | 5058 | #, c-format |
5065 | msgid "Cannot connect to identity service\n" | 5059 | msgid "Cannot connect to identity service\n" |
5066 | msgstr "Не могу да се повежем са услугом идентитета\n" | 5060 | msgstr "Не могу да се повежем са услугом идентитета\n" |
5067 | 5061 | ||
5068 | #: src/namestore/gnunet-namestore.c:1433 | 5062 | #: src/namestore/gnunet-namestore.c:1424 |
5069 | msgid "Empty record line argument is not allowed.\n" | 5063 | msgid "Empty record line argument is not allowed.\n" |
5070 | msgstr "" | 5064 | msgstr "" |
5071 | 5065 | ||
5072 | #: src/namestore/gnunet-namestore.c:1445 | 5066 | #: src/namestore/gnunet-namestore.c:1436 |
5073 | #, c-format | 5067 | #, c-format |
5074 | msgid "Invalid expiration time `%s' (must be without unit)\n" | 5068 | msgid "Invalid expiration time `%s' (must be without unit)\n" |
5075 | msgstr "" | 5069 | msgstr "" |
5076 | 5070 | ||
5077 | #: src/namestore/gnunet-namestore.c:1457 src/namestore/gnunet-namestore.c:1473 | 5071 | #: src/namestore/gnunet-namestore.c:1448 src/namestore/gnunet-namestore.c:1464 |
5078 | #: src/namestore/gnunet-namestore.c:1490 | 5072 | #: src/namestore/gnunet-namestore.c:1481 |
5079 | #, fuzzy, c-format | 5073 | #, fuzzy, c-format |
5080 | msgid "Missing entries in record line `%s'.\n" | 5074 | msgid "Missing entries in record line `%s'.\n" |
5081 | msgstr "Недостаје функција „%s“ у прикључку преноса за „%s“\n" | 5075 | msgstr "Недостаје функција „%s“ у прикључку преноса за „%s“\n" |
5082 | 5076 | ||
5083 | #: src/namestore/gnunet-namestore.c:1465 | 5077 | #: src/namestore/gnunet-namestore.c:1456 |
5084 | #, fuzzy, c-format | 5078 | #, fuzzy, c-format |
5085 | msgid "Unknown record type `%s'\n" | 5079 | msgid "Unknown record type `%s'\n" |
5086 | msgstr "Непозната наредба „%s“\n" | 5080 | msgstr "Непозната наредба „%s“\n" |
5087 | 5081 | ||
5088 | #: src/namestore/gnunet-namestore.c:1503 | 5082 | #: src/namestore/gnunet-namestore.c:1494 |
5089 | #, fuzzy, c-format | 5083 | #, fuzzy, c-format |
5090 | msgid "Invalid record data for type %s: `%s'.\n" | 5084 | msgid "Invalid record data for type %s: `%s'.\n" |
5091 | msgstr "Неисправан формат за ИП: „%s“\n" | 5085 | msgstr "Неисправан формат за ИП: „%s“\n" |
5092 | 5086 | ||
5093 | #: src/namestore/gnunet-namestore.c:1560 | 5087 | #: src/namestore/gnunet-namestore.c:1551 |
5094 | msgid "add record" | 5088 | msgid "add record" |
5095 | msgstr "додаје запис" | 5089 | msgstr "додаје запис" |
5096 | 5090 | ||
5097 | #: src/namestore/gnunet-namestore.c:1563 | 5091 | #: src/namestore/gnunet-namestore.c:1554 |
5098 | msgid "delete record" | 5092 | msgid "delete record" |
5099 | msgstr "брише запис" | 5093 | msgstr "брише запис" |
5100 | 5094 | ||
5101 | #: src/namestore/gnunet-namestore.c:1567 | 5095 | #: src/namestore/gnunet-namestore.c:1558 |
5102 | msgid "display records" | 5096 | msgid "display records" |
5103 | msgstr "приказује записе" | 5097 | msgstr "приказује записе" |
5104 | 5098 | ||
5105 | #: src/namestore/gnunet-namestore.c:1574 | 5099 | #: src/namestore/gnunet-namestore.c:1565 |
5106 | msgid "" | 5100 | msgid "" |
5107 | "expiration time for record to use (for adding only), \"never\" is possible" | 5101 | "expiration time for record to use (for adding only), \"never\" is possible" |
5108 | msgstr "време истека записа за коришћење (само за додавање), „never“ је могуће" | 5102 | msgstr "време истека записа за коришћење (само за додавање), „never“ је могуће" |
5109 | 5103 | ||
5110 | #: src/namestore/gnunet-namestore.c:1580 | 5104 | #: src/namestore/gnunet-namestore.c:1571 |
5111 | msgid "set the desired nick name for the zone" | 5105 | msgid "set the desired nick name for the zone" |
5112 | msgstr "поставља жељени назив надимка за зону" | 5106 | msgstr "поставља жељени назив надимка за зону" |
5113 | 5107 | ||
5114 | #: src/namestore/gnunet-namestore.c:1585 | 5108 | #: src/namestore/gnunet-namestore.c:1576 |
5115 | msgid "monitor changes in the namestore" | 5109 | msgid "monitor changes in the namestore" |
5116 | msgstr "прати измене у смештају назива" | 5110 | msgstr "прати измене у смештају назива" |
5117 | 5111 | ||
5118 | #: src/namestore/gnunet-namestore.c:1597 | 5112 | #: src/namestore/gnunet-namestore.c:1588 |
5119 | msgid "determine our name for the given PKEY" | 5113 | msgid "determine our name for the given PKEY" |
5120 | msgstr "одређује наш назив за дати „PKEY“" | 5114 | msgstr "одређује наш назив за дати „PKEY“" |
5121 | 5115 | ||
5122 | #: src/namestore/gnunet-namestore.c:1604 | 5116 | #: src/namestore/gnunet-namestore.c:1595 |
5123 | msgid "" | 5117 | msgid "" |
5124 | "set record set to values given by (possibly multiple) RECORDLINES; can be " | 5118 | "set record set to values given by (possibly multiple) RECORDLINES; can be " |
5125 | "specified multiple times" | 5119 | "specified multiple times" |
5126 | msgstr "" | 5120 | msgstr "" |
5127 | 5121 | ||
5128 | #: src/namestore/gnunet-namestore.c:1610 | 5122 | #: src/namestore/gnunet-namestore.c:1601 |
5129 | msgid "type of the record to add/delete/display" | 5123 | msgid "type of the record to add/delete/display" |
5130 | msgstr "врста записа за додавање/брисање/приказ" | 5124 | msgstr "врста записа за додавање/брисање/приказ" |
5131 | 5125 | ||
5132 | #: src/namestore/gnunet-namestore.c:1615 | 5126 | #: src/namestore/gnunet-namestore.c:1606 |
5133 | msgid "URI to import into our zone" | 5127 | msgid "URI to import into our zone" |
5134 | msgstr "УРИ за увоз у нашу зону" | 5128 | msgstr "УРИ за увоз у нашу зону" |
5135 | 5129 | ||
5136 | #: src/namestore/gnunet-namestore.c:1621 | 5130 | #: src/namestore/gnunet-namestore.c:1612 |
5137 | msgid "value of the record to add/delete" | 5131 | msgid "value of the record to add/delete" |
5138 | msgstr "вредност записа за додавање/брисање" | 5132 | msgstr "вредност записа за додавање/брисање" |
5139 | 5133 | ||
5140 | #: src/namestore/gnunet-namestore.c:1625 | 5134 | #: src/namestore/gnunet-namestore.c:1616 |
5141 | msgid "create or list public record" | 5135 | msgid "create or list public record" |
5142 | msgstr "ствара или исписује јавни запис" | 5136 | msgstr "ствара или исписује јавни запис" |
5143 | 5137 | ||
5144 | #: src/namestore/gnunet-namestore.c:1631 | 5138 | #: src/namestore/gnunet-namestore.c:1622 |
5145 | msgid "" | 5139 | msgid "" |
5146 | "create shadow record (only valid if all other records of the same type have " | 5140 | "create shadow record (only valid if all other records of the same type have " |
5147 | "expired" | 5141 | "expired" |
5148 | msgstr "" | 5142 | msgstr "" |
5149 | "прави сеновити запис (важи само ако су сви остали записи исте врсте истекли" | 5143 | "прави сеновити запис (важи само ако су сви остали записи исте врсте истекли" |
5150 | 5144 | ||
5151 | #: src/namestore/gnunet-namestore.c:1637 | 5145 | #: src/namestore/gnunet-namestore.c:1628 |
5152 | msgid "name of the ego controlling the zone" | 5146 | msgid "name of the ego controlling the zone" |
5153 | msgstr "назив егоа који контролише зону" | 5147 | msgstr "назив егоа који контролише зону" |
5154 | 5148 | ||
@@ -5157,7 +5151,17 @@ msgstr "назив егоа који контролише зону" | |||
5157 | msgid "Failed to replicate block in namecache: %s\n" | 5151 | msgid "Failed to replicate block in namecache: %s\n" |
5158 | msgstr "Нисам успео да реплицирам блок у остави назива: %s\n" | 5152 | msgstr "Нисам успео да реплицирам блок у остави назива: %s\n" |
5159 | 5153 | ||
5160 | #: src/namestore/gnunet-service-namestore.c:1668 | 5154 | #: src/namestore/gnunet-service-namestore.c:1559 |
5155 | #, fuzzy | ||
5156 | msgid "Error normalizing name." | ||
5157 | msgstr "Грешка стварања тунела\n" | ||
5158 | |||
5159 | #: src/namestore/gnunet-service-namestore.c:1582 | ||
5160 | #, fuzzy | ||
5161 | msgid "Error deserializing records." | ||
5162 | msgstr "Унутрашња грешка скенирања директоријума.\n" | ||
5163 | |||
5164 | #: src/namestore/gnunet-service-namestore.c:1691 | ||
5161 | #, fuzzy | 5165 | #, fuzzy |
5162 | msgid "Store failed" | 5166 | msgid "Store failed" |
5163 | msgstr "# Неуспеси „СТАВИ“ смештаја података" | 5167 | msgstr "# Неуспеси „СТАВИ“ смештаја података" |
@@ -6953,8 +6957,8 @@ msgid "GNUnet topology control" | |||
6953 | msgstr "" | 6957 | msgstr "" |
6954 | 6958 | ||
6955 | #: src/transport/gnunet-communicator-tcp.c:3338 | 6959 | #: src/transport/gnunet-communicator-tcp.c:3338 |
6956 | #: src/transport/gnunet-communicator-udp.c:3856 | 6960 | #: src/transport/gnunet-communicator-udp.c:3867 |
6957 | #: src/transport/gnunet-service-tng.c:10623 | 6961 | #: src/transport/gnunet-service-tng.c:10926 |
6958 | #: src/transport/gnunet-service-transport.c:2627 | 6962 | #: src/transport/gnunet-service-transport.c:2627 |
6959 | msgid "Transport service is lacking key configuration settings. Exiting.\n" | 6963 | msgid "Transport service is lacking key configuration settings. Exiting.\n" |
6960 | msgstr "Услузи преноса недостају поставке подешавања кључа. Излазим.\n" | 6964 | msgstr "Услузи преноса недостају поставке подешавања кључа. Излазим.\n" |
@@ -6963,7 +6967,7 @@ msgstr "Услузи преноса недостају поставке поде | |||
6963 | msgid "GNUnet TCP communicator" | 6967 | msgid "GNUnet TCP communicator" |
6964 | msgstr "" | 6968 | msgstr "" |
6965 | 6969 | ||
6966 | #: src/transport/gnunet-communicator-udp.c:3931 | 6970 | #: src/transport/gnunet-communicator-udp.c:3942 |
6967 | msgid "GNUnet UDP communicator" | 6971 | msgid "GNUnet UDP communicator" |
6968 | msgstr "" | 6972 | msgstr "" |
6969 | 6973 | ||
@@ -8370,12 +8374,12 @@ msgstr "Не могу да учитам лични кључ парњака\n" | |||
8370 | msgid "libgcrypt has not the expected version (version %s is required).\n" | 8374 | msgid "libgcrypt has not the expected version (version %s is required).\n" |
8371 | msgstr "„libgcrypt“ није очекиваног издања (издање %s је потребно).\n" | 8375 | msgstr "„libgcrypt“ није очекиваног издања (издање %s је потребно).\n" |
8372 | 8376 | ||
8373 | #: src/util/crypto_rsa.c:901 | 8377 | #: src/util/crypto_rsa.c:907 |
8374 | #, fuzzy, c-format | 8378 | #, fuzzy, c-format |
8375 | msgid "RSA signing failed at %s:%d: %s\n" | 8379 | msgid "RSA signing failed at %s:%d: %s\n" |
8376 | msgstr "„EdDSA“ потписивање није успело на %s:%d: %s\n" | 8380 | msgstr "„EdDSA“ потписивање није успело на %s:%d: %s\n" |
8377 | 8381 | ||
8378 | #: src/util/crypto_rsa.c:1201 | 8382 | #: src/util/crypto_rsa.c:1207 |
8379 | #, fuzzy, c-format | 8383 | #, fuzzy, c-format |
8380 | msgid "RSA signature verification failed at %s:%d: %s\n" | 8384 | msgid "RSA signature verification failed at %s:%d: %s\n" |
8381 | msgstr "Провера „ECDSA“ потписа није успела на %s:%d: %s\n" | 8385 | msgstr "Провера „ECDSA“ потписа није успела на %s:%d: %s\n" |
@@ -9063,12 +9067,12 @@ msgstr "Погрешан формат „%s“ за мрежну маску\n" | |||
9063 | msgid "Wrong format `%s' for network\n" | 9067 | msgid "Wrong format `%s' for network\n" |
9064 | msgstr "Погрешан формат „%s“ за мрежу\n" | 9068 | msgstr "Погрешан формат „%s“ за мрежу\n" |
9065 | 9069 | ||
9066 | #: src/util/time.c:870 src/util/time.c:898 | 9070 | #: src/util/time.c:900 src/util/time.c:928 |
9067 | #, c-format | 9071 | #, c-format |
9068 | msgid "Failed to map `%s', cannot assure monotonic time!\n" | 9072 | msgid "Failed to map `%s', cannot assure monotonic time!\n" |
9069 | msgstr "" | 9073 | msgstr "" |
9070 | 9074 | ||
9071 | #: src/util/time.c:906 | 9075 | #: src/util/time.c:936 |
9072 | #, c-format | 9076 | #, c-format |
9073 | msgid "" | 9077 | msgid "" |
9074 | "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n" | 9078 | "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n" |
@@ -9249,6 +9253,18 @@ msgstr "Поставља тунеле путем ВПН-а." | |||
9249 | msgid "Failed to connect to the namestore!\n" | 9253 | msgid "Failed to connect to the namestore!\n" |
9250 | msgstr "Нисам успео да се повежем са смештајем назива!\n" | 9254 | msgstr "Нисам успео да се повежем са смештајем назива!\n" |
9251 | 9255 | ||
9256 | #, c-format | ||
9257 | #~ msgid "Block not of type %u\n" | ||
9258 | #~ msgstr "Блок није врсте %u\n" | ||
9259 | |||
9260 | #, fuzzy, c-format | ||
9261 | #~ msgid "Size mismatch for block with type %u\n" | ||
9262 | #~ msgstr "Величин не одговара за блок\n" | ||
9263 | |||
9264 | #, c-format | ||
9265 | #~ msgid "Block of type %u is malformed\n" | ||
9266 | #~ msgstr "Блок врсте %u је лош\n" | ||
9267 | |||
9252 | #~ msgid "# items stored" | 9268 | #~ msgid "# items stored" |
9253 | #~ msgstr "# ставке су смештене" | 9269 | #~ msgstr "# ставке су смештене" |
9254 | 9270 | ||
@@ -7,7 +7,7 @@ msgid "" | |||
7 | msgstr "" | 7 | msgstr "" |
8 | "Project-Id-Version: GNUnet 0.7.0b\n" | 8 | "Project-Id-Version: GNUnet 0.7.0b\n" |
9 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" | 9 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" |
10 | "POT-Creation-Date: 2022-03-04 22:23+0100\n" | 10 | "POT-Creation-Date: 2022-04-01 08:42+0200\n" |
11 | "PO-Revision-Date: 2006-01-21 17:16+0100\n" | 11 | "PO-Revision-Date: 2006-01-21 17:16+0100\n" |
12 | "Last-Translator: Daniel Nylander <po@danielnylander.se>\n" | 12 | "Last-Translator: Daniel Nylander <po@danielnylander.se>\n" |
13 | "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" | 13 | "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" |
@@ -16,7 +16,7 @@ msgstr "" | |||
16 | "Content-Type: text/plain; charset=UTF-8\n" | 16 | "Content-Type: text/plain; charset=UTF-8\n" |
17 | "Content-Transfer-Encoding: 8bit\n" | 17 | "Content-Transfer-Encoding: 8bit\n" |
18 | 18 | ||
19 | #: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1254 | 19 | #: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1245 |
20 | #, fuzzy, c-format | 20 | #, fuzzy, c-format |
21 | msgid "Ego `%s' not known to identity service\n" | 21 | msgid "Ego `%s' not known to identity service\n" |
22 | msgstr "\"%s\": okänd tjänst: %s\n" | 22 | msgstr "\"%s\": okänd tjänst: %s\n" |
@@ -2135,21 +2135,6 @@ msgstr "" | |||
2135 | msgid "Measure quality and performance of the DHT service." | 2135 | msgid "Measure quality and performance of the DHT service." |
2136 | msgstr "Kan inte tillgå tjänsten" | 2136 | msgstr "Kan inte tillgå tjänsten" |
2137 | 2137 | ||
2138 | #: src/dht/plugin_block_dht.c:404 | ||
2139 | #, fuzzy, c-format | ||
2140 | msgid "Block not of type %u\n" | ||
2141 | msgstr "Ingen transport av typ %d är känd.\n" | ||
2142 | |||
2143 | #: src/dht/plugin_block_dht.c:413 | ||
2144 | #, c-format | ||
2145 | msgid "Size mismatch for block with type %u\n" | ||
2146 | msgstr "" | ||
2147 | |||
2148 | #: src/dht/plugin_block_dht.c:424 | ||
2149 | #, c-format | ||
2150 | msgid "Block of type %u is malformed\n" | ||
2151 | msgstr "" | ||
2152 | |||
2153 | #: src/dns/gnunet-dns-monitor.c:371 src/dns/gnunet-dns-monitor.c:376 | 2138 | #: src/dns/gnunet-dns-monitor.c:371 src/dns/gnunet-dns-monitor.c:376 |
2154 | msgid "only monitor DNS queries" | 2139 | msgid "only monitor DNS queries" |
2155 | msgstr "" | 2140 | msgstr "" |
@@ -2882,20 +2867,20 @@ msgstr "" | |||
2882 | msgid "LOC URI malformed (signature failed validation)" | 2867 | msgid "LOC URI malformed (signature failed validation)" |
2883 | msgstr "" | 2868 | msgstr "" |
2884 | 2869 | ||
2885 | #: src/fs/fs_uri.c:652 | 2870 | #: src/fs/fs_uri.c:653 |
2886 | #, fuzzy | 2871 | #, fuzzy |
2887 | msgid "invalid argument" | 2872 | msgid "invalid argument" |
2888 | msgstr "Ogiltigt argument: \"%s\"\n" | 2873 | msgstr "Ogiltigt argument: \"%s\"\n" |
2889 | 2874 | ||
2890 | #: src/fs/fs_uri.c:671 | 2875 | #: src/fs/fs_uri.c:673 |
2891 | msgid "Unrecognized URI type" | 2876 | msgid "Unrecognized URI type" |
2892 | msgstr "" | 2877 | msgstr "" |
2893 | 2878 | ||
2894 | #: src/fs/fs_uri.c:1075 src/fs/fs_uri.c:1102 | 2879 | #: src/fs/fs_uri.c:1077 src/fs/fs_uri.c:1104 |
2895 | msgid "No keywords specified!\n" | 2880 | msgid "No keywords specified!\n" |
2896 | msgstr "Inga nyckelord angivna!\n" | 2881 | msgstr "Inga nyckelord angivna!\n" |
2897 | 2882 | ||
2898 | #: src/fs/fs_uri.c:1108 | 2883 | #: src/fs/fs_uri.c:1110 |
2899 | msgid "Number of double-quotes not balanced!\n" | 2884 | msgid "Number of double-quotes not balanced!\n" |
2900 | msgstr "" | 2885 | msgstr "" |
2901 | 2886 | ||
@@ -3627,98 +3612,98 @@ msgstr "# byte mottogs via TCP" | |||
3627 | msgid "# query plan entries" | 3612 | msgid "# query plan entries" |
3628 | msgstr "" | 3613 | msgstr "" |
3629 | 3614 | ||
3630 | #: src/fs/gnunet-service-fs_pr.c:329 | 3615 | #: src/fs/gnunet-service-fs_pr.c:330 |
3631 | #, fuzzy | 3616 | #, fuzzy |
3632 | msgid "# Pending requests created" | 3617 | msgid "# Pending requests created" |
3633 | msgstr "# byte mottogs via TCP" | 3618 | msgstr "# byte mottogs via TCP" |
3634 | 3619 | ||
3635 | #: src/fs/gnunet-service-fs_pr.c:421 src/fs/gnunet-service-fs_pr.c:658 | 3620 | #: src/fs/gnunet-service-fs_pr.c:422 src/fs/gnunet-service-fs_pr.c:662 |
3636 | msgid "# Pending requests active" | 3621 | msgid "# Pending requests active" |
3637 | msgstr "" | 3622 | msgstr "" |
3638 | 3623 | ||
3639 | #: src/fs/gnunet-service-fs_pr.c:838 | 3624 | #: src/fs/gnunet-service-fs_pr.c:837 |
3640 | #, fuzzy | 3625 | #, fuzzy |
3641 | msgid "# replies received and matched" | 3626 | msgid "# replies received and matched" |
3642 | msgstr "# byte mottagna av typen %d" | 3627 | msgstr "# byte mottagna av typen %d" |
3643 | 3628 | ||
3644 | #: src/fs/gnunet-service-fs_pr.c:916 | 3629 | #: src/fs/gnunet-service-fs_pr.c:911 |
3645 | msgid "# results found locally" | 3630 | msgid "# results found locally" |
3646 | msgstr "" | 3631 | msgstr "" |
3647 | 3632 | ||
3648 | #: src/fs/gnunet-service-fs_pr.c:1050 | 3633 | #: src/fs/gnunet-service-fs_pr.c:1045 |
3649 | msgid "# Datastore `PUT' failures" | 3634 | msgid "# Datastore `PUT' failures" |
3650 | msgstr "" | 3635 | msgstr "" |
3651 | 3636 | ||
3652 | #: src/fs/gnunet-service-fs_pr.c:1079 | 3637 | #: src/fs/gnunet-service-fs_pr.c:1074 |
3653 | #, fuzzy | 3638 | #, fuzzy |
3654 | msgid "# storage requests dropped due to high load" | 3639 | msgid "# storage requests dropped due to high load" |
3655 | msgstr "Nätverksannonsering avstängd i konfigurationen!\n" | 3640 | msgstr "Nätverksannonsering avstängd i konfigurationen!\n" |
3656 | 3641 | ||
3657 | #: src/fs/gnunet-service-fs_pr.c:1118 | 3642 | #: src/fs/gnunet-service-fs_pr.c:1113 |
3658 | #, fuzzy | 3643 | #, fuzzy |
3659 | msgid "# Replies received from DHT" | 3644 | msgid "# Replies received from DHT" |
3660 | msgstr "# byte mottagna via HTTP" | 3645 | msgstr "# byte mottagna via HTTP" |
3661 | 3646 | ||
3662 | #: src/fs/gnunet-service-fs_pr.c:1259 | 3647 | #: src/fs/gnunet-service-fs_pr.c:1268 |
3663 | #, fuzzy | 3648 | #, fuzzy |
3664 | msgid "# Replies received from CADET" | 3649 | msgid "# Replies received from CADET" |
3665 | msgstr "# byte mottagna via HTTP" | 3650 | msgstr "# byte mottagna via HTTP" |
3666 | 3651 | ||
3667 | #: src/fs/gnunet-service-fs_pr.c:1313 | 3652 | #: src/fs/gnunet-service-fs_pr.c:1323 |
3668 | #, c-format | 3653 | #, c-format |
3669 | msgid "Datastore lookup already took %s!\n" | 3654 | msgid "Datastore lookup already took %s!\n" |
3670 | msgstr "" | 3655 | msgstr "" |
3671 | 3656 | ||
3672 | #: src/fs/gnunet-service-fs_pr.c:1334 | 3657 | #: src/fs/gnunet-service-fs_pr.c:1344 |
3673 | #, c-format | 3658 | #, c-format |
3674 | msgid "On-demand lookup already took %s!\n" | 3659 | msgid "On-demand lookup already took %s!\n" |
3675 | msgstr "" | 3660 | msgstr "" |
3676 | 3661 | ||
3677 | #: src/fs/gnunet-service-fs_pr.c:1401 | 3662 | #: src/fs/gnunet-service-fs_pr.c:1411 |
3678 | msgid "# requested DBLOCK or IBLOCK not found" | 3663 | msgid "# requested DBLOCK or IBLOCK not found" |
3679 | msgstr "" | 3664 | msgstr "" |
3680 | 3665 | ||
3681 | #: src/fs/gnunet-service-fs_pr.c:1463 | 3666 | #: src/fs/gnunet-service-fs_pr.c:1473 |
3682 | msgid "# Datastore lookups concluded (error queueing)" | 3667 | msgid "# Datastore lookups concluded (error queueing)" |
3683 | msgstr "" | 3668 | msgstr "" |
3684 | 3669 | ||
3685 | #: src/fs/gnunet-service-fs_pr.c:1518 | 3670 | #: src/fs/gnunet-service-fs_pr.c:1528 |
3686 | msgid "# Datastore lookups concluded (no results)" | 3671 | msgid "# Datastore lookups concluded (no results)" |
3687 | msgstr "" | 3672 | msgstr "" |
3688 | 3673 | ||
3689 | #: src/fs/gnunet-service-fs_pr.c:1533 | 3674 | #: src/fs/gnunet-service-fs_pr.c:1543 |
3690 | msgid "# Datastore lookups concluded (seen all)" | 3675 | msgid "# Datastore lookups concluded (seen all)" |
3691 | msgstr "" | 3676 | msgstr "" |
3692 | 3677 | ||
3693 | #: src/fs/gnunet-service-fs_pr.c:1556 | 3678 | #: src/fs/gnunet-service-fs_pr.c:1566 |
3694 | msgid "# Datastore lookups aborted (more than MAX_RESULTS)" | 3679 | msgid "# Datastore lookups aborted (more than MAX_RESULTS)" |
3695 | msgstr "" | 3680 | msgstr "" |
3696 | 3681 | ||
3697 | #: src/fs/gnunet-service-fs_pr.c:1573 | 3682 | #: src/fs/gnunet-service-fs_pr.c:1583 |
3698 | msgid "# on-demand blocks matched requests" | 3683 | msgid "# on-demand blocks matched requests" |
3699 | msgstr "" | 3684 | msgstr "" |
3700 | 3685 | ||
3701 | #: src/fs/gnunet-service-fs_pr.c:1594 | 3686 | #: src/fs/gnunet-service-fs_pr.c:1604 |
3702 | msgid "# on-demand lookups performed successfully" | 3687 | msgid "# on-demand lookups performed successfully" |
3703 | msgstr "" | 3688 | msgstr "" |
3704 | 3689 | ||
3705 | #: src/fs/gnunet-service-fs_pr.c:1600 | 3690 | #: src/fs/gnunet-service-fs_pr.c:1610 |
3706 | msgid "# on-demand lookups failed" | 3691 | msgid "# on-demand lookups failed" |
3707 | msgstr "" | 3692 | msgstr "" |
3708 | 3693 | ||
3709 | #: src/fs/gnunet-service-fs_pr.c:1641 | 3694 | #: src/fs/gnunet-service-fs_pr.c:1656 |
3710 | msgid "# Datastore lookups concluded (found last result)" | 3695 | msgid "# Datastore lookups concluded (found last result)" |
3711 | msgstr "" | 3696 | msgstr "" |
3712 | 3697 | ||
3713 | #: src/fs/gnunet-service-fs_pr.c:1654 | 3698 | #: src/fs/gnunet-service-fs_pr.c:1669 |
3714 | msgid "# Datastore lookups concluded (load too high)" | 3699 | msgid "# Datastore lookups concluded (load too high)" |
3715 | msgstr "" | 3700 | msgstr "" |
3716 | 3701 | ||
3717 | #: src/fs/gnunet-service-fs_pr.c:1705 | 3702 | #: src/fs/gnunet-service-fs_pr.c:1720 |
3718 | msgid "# Datastore lookups initiated" | 3703 | msgid "# Datastore lookups initiated" |
3719 | msgstr "" | 3704 | msgstr "" |
3720 | 3705 | ||
3721 | #: src/fs/gnunet-service-fs_pr.c:1755 | 3706 | #: src/fs/gnunet-service-fs_pr.c:1784 |
3722 | #, fuzzy | 3707 | #, fuzzy |
3723 | msgid "# GAP PUT messages received" | 3708 | msgid "# GAP PUT messages received" |
3724 | msgstr "# krypterade PONG-meddelanden mottagna" | 3709 | msgstr "# krypterade PONG-meddelanden mottagna" |
@@ -4036,65 +4021,65 @@ msgstr "" | |||
4036 | msgid "Failed to connect to the DNS service!\n" | 4021 | msgid "Failed to connect to the DNS service!\n" |
4037 | msgstr "Misslyckades att ansluta till gnunetd.\n" | 4022 | msgstr "Misslyckades att ansluta till gnunetd.\n" |
4038 | 4023 | ||
4039 | #: src/gns/gnunet-service-gns_resolver.c:659 | 4024 | #: src/gns/gnunet-service-gns_resolver.c:672 |
4040 | #, c-format | 4025 | #, c-format |
4041 | msgid "Protocol `%s' unknown, skipping labels.\n" | 4026 | msgid "Protocol `%s' unknown, skipping labels.\n" |
4042 | msgstr "" | 4027 | msgstr "" |
4043 | 4028 | ||
4044 | #: src/gns/gnunet-service-gns_resolver.c:671 | 4029 | #: src/gns/gnunet-service-gns_resolver.c:684 |
4045 | #, c-format | 4030 | #, c-format |
4046 | msgid "Service `%s' unknown for protocol `%s', trying as number.\n" | 4031 | msgid "Service `%s' unknown for protocol `%s', trying as number.\n" |
4047 | msgstr "" | 4032 | msgstr "" |
4048 | 4033 | ||
4049 | #: src/gns/gnunet-service-gns_resolver.c:677 | 4034 | #: src/gns/gnunet-service-gns_resolver.c:690 |
4050 | #, c-format | 4035 | #, c-format |
4051 | msgid "Service `%s' not a port, skipping service labels.\n" | 4036 | msgid "Service `%s' not a port, skipping service labels.\n" |
4052 | msgstr "" | 4037 | msgstr "" |
4053 | 4038 | ||
4054 | #: src/gns/gnunet-service-gns_resolver.c:891 | 4039 | #: src/gns/gnunet-service-gns_resolver.c:904 |
4055 | #, fuzzy | 4040 | #, fuzzy |
4056 | msgid "Failed to parse DNS response\n" | 4041 | msgid "Failed to parse DNS response\n" |
4057 | msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" | 4042 | msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" |
4058 | 4043 | ||
4059 | #: src/gns/gnunet-service-gns_resolver.c:1082 | 4044 | #: src/gns/gnunet-service-gns_resolver.c:1095 |
4060 | #, c-format | 4045 | #, c-format |
4061 | msgid "Skipping record of unsupported type %d\n" | 4046 | msgid "Skipping record of unsupported type %d\n" |
4062 | msgstr "" | 4047 | msgstr "" |
4063 | 4048 | ||
4064 | #: src/gns/gnunet-service-gns_resolver.c:1859 | 4049 | #: src/gns/gnunet-service-gns_resolver.c:1872 |
4065 | #, c-format | 4050 | #, c-format |
4066 | msgid "Name `%s' cannot be converted to IDNA." | 4051 | msgid "Name `%s' cannot be converted to IDNA." |
4067 | msgstr "" | 4052 | msgstr "" |
4068 | 4053 | ||
4069 | #: src/gns/gnunet-service-gns_resolver.c:1874 | 4054 | #: src/gns/gnunet-service-gns_resolver.c:1887 |
4070 | #, c-format | 4055 | #, c-format |
4071 | msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" | 4056 | msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" |
4072 | msgstr "" | 4057 | msgstr "" |
4073 | 4058 | ||
4074 | #: src/gns/gnunet-service-gns_resolver.c:1914 | 4059 | #: src/gns/gnunet-service-gns_resolver.c:1927 |
4075 | #, fuzzy, c-format | 4060 | #, fuzzy, c-format |
4076 | msgid "GNS lookup failed (zero records found for `%s')\n" | 4061 | msgid "GNS lookup failed (zero records found for `%s')\n" |
4077 | msgstr "%d filer hittades i katalog.\n" | 4062 | msgstr "%d filer hittades i katalog.\n" |
4078 | 4063 | ||
4079 | #: src/gns/gnunet-service-gns_resolver.c:2312 | 4064 | #: src/gns/gnunet-service-gns_resolver.c:2329 |
4080 | msgid "Unable to process critical delegation record\n" | 4065 | msgid "Unable to process critical delegation record\n" |
4081 | msgstr "" | 4066 | msgstr "" |
4082 | 4067 | ||
4083 | #: src/gns/gnunet-service-gns_resolver.c:2317 | 4068 | #: src/gns/gnunet-service-gns_resolver.c:2334 |
4084 | msgid "GNS lookup recursion failed (no delegation record found)\n" | 4069 | msgid "GNS lookup recursion failed (no delegation record found)\n" |
4085 | msgstr "" | 4070 | msgstr "" |
4086 | 4071 | ||
4087 | #: src/gns/gnunet-service-gns_resolver.c:2340 | 4072 | #: src/gns/gnunet-service-gns_resolver.c:2357 |
4088 | #, fuzzy, c-format | 4073 | #, fuzzy, c-format |
4089 | msgid "Failed to cache GNS resolution: %s\n" | 4074 | msgid "Failed to cache GNS resolution: %s\n" |
4090 | msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" | 4075 | msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n" |
4091 | 4076 | ||
4092 | #: src/gns/gnunet-service-gns_resolver.c:2505 | 4077 | #: src/gns/gnunet-service-gns_resolver.c:2522 |
4093 | #, c-format | 4078 | #, c-format |
4094 | msgid "GNS namecache returned empty result for `%s'\n" | 4079 | msgid "GNS namecache returned empty result for `%s'\n" |
4095 | msgstr "" | 4080 | msgstr "" |
4096 | 4081 | ||
4097 | #: src/gns/gnunet-service-gns_resolver.c:2652 | 4082 | #: src/gns/gnunet-service-gns_resolver.c:2669 |
4098 | #, c-format | 4083 | #, c-format |
4099 | msgid "Zone %s was revoked, resolution fails\n" | 4084 | msgid "Zone %s was revoked, resolution fails\n" |
4100 | msgstr "" | 4085 | msgstr "" |
@@ -4137,31 +4122,39 @@ msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | |||
4137 | msgid "Gns REST API initialized\n" | 4122 | msgid "Gns REST API initialized\n" |
4138 | msgstr " Anslutning misslyckades\n" | 4123 | msgstr " Anslutning misslyckades\n" |
4139 | 4124 | ||
4140 | #: src/gnsrecord/gnsrecord_misc.c:448 | 4125 | #: src/gnsrecord/gnsrecord_misc.c:52 |
4126 | msgid "Label is NULL which is not allowed\n" | ||
4127 | msgstr "" | ||
4128 | |||
4129 | #: src/gnsrecord/gnsrecord_misc.c:57 | ||
4130 | msgid "Label contains `.' which is not allowed\n" | ||
4131 | msgstr "" | ||
4132 | |||
4133 | #: src/gnsrecord/gnsrecord_misc.c:464 | ||
4141 | msgid "Zone delegation record not allowed in apex." | 4134 | msgid "Zone delegation record not allowed in apex." |
4142 | msgstr "" | 4135 | msgstr "" |
4143 | 4136 | ||
4144 | #: src/gnsrecord/gnsrecord_misc.c:456 | 4137 | #: src/gnsrecord/gnsrecord_misc.c:472 |
4145 | msgid "Zone delegation record set contains mutually exclusive records." | 4138 | msgid "Zone delegation record set contains mutually exclusive records." |
4146 | msgstr "" | 4139 | msgstr "" |
4147 | 4140 | ||
4148 | #: src/gnsrecord/gnsrecord_misc.c:466 | 4141 | #: src/gnsrecord/gnsrecord_misc.c:482 |
4149 | msgid "Multiple REDIRECT records." | 4142 | msgid "Multiple REDIRECT records." |
4150 | msgstr "" | 4143 | msgstr "" |
4151 | 4144 | ||
4152 | #: src/gnsrecord/gnsrecord_misc.c:475 src/gnsrecord/gnsrecord_misc.c:501 | 4145 | #: src/gnsrecord/gnsrecord_misc.c:491 src/gnsrecord/gnsrecord_misc.c:517 |
4153 | msgid "Redirection record set conains mutually exclusive records." | 4146 | msgid "Redirection record set conains mutually exclusive records." |
4154 | msgstr "" | 4147 | msgstr "" |
4155 | 4148 | ||
4156 | #: src/gnsrecord/gnsrecord_misc.c:482 | 4149 | #: src/gnsrecord/gnsrecord_misc.c:498 |
4157 | msgid "Redirection records not allowed in apex." | 4150 | msgid "Redirection records not allowed in apex." |
4158 | msgstr "" | 4151 | msgstr "" |
4159 | 4152 | ||
4160 | #: src/gnsrecord/gnsrecord_misc.c:493 | 4153 | #: src/gnsrecord/gnsrecord_misc.c:509 |
4161 | msgid "Redirection records not allowed in apex.." | 4154 | msgid "Redirection records not allowed in apex.." |
4162 | msgstr "" | 4155 | msgstr "" |
4163 | 4156 | ||
4164 | #: src/gnsrecord/gnsrecord_misc.c:515 | 4157 | #: src/gnsrecord/gnsrecord_misc.c:531 |
4165 | msgid "Mutually exclusive records." | 4158 | msgid "Mutually exclusive records." |
4166 | msgstr "" | 4159 | msgstr "" |
4167 | 4160 | ||
@@ -4732,12 +4725,18 @@ msgstr " Anslutning misslyckades\n" | |||
4732 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" | 4725 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" |
4733 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | 4726 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" |
4734 | 4727 | ||
4735 | #: src/messenger/plugin_gnsrecord_messenger.c:118 | 4728 | #: src/messenger/plugin_gnsrecord_messenger.c:136 |
4736 | #: src/messenger/plugin_gnsrecord_messenger.c:133 | 4729 | #: src/messenger/plugin_gnsrecord_messenger.c:151 |
4737 | #, fuzzy, c-format | 4730 | #, fuzzy, c-format |
4738 | msgid "Unable to parse MESSENGER_ROOM_ENTRY record `%s'\n" | 4731 | msgid "Unable to parse MESSENGER_ROOM_ENTRY record `%s'\n" |
4739 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | 4732 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" |
4740 | 4733 | ||
4734 | #: src/messenger/plugin_gnsrecord_messenger.c:172 | ||
4735 | #: src/messenger/plugin_gnsrecord_messenger.c:187 | ||
4736 | #, fuzzy, c-format | ||
4737 | msgid "Unable to parse MESSENGER_ROOM_DETAILS record `%s'\n" | ||
4738 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | ||
4739 | |||
4741 | #: src/my/my.c:196 src/my/my.c:215 | 4740 | #: src/my/my.c:196 src/my/my.c:215 |
4742 | #, fuzzy, c-format | 4741 | #, fuzzy, c-format |
4743 | msgid "%s failed at %s:%d with error: %s\n" | 4742 | msgid "%s failed at %s:%d with error: %s\n" |
@@ -4778,7 +4777,7 @@ msgstr "Ogiltigt argument: \"%s\"\n" | |||
4778 | msgid "You must specify a name\n" | 4777 | msgid "You must specify a name\n" |
4779 | msgstr "Du måste ange en mottagare!\n" | 4778 | msgstr "Du måste ange en mottagare!\n" |
4780 | 4779 | ||
4781 | #: src/namecache/gnunet-namecache.c:214 src/namestore/gnunet-namestore.c:1591 | 4780 | #: src/namecache/gnunet-namecache.c:214 src/namestore/gnunet-namestore.c:1582 |
4782 | msgid "name of the record to add/delete/display" | 4781 | msgid "name of the record to add/delete/display" |
4783 | msgstr "" | 4782 | msgstr "" |
4784 | 4783 | ||
@@ -4787,7 +4786,7 @@ msgstr "" | |||
4787 | msgid "specifies the public key of the zone to look in" | 4786 | msgid "specifies the public key of the zone to look in" |
4788 | msgstr "ange prioritet för innehållet" | 4787 | msgstr "ange prioritet för innehållet" |
4789 | 4788 | ||
4790 | #: src/namecache/gnunet-namecache.c:233 src/namestore/gnunet-namestore.c:1652 | 4789 | #: src/namecache/gnunet-namecache.c:233 src/namestore/gnunet-namestore.c:1643 |
4791 | #, fuzzy | 4790 | #, fuzzy |
4792 | msgid "GNUnet zone manipulation tool" | 4791 | msgid "GNUnet zone manipulation tool" |
4793 | msgstr "GNUnet-konfiguration" | 4792 | msgstr "GNUnet-konfiguration" |
@@ -5042,12 +5041,7 @@ msgstr "Ogiltigt argument: \"%s\"\n" | |||
5042 | msgid "Invalid URI `%s'\n" | 5041 | msgid "Invalid URI `%s'\n" |
5043 | msgstr "Ogiltiga argument: " | 5042 | msgstr "Ogiltiga argument: " |
5044 | 5043 | ||
5045 | #: src/namestore/gnunet-namestore.c:1242 | 5044 | #: src/namestore/gnunet-namestore.c:1283 |
5046 | #, c-format | ||
5047 | msgid "Label `%s' contains `.' which is not allowed\n" | ||
5048 | msgstr "" | ||
5049 | |||
5050 | #: src/namestore/gnunet-namestore.c:1292 | ||
5051 | #, c-format | 5045 | #, c-format |
5052 | msgid "" | 5046 | msgid "" |
5053 | "No default identity configured for `namestore' subsystem\n" | 5047 | "No default identity configured for `namestore' subsystem\n" |
@@ -5055,102 +5049,102 @@ msgid "" | |||
5055 | "Run gnunet-identity -d to get a list of choices for $NAME\n" | 5049 | "Run gnunet-identity -d to get a list of choices for $NAME\n" |
5056 | msgstr "" | 5050 | msgstr "" |
5057 | 5051 | ||
5058 | #: src/namestore/gnunet-namestore.c:1357 | 5052 | #: src/namestore/gnunet-namestore.c:1348 |
5059 | #, fuzzy, c-format | 5053 | #, fuzzy, c-format |
5060 | msgid "Superfluous command line arguments (starting with `%s') ignored\n" | 5054 | msgid "Superfluous command line arguments (starting with `%s') ignored\n" |
5061 | msgstr "Onödiga argument (ignorerade).\n" | 5055 | msgstr "Onödiga argument (ignorerade).\n" |
5062 | 5056 | ||
5063 | #: src/namestore/gnunet-namestore.c:1386 | 5057 | #: src/namestore/gnunet-namestore.c:1377 |
5064 | #, fuzzy, c-format | 5058 | #, fuzzy, c-format |
5065 | msgid "Cannot connect to identity service\n" | 5059 | msgid "Cannot connect to identity service\n" |
5066 | msgstr "Kunde inte ansluta till gnunetd.\n" | 5060 | msgstr "Kunde inte ansluta till gnunetd.\n" |
5067 | 5061 | ||
5068 | #: src/namestore/gnunet-namestore.c:1433 | 5062 | #: src/namestore/gnunet-namestore.c:1424 |
5069 | msgid "Empty record line argument is not allowed.\n" | 5063 | msgid "Empty record line argument is not allowed.\n" |
5070 | msgstr "" | 5064 | msgstr "" |
5071 | 5065 | ||
5072 | #: src/namestore/gnunet-namestore.c:1445 | 5066 | #: src/namestore/gnunet-namestore.c:1436 |
5073 | #, c-format | 5067 | #, c-format |
5074 | msgid "Invalid expiration time `%s' (must be without unit)\n" | 5068 | msgid "Invalid expiration time `%s' (must be without unit)\n" |
5075 | msgstr "" | 5069 | msgstr "" |
5076 | 5070 | ||
5077 | #: src/namestore/gnunet-namestore.c:1457 src/namestore/gnunet-namestore.c:1473 | 5071 | #: src/namestore/gnunet-namestore.c:1448 src/namestore/gnunet-namestore.c:1464 |
5078 | #: src/namestore/gnunet-namestore.c:1490 | 5072 | #: src/namestore/gnunet-namestore.c:1481 |
5079 | #, fuzzy, c-format | 5073 | #, fuzzy, c-format |
5080 | msgid "Missing entries in record line `%s'.\n" | 5074 | msgid "Missing entries in record line `%s'.\n" |
5081 | msgstr "Kunde inte slå upp \"%s\": %s\n" | 5075 | msgstr "Kunde inte slå upp \"%s\": %s\n" |
5082 | 5076 | ||
5083 | #: src/namestore/gnunet-namestore.c:1465 | 5077 | #: src/namestore/gnunet-namestore.c:1456 |
5084 | #, fuzzy, c-format | 5078 | #, fuzzy, c-format |
5085 | msgid "Unknown record type `%s'\n" | 5079 | msgid "Unknown record type `%s'\n" |
5086 | msgstr "Okänd operation \"%s\"\n" | 5080 | msgstr "Okänd operation \"%s\"\n" |
5087 | 5081 | ||
5088 | #: src/namestore/gnunet-namestore.c:1503 | 5082 | #: src/namestore/gnunet-namestore.c:1494 |
5089 | #, fuzzy, c-format | 5083 | #, fuzzy, c-format |
5090 | msgid "Invalid record data for type %s: `%s'.\n" | 5084 | msgid "Invalid record data for type %s: `%s'.\n" |
5091 | msgstr "Ogiltigt format för IP: \"%s\"\n" | 5085 | msgstr "Ogiltigt format för IP: \"%s\"\n" |
5092 | 5086 | ||
5093 | #: src/namestore/gnunet-namestore.c:1560 | 5087 | #: src/namestore/gnunet-namestore.c:1551 |
5094 | msgid "add record" | 5088 | msgid "add record" |
5095 | msgstr "" | 5089 | msgstr "" |
5096 | 5090 | ||
5097 | #: src/namestore/gnunet-namestore.c:1563 | 5091 | #: src/namestore/gnunet-namestore.c:1554 |
5098 | msgid "delete record" | 5092 | msgid "delete record" |
5099 | msgstr "" | 5093 | msgstr "" |
5100 | 5094 | ||
5101 | #: src/namestore/gnunet-namestore.c:1567 | 5095 | #: src/namestore/gnunet-namestore.c:1558 |
5102 | msgid "display records" | 5096 | msgid "display records" |
5103 | msgstr "" | 5097 | msgstr "" |
5104 | 5098 | ||
5105 | #: src/namestore/gnunet-namestore.c:1574 | 5099 | #: src/namestore/gnunet-namestore.c:1565 |
5106 | msgid "" | 5100 | msgid "" |
5107 | "expiration time for record to use (for adding only), \"never\" is possible" | 5101 | "expiration time for record to use (for adding only), \"never\" is possible" |
5108 | msgstr "" | 5102 | msgstr "" |
5109 | 5103 | ||
5110 | #: src/namestore/gnunet-namestore.c:1580 | 5104 | #: src/namestore/gnunet-namestore.c:1571 |
5111 | #, fuzzy | 5105 | #, fuzzy |
5112 | msgid "set the desired nick name for the zone" | 5106 | msgid "set the desired nick name for the zone" |
5113 | msgstr "Skriv ut information om GNUnets motparter." | 5107 | msgstr "Skriv ut information om GNUnets motparter." |
5114 | 5108 | ||
5115 | #: src/namestore/gnunet-namestore.c:1585 | 5109 | #: src/namestore/gnunet-namestore.c:1576 |
5116 | #, fuzzy | 5110 | #, fuzzy |
5117 | msgid "monitor changes in the namestore" | 5111 | msgid "monitor changes in the namestore" |
5118 | msgstr "Misslyckades att ansluta till gnunetd.\n" | 5112 | msgstr "Misslyckades att ansluta till gnunetd.\n" |
5119 | 5113 | ||
5120 | #: src/namestore/gnunet-namestore.c:1597 | 5114 | #: src/namestore/gnunet-namestore.c:1588 |
5121 | #, fuzzy | 5115 | #, fuzzy |
5122 | msgid "determine our name for the given PKEY" | 5116 | msgid "determine our name for the given PKEY" |
5123 | msgstr "Skriv ut information om GNUnets motparter." | 5117 | msgstr "Skriv ut information om GNUnets motparter." |
5124 | 5118 | ||
5125 | #: src/namestore/gnunet-namestore.c:1604 | 5119 | #: src/namestore/gnunet-namestore.c:1595 |
5126 | msgid "" | 5120 | msgid "" |
5127 | "set record set to values given by (possibly multiple) RECORDLINES; can be " | 5121 | "set record set to values given by (possibly multiple) RECORDLINES; can be " |
5128 | "specified multiple times" | 5122 | "specified multiple times" |
5129 | msgstr "" | 5123 | msgstr "" |
5130 | 5124 | ||
5131 | #: src/namestore/gnunet-namestore.c:1610 | 5125 | #: src/namestore/gnunet-namestore.c:1601 |
5132 | msgid "type of the record to add/delete/display" | 5126 | msgid "type of the record to add/delete/display" |
5133 | msgstr "" | 5127 | msgstr "" |
5134 | 5128 | ||
5135 | #: src/namestore/gnunet-namestore.c:1615 | 5129 | #: src/namestore/gnunet-namestore.c:1606 |
5136 | msgid "URI to import into our zone" | 5130 | msgid "URI to import into our zone" |
5137 | msgstr "" | 5131 | msgstr "" |
5138 | 5132 | ||
5139 | #: src/namestore/gnunet-namestore.c:1621 | 5133 | #: src/namestore/gnunet-namestore.c:1612 |
5140 | msgid "value of the record to add/delete" | 5134 | msgid "value of the record to add/delete" |
5141 | msgstr "" | 5135 | msgstr "" |
5142 | 5136 | ||
5143 | #: src/namestore/gnunet-namestore.c:1625 | 5137 | #: src/namestore/gnunet-namestore.c:1616 |
5144 | msgid "create or list public record" | 5138 | msgid "create or list public record" |
5145 | msgstr "" | 5139 | msgstr "" |
5146 | 5140 | ||
5147 | #: src/namestore/gnunet-namestore.c:1631 | 5141 | #: src/namestore/gnunet-namestore.c:1622 |
5148 | msgid "" | 5142 | msgid "" |
5149 | "create shadow record (only valid if all other records of the same type have " | 5143 | "create shadow record (only valid if all other records of the same type have " |
5150 | "expired" | 5144 | "expired" |
5151 | msgstr "" | 5145 | msgstr "" |
5152 | 5146 | ||
5153 | #: src/namestore/gnunet-namestore.c:1637 | 5147 | #: src/namestore/gnunet-namestore.c:1628 |
5154 | #, fuzzy | 5148 | #, fuzzy |
5155 | msgid "name of the ego controlling the zone" | 5149 | msgid "name of the ego controlling the zone" |
5156 | msgstr "Visa värde av alternativet" | 5150 | msgstr "Visa värde av alternativet" |
@@ -5160,7 +5154,17 @@ msgstr "Visa värde av alternativet" | |||
5160 | msgid "Failed to replicate block in namecache: %s\n" | 5154 | msgid "Failed to replicate block in namecache: %s\n" |
5161 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" | 5155 | msgstr "Misslyckades att läsa kompislista från \"%s\"\n" |
5162 | 5156 | ||
5163 | #: src/namestore/gnunet-service-namestore.c:1668 | 5157 | #: src/namestore/gnunet-service-namestore.c:1559 |
5158 | #, fuzzy | ||
5159 | msgid "Error normalizing name." | ||
5160 | msgstr "Klar med skapandet av värdnyckel.\n" | ||
5161 | |||
5162 | #: src/namestore/gnunet-service-namestore.c:1582 | ||
5163 | #, fuzzy | ||
5164 | msgid "Error deserializing records." | ||
5165 | msgstr "=\tFel vid läsning av katalog.\n" | ||
5166 | |||
5167 | #: src/namestore/gnunet-service-namestore.c:1691 | ||
5164 | #, fuzzy | 5168 | #, fuzzy |
5165 | msgid "Store failed" | 5169 | msgid "Store failed" |
5166 | msgstr "gnunet-update misslyckades!" | 5170 | msgstr "gnunet-update misslyckades!" |
@@ -6929,8 +6933,8 @@ msgid "GNUnet topology control" | |||
6929 | msgstr "" | 6933 | msgstr "" |
6930 | 6934 | ||
6931 | #: src/transport/gnunet-communicator-tcp.c:3338 | 6935 | #: src/transport/gnunet-communicator-tcp.c:3338 |
6932 | #: src/transport/gnunet-communicator-udp.c:3856 | 6936 | #: src/transport/gnunet-communicator-udp.c:3867 |
6933 | #: src/transport/gnunet-service-tng.c:10623 | 6937 | #: src/transport/gnunet-service-tng.c:10926 |
6934 | #: src/transport/gnunet-service-transport.c:2627 | 6938 | #: src/transport/gnunet-service-transport.c:2627 |
6935 | #, fuzzy | 6939 | #, fuzzy |
6936 | msgid "Transport service is lacking key configuration settings. Exiting.\n" | 6940 | msgid "Transport service is lacking key configuration settings. Exiting.\n" |
@@ -6940,7 +6944,7 @@ msgstr "GNUnet-konfiguration" | |||
6940 | msgid "GNUnet TCP communicator" | 6944 | msgid "GNUnet TCP communicator" |
6941 | msgstr "" | 6945 | msgstr "" |
6942 | 6946 | ||
6943 | #: src/transport/gnunet-communicator-udp.c:3931 | 6947 | #: src/transport/gnunet-communicator-udp.c:3942 |
6944 | msgid "GNUnet UDP communicator" | 6948 | msgid "GNUnet UDP communicator" |
6945 | msgstr "" | 6949 | msgstr "" |
6946 | 6950 | ||
@@ -8350,12 +8354,12 @@ msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n" | |||
8350 | msgid "libgcrypt has not the expected version (version %s is required).\n" | 8354 | msgid "libgcrypt has not the expected version (version %s is required).\n" |
8351 | msgstr "libgcrypt har inte den förväntande versionen (version %s krävs).\n" | 8355 | msgstr "libgcrypt har inte den förväntande versionen (version %s krävs).\n" |
8352 | 8356 | ||
8353 | #: src/util/crypto_rsa.c:901 | 8357 | #: src/util/crypto_rsa.c:907 |
8354 | #, fuzzy, c-format | 8358 | #, fuzzy, c-format |
8355 | msgid "RSA signing failed at %s:%d: %s\n" | 8359 | msgid "RSA signing failed at %s:%d: %s\n" |
8356 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" | 8360 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" |
8357 | 8361 | ||
8358 | #: src/util/crypto_rsa.c:1201 | 8362 | #: src/util/crypto_rsa.c:1207 |
8359 | #, fuzzy, c-format | 8363 | #, fuzzy, c-format |
8360 | msgid "RSA signature verification failed at %s:%d: %s\n" | 8364 | msgid "RSA signature verification failed at %s:%d: %s\n" |
8361 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" | 8365 | msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n" |
@@ -9031,12 +9035,12 @@ msgstr "Fel format \"%s\" för nätmask: %s\n" | |||
9031 | msgid "Wrong format `%s' for network\n" | 9035 | msgid "Wrong format `%s' for network\n" |
9032 | msgstr "Fel format \"%s\" för nätverk: %s\n" | 9036 | msgstr "Fel format \"%s\" för nätverk: %s\n" |
9033 | 9037 | ||
9034 | #: src/util/time.c:870 src/util/time.c:898 | 9038 | #: src/util/time.c:900 src/util/time.c:928 |
9035 | #, c-format | 9039 | #, c-format |
9036 | msgid "Failed to map `%s', cannot assure monotonic time!\n" | 9040 | msgid "Failed to map `%s', cannot assure monotonic time!\n" |
9037 | msgstr "" | 9041 | msgstr "" |
9038 | 9042 | ||
9039 | #: src/util/time.c:906 | 9043 | #: src/util/time.c:936 |
9040 | #, c-format | 9044 | #, c-format |
9041 | msgid "" | 9045 | msgid "" |
9042 | "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n" | 9046 | "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n" |
@@ -9226,6 +9230,10 @@ msgstr "" | |||
9226 | msgid "Failed to connect to the namestore!\n" | 9230 | msgid "Failed to connect to the namestore!\n" |
9227 | msgstr "Misslyckades att ansluta till gnunetd.\n" | 9231 | msgstr "Misslyckades att ansluta till gnunetd.\n" |
9228 | 9232 | ||
9233 | #, fuzzy, c-format | ||
9234 | #~ msgid "Block not of type %u\n" | ||
9235 | #~ msgstr "Ingen transport av typ %d är känd.\n" | ||
9236 | |||
9229 | #, fuzzy | 9237 | #, fuzzy |
9230 | #~ msgid "# items stored" | 9238 | #~ msgid "# items stored" |
9231 | #~ msgstr "# byte krypterade" | 9239 | #~ msgstr "# byte krypterade" |
@@ -8,7 +8,7 @@ msgid "" | |||
8 | msgstr "" | 8 | msgstr "" |
9 | "Project-Id-Version: gnunet 0.8.0a\n" | 9 | "Project-Id-Version: gnunet 0.8.0a\n" |
10 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" | 10 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" |
11 | "POT-Creation-Date: 2022-03-04 22:23+0100\n" | 11 | "POT-Creation-Date: 2022-04-01 08:42+0200\n" |
12 | "PO-Revision-Date: 2008-09-10 22:05+0930\n" | 12 | "PO-Revision-Date: 2008-09-10 22:05+0930\n" |
13 | "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n" | 13 | "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n" |
14 | "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n" | 14 | "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n" |
@@ -19,7 +19,7 @@ msgstr "" | |||
19 | "Plural-Forms: nplurals=1; plural=0;\n" | 19 | "Plural-Forms: nplurals=1; plural=0;\n" |
20 | "X-Generator: LocFactoryEditor 1.7b3\n" | 20 | "X-Generator: LocFactoryEditor 1.7b3\n" |
21 | 21 | ||
22 | #: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1254 | 22 | #: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1245 |
23 | #, c-format | 23 | #, c-format |
24 | msgid "Ego `%s' not known to identity service\n" | 24 | msgid "Ego `%s' not known to identity service\n" |
25 | msgstr "" | 25 | msgstr "" |
@@ -2156,21 +2156,6 @@ msgstr "" | |||
2156 | msgid "Measure quality and performance of the DHT service." | 2156 | msgid "Measure quality and performance of the DHT service." |
2157 | msgstr "Không thể truy cập đến dịch vụ" | 2157 | msgstr "Không thể truy cập đến dịch vụ" |
2158 | 2158 | ||
2159 | #: src/dht/plugin_block_dht.c:404 | ||
2160 | #, fuzzy, c-format | ||
2161 | msgid "Block not of type %u\n" | ||
2162 | msgstr "Không biết truyền tải nào kiểu %d.\n" | ||
2163 | |||
2164 | #: src/dht/plugin_block_dht.c:413 | ||
2165 | #, c-format | ||
2166 | msgid "Size mismatch for block with type %u\n" | ||
2167 | msgstr "" | ||
2168 | |||
2169 | #: src/dht/plugin_block_dht.c:424 | ||
2170 | #, c-format | ||
2171 | msgid "Block of type %u is malformed\n" | ||
2172 | msgstr "" | ||
2173 | |||
2174 | #: src/dns/gnunet-dns-monitor.c:371 src/dns/gnunet-dns-monitor.c:376 | 2159 | #: src/dns/gnunet-dns-monitor.c:371 src/dns/gnunet-dns-monitor.c:376 |
2175 | msgid "only monitor DNS queries" | 2160 | msgid "only monitor DNS queries" |
2176 | msgstr "" | 2161 | msgstr "" |
@@ -2901,20 +2886,20 @@ msgstr "" | |||
2901 | msgid "LOC URI malformed (signature failed validation)" | 2886 | msgid "LOC URI malformed (signature failed validation)" |
2902 | msgstr "" | 2887 | msgstr "" |
2903 | 2888 | ||
2904 | #: src/fs/fs_uri.c:652 | 2889 | #: src/fs/fs_uri.c:653 |
2905 | #, fuzzy | 2890 | #, fuzzy |
2906 | msgid "invalid argument" | 2891 | msgid "invalid argument" |
2907 | msgstr "Đối số không hợp lệ cho « %s ».\n" | 2892 | msgstr "Đối số không hợp lệ cho « %s ».\n" |
2908 | 2893 | ||
2909 | #: src/fs/fs_uri.c:671 | 2894 | #: src/fs/fs_uri.c:673 |
2910 | msgid "Unrecognized URI type" | 2895 | msgid "Unrecognized URI type" |
2911 | msgstr "" | 2896 | msgstr "" |
2912 | 2897 | ||
2913 | #: src/fs/fs_uri.c:1075 src/fs/fs_uri.c:1102 | 2898 | #: src/fs/fs_uri.c:1077 src/fs/fs_uri.c:1104 |
2914 | msgid "No keywords specified!\n" | 2899 | msgid "No keywords specified!\n" |
2915 | msgstr "Chưa ghi rõ từ khoá.\n" | 2900 | msgstr "Chưa ghi rõ từ khoá.\n" |
2916 | 2901 | ||
2917 | #: src/fs/fs_uri.c:1108 | 2902 | #: src/fs/fs_uri.c:1110 |
2918 | msgid "Number of double-quotes not balanced!\n" | 2903 | msgid "Number of double-quotes not balanced!\n" |
2919 | msgstr "Có dấu nháy kép thừa hay thiếu.\n" | 2904 | msgstr "Có dấu nháy kép thừa hay thiếu.\n" |
2920 | 2905 | ||
@@ -3671,100 +3656,100 @@ msgstr "# các yêu cầu get (lấy) dht được nhận" | |||
3671 | msgid "# query plan entries" | 3656 | msgid "# query plan entries" |
3672 | msgstr "" | 3657 | msgstr "" |
3673 | 3658 | ||
3674 | #: src/fs/gnunet-service-fs_pr.c:329 | 3659 | #: src/fs/gnunet-service-fs_pr.c:330 |
3675 | #, fuzzy | 3660 | #, fuzzy |
3676 | msgid "# Pending requests created" | 3661 | msgid "# Pending requests created" |
3677 | msgstr "# các yêu cầu get (lấy) dht được nhận" | 3662 | msgstr "# các yêu cầu get (lấy) dht được nhận" |
3678 | 3663 | ||
3679 | #: src/fs/gnunet-service-fs_pr.c:421 src/fs/gnunet-service-fs_pr.c:658 | 3664 | #: src/fs/gnunet-service-fs_pr.c:422 src/fs/gnunet-service-fs_pr.c:662 |
3680 | #, fuzzy | 3665 | #, fuzzy |
3681 | msgid "# Pending requests active" | 3666 | msgid "# Pending requests active" |
3682 | msgstr "# các yêu cầu get (lấy) dht được nhận" | 3667 | msgstr "# các yêu cầu get (lấy) dht được nhận" |
3683 | 3668 | ||
3684 | #: src/fs/gnunet-service-fs_pr.c:838 | 3669 | #: src/fs/gnunet-service-fs_pr.c:837 |
3685 | #, fuzzy | 3670 | #, fuzzy |
3686 | msgid "# replies received and matched" | 3671 | msgid "# replies received and matched" |
3687 | msgstr "# các byte kiểu %d được nhận" | 3672 | msgstr "# các byte kiểu %d được nhận" |
3688 | 3673 | ||
3689 | #: src/fs/gnunet-service-fs_pr.c:916 | 3674 | #: src/fs/gnunet-service-fs_pr.c:911 |
3690 | #, fuzzy | 3675 | #, fuzzy |
3691 | msgid "# results found locally" | 3676 | msgid "# results found locally" |
3692 | msgstr "# nội dung lỗ hổng được tìm cục bộ" | 3677 | msgstr "# nội dung lỗ hổng được tìm cục bộ" |
3693 | 3678 | ||
3694 | #: src/fs/gnunet-service-fs_pr.c:1050 | 3679 | #: src/fs/gnunet-service-fs_pr.c:1045 |
3695 | msgid "# Datastore `PUT' failures" | 3680 | msgid "# Datastore `PUT' failures" |
3696 | msgstr "" | 3681 | msgstr "" |
3697 | 3682 | ||
3698 | #: src/fs/gnunet-service-fs_pr.c:1079 | 3683 | #: src/fs/gnunet-service-fs_pr.c:1074 |
3699 | #, fuzzy | 3684 | #, fuzzy |
3700 | msgid "# storage requests dropped due to high load" | 3685 | msgid "# storage requests dropped due to high load" |
3701 | msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" | 3686 | msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải" |
3702 | 3687 | ||
3703 | #: src/fs/gnunet-service-fs_pr.c:1118 | 3688 | #: src/fs/gnunet-service-fs_pr.c:1113 |
3704 | #, fuzzy | 3689 | #, fuzzy |
3705 | msgid "# Replies received from DHT" | 3690 | msgid "# Replies received from DHT" |
3706 | msgstr "# các byte đã nhận qua HTTP" | 3691 | msgstr "# các byte đã nhận qua HTTP" |
3707 | 3692 | ||
3708 | #: src/fs/gnunet-service-fs_pr.c:1259 | 3693 | #: src/fs/gnunet-service-fs_pr.c:1268 |
3709 | #, fuzzy | 3694 | #, fuzzy |
3710 | msgid "# Replies received from CADET" | 3695 | msgid "# Replies received from CADET" |
3711 | msgstr "# các byte đã nhận qua HTTP" | 3696 | msgstr "# các byte đã nhận qua HTTP" |
3712 | 3697 | ||
3713 | #: src/fs/gnunet-service-fs_pr.c:1313 | 3698 | #: src/fs/gnunet-service-fs_pr.c:1323 |
3714 | #, c-format | 3699 | #, c-format |
3715 | msgid "Datastore lookup already took %s!\n" | 3700 | msgid "Datastore lookup already took %s!\n" |
3716 | msgstr "" | 3701 | msgstr "" |
3717 | 3702 | ||
3718 | #: src/fs/gnunet-service-fs_pr.c:1334 | 3703 | #: src/fs/gnunet-service-fs_pr.c:1344 |
3719 | #, c-format | 3704 | #, c-format |
3720 | msgid "On-demand lookup already took %s!\n" | 3705 | msgid "On-demand lookup already took %s!\n" |
3721 | msgstr "" | 3706 | msgstr "" |
3722 | 3707 | ||
3723 | #: src/fs/gnunet-service-fs_pr.c:1401 | 3708 | #: src/fs/gnunet-service-fs_pr.c:1411 |
3724 | msgid "# requested DBLOCK or IBLOCK not found" | 3709 | msgid "# requested DBLOCK or IBLOCK not found" |
3725 | msgstr "" | 3710 | msgstr "" |
3726 | 3711 | ||
3727 | #: src/fs/gnunet-service-fs_pr.c:1463 | 3712 | #: src/fs/gnunet-service-fs_pr.c:1473 |
3728 | msgid "# Datastore lookups concluded (error queueing)" | 3713 | msgid "# Datastore lookups concluded (error queueing)" |
3729 | msgstr "" | 3714 | msgstr "" |
3730 | 3715 | ||
3731 | #: src/fs/gnunet-service-fs_pr.c:1518 | 3716 | #: src/fs/gnunet-service-fs_pr.c:1528 |
3732 | msgid "# Datastore lookups concluded (no results)" | 3717 | msgid "# Datastore lookups concluded (no results)" |
3733 | msgstr "" | 3718 | msgstr "" |
3734 | 3719 | ||
3735 | #: src/fs/gnunet-service-fs_pr.c:1533 | 3720 | #: src/fs/gnunet-service-fs_pr.c:1543 |
3736 | msgid "# Datastore lookups concluded (seen all)" | 3721 | msgid "# Datastore lookups concluded (seen all)" |
3737 | msgstr "" | 3722 | msgstr "" |
3738 | 3723 | ||
3739 | #: src/fs/gnunet-service-fs_pr.c:1556 | 3724 | #: src/fs/gnunet-service-fs_pr.c:1566 |
3740 | msgid "# Datastore lookups aborted (more than MAX_RESULTS)" | 3725 | msgid "# Datastore lookups aborted (more than MAX_RESULTS)" |
3741 | msgstr "" | 3726 | msgstr "" |
3742 | 3727 | ||
3743 | #: src/fs/gnunet-service-fs_pr.c:1573 | 3728 | #: src/fs/gnunet-service-fs_pr.c:1583 |
3744 | msgid "# on-demand blocks matched requests" | 3729 | msgid "# on-demand blocks matched requests" |
3745 | msgstr "" | 3730 | msgstr "" |
3746 | 3731 | ||
3747 | #: src/fs/gnunet-service-fs_pr.c:1594 | 3732 | #: src/fs/gnunet-service-fs_pr.c:1604 |
3748 | msgid "# on-demand lookups performed successfully" | 3733 | msgid "# on-demand lookups performed successfully" |
3749 | msgstr "" | 3734 | msgstr "" |
3750 | 3735 | ||
3751 | #: src/fs/gnunet-service-fs_pr.c:1600 | 3736 | #: src/fs/gnunet-service-fs_pr.c:1610 |
3752 | msgid "# on-demand lookups failed" | 3737 | msgid "# on-demand lookups failed" |
3753 | msgstr "" | 3738 | msgstr "" |
3754 | 3739 | ||
3755 | #: src/fs/gnunet-service-fs_pr.c:1641 | 3740 | #: src/fs/gnunet-service-fs_pr.c:1656 |
3756 | msgid "# Datastore lookups concluded (found last result)" | 3741 | msgid "# Datastore lookups concluded (found last result)" |
3757 | msgstr "" | 3742 | msgstr "" |
3758 | 3743 | ||
3759 | #: src/fs/gnunet-service-fs_pr.c:1654 | 3744 | #: src/fs/gnunet-service-fs_pr.c:1669 |
3760 | msgid "# Datastore lookups concluded (load too high)" | 3745 | msgid "# Datastore lookups concluded (load too high)" |
3761 | msgstr "" | 3746 | msgstr "" |
3762 | 3747 | ||
3763 | #: src/fs/gnunet-service-fs_pr.c:1705 | 3748 | #: src/fs/gnunet-service-fs_pr.c:1720 |
3764 | msgid "# Datastore lookups initiated" | 3749 | msgid "# Datastore lookups initiated" |
3765 | msgstr "" | 3750 | msgstr "" |
3766 | 3751 | ||
3767 | #: src/fs/gnunet-service-fs_pr.c:1755 | 3752 | #: src/fs/gnunet-service-fs_pr.c:1784 |
3768 | #, fuzzy | 3753 | #, fuzzy |
3769 | msgid "# GAP PUT messages received" | 3754 | msgid "# GAP PUT messages received" |
3770 | msgstr "# các thông báo PONG đã mật mã được nhận" | 3755 | msgstr "# các thông báo PONG đã mật mã được nhận" |
@@ -4083,65 +4068,65 @@ msgstr "Gặp lỗi khi chuyển đổi các đối số sang URI.\n" | |||
4083 | msgid "Failed to connect to the DNS service!\n" | 4068 | msgid "Failed to connect to the DNS service!\n" |
4084 | msgstr "Lỗi kết nối đến gnunetd.\n" | 4069 | msgstr "Lỗi kết nối đến gnunetd.\n" |
4085 | 4070 | ||
4086 | #: src/gns/gnunet-service-gns_resolver.c:659 | 4071 | #: src/gns/gnunet-service-gns_resolver.c:672 |
4087 | #, c-format | 4072 | #, c-format |
4088 | msgid "Protocol `%s' unknown, skipping labels.\n" | 4073 | msgid "Protocol `%s' unknown, skipping labels.\n" |
4089 | msgstr "" | 4074 | msgstr "" |
4090 | 4075 | ||
4091 | #: src/gns/gnunet-service-gns_resolver.c:671 | 4076 | #: src/gns/gnunet-service-gns_resolver.c:684 |
4092 | #, c-format | 4077 | #, c-format |
4093 | msgid "Service `%s' unknown for protocol `%s', trying as number.\n" | 4078 | msgid "Service `%s' unknown for protocol `%s', trying as number.\n" |
4094 | msgstr "" | 4079 | msgstr "" |
4095 | 4080 | ||
4096 | #: src/gns/gnunet-service-gns_resolver.c:677 | 4081 | #: src/gns/gnunet-service-gns_resolver.c:690 |
4097 | #, c-format | 4082 | #, c-format |
4098 | msgid "Service `%s' not a port, skipping service labels.\n" | 4083 | msgid "Service `%s' not a port, skipping service labels.\n" |
4099 | msgstr "" | 4084 | msgstr "" |
4100 | 4085 | ||
4101 | #: src/gns/gnunet-service-gns_resolver.c:891 | 4086 | #: src/gns/gnunet-service-gns_resolver.c:904 |
4102 | #, fuzzy | 4087 | #, fuzzy |
4103 | msgid "Failed to parse DNS response\n" | 4088 | msgid "Failed to parse DNS response\n" |
4104 | msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" | 4089 | msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" |
4105 | 4090 | ||
4106 | #: src/gns/gnunet-service-gns_resolver.c:1082 | 4091 | #: src/gns/gnunet-service-gns_resolver.c:1095 |
4107 | #, c-format | 4092 | #, c-format |
4108 | msgid "Skipping record of unsupported type %d\n" | 4093 | msgid "Skipping record of unsupported type %d\n" |
4109 | msgstr "" | 4094 | msgstr "" |
4110 | 4095 | ||
4111 | #: src/gns/gnunet-service-gns_resolver.c:1859 | 4096 | #: src/gns/gnunet-service-gns_resolver.c:1872 |
4112 | #, c-format | 4097 | #, c-format |
4113 | msgid "Name `%s' cannot be converted to IDNA." | 4098 | msgid "Name `%s' cannot be converted to IDNA." |
4114 | msgstr "" | 4099 | msgstr "" |
4115 | 4100 | ||
4116 | #: src/gns/gnunet-service-gns_resolver.c:1874 | 4101 | #: src/gns/gnunet-service-gns_resolver.c:1887 |
4117 | #, c-format | 4102 | #, c-format |
4118 | msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" | 4103 | msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" |
4119 | msgstr "" | 4104 | msgstr "" |
4120 | 4105 | ||
4121 | #: src/gns/gnunet-service-gns_resolver.c:1914 | 4106 | #: src/gns/gnunet-service-gns_resolver.c:1927 |
4122 | #, fuzzy, c-format | 4107 | #, fuzzy, c-format |
4123 | msgid "GNS lookup failed (zero records found for `%s')\n" | 4108 | msgid "GNS lookup failed (zero records found for `%s')\n" |
4124 | msgstr "Vẫn còn không tìm thấy đồng đẳng trong « %s ».\n" | 4109 | msgstr "Vẫn còn không tìm thấy đồng đẳng trong « %s ».\n" |
4125 | 4110 | ||
4126 | #: src/gns/gnunet-service-gns_resolver.c:2312 | 4111 | #: src/gns/gnunet-service-gns_resolver.c:2329 |
4127 | msgid "Unable to process critical delegation record\n" | 4112 | msgid "Unable to process critical delegation record\n" |
4128 | msgstr "" | 4113 | msgstr "" |
4129 | 4114 | ||
4130 | #: src/gns/gnunet-service-gns_resolver.c:2317 | 4115 | #: src/gns/gnunet-service-gns_resolver.c:2334 |
4131 | msgid "GNS lookup recursion failed (no delegation record found)\n" | 4116 | msgid "GNS lookup recursion failed (no delegation record found)\n" |
4132 | msgstr "" | 4117 | msgstr "" |
4133 | 4118 | ||
4134 | #: src/gns/gnunet-service-gns_resolver.c:2340 | 4119 | #: src/gns/gnunet-service-gns_resolver.c:2357 |
4135 | #, fuzzy, c-format | 4120 | #, fuzzy, c-format |
4136 | msgid "Failed to cache GNS resolution: %s\n" | 4121 | msgid "Failed to cache GNS resolution: %s\n" |
4137 | msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" | 4122 | msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n" |
4138 | 4123 | ||
4139 | #: src/gns/gnunet-service-gns_resolver.c:2505 | 4124 | #: src/gns/gnunet-service-gns_resolver.c:2522 |
4140 | #, c-format | 4125 | #, c-format |
4141 | msgid "GNS namecache returned empty result for `%s'\n" | 4126 | msgid "GNS namecache returned empty result for `%s'\n" |
4142 | msgstr "" | 4127 | msgstr "" |
4143 | 4128 | ||
4144 | #: src/gns/gnunet-service-gns_resolver.c:2652 | 4129 | #: src/gns/gnunet-service-gns_resolver.c:2669 |
4145 | #, c-format | 4130 | #, c-format |
4146 | msgid "Zone %s was revoked, resolution fails\n" | 4131 | msgid "Zone %s was revoked, resolution fails\n" |
4147 | msgstr "" | 4132 | msgstr "" |
@@ -4184,31 +4169,39 @@ msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | |||
4184 | msgid "Gns REST API initialized\n" | 4169 | msgid "Gns REST API initialized\n" |
4185 | msgstr "Lỗi sơ khởi lõi.\n" | 4170 | msgstr "Lỗi sơ khởi lõi.\n" |
4186 | 4171 | ||
4187 | #: src/gnsrecord/gnsrecord_misc.c:448 | 4172 | #: src/gnsrecord/gnsrecord_misc.c:52 |
4173 | msgid "Label is NULL which is not allowed\n" | ||
4174 | msgstr "" | ||
4175 | |||
4176 | #: src/gnsrecord/gnsrecord_misc.c:57 | ||
4177 | msgid "Label contains `.' which is not allowed\n" | ||
4178 | msgstr "" | ||
4179 | |||
4180 | #: src/gnsrecord/gnsrecord_misc.c:464 | ||
4188 | msgid "Zone delegation record not allowed in apex." | 4181 | msgid "Zone delegation record not allowed in apex." |
4189 | msgstr "" | 4182 | msgstr "" |
4190 | 4183 | ||
4191 | #: src/gnsrecord/gnsrecord_misc.c:456 | 4184 | #: src/gnsrecord/gnsrecord_misc.c:472 |
4192 | msgid "Zone delegation record set contains mutually exclusive records." | 4185 | msgid "Zone delegation record set contains mutually exclusive records." |
4193 | msgstr "" | 4186 | msgstr "" |
4194 | 4187 | ||
4195 | #: src/gnsrecord/gnsrecord_misc.c:466 | 4188 | #: src/gnsrecord/gnsrecord_misc.c:482 |
4196 | msgid "Multiple REDIRECT records." | 4189 | msgid "Multiple REDIRECT records." |
4197 | msgstr "" | 4190 | msgstr "" |
4198 | 4191 | ||
4199 | #: src/gnsrecord/gnsrecord_misc.c:475 src/gnsrecord/gnsrecord_misc.c:501 | 4192 | #: src/gnsrecord/gnsrecord_misc.c:491 src/gnsrecord/gnsrecord_misc.c:517 |
4200 | msgid "Redirection record set conains mutually exclusive records." | 4193 | msgid "Redirection record set conains mutually exclusive records." |
4201 | msgstr "" | 4194 | msgstr "" |
4202 | 4195 | ||
4203 | #: src/gnsrecord/gnsrecord_misc.c:482 | 4196 | #: src/gnsrecord/gnsrecord_misc.c:498 |
4204 | msgid "Redirection records not allowed in apex." | 4197 | msgid "Redirection records not allowed in apex." |
4205 | msgstr "" | 4198 | msgstr "" |
4206 | 4199 | ||
4207 | #: src/gnsrecord/gnsrecord_misc.c:493 | 4200 | #: src/gnsrecord/gnsrecord_misc.c:509 |
4208 | msgid "Redirection records not allowed in apex.." | 4201 | msgid "Redirection records not allowed in apex.." |
4209 | msgstr "" | 4202 | msgstr "" |
4210 | 4203 | ||
4211 | #: src/gnsrecord/gnsrecord_misc.c:515 | 4204 | #: src/gnsrecord/gnsrecord_misc.c:531 |
4212 | msgid "Mutually exclusive records." | 4205 | msgid "Mutually exclusive records." |
4213 | msgstr "" | 4206 | msgstr "" |
4214 | 4207 | ||
@@ -4792,12 +4785,18 @@ msgstr "Lỗi sơ khởi lõi.\n" | |||
4792 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" | 4785 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" |
4793 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | 4786 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" |
4794 | 4787 | ||
4795 | #: src/messenger/plugin_gnsrecord_messenger.c:118 | 4788 | #: src/messenger/plugin_gnsrecord_messenger.c:136 |
4796 | #: src/messenger/plugin_gnsrecord_messenger.c:133 | 4789 | #: src/messenger/plugin_gnsrecord_messenger.c:151 |
4797 | #, fuzzy, c-format | 4790 | #, fuzzy, c-format |
4798 | msgid "Unable to parse MESSENGER_ROOM_ENTRY record `%s'\n" | 4791 | msgid "Unable to parse MESSENGER_ROOM_ENTRY record `%s'\n" |
4799 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | 4792 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" |
4800 | 4793 | ||
4794 | #: src/messenger/plugin_gnsrecord_messenger.c:172 | ||
4795 | #: src/messenger/plugin_gnsrecord_messenger.c:187 | ||
4796 | #, fuzzy, c-format | ||
4797 | msgid "Unable to parse MESSENGER_ROOM_DETAILS record `%s'\n" | ||
4798 | msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n" | ||
4799 | |||
4801 | #: src/my/my.c:196 src/my/my.c:215 | 4800 | #: src/my/my.c:196 src/my/my.c:215 |
4802 | #, fuzzy, c-format | 4801 | #, fuzzy, c-format |
4803 | msgid "%s failed at %s:%d with error: %s\n" | 4802 | msgid "%s failed at %s:%d with error: %s\n" |
@@ -4838,7 +4837,7 @@ msgstr "Đối số không hợp lệ cho « %s ».\n" | |||
4838 | msgid "You must specify a name\n" | 4837 | msgid "You must specify a name\n" |
4839 | msgstr "Phải ghi rõ tên hiệu\n" | 4838 | msgstr "Phải ghi rõ tên hiệu\n" |
4840 | 4839 | ||
4841 | #: src/namecache/gnunet-namecache.c:214 src/namestore/gnunet-namestore.c:1591 | 4840 | #: src/namecache/gnunet-namecache.c:214 src/namestore/gnunet-namestore.c:1582 |
4842 | msgid "name of the record to add/delete/display" | 4841 | msgid "name of the record to add/delete/display" |
4843 | msgstr "" | 4842 | msgstr "" |
4844 | 4843 | ||
@@ -4847,7 +4846,7 @@ msgstr "" | |||
4847 | msgid "specifies the public key of the zone to look in" | 4846 | msgid "specifies the public key of the zone to look in" |
4848 | msgstr "xác định mức ưu tiên của nội dung" | 4847 | msgstr "xác định mức ưu tiên của nội dung" |
4849 | 4848 | ||
4850 | #: src/namecache/gnunet-namecache.c:233 src/namestore/gnunet-namestore.c:1652 | 4849 | #: src/namecache/gnunet-namecache.c:233 src/namestore/gnunet-namestore.c:1643 |
4851 | #, fuzzy | 4850 | #, fuzzy |
4852 | msgid "GNUnet zone manipulation tool" | 4851 | msgid "GNUnet zone manipulation tool" |
4853 | msgstr "Cấu hình GNUnet" | 4852 | msgstr "Cấu hình GNUnet" |
@@ -5097,12 +5096,7 @@ msgstr "Đối số không hợp lệ cho « %s ».\n" | |||
5097 | msgid "Invalid URI `%s'\n" | 5096 | msgid "Invalid URI `%s'\n" |
5098 | msgstr "Dữ liệu nhập không hợp lệ.\n" | 5097 | msgstr "Dữ liệu nhập không hợp lệ.\n" |
5099 | 5098 | ||
5100 | #: src/namestore/gnunet-namestore.c:1242 | 5099 | #: src/namestore/gnunet-namestore.c:1283 |
5101 | #, c-format | ||
5102 | msgid "Label `%s' contains `.' which is not allowed\n" | ||
5103 | msgstr "" | ||
5104 | |||
5105 | #: src/namestore/gnunet-namestore.c:1292 | ||
5106 | #, c-format | 5100 | #, c-format |
5107 | msgid "" | 5101 | msgid "" |
5108 | "No default identity configured for `namestore' subsystem\n" | 5102 | "No default identity configured for `namestore' subsystem\n" |
@@ -5110,102 +5104,102 @@ msgid "" | |||
5110 | "Run gnunet-identity -d to get a list of choices for $NAME\n" | 5104 | "Run gnunet-identity -d to get a list of choices for $NAME\n" |
5111 | msgstr "" | 5105 | msgstr "" |
5112 | 5106 | ||
5113 | #: src/namestore/gnunet-namestore.c:1357 | 5107 | #: src/namestore/gnunet-namestore.c:1348 |
5114 | #, c-format | 5108 | #, c-format |
5115 | msgid "Superfluous command line arguments (starting with `%s') ignored\n" | 5109 | msgid "Superfluous command line arguments (starting with `%s') ignored\n" |
5116 | msgstr "" | 5110 | msgstr "" |
5117 | 5111 | ||
5118 | #: src/namestore/gnunet-namestore.c:1386 | 5112 | #: src/namestore/gnunet-namestore.c:1377 |
5119 | #, fuzzy, c-format | 5113 | #, fuzzy, c-format |
5120 | msgid "Cannot connect to identity service\n" | 5114 | msgid "Cannot connect to identity service\n" |
5121 | msgstr "Không thể kết nối tới %s:%u: %s\n" | 5115 | msgstr "Không thể kết nối tới %s:%u: %s\n" |
5122 | 5116 | ||
5123 | #: src/namestore/gnunet-namestore.c:1433 | 5117 | #: src/namestore/gnunet-namestore.c:1424 |
5124 | msgid "Empty record line argument is not allowed.\n" | 5118 | msgid "Empty record line argument is not allowed.\n" |
5125 | msgstr "" | 5119 | msgstr "" |
5126 | 5120 | ||
5127 | #: src/namestore/gnunet-namestore.c:1445 | 5121 | #: src/namestore/gnunet-namestore.c:1436 |
5128 | #, c-format | 5122 | #, c-format |
5129 | msgid "Invalid expiration time `%s' (must be without unit)\n" | 5123 | msgid "Invalid expiration time `%s' (must be without unit)\n" |
5130 | msgstr "" | 5124 | msgstr "" |
5131 | 5125 | ||
5132 | #: src/namestore/gnunet-namestore.c:1457 src/namestore/gnunet-namestore.c:1473 | 5126 | #: src/namestore/gnunet-namestore.c:1448 src/namestore/gnunet-namestore.c:1464 |
5133 | #: src/namestore/gnunet-namestore.c:1490 | 5127 | #: src/namestore/gnunet-namestore.c:1481 |
5134 | #, fuzzy, c-format | 5128 | #, fuzzy, c-format |
5135 | msgid "Missing entries in record line `%s'.\n" | 5129 | msgid "Missing entries in record line `%s'.\n" |
5136 | msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n" | 5130 | msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n" |
5137 | 5131 | ||
5138 | #: src/namestore/gnunet-namestore.c:1465 | 5132 | #: src/namestore/gnunet-namestore.c:1456 |
5139 | #, fuzzy, c-format | 5133 | #, fuzzy, c-format |
5140 | msgid "Unknown record type `%s'\n" | 5134 | msgid "Unknown record type `%s'\n" |
5141 | msgstr "Không rõ câu lệnh « %s ».\n" | 5135 | msgstr "Không rõ câu lệnh « %s ».\n" |
5142 | 5136 | ||
5143 | #: src/namestore/gnunet-namestore.c:1503 | 5137 | #: src/namestore/gnunet-namestore.c:1494 |
5144 | #, fuzzy, c-format | 5138 | #, fuzzy, c-format |
5145 | msgid "Invalid record data for type %s: `%s'.\n" | 5139 | msgid "Invalid record data for type %s: `%s'.\n" |
5146 | msgstr "Địa chỉ IP định dạng sai: %s\n" | 5140 | msgstr "Địa chỉ IP định dạng sai: %s\n" |
5147 | 5141 | ||
5148 | #: src/namestore/gnunet-namestore.c:1560 | 5142 | #: src/namestore/gnunet-namestore.c:1551 |
5149 | msgid "add record" | 5143 | msgid "add record" |
5150 | msgstr "" | 5144 | msgstr "" |
5151 | 5145 | ||
5152 | #: src/namestore/gnunet-namestore.c:1563 | 5146 | #: src/namestore/gnunet-namestore.c:1554 |
5153 | msgid "delete record" | 5147 | msgid "delete record" |
5154 | msgstr "" | 5148 | msgstr "" |
5155 | 5149 | ||
5156 | #: src/namestore/gnunet-namestore.c:1567 | 5150 | #: src/namestore/gnunet-namestore.c:1558 |
5157 | msgid "display records" | 5151 | msgid "display records" |
5158 | msgstr "" | 5152 | msgstr "" |
5159 | 5153 | ||
5160 | #: src/namestore/gnunet-namestore.c:1574 | 5154 | #: src/namestore/gnunet-namestore.c:1565 |
5161 | msgid "" | 5155 | msgid "" |
5162 | "expiration time for record to use (for adding only), \"never\" is possible" | 5156 | "expiration time for record to use (for adding only), \"never\" is possible" |
5163 | msgstr "" | 5157 | msgstr "" |
5164 | 5158 | ||
5165 | #: src/namestore/gnunet-namestore.c:1580 | 5159 | #: src/namestore/gnunet-namestore.c:1571 |
5166 | #, fuzzy | 5160 | #, fuzzy |
5167 | msgid "set the desired nick name for the zone" | 5161 | msgid "set the desired nick name for the zone" |
5168 | msgstr "In ra thông tin về các đồng đẳng GNUnet." | 5162 | msgstr "In ra thông tin về các đồng đẳng GNUnet." |
5169 | 5163 | ||
5170 | #: src/namestore/gnunet-namestore.c:1585 | 5164 | #: src/namestore/gnunet-namestore.c:1576 |
5171 | #, fuzzy | 5165 | #, fuzzy |
5172 | msgid "monitor changes in the namestore" | 5166 | msgid "monitor changes in the namestore" |
5173 | msgstr "Không kết nối được đến trình nền gnunetd." | 5167 | msgstr "Không kết nối được đến trình nền gnunetd." |
5174 | 5168 | ||
5175 | #: src/namestore/gnunet-namestore.c:1597 | 5169 | #: src/namestore/gnunet-namestore.c:1588 |
5176 | #, fuzzy | 5170 | #, fuzzy |
5177 | msgid "determine our name for the given PKEY" | 5171 | msgid "determine our name for the given PKEY" |
5178 | msgstr "In ra thông tin về các đồng đẳng GNUnet." | 5172 | msgstr "In ra thông tin về các đồng đẳng GNUnet." |
5179 | 5173 | ||
5180 | #: src/namestore/gnunet-namestore.c:1604 | 5174 | #: src/namestore/gnunet-namestore.c:1595 |
5181 | msgid "" | 5175 | msgid "" |
5182 | "set record set to values given by (possibly multiple) RECORDLINES; can be " | 5176 | "set record set to values given by (possibly multiple) RECORDLINES; can be " |
5183 | "specified multiple times" | 5177 | "specified multiple times" |
5184 | msgstr "" | 5178 | msgstr "" |
5185 | 5179 | ||
5186 | #: src/namestore/gnunet-namestore.c:1610 | 5180 | #: src/namestore/gnunet-namestore.c:1601 |
5187 | msgid "type of the record to add/delete/display" | 5181 | msgid "type of the record to add/delete/display" |
5188 | msgstr "" | 5182 | msgstr "" |
5189 | 5183 | ||
5190 | #: src/namestore/gnunet-namestore.c:1615 | 5184 | #: src/namestore/gnunet-namestore.c:1606 |
5191 | msgid "URI to import into our zone" | 5185 | msgid "URI to import into our zone" |
5192 | msgstr "" | 5186 | msgstr "" |
5193 | 5187 | ||
5194 | #: src/namestore/gnunet-namestore.c:1621 | 5188 | #: src/namestore/gnunet-namestore.c:1612 |
5195 | msgid "value of the record to add/delete" | 5189 | msgid "value of the record to add/delete" |
5196 | msgstr "" | 5190 | msgstr "" |
5197 | 5191 | ||
5198 | #: src/namestore/gnunet-namestore.c:1625 | 5192 | #: src/namestore/gnunet-namestore.c:1616 |
5199 | msgid "create or list public record" | 5193 | msgid "create or list public record" |
5200 | msgstr "" | 5194 | msgstr "" |
5201 | 5195 | ||
5202 | #: src/namestore/gnunet-namestore.c:1631 | 5196 | #: src/namestore/gnunet-namestore.c:1622 |
5203 | msgid "" | 5197 | msgid "" |
5204 | "create shadow record (only valid if all other records of the same type have " | 5198 | "create shadow record (only valid if all other records of the same type have " |
5205 | "expired" | 5199 | "expired" |
5206 | msgstr "" | 5200 | msgstr "" |
5207 | 5201 | ||
5208 | #: src/namestore/gnunet-namestore.c:1637 | 5202 | #: src/namestore/gnunet-namestore.c:1628 |
5209 | msgid "name of the ego controlling the zone" | 5203 | msgid "name of the ego controlling the zone" |
5210 | msgstr "" | 5204 | msgstr "" |
5211 | 5205 | ||
@@ -5214,7 +5208,17 @@ msgstr "" | |||
5214 | msgid "Failed to replicate block in namecache: %s\n" | 5208 | msgid "Failed to replicate block in namecache: %s\n" |
5215 | msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n" | 5209 | msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n" |
5216 | 5210 | ||
5217 | #: src/namestore/gnunet-service-namestore.c:1668 | 5211 | #: src/namestore/gnunet-service-namestore.c:1559 |
5212 | #, fuzzy | ||
5213 | msgid "Error normalizing name." | ||
5214 | msgstr "Hoàn thành tạo khoá.\n" | ||
5215 | |||
5216 | #: src/namestore/gnunet-service-namestore.c:1582 | ||
5217 | #, fuzzy | ||
5218 | msgid "Error deserializing records." | ||
5219 | msgstr "=\tLỗi đọc thư mục.\n" | ||
5220 | |||
5221 | #: src/namestore/gnunet-service-namestore.c:1691 | ||
5218 | #, fuzzy | 5222 | #, fuzzy |
5219 | msgid "Store failed" | 5223 | msgid "Store failed" |
5220 | msgstr "Kho dữ liệu đầy.\n" | 5224 | msgstr "Kho dữ liệu đầy.\n" |
@@ -6990,8 +6994,8 @@ msgid "GNUnet topology control" | |||
6990 | msgstr "" | 6994 | msgstr "" |
6991 | 6995 | ||
6992 | #: src/transport/gnunet-communicator-tcp.c:3338 | 6996 | #: src/transport/gnunet-communicator-tcp.c:3338 |
6993 | #: src/transport/gnunet-communicator-udp.c:3856 | 6997 | #: src/transport/gnunet-communicator-udp.c:3867 |
6994 | #: src/transport/gnunet-service-tng.c:10623 | 6998 | #: src/transport/gnunet-service-tng.c:10926 |
6995 | #: src/transport/gnunet-service-transport.c:2627 | 6999 | #: src/transport/gnunet-service-transport.c:2627 |
6996 | #, fuzzy | 7000 | #, fuzzy |
6997 | msgid "Transport service is lacking key configuration settings. Exiting.\n" | 7001 | msgid "Transport service is lacking key configuration settings. Exiting.\n" |
@@ -7001,7 +7005,7 @@ msgstr "Lưu cấu hình ngay bây giờ không?" | |||
7001 | msgid "GNUnet TCP communicator" | 7005 | msgid "GNUnet TCP communicator" |
7002 | msgstr "" | 7006 | msgstr "" |
7003 | 7007 | ||
7004 | #: src/transport/gnunet-communicator-udp.c:3931 | 7008 | #: src/transport/gnunet-communicator-udp.c:3942 |
7005 | msgid "GNUnet UDP communicator" | 7009 | msgid "GNUnet UDP communicator" |
7006 | msgstr "" | 7010 | msgstr "" |
7007 | 7011 | ||
@@ -8408,12 +8412,12 @@ msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n" | |||
8408 | msgid "libgcrypt has not the expected version (version %s is required).\n" | 8412 | msgid "libgcrypt has not the expected version (version %s is required).\n" |
8409 | msgstr "libgcrypt không có phiên bản mong đợi (yêu cầu phiên bản %s).\n" | 8413 | msgstr "libgcrypt không có phiên bản mong đợi (yêu cầu phiên bản %s).\n" |
8410 | 8414 | ||
8411 | #: src/util/crypto_rsa.c:901 | 8415 | #: src/util/crypto_rsa.c:907 |
8412 | #, fuzzy, c-format | 8416 | #, fuzzy, c-format |
8413 | msgid "RSA signing failed at %s:%d: %s\n" | 8417 | msgid "RSA signing failed at %s:%d: %s\n" |
8414 | msgstr "%s bị lỗi tại %s:%d: « %s »\n" | 8418 | msgstr "%s bị lỗi tại %s:%d: « %s »\n" |
8415 | 8419 | ||
8416 | #: src/util/crypto_rsa.c:1201 | 8420 | #: src/util/crypto_rsa.c:1207 |
8417 | #, c-format | 8421 | #, c-format |
8418 | msgid "RSA signature verification failed at %s:%d: %s\n" | 8422 | msgid "RSA signature verification failed at %s:%d: %s\n" |
8419 | msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n" | 8423 | msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n" |
@@ -9089,12 +9093,12 @@ msgstr "Mặt nạ mạng có định dạng sai « %s »: %s\n" | |||
9089 | msgid "Wrong format `%s' for network\n" | 9093 | msgid "Wrong format `%s' for network\n" |
9090 | msgstr "Mạng có định dạng sai « %s »: %s\n" | 9094 | msgstr "Mạng có định dạng sai « %s »: %s\n" |
9091 | 9095 | ||
9092 | #: src/util/time.c:870 src/util/time.c:898 | 9096 | #: src/util/time.c:900 src/util/time.c:928 |
9093 | #, c-format | 9097 | #, c-format |
9094 | msgid "Failed to map `%s', cannot assure monotonic time!\n" | 9098 | msgid "Failed to map `%s', cannot assure monotonic time!\n" |
9095 | msgstr "" | 9099 | msgstr "" |
9096 | 9100 | ||
9097 | #: src/util/time.c:906 | 9101 | #: src/util/time.c:936 |
9098 | #, c-format | 9102 | #, c-format |
9099 | msgid "" | 9103 | msgid "" |
9100 | "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n" | 9104 | "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n" |
@@ -9284,6 +9288,10 @@ msgstr "" | |||
9284 | msgid "Failed to connect to the namestore!\n" | 9288 | msgid "Failed to connect to the namestore!\n" |
9285 | msgstr "Không kết nối được đến trình nền gnunetd." | 9289 | msgstr "Không kết nối được đến trình nền gnunetd." |
9286 | 9290 | ||
9291 | #, fuzzy, c-format | ||
9292 | #~ msgid "Block not of type %u\n" | ||
9293 | #~ msgstr "Không biết truyền tải nào kiểu %d.\n" | ||
9294 | |||
9287 | #, fuzzy | 9295 | #, fuzzy |
9288 | #~ msgid "# items stored" | 9296 | #~ msgid "# items stored" |
9289 | #~ msgstr "# các byte trong kho dữ liệu" | 9297 | #~ msgstr "# các byte trong kho dữ liệu" |
diff --git a/po/zh_CN.po b/po/zh_CN.po index dedd6914a..b04d0adf9 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po | |||
@@ -7,7 +7,7 @@ msgid "" | |||
7 | msgstr "" | 7 | msgstr "" |
8 | "Project-Id-Version: gnunet-0.8.1\n" | 8 | "Project-Id-Version: gnunet-0.8.1\n" |
9 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" | 9 | "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n" |
10 | "POT-Creation-Date: 2022-03-04 22:23+0100\n" | 10 | "POT-Creation-Date: 2022-04-01 08:42+0200\n" |
11 | "PO-Revision-Date: 2011-07-09 12:12+0800\n" | 11 | "PO-Revision-Date: 2011-07-09 12:12+0800\n" |
12 | "Last-Translator: Wylmer Wang <wantinghard@gmail.com>\n" | 12 | "Last-Translator: Wylmer Wang <wantinghard@gmail.com>\n" |
13 | "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" | 13 | "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" |
@@ -16,7 +16,7 @@ msgstr "" | |||
16 | "Content-Type: text/plain; charset=UTF-8\n" | 16 | "Content-Type: text/plain; charset=UTF-8\n" |
17 | "Content-Transfer-Encoding: 8bit\n" | 17 | "Content-Transfer-Encoding: 8bit\n" |
18 | 18 | ||
19 | #: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1254 | 19 | #: src/abd/gnunet-abd.c:392 src/namestore/gnunet-namestore.c:1245 |
20 | #, c-format | 20 | #, c-format |
21 | msgid "Ego `%s' not known to identity service\n" | 21 | msgid "Ego `%s' not known to identity service\n" |
22 | msgstr "" | 22 | msgstr "" |
@@ -2081,21 +2081,6 @@ msgstr "" | |||
2081 | msgid "Measure quality and performance of the DHT service." | 2081 | msgid "Measure quality and performance of the DHT service." |
2082 | msgstr "无法访问该服务" | 2082 | msgstr "无法访问该服务" |
2083 | 2083 | ||
2084 | #: src/dht/plugin_block_dht.c:404 | ||
2085 | #, c-format | ||
2086 | msgid "Block not of type %u\n" | ||
2087 | msgstr "" | ||
2088 | |||
2089 | #: src/dht/plugin_block_dht.c:413 | ||
2090 | #, c-format | ||
2091 | msgid "Size mismatch for block with type %u\n" | ||
2092 | msgstr "" | ||
2093 | |||
2094 | #: src/dht/plugin_block_dht.c:424 | ||
2095 | #, c-format | ||
2096 | msgid "Block of type %u is malformed\n" | ||
2097 | msgstr "" | ||
2098 | |||
2099 | #: src/dns/gnunet-dns-monitor.c:371 src/dns/gnunet-dns-monitor.c:376 | 2084 | #: src/dns/gnunet-dns-monitor.c:371 src/dns/gnunet-dns-monitor.c:376 |
2100 | msgid "only monitor DNS queries" | 2085 | msgid "only monitor DNS queries" |
2101 | msgstr "" | 2086 | msgstr "" |
@@ -2798,20 +2783,20 @@ msgstr "" | |||
2798 | msgid "LOC URI malformed (signature failed validation)" | 2783 | msgid "LOC URI malformed (signature failed validation)" |
2799 | msgstr "" | 2784 | msgstr "" |
2800 | 2785 | ||
2801 | #: src/fs/fs_uri.c:652 | 2786 | #: src/fs/fs_uri.c:653 |
2802 | #, fuzzy | 2787 | #, fuzzy |
2803 | msgid "invalid argument" | 2788 | msgid "invalid argument" |
2804 | msgstr "“%s”的参数无效。\n" | 2789 | msgstr "“%s”的参数无效。\n" |
2805 | 2790 | ||
2806 | #: src/fs/fs_uri.c:671 | 2791 | #: src/fs/fs_uri.c:673 |
2807 | msgid "Unrecognized URI type" | 2792 | msgid "Unrecognized URI type" |
2808 | msgstr "" | 2793 | msgstr "" |
2809 | 2794 | ||
2810 | #: src/fs/fs_uri.c:1075 src/fs/fs_uri.c:1102 | 2795 | #: src/fs/fs_uri.c:1077 src/fs/fs_uri.c:1104 |
2811 | msgid "No keywords specified!\n" | 2796 | msgid "No keywords specified!\n" |
2812 | msgstr "" | 2797 | msgstr "" |
2813 | 2798 | ||
2814 | #: src/fs/fs_uri.c:1108 | 2799 | #: src/fs/fs_uri.c:1110 |
2815 | msgid "Number of double-quotes not balanced!\n" | 2800 | msgid "Number of double-quotes not balanced!\n" |
2816 | msgstr "" | 2801 | msgstr "" |
2817 | 2802 | ||
@@ -3521,93 +3506,93 @@ msgstr "" | |||
3521 | msgid "# query plan entries" | 3506 | msgid "# query plan entries" |
3522 | msgstr "" | 3507 | msgstr "" |
3523 | 3508 | ||
3524 | #: src/fs/gnunet-service-fs_pr.c:329 | 3509 | #: src/fs/gnunet-service-fs_pr.c:330 |
3525 | msgid "# Pending requests created" | 3510 | msgid "# Pending requests created" |
3526 | msgstr "" | 3511 | msgstr "" |
3527 | 3512 | ||
3528 | #: src/fs/gnunet-service-fs_pr.c:421 src/fs/gnunet-service-fs_pr.c:658 | 3513 | #: src/fs/gnunet-service-fs_pr.c:422 src/fs/gnunet-service-fs_pr.c:662 |
3529 | msgid "# Pending requests active" | 3514 | msgid "# Pending requests active" |
3530 | msgstr "" | 3515 | msgstr "" |
3531 | 3516 | ||
3532 | #: src/fs/gnunet-service-fs_pr.c:838 | 3517 | #: src/fs/gnunet-service-fs_pr.c:837 |
3533 | msgid "# replies received and matched" | 3518 | msgid "# replies received and matched" |
3534 | msgstr "" | 3519 | msgstr "" |
3535 | 3520 | ||
3536 | #: src/fs/gnunet-service-fs_pr.c:916 | 3521 | #: src/fs/gnunet-service-fs_pr.c:911 |
3537 | msgid "# results found locally" | 3522 | msgid "# results found locally" |
3538 | msgstr "" | 3523 | msgstr "" |
3539 | 3524 | ||
3540 | #: src/fs/gnunet-service-fs_pr.c:1050 | 3525 | #: src/fs/gnunet-service-fs_pr.c:1045 |
3541 | msgid "# Datastore `PUT' failures" | 3526 | msgid "# Datastore `PUT' failures" |
3542 | msgstr "" | 3527 | msgstr "" |
3543 | 3528 | ||
3544 | #: src/fs/gnunet-service-fs_pr.c:1079 | 3529 | #: src/fs/gnunet-service-fs_pr.c:1074 |
3545 | msgid "# storage requests dropped due to high load" | 3530 | msgid "# storage requests dropped due to high load" |
3546 | msgstr "" | 3531 | msgstr "" |
3547 | 3532 | ||
3548 | #: src/fs/gnunet-service-fs_pr.c:1118 | 3533 | #: src/fs/gnunet-service-fs_pr.c:1113 |
3549 | msgid "# Replies received from DHT" | 3534 | msgid "# Replies received from DHT" |
3550 | msgstr "" | 3535 | msgstr "" |
3551 | 3536 | ||
3552 | #: src/fs/gnunet-service-fs_pr.c:1259 | 3537 | #: src/fs/gnunet-service-fs_pr.c:1268 |
3553 | msgid "# Replies received from CADET" | 3538 | msgid "# Replies received from CADET" |
3554 | msgstr "" | 3539 | msgstr "" |
3555 | 3540 | ||
3556 | #: src/fs/gnunet-service-fs_pr.c:1313 | 3541 | #: src/fs/gnunet-service-fs_pr.c:1323 |
3557 | #, c-format | 3542 | #, c-format |
3558 | msgid "Datastore lookup already took %s!\n" | 3543 | msgid "Datastore lookup already took %s!\n" |
3559 | msgstr "" | 3544 | msgstr "" |
3560 | 3545 | ||
3561 | #: src/fs/gnunet-service-fs_pr.c:1334 | 3546 | #: src/fs/gnunet-service-fs_pr.c:1344 |
3562 | #, c-format | 3547 | #, c-format |
3563 | msgid "On-demand lookup already took %s!\n" | 3548 | msgid "On-demand lookup already took %s!\n" |
3564 | msgstr "" | 3549 | msgstr "" |
3565 | 3550 | ||
3566 | #: src/fs/gnunet-service-fs_pr.c:1401 | 3551 | #: src/fs/gnunet-service-fs_pr.c:1411 |
3567 | msgid "# requested DBLOCK or IBLOCK not found" | 3552 | msgid "# requested DBLOCK or IBLOCK not found" |
3568 | msgstr "" | 3553 | msgstr "" |
3569 | 3554 | ||
3570 | #: src/fs/gnunet-service-fs_pr.c:1463 | 3555 | #: src/fs/gnunet-service-fs_pr.c:1473 |
3571 | msgid "# Datastore lookups concluded (error queueing)" | 3556 | msgid "# Datastore lookups concluded (error queueing)" |
3572 | msgstr "" | 3557 | msgstr "" |
3573 | 3558 | ||
3574 | #: src/fs/gnunet-service-fs_pr.c:1518 | 3559 | #: src/fs/gnunet-service-fs_pr.c:1528 |
3575 | msgid "# Datastore lookups concluded (no results)" | 3560 | msgid "# Datastore lookups concluded (no results)" |
3576 | msgstr "" | 3561 | msgstr "" |
3577 | 3562 | ||
3578 | #: src/fs/gnunet-service-fs_pr.c:1533 | 3563 | #: src/fs/gnunet-service-fs_pr.c:1543 |
3579 | msgid "# Datastore lookups concluded (seen all)" | 3564 | msgid "# Datastore lookups concluded (seen all)" |
3580 | msgstr "" | 3565 | msgstr "" |
3581 | 3566 | ||
3582 | #: src/fs/gnunet-service-fs_pr.c:1556 | 3567 | #: src/fs/gnunet-service-fs_pr.c:1566 |
3583 | msgid "# Datastore lookups aborted (more than MAX_RESULTS)" | 3568 | msgid "# Datastore lookups aborted (more than MAX_RESULTS)" |
3584 | msgstr "" | 3569 | msgstr "" |
3585 | 3570 | ||
3586 | #: src/fs/gnunet-service-fs_pr.c:1573 | 3571 | #: src/fs/gnunet-service-fs_pr.c:1583 |
3587 | msgid "# on-demand blocks matched requests" | 3572 | msgid "# on-demand blocks matched requests" |
3588 | msgstr "" | 3573 | msgstr "" |
3589 | 3574 | ||
3590 | #: src/fs/gnunet-service-fs_pr.c:1594 | 3575 | #: src/fs/gnunet-service-fs_pr.c:1604 |
3591 | msgid "# on-demand lookups performed successfully" | 3576 | msgid "# on-demand lookups performed successfully" |
3592 | msgstr "" | 3577 | msgstr "" |
3593 | 3578 | ||
3594 | #: src/fs/gnunet-service-fs_pr.c:1600 | 3579 | #: src/fs/gnunet-service-fs_pr.c:1610 |
3595 | msgid "# on-demand lookups failed" | 3580 | msgid "# on-demand lookups failed" |
3596 | msgstr "" | 3581 | msgstr "" |
3597 | 3582 | ||
3598 | #: src/fs/gnunet-service-fs_pr.c:1641 | 3583 | #: src/fs/gnunet-service-fs_pr.c:1656 |
3599 | msgid "# Datastore lookups concluded (found last result)" | 3584 | msgid "# Datastore lookups concluded (found last result)" |
3600 | msgstr "" | 3585 | msgstr "" |
3601 | 3586 | ||
3602 | #: src/fs/gnunet-service-fs_pr.c:1654 | 3587 | #: src/fs/gnunet-service-fs_pr.c:1669 |
3603 | msgid "# Datastore lookups concluded (load too high)" | 3588 | msgid "# Datastore lookups concluded (load too high)" |
3604 | msgstr "" | 3589 | msgstr "" |
3605 | 3590 | ||
3606 | #: src/fs/gnunet-service-fs_pr.c:1705 | 3591 | #: src/fs/gnunet-service-fs_pr.c:1720 |
3607 | msgid "# Datastore lookups initiated" | 3592 | msgid "# Datastore lookups initiated" |
3608 | msgstr "" | 3593 | msgstr "" |
3609 | 3594 | ||
3610 | #: src/fs/gnunet-service-fs_pr.c:1755 | 3595 | #: src/fs/gnunet-service-fs_pr.c:1784 |
3611 | msgid "# GAP PUT messages received" | 3596 | msgid "# GAP PUT messages received" |
3612 | msgstr "" | 3597 | msgstr "" |
3613 | 3598 | ||
@@ -3917,65 +3902,65 @@ msgstr "" | |||
3917 | msgid "Failed to connect to the DNS service!\n" | 3902 | msgid "Failed to connect to the DNS service!\n" |
3918 | msgstr "初始化“%s”服务失败。\n" | 3903 | msgstr "初始化“%s”服务失败。\n" |
3919 | 3904 | ||
3920 | #: src/gns/gnunet-service-gns_resolver.c:659 | 3905 | #: src/gns/gnunet-service-gns_resolver.c:672 |
3921 | #, c-format | 3906 | #, c-format |
3922 | msgid "Protocol `%s' unknown, skipping labels.\n" | 3907 | msgid "Protocol `%s' unknown, skipping labels.\n" |
3923 | msgstr "" | 3908 | msgstr "" |
3924 | 3909 | ||
3925 | #: src/gns/gnunet-service-gns_resolver.c:671 | 3910 | #: src/gns/gnunet-service-gns_resolver.c:684 |
3926 | #, c-format | 3911 | #, c-format |
3927 | msgid "Service `%s' unknown for protocol `%s', trying as number.\n" | 3912 | msgid "Service `%s' unknown for protocol `%s', trying as number.\n" |
3928 | msgstr "" | 3913 | msgstr "" |
3929 | 3914 | ||
3930 | #: src/gns/gnunet-service-gns_resolver.c:677 | 3915 | #: src/gns/gnunet-service-gns_resolver.c:690 |
3931 | #, c-format | 3916 | #, c-format |
3932 | msgid "Service `%s' not a port, skipping service labels.\n" | 3917 | msgid "Service `%s' not a port, skipping service labels.\n" |
3933 | msgstr "" | 3918 | msgstr "" |
3934 | 3919 | ||
3935 | #: src/gns/gnunet-service-gns_resolver.c:891 | 3920 | #: src/gns/gnunet-service-gns_resolver.c:904 |
3936 | #, fuzzy | 3921 | #, fuzzy |
3937 | msgid "Failed to parse DNS response\n" | 3922 | msgid "Failed to parse DNS response\n" |
3938 | msgstr "打开日志文件“%s”失败:%s\n" | 3923 | msgstr "打开日志文件“%s”失败:%s\n" |
3939 | 3924 | ||
3940 | #: src/gns/gnunet-service-gns_resolver.c:1082 | 3925 | #: src/gns/gnunet-service-gns_resolver.c:1095 |
3941 | #, c-format | 3926 | #, c-format |
3942 | msgid "Skipping record of unsupported type %d\n" | 3927 | msgid "Skipping record of unsupported type %d\n" |
3943 | msgstr "" | 3928 | msgstr "" |
3944 | 3929 | ||
3945 | #: src/gns/gnunet-service-gns_resolver.c:1859 | 3930 | #: src/gns/gnunet-service-gns_resolver.c:1872 |
3946 | #, c-format | 3931 | #, c-format |
3947 | msgid "Name `%s' cannot be converted to IDNA." | 3932 | msgid "Name `%s' cannot be converted to IDNA." |
3948 | msgstr "" | 3933 | msgstr "" |
3949 | 3934 | ||
3950 | #: src/gns/gnunet-service-gns_resolver.c:1874 | 3935 | #: src/gns/gnunet-service-gns_resolver.c:1887 |
3951 | #, c-format | 3936 | #, c-format |
3952 | msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" | 3937 | msgid "GNS lookup resulted in DNS name that is too long (`%s')\n" |
3953 | msgstr "" | 3938 | msgstr "" |
3954 | 3939 | ||
3955 | #: src/gns/gnunet-service-gns_resolver.c:1914 | 3940 | #: src/gns/gnunet-service-gns_resolver.c:1927 |
3956 | #, fuzzy, c-format | 3941 | #, fuzzy, c-format |
3957 | msgid "GNS lookup failed (zero records found for `%s')\n" | 3942 | msgid "GNS lookup failed (zero records found for `%s')\n" |
3958 | msgstr "运行 %s失败:%s %d\n" | 3943 | msgstr "运行 %s失败:%s %d\n" |
3959 | 3944 | ||
3960 | #: src/gns/gnunet-service-gns_resolver.c:2312 | 3945 | #: src/gns/gnunet-service-gns_resolver.c:2329 |
3961 | msgid "Unable to process critical delegation record\n" | 3946 | msgid "Unable to process critical delegation record\n" |
3962 | msgstr "" | 3947 | msgstr "" |
3963 | 3948 | ||
3964 | #: src/gns/gnunet-service-gns_resolver.c:2317 | 3949 | #: src/gns/gnunet-service-gns_resolver.c:2334 |
3965 | msgid "GNS lookup recursion failed (no delegation record found)\n" | 3950 | msgid "GNS lookup recursion failed (no delegation record found)\n" |
3966 | msgstr "" | 3951 | msgstr "" |
3967 | 3952 | ||
3968 | #: src/gns/gnunet-service-gns_resolver.c:2340 | 3953 | #: src/gns/gnunet-service-gns_resolver.c:2357 |
3969 | #, fuzzy, c-format | 3954 | #, fuzzy, c-format |
3970 | msgid "Failed to cache GNS resolution: %s\n" | 3955 | msgid "Failed to cache GNS resolution: %s\n" |
3971 | msgstr "打开日志文件“%s”失败:%s\n" | 3956 | msgstr "打开日志文件“%s”失败:%s\n" |
3972 | 3957 | ||
3973 | #: src/gns/gnunet-service-gns_resolver.c:2505 | 3958 | #: src/gns/gnunet-service-gns_resolver.c:2522 |
3974 | #, c-format | 3959 | #, c-format |
3975 | msgid "GNS namecache returned empty result for `%s'\n" | 3960 | msgid "GNS namecache returned empty result for `%s'\n" |
3976 | msgstr "" | 3961 | msgstr "" |
3977 | 3962 | ||
3978 | #: src/gns/gnunet-service-gns_resolver.c:2652 | 3963 | #: src/gns/gnunet-service-gns_resolver.c:2669 |
3979 | #, c-format | 3964 | #, c-format |
3980 | msgid "Zone %s was revoked, resolution fails\n" | 3965 | msgid "Zone %s was revoked, resolution fails\n" |
3981 | msgstr "" | 3966 | msgstr "" |
@@ -4017,31 +4002,39 @@ msgstr "解析配置文件“%s”失败\n" | |||
4017 | msgid "Gns REST API initialized\n" | 4002 | msgid "Gns REST API initialized\n" |
4018 | msgstr "" | 4003 | msgstr "" |
4019 | 4004 | ||
4020 | #: src/gnsrecord/gnsrecord_misc.c:448 | 4005 | #: src/gnsrecord/gnsrecord_misc.c:52 |
4006 | msgid "Label is NULL which is not allowed\n" | ||
4007 | msgstr "" | ||
4008 | |||
4009 | #: src/gnsrecord/gnsrecord_misc.c:57 | ||
4010 | msgid "Label contains `.' which is not allowed\n" | ||
4011 | msgstr "" | ||
4012 | |||
4013 | #: src/gnsrecord/gnsrecord_misc.c:464 | ||
4021 | msgid "Zone delegation record not allowed in apex." | 4014 | msgid "Zone delegation record not allowed in apex." |
4022 | msgstr "" | 4015 | msgstr "" |
4023 | 4016 | ||
4024 | #: src/gnsrecord/gnsrecord_misc.c:456 | 4017 | #: src/gnsrecord/gnsrecord_misc.c:472 |
4025 | msgid "Zone delegation record set contains mutually exclusive records." | 4018 | msgid "Zone delegation record set contains mutually exclusive records." |
4026 | msgstr "" | 4019 | msgstr "" |
4027 | 4020 | ||
4028 | #: src/gnsrecord/gnsrecord_misc.c:466 | 4021 | #: src/gnsrecord/gnsrecord_misc.c:482 |
4029 | msgid "Multiple REDIRECT records." | 4022 | msgid "Multiple REDIRECT records." |
4030 | msgstr "" | 4023 | msgstr "" |
4031 | 4024 | ||
4032 | #: src/gnsrecord/gnsrecord_misc.c:475 src/gnsrecord/gnsrecord_misc.c:501 | 4025 | #: src/gnsrecord/gnsrecord_misc.c:491 src/gnsrecord/gnsrecord_misc.c:517 |
4033 | msgid "Redirection record set conains mutually exclusive records." | 4026 | msgid "Redirection record set conains mutually exclusive records." |
4034 | msgstr "" | 4027 | msgstr "" |
4035 | 4028 | ||
4036 | #: src/gnsrecord/gnsrecord_misc.c:482 | 4029 | #: src/gnsrecord/gnsrecord_misc.c:498 |
4037 | msgid "Redirection records not allowed in apex." | 4030 | msgid "Redirection records not allowed in apex." |
4038 | msgstr "" | 4031 | msgstr "" |
4039 | 4032 | ||
4040 | #: src/gnsrecord/gnsrecord_misc.c:493 | 4033 | #: src/gnsrecord/gnsrecord_misc.c:509 |
4041 | msgid "Redirection records not allowed in apex.." | 4034 | msgid "Redirection records not allowed in apex.." |
4042 | msgstr "" | 4035 | msgstr "" |
4043 | 4036 | ||
4044 | #: src/gnsrecord/gnsrecord_misc.c:515 | 4037 | #: src/gnsrecord/gnsrecord_misc.c:531 |
4045 | msgid "Mutually exclusive records." | 4038 | msgid "Mutually exclusive records." |
4046 | msgstr "" | 4039 | msgstr "" |
4047 | 4040 | ||
@@ -4606,12 +4599,18 @@ msgstr "" | |||
4606 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" | 4599 | msgid "Failed to parse JSON in option `%s': %s (%s)\n" |
4607 | msgstr "解析配置文件“%s”失败\n" | 4600 | msgstr "解析配置文件“%s”失败\n" |
4608 | 4601 | ||
4609 | #: src/messenger/plugin_gnsrecord_messenger.c:118 | 4602 | #: src/messenger/plugin_gnsrecord_messenger.c:136 |
4610 | #: src/messenger/plugin_gnsrecord_messenger.c:133 | 4603 | #: src/messenger/plugin_gnsrecord_messenger.c:151 |
4611 | #, fuzzy, c-format | 4604 | #, fuzzy, c-format |
4612 | msgid "Unable to parse MESSENGER_ROOM_ENTRY record `%s'\n" | 4605 | msgid "Unable to parse MESSENGER_ROOM_ENTRY record `%s'\n" |
4613 | msgstr "解析配置文件“%s”失败\n" | 4606 | msgstr "解析配置文件“%s”失败\n" |
4614 | 4607 | ||
4608 | #: src/messenger/plugin_gnsrecord_messenger.c:172 | ||
4609 | #: src/messenger/plugin_gnsrecord_messenger.c:187 | ||
4610 | #, fuzzy, c-format | ||
4611 | msgid "Unable to parse MESSENGER_ROOM_DETAILS record `%s'\n" | ||
4612 | msgstr "解析配置文件“%s”失败\n" | ||
4613 | |||
4615 | #: src/my/my.c:196 src/my/my.c:215 | 4614 | #: src/my/my.c:196 src/my/my.c:215 |
4616 | #, fuzzy, c-format | 4615 | #, fuzzy, c-format |
4617 | msgid "%s failed at %s:%d with error: %s\n" | 4616 | msgid "%s failed at %s:%d with error: %s\n" |
@@ -4652,7 +4651,7 @@ msgstr "“%s”的参数无效。\n" | |||
4652 | msgid "You must specify a name\n" | 4651 | msgid "You must specify a name\n" |
4653 | msgstr "您必须指定一个接收方!\n" | 4652 | msgstr "您必须指定一个接收方!\n" |
4654 | 4653 | ||
4655 | #: src/namecache/gnunet-namecache.c:214 src/namestore/gnunet-namestore.c:1591 | 4654 | #: src/namecache/gnunet-namecache.c:214 src/namestore/gnunet-namestore.c:1582 |
4656 | msgid "name of the record to add/delete/display" | 4655 | msgid "name of the record to add/delete/display" |
4657 | msgstr "" | 4656 | msgstr "" |
4658 | 4657 | ||
@@ -4660,7 +4659,7 @@ msgstr "" | |||
4660 | msgid "specifies the public key of the zone to look in" | 4659 | msgid "specifies the public key of the zone to look in" |
4661 | msgstr "" | 4660 | msgstr "" |
4662 | 4661 | ||
4663 | #: src/namecache/gnunet-namecache.c:233 src/namestore/gnunet-namestore.c:1652 | 4662 | #: src/namecache/gnunet-namecache.c:233 src/namestore/gnunet-namestore.c:1643 |
4664 | #, fuzzy | 4663 | #, fuzzy |
4665 | msgid "GNUnet zone manipulation tool" | 4664 | msgid "GNUnet zone manipulation tool" |
4666 | msgstr "GNUnet 配置" | 4665 | msgstr "GNUnet 配置" |
@@ -4910,12 +4909,7 @@ msgstr "“%s”的参数无效。\n" | |||
4910 | msgid "Invalid URI `%s'\n" | 4909 | msgid "Invalid URI `%s'\n" |
4911 | msgstr "无效条目。\n" | 4910 | msgstr "无效条目。\n" |
4912 | 4911 | ||
4913 | #: src/namestore/gnunet-namestore.c:1242 | 4912 | #: src/namestore/gnunet-namestore.c:1283 |
4914 | #, c-format | ||
4915 | msgid "Label `%s' contains `.' which is not allowed\n" | ||
4916 | msgstr "" | ||
4917 | |||
4918 | #: src/namestore/gnunet-namestore.c:1292 | ||
4919 | #, c-format | 4913 | #, c-format |
4920 | msgid "" | 4914 | msgid "" |
4921 | "No default identity configured for `namestore' subsystem\n" | 4915 | "No default identity configured for `namestore' subsystem\n" |
@@ -4923,102 +4917,102 @@ msgid "" | |||
4923 | "Run gnunet-identity -d to get a list of choices for $NAME\n" | 4917 | "Run gnunet-identity -d to get a list of choices for $NAME\n" |
4924 | msgstr "" | 4918 | msgstr "" |
4925 | 4919 | ||
4926 | #: src/namestore/gnunet-namestore.c:1357 | 4920 | #: src/namestore/gnunet-namestore.c:1348 |
4927 | #, c-format | 4921 | #, c-format |
4928 | msgid "Superfluous command line arguments (starting with `%s') ignored\n" | 4922 | msgid "Superfluous command line arguments (starting with `%s') ignored\n" |
4929 | msgstr "" | 4923 | msgstr "" |
4930 | 4924 | ||
4931 | #: src/namestore/gnunet-namestore.c:1386 | 4925 | #: src/namestore/gnunet-namestore.c:1377 |
4932 | #, fuzzy, c-format | 4926 | #, fuzzy, c-format |
4933 | msgid "Cannot connect to identity service\n" | 4927 | msgid "Cannot connect to identity service\n" |
4934 | msgstr "无法连接到 %s:%u:%s\n" | 4928 | msgstr "无法连接到 %s:%u:%s\n" |
4935 | 4929 | ||
4936 | #: src/namestore/gnunet-namestore.c:1433 | 4930 | #: src/namestore/gnunet-namestore.c:1424 |
4937 | msgid "Empty record line argument is not allowed.\n" | 4931 | msgid "Empty record line argument is not allowed.\n" |
4938 | msgstr "" | 4932 | msgstr "" |
4939 | 4933 | ||
4940 | #: src/namestore/gnunet-namestore.c:1445 | 4934 | #: src/namestore/gnunet-namestore.c:1436 |
4941 | #, c-format | 4935 | #, c-format |
4942 | msgid "Invalid expiration time `%s' (must be without unit)\n" | 4936 | msgid "Invalid expiration time `%s' (must be without unit)\n" |
4943 | msgstr "" | 4937 | msgstr "" |
4944 | 4938 | ||
4945 | #: src/namestore/gnunet-namestore.c:1457 src/namestore/gnunet-namestore.c:1473 | 4939 | #: src/namestore/gnunet-namestore.c:1448 src/namestore/gnunet-namestore.c:1464 |
4946 | #: src/namestore/gnunet-namestore.c:1490 | 4940 | #: src/namestore/gnunet-namestore.c:1481 |
4947 | #, fuzzy, c-format | 4941 | #, fuzzy, c-format |
4948 | msgid "Missing entries in record line `%s'.\n" | 4942 | msgid "Missing entries in record line `%s'.\n" |
4949 | msgstr "解析配置文件“%s”失败\n" | 4943 | msgstr "解析配置文件“%s”失败\n" |
4950 | 4944 | ||
4951 | #: src/namestore/gnunet-namestore.c:1465 | 4945 | #: src/namestore/gnunet-namestore.c:1456 |
4952 | #, fuzzy, c-format | 4946 | #, fuzzy, c-format |
4953 | msgid "Unknown record type `%s'\n" | 4947 | msgid "Unknown record type `%s'\n" |
4954 | msgstr "未知的命令“%s”。\n" | 4948 | msgstr "未知的命令“%s”。\n" |
4955 | 4949 | ||
4956 | #: src/namestore/gnunet-namestore.c:1503 | 4950 | #: src/namestore/gnunet-namestore.c:1494 |
4957 | #, fuzzy, c-format | 4951 | #, fuzzy, c-format |
4958 | msgid "Invalid record data for type %s: `%s'.\n" | 4952 | msgid "Invalid record data for type %s: `%s'.\n" |
4959 | msgstr "IP 格式无效:“%s”\n" | 4953 | msgstr "IP 格式无效:“%s”\n" |
4960 | 4954 | ||
4961 | #: src/namestore/gnunet-namestore.c:1560 | 4955 | #: src/namestore/gnunet-namestore.c:1551 |
4962 | msgid "add record" | 4956 | msgid "add record" |
4963 | msgstr "" | 4957 | msgstr "" |
4964 | 4958 | ||
4965 | #: src/namestore/gnunet-namestore.c:1563 | 4959 | #: src/namestore/gnunet-namestore.c:1554 |
4966 | msgid "delete record" | 4960 | msgid "delete record" |
4967 | msgstr "" | 4961 | msgstr "" |
4968 | 4962 | ||
4969 | #: src/namestore/gnunet-namestore.c:1567 | 4963 | #: src/namestore/gnunet-namestore.c:1558 |
4970 | msgid "display records" | 4964 | msgid "display records" |
4971 | msgstr "" | 4965 | msgstr "" |
4972 | 4966 | ||
4973 | #: src/namestore/gnunet-namestore.c:1574 | 4967 | #: src/namestore/gnunet-namestore.c:1565 |
4974 | msgid "" | 4968 | msgid "" |
4975 | "expiration time for record to use (for adding only), \"never\" is possible" | 4969 | "expiration time for record to use (for adding only), \"never\" is possible" |
4976 | msgstr "" | 4970 | msgstr "" |
4977 | 4971 | ||
4978 | #: src/namestore/gnunet-namestore.c:1580 | 4972 | #: src/namestore/gnunet-namestore.c:1571 |
4979 | #, fuzzy | 4973 | #, fuzzy |
4980 | msgid "set the desired nick name for the zone" | 4974 | msgid "set the desired nick name for the zone" |
4981 | msgstr "无法获取有关用户“%s”的信息:%s\n" | 4975 | msgstr "无法获取有关用户“%s”的信息:%s\n" |
4982 | 4976 | ||
4983 | #: src/namestore/gnunet-namestore.c:1585 | 4977 | #: src/namestore/gnunet-namestore.c:1576 |
4984 | #, fuzzy | 4978 | #, fuzzy |
4985 | msgid "monitor changes in the namestore" | 4979 | msgid "monitor changes in the namestore" |
4986 | msgstr "初始化“%s”服务失败。\n" | 4980 | msgstr "初始化“%s”服务失败。\n" |
4987 | 4981 | ||
4988 | #: src/namestore/gnunet-namestore.c:1597 | 4982 | #: src/namestore/gnunet-namestore.c:1588 |
4989 | #, fuzzy | 4983 | #, fuzzy |
4990 | msgid "determine our name for the given PKEY" | 4984 | msgid "determine our name for the given PKEY" |
4991 | msgstr "无法获取有关用户“%s”的信息:%s\n" | 4985 | msgstr "无法获取有关用户“%s”的信息:%s\n" |
4992 | 4986 | ||
4993 | #: src/namestore/gnunet-namestore.c:1604 | 4987 | #: src/namestore/gnunet-namestore.c:1595 |
4994 | msgid "" | 4988 | msgid "" |
4995 | "set record set to values given by (possibly multiple) RECORDLINES; can be " | 4989 | "set record set to values given by (possibly multiple) RECORDLINES; can be " |
4996 | "specified multiple times" | 4990 | "specified multiple times" |
4997 | msgstr "" | 4991 | msgstr "" |
4998 | 4992 | ||
4999 | #: src/namestore/gnunet-namestore.c:1610 | 4993 | #: src/namestore/gnunet-namestore.c:1601 |
5000 | msgid "type of the record to add/delete/display" | 4994 | msgid "type of the record to add/delete/display" |
5001 | msgstr "" | 4995 | msgstr "" |
5002 | 4996 | ||
5003 | #: src/namestore/gnunet-namestore.c:1615 | 4997 | #: src/namestore/gnunet-namestore.c:1606 |
5004 | msgid "URI to import into our zone" | 4998 | msgid "URI to import into our zone" |
5005 | msgstr "" | 4999 | msgstr "" |
5006 | 5000 | ||
5007 | #: src/namestore/gnunet-namestore.c:1621 | 5001 | #: src/namestore/gnunet-namestore.c:1612 |
5008 | msgid "value of the record to add/delete" | 5002 | msgid "value of the record to add/delete" |
5009 | msgstr "" | 5003 | msgstr "" |
5010 | 5004 | ||
5011 | #: src/namestore/gnunet-namestore.c:1625 | 5005 | #: src/namestore/gnunet-namestore.c:1616 |
5012 | msgid "create or list public record" | 5006 | msgid "create or list public record" |
5013 | msgstr "" | 5007 | msgstr "" |
5014 | 5008 | ||
5015 | #: src/namestore/gnunet-namestore.c:1631 | 5009 | #: src/namestore/gnunet-namestore.c:1622 |
5016 | msgid "" | 5010 | msgid "" |
5017 | "create shadow record (only valid if all other records of the same type have " | 5011 | "create shadow record (only valid if all other records of the same type have " |
5018 | "expired" | 5012 | "expired" |
5019 | msgstr "" | 5013 | msgstr "" |
5020 | 5014 | ||
5021 | #: src/namestore/gnunet-namestore.c:1637 | 5015 | #: src/namestore/gnunet-namestore.c:1628 |
5022 | msgid "name of the ego controlling the zone" | 5016 | msgid "name of the ego controlling the zone" |
5023 | msgstr "" | 5017 | msgstr "" |
5024 | 5018 | ||
@@ -5027,7 +5021,17 @@ msgstr "" | |||
5027 | msgid "Failed to replicate block in namecache: %s\n" | 5021 | msgid "Failed to replicate block in namecache: %s\n" |
5028 | msgstr "发送消息失败。\n" | 5022 | msgstr "发送消息失败。\n" |
5029 | 5023 | ||
5030 | #: src/namestore/gnunet-service-namestore.c:1668 | 5024 | #: src/namestore/gnunet-service-namestore.c:1559 |
5025 | #, fuzzy | ||
5026 | msgid "Error normalizing name." | ||
5027 | msgstr "创建用户出错" | ||
5028 | |||
5029 | #: src/namestore/gnunet-service-namestore.c:1582 | ||
5030 | #, fuzzy | ||
5031 | msgid "Error deserializing records." | ||
5032 | msgstr "未知错误。\n" | ||
5033 | |||
5034 | #: src/namestore/gnunet-service-namestore.c:1691 | ||
5031 | #, fuzzy | 5035 | #, fuzzy |
5032 | msgid "Store failed" | 5036 | msgid "Store failed" |
5033 | msgstr "“%s”已连接到“%s”。\n" | 5037 | msgstr "“%s”已连接到“%s”。\n" |
@@ -6769,8 +6773,8 @@ msgid "GNUnet topology control" | |||
6769 | msgstr "" | 6773 | msgstr "" |
6770 | 6774 | ||
6771 | #: src/transport/gnunet-communicator-tcp.c:3338 | 6775 | #: src/transport/gnunet-communicator-tcp.c:3338 |
6772 | #: src/transport/gnunet-communicator-udp.c:3856 | 6776 | #: src/transport/gnunet-communicator-udp.c:3867 |
6773 | #: src/transport/gnunet-service-tng.c:10623 | 6777 | #: src/transport/gnunet-service-tng.c:10926 |
6774 | #: src/transport/gnunet-service-transport.c:2627 | 6778 | #: src/transport/gnunet-service-transport.c:2627 |
6775 | #, fuzzy | 6779 | #, fuzzy |
6776 | msgid "Transport service is lacking key configuration settings. Exiting.\n" | 6780 | msgid "Transport service is lacking key configuration settings. Exiting.\n" |
@@ -6780,7 +6784,7 @@ msgstr "立即保存配置?" | |||
6780 | msgid "GNUnet TCP communicator" | 6784 | msgid "GNUnet TCP communicator" |
6781 | msgstr "" | 6785 | msgstr "" |
6782 | 6786 | ||
6783 | #: src/transport/gnunet-communicator-udp.c:3931 | 6787 | #: src/transport/gnunet-communicator-udp.c:3942 |
6784 | msgid "GNUnet UDP communicator" | 6788 | msgid "GNUnet UDP communicator" |
6785 | msgstr "" | 6789 | msgstr "" |
6786 | 6790 | ||
@@ -8130,12 +8134,12 @@ msgstr "找不到接口“%s”的一个 IP 地址。\n" | |||
8130 | msgid "libgcrypt has not the expected version (version %s is required).\n" | 8134 | msgid "libgcrypt has not the expected version (version %s is required).\n" |
8131 | msgstr "libgcrypt 的版本不符合预期(要求版本 %s)。\n" | 8135 | msgstr "libgcrypt 的版本不符合预期(要求版本 %s)。\n" |
8132 | 8136 | ||
8133 | #: src/util/crypto_rsa.c:901 | 8137 | #: src/util/crypto_rsa.c:907 |
8134 | #, fuzzy, c-format | 8138 | #, fuzzy, c-format |
8135 | msgid "RSA signing failed at %s:%d: %s\n" | 8139 | msgid "RSA signing failed at %s:%d: %s\n" |
8136 | msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" | 8140 | msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" |
8137 | 8141 | ||
8138 | #: src/util/crypto_rsa.c:1201 | 8142 | #: src/util/crypto_rsa.c:1207 |
8139 | #, fuzzy, c-format | 8143 | #, fuzzy, c-format |
8140 | msgid "RSA signature verification failed at %s:%d: %s\n" | 8144 | msgid "RSA signature verification failed at %s:%d: %s\n" |
8141 | msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" | 8145 | msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n" |
@@ -8806,12 +8810,12 @@ msgstr "网络掩码的格式“%s”错误\n" | |||
8806 | msgid "Wrong format `%s' for network\n" | 8810 | msgid "Wrong format `%s' for network\n" |
8807 | msgstr "网络的格式“%s”错误\n" | 8811 | msgstr "网络的格式“%s”错误\n" |
8808 | 8812 | ||
8809 | #: src/util/time.c:870 src/util/time.c:898 | 8813 | #: src/util/time.c:900 src/util/time.c:928 |
8810 | #, c-format | 8814 | #, c-format |
8811 | msgid "Failed to map `%s', cannot assure monotonic time!\n" | 8815 | msgid "Failed to map `%s', cannot assure monotonic time!\n" |
8812 | msgstr "" | 8816 | msgstr "" |
8813 | 8817 | ||
8814 | #: src/util/time.c:906 | 8818 | #: src/util/time.c:936 |
8815 | #, c-format | 8819 | #, c-format |
8816 | msgid "" | 8820 | msgid "" |
8817 | "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n" | 8821 | "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n" |
diff --git a/src/dhtu/Makefile.am b/src/dhtu/Makefile.am index ebffa9ecf..4d210b71f 100644 --- a/src/dhtu/Makefile.am +++ b/src/dhtu/Makefile.am | |||
@@ -13,10 +13,11 @@ endif | |||
13 | pkgcfg_DATA = \ | 13 | pkgcfg_DATA = \ |
14 | dhtu.conf | 14 | dhtu.conf |
15 | 15 | ||
16 | |||
17 | plugin_LTLIBRARIES = \ | 16 | plugin_LTLIBRARIES = \ |
18 | libgnunet_plugin_dhtu_gnunet.la \ | 17 | libgnunet_plugin_dhtu_gnunet.la |
19 | libgnunet_plugin_dhtu_ip.la | 18 | |
19 | if !OPENBSD | ||
20 | plugin_LTLIBRARIES += libgnunet_plugin_dhtu_ip.la | ||
20 | 21 | ||
21 | libgnunet_plugin_dhtu_ip_la_SOURCES = \ | 22 | libgnunet_plugin_dhtu_ip_la_SOURCES = \ |
22 | plugin_dhtu_ip.c | 23 | plugin_dhtu_ip.c |
@@ -26,7 +27,7 @@ libgnunet_plugin_dhtu_ip_la_LIBADD = \ | |||
26 | $(LTLIBINTL) | 27 | $(LTLIBINTL) |
27 | libgnunet_plugin_dhtu_ip_la_LDFLAGS = \ | 28 | libgnunet_plugin_dhtu_ip_la_LDFLAGS = \ |
28 | $(GN_PLUGIN_LDFLAGS) | 29 | $(GN_PLUGIN_LDFLAGS) |
29 | 30 | endif | |
30 | 31 | ||
31 | 32 | ||
32 | libgnunet_plugin_dhtu_gnunet_la_SOURCES = \ | 33 | libgnunet_plugin_dhtu_gnunet_la_SOURCES = \ |
diff --git a/src/fs/test_fs_uri.c b/src/fs/test_fs_uri.c index 30eafab9a..aac7b1b97 100644 --- a/src/fs/test_fs_uri.c +++ b/src/fs/test_fs_uri.c | |||
@@ -80,7 +80,7 @@ testLocation () | |||
80 | char *uric; | 80 | char *uric; |
81 | struct GNUNET_FS_Uri *uri2; | 81 | struct GNUNET_FS_Uri *uri2; |
82 | struct GNUNET_FS_Uri *baseURI; | 82 | struct GNUNET_FS_Uri *baseURI; |
83 | char *emsg; | 83 | char *emsg = NULL; |
84 | struct GNUNET_CRYPTO_EddsaPrivateKey pk; | 84 | struct GNUNET_CRYPTO_EddsaPrivateKey pk; |
85 | 85 | ||
86 | baseURI = | 86 | baseURI = |
diff --git a/src/fs/test_plugin_block_fs.c b/src/fs/test_plugin_block_fs.c index 727cc37c2..f15d10b17 100644 --- a/src/fs/test_plugin_block_fs.c +++ b/src/fs/test_plugin_block_fs.c | |||
@@ -43,7 +43,6 @@ test_fs (struct GNUNET_BLOCK_Context *ctx) | |||
43 | if (GNUNET_OK != | 43 | if (GNUNET_OK != |
44 | GNUNET_BLOCK_check_block (ctx, | 44 | GNUNET_BLOCK_check_block (ctx, |
45 | GNUNET_BLOCK_TYPE_FS_DBLOCK, | 45 | GNUNET_BLOCK_TYPE_FS_DBLOCK, |
46 | &key, | ||
47 | block, | 46 | block, |
48 | sizeof(block))) | 47 | sizeof(block))) |
49 | return 2; | 48 | return 2; |
@@ -54,7 +53,7 @@ test_fs (struct GNUNET_BLOCK_Context *ctx) | |||
54 | NULL, 0)) | 53 | NULL, 0)) |
55 | return 4; | 54 | return 4; |
56 | GNUNET_log_skip (1, GNUNET_NO); | 55 | GNUNET_log_skip (1, GNUNET_NO); |
57 | if (GNUNET_BLOCK_EVALUATION_REQUEST_INVALID != | 56 | if (GNUNET_NO != |
58 | GNUNET_BLOCK_check_query (ctx, | 57 | GNUNET_BLOCK_check_query (ctx, |
59 | GNUNET_BLOCK_TYPE_FS_DBLOCK, | 58 | GNUNET_BLOCK_TYPE_FS_DBLOCK, |
60 | &key, | 59 | &key, |
diff --git a/src/gns/gnunet-service-gns_resolver.c b/src/gns/gnunet-service-gns_resolver.c index 72b228f33..9d26e1777 100644 --- a/src/gns/gnunet-service-gns_resolver.c +++ b/src/gns/gnunet-service-gns_resolver.c | |||
@@ -623,6 +623,19 @@ resolver_lookup_get_next_label (struct GNS_ResolverHandle *rh) | |||
623 | rp = rh->name; | 623 | rp = rh->name; |
624 | rh->name_resolution_pos = 0; | 624 | rh->name_resolution_pos = 0; |
625 | } | 625 | } |
626 | else if (('_' == dot[1]) && | ||
627 | ('_' == rh->name[0]) && | ||
628 | (dot == memchr (rh->name, (int) '.', rh->name_resolution_pos))) | ||
629 | { | ||
630 | /** | ||
631 | * Do not advance a label. This seems to be a name only consisting | ||
632 | * of a BOX indicator (_443,_tcp). | ||
633 | * Which means, it is a BOX under the empty label. | ||
634 | * leaving name_resolution_pos as is and returning empty label. | ||
635 | */ | ||
636 | rp = GNUNET_GNS_EMPTY_LABEL_AT; | ||
637 | len = strlen (GNUNET_GNS_EMPTY_LABEL_AT); | ||
638 | } | ||
626 | else | 639 | else |
627 | { | 640 | { |
628 | /* advance by one label */ | 641 | /* advance by one label */ |
@@ -683,7 +696,7 @@ resolver_lookup_get_next_label (struct GNS_ResolverHandle *rh) | |||
683 | } | 696 | } |
684 | else | 697 | else |
685 | { | 698 | { |
686 | rh->service = se->s_port; | 699 | rh->service = ntohs (se->s_port); |
687 | } | 700 | } |
688 | rh->protocol = pe->p_proto; | 701 | rh->protocol = pe->p_proto; |
689 | GNUNET_free (proto_name); | 702 | GNUNET_free (proto_name); |
@@ -2237,6 +2250,10 @@ handle_gns_resolution_result (void *cls, | |||
2237 | const struct GNUNET_GNSRECORD_BoxRecord *box; | 2250 | const struct GNUNET_GNSRECORD_BoxRecord *box; |
2238 | 2251 | ||
2239 | box = rd[i].data; | 2252 | box = rd[i].data; |
2253 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
2254 | "Got BOX record, checking if parameters match... %u/%u vs %u/%u\n", | ||
2255 | ntohs (box->protocol), ntohs (box->service), | ||
2256 | rh->protocol, rh->service); | ||
2240 | if ((ntohs (box->protocol) == rh->protocol) && | 2257 | if ((ntohs (box->protocol) == rh->protocol) && |
2241 | (ntohs (box->service) == rh->service)) | 2258 | (ntohs (box->service) == rh->service)) |
2242 | { | 2259 | { |
diff --git a/src/gns/plugin_block_gns.c b/src/gns/plugin_block_gns.c index fd9c99cb4..ffca16b6f 100644 --- a/src/gns/plugin_block_gns.c +++ b/src/gns/plugin_block_gns.c | |||
@@ -181,7 +181,7 @@ block_plugin_gns_check_block (void *cls, | |||
181 | size_t block_size) | 181 | size_t block_size) |
182 | { | 182 | { |
183 | const struct GNUNET_GNSRECORD_Block *gblock; | 183 | const struct GNUNET_GNSRECORD_Block *gblock; |
184 | 184 | ||
185 | if (GNUNET_BLOCK_TYPE_GNS_NAMERECORD != type) | 185 | if (GNUNET_BLOCK_TYPE_GNS_NAMERECORD != type) |
186 | { | 186 | { |
187 | GNUNET_break (0); | 187 | GNUNET_break (0); |
@@ -243,7 +243,7 @@ block_plugin_gns_check_reply (void *cls, | |||
243 | return GNUNET_BLOCK_REPLY_TYPE_NOT_SUPPORTED; | 243 | return GNUNET_BLOCK_REPLY_TYPE_NOT_SUPPORTED; |
244 | } | 244 | } |
245 | GNUNET_assert (reply_block_size >= sizeof(struct GNUNET_GNSRECORD_Block)); | 245 | GNUNET_assert (reply_block_size >= sizeof(struct GNUNET_GNSRECORD_Block)); |
246 | GNUNET_assert (GNUNET_GNSRECORD_block_get_size (block) > reply_block_size); | 246 | GNUNET_assert (reply_block_size >= GNUNET_GNSRECORD_block_get_size (block)); |
247 | GNUNET_CRYPTO_hash (reply_block, | 247 | GNUNET_CRYPTO_hash (reply_block, |
248 | reply_block_size, | 248 | reply_block_size, |
249 | &chash); | 249 | &chash); |
diff --git a/src/gnsrecord/gnsrecord_crypto.c b/src/gnsrecord/gnsrecord_crypto.c index ff92911de..b5e8be82b 100644 --- a/src/gnsrecord/gnsrecord_crypto.c +++ b/src/gnsrecord/gnsrecord_crypto.c | |||
@@ -219,7 +219,6 @@ block_create_ecdsa (const struct GNUNET_CRYPTO_EcdsaPrivateKey *key, | |||
219 | rd); | 219 | rd); |
220 | struct GNUNET_GNSRECORD_EcdsaBlock *ecblock; | 220 | struct GNUNET_GNSRECORD_EcdsaBlock *ecblock; |
221 | struct GNRBlockPS *gnr_block; | 221 | struct GNRBlockPS *gnr_block; |
222 | struct GNUNET_CRYPTO_EcdsaPrivateKey *dkey; | ||
223 | unsigned char ctr[GNUNET_CRYPTO_AES_KEY_LENGTH / 2]; | 222 | unsigned char ctr[GNUNET_CRYPTO_AES_KEY_LENGTH / 2]; |
224 | unsigned char skey[GNUNET_CRYPTO_AES_KEY_LENGTH]; | 223 | unsigned char skey[GNUNET_CRYPTO_AES_KEY_LENGTH]; |
225 | struct GNUNET_GNSRECORD_Data rdc[GNUNET_NZL (rd_count)]; | 224 | struct GNUNET_GNSRECORD_Data rdc[GNUNET_NZL (rd_count)]; |
@@ -270,11 +269,10 @@ block_create_ecdsa (const struct GNUNET_CRYPTO_EcdsaPrivateKey *key, | |||
270 | gnr_block->expiration_time = GNUNET_TIME_absolute_hton (expire); | 269 | gnr_block->expiration_time = GNUNET_TIME_absolute_hton (expire); |
271 | ecblock->expiration_time = gnr_block->expiration_time; | 270 | ecblock->expiration_time = gnr_block->expiration_time; |
272 | /* encrypt and sign */ | 271 | /* encrypt and sign */ |
273 | dkey = GNUNET_CRYPTO_ecdsa_private_key_derive (key, | 272 | GNUNET_CRYPTO_ecdsa_public_key_derive (pkey, |
274 | label, | 273 | label, |
275 | "gns"); | 274 | "gns", |
276 | GNUNET_CRYPTO_ecdsa_key_get_public (dkey, | 275 | &ecblock->derived_key); |
277 | &ecblock->derived_key); | ||
278 | GNR_derive_block_aes_key (ctr, | 276 | GNR_derive_block_aes_key (ctr, |
279 | skey, | 277 | skey, |
280 | label, | 278 | label, |
@@ -289,18 +287,18 @@ block_create_ecdsa (const struct GNUNET_CRYPTO_EcdsaPrivateKey *key, | |||
289 | GNUNET_memcpy (&gnr_block[1], &ecblock[1], payload_len); | 287 | GNUNET_memcpy (&gnr_block[1], &ecblock[1], payload_len); |
290 | } | 288 | } |
291 | if (GNUNET_OK != | 289 | if (GNUNET_OK != |
292 | GNUNET_CRYPTO_ecdsa_sign_ (dkey, | 290 | GNUNET_CRYPTO_ecdsa_sign_derived (key, |
293 | &gnr_block->purpose, | 291 | label, |
294 | &ecblock->signature)) | 292 | "gns", |
293 | &gnr_block->purpose, | ||
294 | &ecblock->signature)) | ||
295 | { | 295 | { |
296 | GNUNET_break (0); | 296 | GNUNET_break (0); |
297 | GNUNET_free (*block); | 297 | GNUNET_free (*block); |
298 | GNUNET_free (dkey); | ||
299 | GNUNET_free (gnr_block); | 298 | GNUNET_free (gnr_block); |
300 | return GNUNET_SYSERR; | 299 | return GNUNET_SYSERR; |
301 | } | 300 | } |
302 | GNUNET_free (gnr_block); | 301 | GNUNET_free (gnr_block); |
303 | GNUNET_free (dkey); | ||
304 | return GNUNET_OK; | 302 | return GNUNET_OK; |
305 | } | 303 | } |
306 | 304 | ||
@@ -344,7 +342,6 @@ block_create_eddsa (const struct GNUNET_CRYPTO_EddsaPrivateKey *key, | |||
344 | rd); | 342 | rd); |
345 | struct GNUNET_GNSRECORD_EddsaBlock *edblock; | 343 | struct GNUNET_GNSRECORD_EddsaBlock *edblock; |
346 | struct GNRBlockPS *gnr_block; | 344 | struct GNRBlockPS *gnr_block; |
347 | struct GNUNET_CRYPTO_EddsaPrivateScalar dkey; | ||
348 | unsigned char nonce[crypto_secretbox_NONCEBYTES]; | 345 | unsigned char nonce[crypto_secretbox_NONCEBYTES]; |
349 | unsigned char skey[crypto_secretbox_KEYBYTES]; | 346 | unsigned char skey[crypto_secretbox_KEYBYTES]; |
350 | struct GNUNET_GNSRECORD_Data rdc[GNUNET_NZL (rd_count)]; | 347 | struct GNUNET_GNSRECORD_Data rdc[GNUNET_NZL (rd_count)]; |
@@ -402,12 +399,10 @@ block_create_eddsa (const struct GNUNET_CRYPTO_EddsaPrivateKey *key, | |||
402 | gnr_block->expiration_time = GNUNET_TIME_absolute_hton (expire); | 399 | gnr_block->expiration_time = GNUNET_TIME_absolute_hton (expire); |
403 | edblock->expiration_time = gnr_block->expiration_time; | 400 | edblock->expiration_time = gnr_block->expiration_time; |
404 | /* encrypt and sign */ | 401 | /* encrypt and sign */ |
405 | GNUNET_CRYPTO_eddsa_private_key_derive (key, | 402 | GNUNET_CRYPTO_eddsa_public_key_derive (pkey, |
406 | label, | 403 | label, |
407 | "gns", | 404 | "gns", |
408 | &dkey); | 405 | &edblock->derived_key); |
409 | GNUNET_CRYPTO_eddsa_key_get_public_from_scalar (&dkey, | ||
410 | &edblock->derived_key); | ||
411 | GNR_derive_block_xsalsa_key (nonce, | 406 | GNR_derive_block_xsalsa_key (nonce, |
412 | skey, | 407 | skey, |
413 | label, | 408 | label, |
@@ -422,9 +417,11 @@ block_create_eddsa (const struct GNUNET_CRYPTO_EddsaPrivateKey *key, | |||
422 | GNUNET_memcpy (&gnr_block[1], &edblock[1], | 417 | GNUNET_memcpy (&gnr_block[1], &edblock[1], |
423 | payload_len + crypto_secretbox_MACBYTES); | 418 | payload_len + crypto_secretbox_MACBYTES); |
424 | 419 | ||
425 | GNUNET_CRYPTO_eddsa_sign_with_scalar (&dkey, | 420 | GNUNET_CRYPTO_eddsa_sign_derived (key, |
426 | &gnr_block->purpose, | 421 | label, |
427 | &edblock->signature); | 422 | "gns", |
423 | &gnr_block->purpose, | ||
424 | &edblock->signature); | ||
428 | } | 425 | } |
429 | return GNUNET_OK; | 426 | return GNUNET_OK; |
430 | } | 427 | } |
diff --git a/src/gnsrecord/gnunet-gnsrecord-tvg.c b/src/gnsrecord/gnunet-gnsrecord-tvg.c index 87de32066..7fef6f8e7 100644 --- a/src/gnsrecord/gnunet-gnsrecord-tvg.c +++ b/src/gnsrecord/gnunet-gnsrecord-tvg.c | |||
@@ -96,20 +96,22 @@ static void | |||
96 | print_record (const struct GNUNET_GNSRECORD_Data *rd) | 96 | print_record (const struct GNUNET_GNSRECORD_Data *rd) |
97 | { | 97 | { |
98 | uint16_t flags = htons (rd->flags); | 98 | uint16_t flags = htons (rd->flags); |
99 | fprintf (stdout, | 99 | uint64_t abs_nbo = GNUNET_htonll (rd->expiration_time); |
100 | "EXPIRATION: %" PRIu64 "\n", rd->expiration_time); | 100 | uint16_t size_nbo = htons (rd->data_size); |
101 | fprintf (stdout, | 101 | uint32_t type_nbo = htonl (rd->record_type); |
102 | "DATA_SIZE: %zu\n", rd->data_size); | 102 | printf ("EXPIRATION:\n"); |
103 | fprintf (stdout, | 103 | print_bytes (&abs_nbo, sizeof (abs_nbo), 8); |
104 | "TYPE: %d\n", rd->record_type); | 104 | printf ("\nDATA_SIZE:\n"); |
105 | fprintf (stdout, | 105 | print_bytes (&size_nbo, sizeof (size_nbo), 8); |
106 | "FLAGS: "); | 106 | printf ("\nTYPE:\n"); |
107 | print_bytes(&type_nbo, sizeof (type_nbo), 8); | ||
108 | printf ("\nFLAGS: "); | ||
107 | print_bytes ((void*) &flags, sizeof (flags), 8); | 109 | print_bytes ((void*) &flags, sizeof (flags), 8); |
108 | printf ("\n"); | 110 | printf ("\n"); |
109 | fprintf (stdout, | 111 | fprintf (stdout, |
110 | "DATA:\n"); | 112 | "DATA:\n"); |
111 | print_bytes ((char*) rd->data, rd->data_size, 8); | 113 | print_bytes ((char*) rd->data, rd->data_size, 8); |
112 | fprintf (stdout, "\n"); | 114 | printf ("\n"); |
113 | } | 115 | } |
114 | 116 | ||
115 | 117 | ||
@@ -133,6 +135,7 @@ run_pkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char *label) | |||
133 | struct GNUNET_IDENTITY_PublicKey pkey_data; | 135 | struct GNUNET_IDENTITY_PublicKey pkey_data; |
134 | struct GNUNET_HashCode query; | 136 | struct GNUNET_HashCode query; |
135 | char *rdata; | 137 | char *rdata; |
138 | char *conv_lbl; | ||
136 | size_t rdata_size; | 139 | size_t rdata_size; |
137 | char ztld[128]; | 140 | char ztld[128]; |
138 | unsigned char ctr[GNUNET_CRYPTO_AES_KEY_LENGTH / 2]; | 141 | unsigned char ctr[GNUNET_CRYPTO_AES_KEY_LENGTH / 2]; |
@@ -146,34 +149,37 @@ run_pkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char *label) | |||
146 | 149 | ||
147 | GNUNET_IDENTITY_key_get_public (&id_priv, | 150 | GNUNET_IDENTITY_key_get_public (&id_priv, |
148 | &id_pub); | 151 | &id_pub); |
149 | fprintf (stdout, | 152 | printf ("Zone private key (d, big-endian):\n"); |
150 | "Zone private key (d, big-endian):\n"); | ||
151 | print_bytes_ (&id_priv.ecdsa_key, | 153 | print_bytes_ (&id_priv.ecdsa_key, |
152 | sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey), 8, 1); | 154 | sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey), 8, 1); |
153 | fprintf (stdout, "\n"); | 155 | printf ("\n"); |
154 | fprintf (stdout, "Zone identifier (ztype|zkey):\n"); | 156 | printf ("Zone identifier (ztype|zkey):\n"); |
155 | GNUNET_assert (0 < GNUNET_IDENTITY_key_get_length (&id_pub)); | 157 | GNUNET_assert (0 < GNUNET_IDENTITY_key_get_length (&id_pub)); |
156 | print_bytes (&id_pub, GNUNET_IDENTITY_key_get_length (&id_pub), 8); | 158 | print_bytes (&id_pub, GNUNET_IDENTITY_key_get_length (&id_pub), 8); |
157 | GNUNET_STRINGS_data_to_string (&id_pub, | 159 | GNUNET_STRINGS_data_to_string (&id_pub, |
158 | GNUNET_IDENTITY_key_get_length (&id_pub), | 160 | GNUNET_IDENTITY_key_get_length (&id_pub), |
159 | ztld, | 161 | ztld, |
160 | sizeof (ztld)); | 162 | sizeof (ztld)); |
161 | fprintf (stdout, "\n"); | 163 | printf ("\n"); |
162 | fprintf (stdout, "zTLD:\n"); | 164 | printf ("zTLD:\n"); |
163 | fprintf (stdout, "%s\n", ztld); | 165 | printf ("%s\n", ztld); |
164 | fprintf (stdout, "\n"); | 166 | printf ("\n"); |
165 | 167 | ||
166 | pkey_data_p.type = htonl (GNUNET_GNSRECORD_TYPE_PKEY); | 168 | pkey_data_p.type = htonl (GNUNET_GNSRECORD_TYPE_PKEY); |
167 | GNUNET_CRYPTO_ecdsa_key_create (&pkey_data_p.ecdsa_key); | 169 | GNUNET_CRYPTO_ecdsa_key_create (&pkey_data_p.ecdsa_key); |
168 | GNUNET_IDENTITY_key_get_public (&pkey_data_p, | 170 | GNUNET_IDENTITY_key_get_public (&pkey_data_p, |
169 | &pkey_data); | 171 | &pkey_data); |
170 | fprintf (stdout, | 172 | conv_lbl = GNUNET_GNSRECORD_string_normalize (label); |
171 | "Label: %s\nRRCOUNT: %d\n\n", label, rd_count); | 173 | printf ("Label:\n"); |
174 | print_bytes (conv_lbl, strlen (conv_lbl), 8); | ||
175 | GNUNET_free (conv_lbl); | ||
176 | printf ("\nNumber of records (integer): %d\n\n", rd_count); | ||
172 | 177 | ||
173 | for (int i = 0; i < rd_count; i++) | 178 | for (int i = 0; i < rd_count; i++) |
174 | { | 179 | { |
175 | fprintf (stdout, "Record #%d\n", i); | 180 | printf ("Record #%d := (\n", i); |
176 | print_record (&rd[i]); | 181 | print_record (&rd[i]); |
182 | printf (")\n\n"); | ||
177 | } | 183 | } |
178 | 184 | ||
179 | rdata_size = GNUNET_GNSRECORD_records_get_size (rd_count, | 185 | rdata_size = GNUNET_GNSRECORD_records_get_size (rd_count, |
@@ -183,11 +189,11 @@ run_pkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char *label) | |||
183 | rd, | 189 | rd, |
184 | (size_t) rdata_size, | 190 | (size_t) rdata_size, |
185 | rdata); | 191 | rdata); |
186 | fprintf (stdout, "RDATA:\n"); | 192 | printf ("RDATA:\n"); |
187 | print_bytes (rdata, | 193 | print_bytes (rdata, |
188 | (size_t) rdata_size, | 194 | (size_t) rdata_size, |
189 | 8); | 195 | 8); |
190 | fprintf (stdout, "\n"); | 196 | printf ("\n"); |
191 | expire = GNUNET_GNSRECORD_record_get_expiration_time (rd_count, rd, | 197 | expire = GNUNET_GNSRECORD_record_get_expiration_time (rd_count, rd, |
192 | GNUNET_TIME_UNIT_ZERO_ABS); | 198 | GNUNET_TIME_UNIT_ZERO_ABS); |
193 | GNR_derive_block_aes_key (ctr, | 199 | GNR_derive_block_aes_key (ctr, |
@@ -197,18 +203,18 @@ run_pkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char *label) | |||
197 | expire).abs_value_us__, | 203 | expire).abs_value_us__, |
198 | &id_pub.ecdsa_key); | 204 | &id_pub.ecdsa_key); |
199 | 205 | ||
200 | fprintf (stdout, "Encryption NONCE|EXPIRATION|BLOCK COUNTER:\n"); | 206 | printf ("Encryption NONCE|EXPIRATION|BLOCK COUNTER:\n"); |
201 | print_bytes (ctr, sizeof (ctr), 8); | 207 | print_bytes (ctr, sizeof (ctr), 8); |
202 | fprintf (stdout, "\n"); | 208 | printf ("\n"); |
203 | fprintf (stdout, "Encryption key (K):\n"); | 209 | printf ("Encryption key (K):\n"); |
204 | print_bytes (skey, sizeof (skey), 8); | 210 | print_bytes (skey, sizeof (skey), 8); |
205 | fprintf (stdout, "\n"); | 211 | printf ("\n"); |
206 | GNUNET_GNSRECORD_query_from_public_key (&id_pub, | 212 | GNUNET_GNSRECORD_query_from_public_key (&id_pub, |
207 | label, | 213 | label, |
208 | &query); | 214 | &query); |
209 | fprintf (stdout, "Storage key (q):\n"); | 215 | printf ("Storage key (q):\n"); |
210 | print_bytes (&query, sizeof (query), 8); | 216 | print_bytes (&query, sizeof (query), 8); |
211 | fprintf (stdout, "\n"); | 217 | printf ("\n"); |
212 | GNUNET_assert (GNUNET_OK == GNUNET_GNSRECORD_block_create (&id_priv, | 218 | GNUNET_assert (GNUNET_OK == GNUNET_GNSRECORD_block_create (&id_priv, |
213 | expire, | 219 | expire, |
214 | label, | 220 | label, |
@@ -219,12 +225,12 @@ run_pkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char *label) | |||
219 | GNUNET_GNSRECORD_Block); | 225 | GNUNET_GNSRECORD_Block); |
220 | 226 | ||
221 | bdata = (char*) &(&rrblock->ecdsa_block)[1]; | 227 | bdata = (char*) &(&rrblock->ecdsa_block)[1]; |
222 | fprintf (stdout, "BDATA:\n"); | 228 | printf ("BDATA:\n"); |
223 | print_bytes (bdata, bdata_size, 8); | 229 | print_bytes (bdata, bdata_size, 8); |
224 | fprintf (stdout, "\n"); | 230 | printf ("\n"); |
225 | fprintf (stdout, "RRBLOCK:\n"); | 231 | printf ("RRBLOCK:\n"); |
226 | print_bytes (rrblock, ntohl (rrblock->size), 8); | 232 | print_bytes (rrblock, ntohl (rrblock->size), 8); |
227 | fprintf (stdout, "\n"); | 233 | printf ("\n"); |
228 | GNUNET_free (rdata); | 234 | GNUNET_free (rdata); |
229 | } | 235 | } |
230 | 236 | ||
@@ -249,6 +255,7 @@ run_edkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char*label) | |||
249 | struct GNUNET_IDENTITY_PublicKey pkey_data; | 255 | struct GNUNET_IDENTITY_PublicKey pkey_data; |
250 | struct GNUNET_HashCode query; | 256 | struct GNUNET_HashCode query; |
251 | char *rdata; | 257 | char *rdata; |
258 | char *conv_lbl; | ||
252 | size_t rdata_size; | 259 | size_t rdata_size; |
253 | 260 | ||
254 | char ztld[128]; | 261 | char ztld[128]; |
@@ -271,30 +278,35 @@ run_edkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char*label) | |||
271 | "Zone private key (d):\n"); | 278 | "Zone private key (d):\n"); |
272 | print_bytes (&id_priv.eddsa_key, sizeof (struct | 279 | print_bytes (&id_priv.eddsa_key, sizeof (struct |
273 | GNUNET_CRYPTO_EddsaPrivateKey), 8); | 280 | GNUNET_CRYPTO_EddsaPrivateKey), 8); |
274 | fprintf (stdout, "\n"); | 281 | printf ("\n"); |
275 | fprintf (stdout, "Zone identifier (ztype|zkey):\n"); | 282 | printf ("Zone identifier (ztype|zkey):\n"); |
276 | GNUNET_assert (0 < GNUNET_IDENTITY_key_get_length (&id_pub)); | 283 | GNUNET_assert (0 < GNUNET_IDENTITY_key_get_length (&id_pub)); |
277 | print_bytes (&id_pub, GNUNET_IDENTITY_key_get_length (&id_pub), 8); | 284 | print_bytes (&id_pub, GNUNET_IDENTITY_key_get_length (&id_pub), 8); |
278 | GNUNET_STRINGS_data_to_string (&id_pub, | 285 | GNUNET_STRINGS_data_to_string (&id_pub, |
279 | GNUNET_IDENTITY_key_get_length (&id_pub), | 286 | GNUNET_IDENTITY_key_get_length (&id_pub), |
280 | ztld, | 287 | ztld, |
281 | sizeof (ztld)); | 288 | sizeof (ztld)); |
282 | fprintf (stdout, "\n"); | 289 | printf ("\n"); |
283 | fprintf (stdout, "zTLD:\n"); | 290 | printf ("zTLD:\n"); |
284 | fprintf (stdout, "%s\n", ztld); | 291 | printf ("%s\n", ztld); |
285 | fprintf (stdout, "\n"); | 292 | printf ("\n"); |
286 | 293 | ||
287 | pkey_data_p.type = htonl (GNUNET_GNSRECORD_TYPE_EDKEY); | 294 | pkey_data_p.type = htonl (GNUNET_GNSRECORD_TYPE_EDKEY); |
288 | GNUNET_CRYPTO_eddsa_key_create (&pkey_data_p.eddsa_key); | 295 | GNUNET_CRYPTO_eddsa_key_create (&pkey_data_p.eddsa_key); |
289 | GNUNET_IDENTITY_key_get_public (&pkey_data_p, | 296 | GNUNET_IDENTITY_key_get_public (&pkey_data_p, |
290 | &pkey_data); | 297 | &pkey_data); |
298 | conv_lbl = GNUNET_GNSRECORD_string_normalize (label); | ||
299 | printf ("Label:\n"); | ||
300 | print_bytes (conv_lbl, strlen (conv_lbl), 8); | ||
301 | GNUNET_free (conv_lbl); | ||
291 | fprintf (stdout, | 302 | fprintf (stdout, |
292 | "Label: %s\nRRCOUNT: %d\n\n", label, rd_count); | 303 | "\nNumber of records (integer): %d\n\n", rd_count); |
293 | 304 | ||
294 | for (int i = 0; i < rd_count; i++) | 305 | for (int i = 0; i < rd_count; i++) |
295 | { | 306 | { |
296 | fprintf (stdout, "Record #%d\n", i); | 307 | printf ("Record #%d := (\n", i); |
297 | print_record (&rd[i]); | 308 | print_record (&rd[i]); |
309 | printf (")\n\n"); | ||
298 | } | 310 | } |
299 | 311 | ||
300 | rdata_size = GNUNET_GNSRECORD_records_get_size (rd_count, | 312 | rdata_size = GNUNET_GNSRECORD_records_get_size (rd_count, |
@@ -308,29 +320,29 @@ run_edkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char*label) | |||
308 | rd, | 320 | rd, |
309 | (size_t) rdata_size, | 321 | (size_t) rdata_size, |
310 | rdata); | 322 | rdata); |
311 | fprintf (stdout, "RDATA:\n"); | 323 | printf ("RDATA:\n"); |
312 | print_bytes (rdata, | 324 | print_bytes (rdata, |
313 | (size_t) rdata_size, | 325 | (size_t) rdata_size, |
314 | 8); | 326 | 8); |
315 | fprintf (stdout, "\n"); | 327 | printf ("\n"); |
316 | GNR_derive_block_xsalsa_key (nonce, | 328 | GNR_derive_block_xsalsa_key (nonce, |
317 | skey, | 329 | skey, |
318 | label, | 330 | label, |
319 | GNUNET_TIME_absolute_hton ( | 331 | GNUNET_TIME_absolute_hton ( |
320 | expire).abs_value_us__, | 332 | expire).abs_value_us__, |
321 | &id_pub.eddsa_key); | 333 | &id_pub.eddsa_key); |
322 | fprintf (stdout, "Encryption NONCE|EXPIRATION:\n"); | 334 | printf ("Encryption NONCE|EXPIRATION:\n"); |
323 | print_bytes (nonce, sizeof (nonce), 8); | 335 | print_bytes (nonce, sizeof (nonce), 8); |
324 | fprintf (stdout, "\n"); | 336 | printf ("\n"); |
325 | fprintf (stdout, "Encryption key (K):\n"); | 337 | printf ("Encryption key (K):\n"); |
326 | print_bytes (skey, sizeof (skey), 8); | 338 | print_bytes (skey, sizeof (skey), 8); |
327 | fprintf (stdout, "\n"); | 339 | printf ("\n"); |
328 | GNUNET_GNSRECORD_query_from_public_key (&id_pub, | 340 | GNUNET_GNSRECORD_query_from_public_key (&id_pub, |
329 | label, | 341 | label, |
330 | &query); | 342 | &query); |
331 | fprintf (stdout, "Storage key (q):\n"); | 343 | printf ("Storage key (q):\n"); |
332 | print_bytes (&query, sizeof (query), 8); | 344 | print_bytes (&query, sizeof (query), 8); |
333 | fprintf (stdout, "\n"); | 345 | printf ("\n"); |
334 | 346 | ||
335 | GNUNET_assert (GNUNET_OK == GNUNET_GNSRECORD_block_create (&id_priv, | 347 | GNUNET_assert (GNUNET_OK == GNUNET_GNSRECORD_block_create (&id_priv, |
336 | expire, | 348 | expire, |
@@ -342,12 +354,12 @@ run_edkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char*label) | |||
342 | GNUNET_GNSRECORD_Block); | 354 | GNUNET_GNSRECORD_Block); |
343 | 355 | ||
344 | bdata = (char*) &(&rrblock->eddsa_block)[1]; | 356 | bdata = (char*) &(&rrblock->eddsa_block)[1]; |
345 | fprintf (stdout, "BDATA:\n"); | 357 | printf ("BDATA:\n"); |
346 | print_bytes (bdata, bdata_size, 8); | 358 | print_bytes (bdata, bdata_size, 8); |
347 | fprintf (stdout, "\n"); | 359 | printf ("\n"); |
348 | fprintf (stdout, "RRBLOCK:\n"); | 360 | printf ("RRBLOCK:\n"); |
349 | print_bytes (rrblock, ntohl (rrblock->size), 8); | 361 | print_bytes (rrblock, ntohl (rrblock->size), 8); |
350 | fprintf (stdout, "\n"); | 362 | printf ("\n"); |
351 | GNUNET_free (rdata); | 363 | GNUNET_free (rdata); |
352 | } | 364 | } |
353 | 365 | ||
@@ -424,9 +436,9 @@ run (void *cls, | |||
424 | | GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION; | 436 | | GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION; |
425 | 437 | ||
426 | run_pkey (&rd_pkey, 1, "testdelegation"); | 438 | run_pkey (&rd_pkey, 1, "testdelegation"); |
427 | run_pkey (rd, 3, "namesystem"); | 439 | run_pkey (rd, 3, "\u5929\u4e0b\u7121\u6575"); |
428 | run_edkey (&rd_pkey, 1, "testdelegation"); | 440 | run_edkey (&rd_pkey, 1, "testdelegation"); |
429 | run_edkey (rd, 3, "namesystem"); | 441 | run_edkey (rd, 3, "\u5929\u4e0b\u7121\u6575"); |
430 | } | 442 | } |
431 | 443 | ||
432 | 444 | ||
diff --git a/src/include/gnunet_crypto_lib.h b/src/include/gnunet_crypto_lib.h index 72d783148..582a58861 100644 --- a/src/include/gnunet_crypto_lib.h +++ b/src/include/gnunet_crypto_lib.h | |||
@@ -287,6 +287,59 @@ struct GNUNET_CRYPTO_EddsaPrivateScalar | |||
287 | unsigned char s[512 / 8]; | 287 | unsigned char s[512 / 8]; |
288 | }; | 288 | }; |
289 | 289 | ||
290 | /** | ||
291 | * Private ECC key material encoded for transmission. To be used only for | ||
292 | * Edx25519 signatures. An inital key corresponds to data from the key | ||
293 | * expansion and clamping in the EdDSA key generation. | ||
294 | */ | ||
295 | struct GNUNET_CRYPTO_Edx25519PrivateKey | ||
296 | { | ||
297 | /** | ||
298 | * a is a value mod n, where n has at most 256 bits. It is the first half of | ||
299 | * the seed-expansion of EdDSA and will be clamped. | ||
300 | */ | ||
301 | unsigned char a[256 / 8]; | ||
302 | |||
303 | /** | ||
304 | * b consists of 32 bytes which where originally the lower 32bytes of the key | ||
305 | * expansion. Subsequent calls to derive_private will change this value, too. | ||
306 | */ | ||
307 | unsigned char b[256 / 8]; | ||
308 | }; | ||
309 | |||
310 | |||
311 | /** | ||
312 | * Public ECC key (always for curve Ed25519) encoded in a format suitable for | ||
313 | * network transmission and Edx25519 (same as EdDSA) signatures. Refer to | ||
314 | * section 5.1.3 of rfc8032, for a thorough explanation of how this value maps | ||
315 | * to the x- and y-coordinates. | ||
316 | */ | ||
317 | struct GNUNET_CRYPTO_Edx25519PublicKey | ||
318 | { | ||
319 | /** | ||
320 | * Point Q consists of a y-value mod p (256 bits); the x-value is | ||
321 | * always positive. The point is stored in Ed25519 standard | ||
322 | * compact format. | ||
323 | */ | ||
324 | unsigned char q_y[256 / 8]; | ||
325 | }; | ||
326 | |||
327 | /** | ||
328 | * @brief an ECC signature using Edx25519 (same as in EdDSA). | ||
329 | */ | ||
330 | struct GNUNET_CRYPTO_Edx25519Signature | ||
331 | { | ||
332 | /** | ||
333 | * R value. | ||
334 | */ | ||
335 | unsigned char r[256 / 8]; | ||
336 | |||
337 | /** | ||
338 | * S value. | ||
339 | */ | ||
340 | unsigned char s[256 / 8]; | ||
341 | }; | ||
342 | |||
290 | 343 | ||
291 | /** | 344 | /** |
292 | * @brief type for session keys | 345 | * @brief type for session keys |
@@ -1279,6 +1332,17 @@ GNUNET_CRYPTO_eddsa_key_get_public ( | |||
1279 | const struct GNUNET_CRYPTO_EddsaPrivateKey *priv, | 1332 | const struct GNUNET_CRYPTO_EddsaPrivateKey *priv, |
1280 | struct GNUNET_CRYPTO_EddsaPublicKey *pub); | 1333 | struct GNUNET_CRYPTO_EddsaPublicKey *pub); |
1281 | 1334 | ||
1335 | /** | ||
1336 | * @ingroup crypto | ||
1337 | * Extract the public key for the given private key. | ||
1338 | * | ||
1339 | * @param priv the private key | ||
1340 | * @param pub where to write the public key | ||
1341 | */ | ||
1342 | void | ||
1343 | GNUNET_CRYPTO_edx25519_key_get_public ( | ||
1344 | const struct GNUNET_CRYPTO_Edx25519PrivateKey *priv, | ||
1345 | struct GNUNET_CRYPTO_Edx25519PublicKey *pub); | ||
1282 | 1346 | ||
1283 | /** | 1347 | /** |
1284 | * @ingroup crypto | 1348 | * @ingroup crypto |
@@ -1465,6 +1529,30 @@ GNUNET_CRYPTO_eddsa_key_create (struct GNUNET_CRYPTO_EddsaPrivateKey *pk); | |||
1465 | 1529 | ||
1466 | /** | 1530 | /** |
1467 | * @ingroup crypto | 1531 | * @ingroup crypto |
1532 | * Create a new private key. | ||
1533 | * | ||
1534 | * @param[out] pk private key to initialize | ||
1535 | */ | ||
1536 | void | ||
1537 | GNUNET_CRYPTO_edx25519_key_create (struct GNUNET_CRYPTO_Edx25519PrivateKey *pk); | ||
1538 | |||
1539 | /** | ||
1540 | * @ingroup crypto | ||
1541 | * Create a new private key for Edx25519 from a given seed. After expanding | ||
1542 | * the seed, the first half of the key will be clamped according to EdDSA. | ||
1543 | * | ||
1544 | * @param seed seed input | ||
1545 | * @param seedsize size of the seed in bytes | ||
1546 | * @param[out] pk private key to initialize | ||
1547 | */ | ||
1548 | void | ||
1549 | GNUNET_CRYPTO_edx25519_key_create_from_seed ( | ||
1550 | const void *seed, | ||
1551 | size_t seedsize, | ||
1552 | struct GNUNET_CRYPTO_Edx25519PrivateKey *pk); | ||
1553 | |||
1554 | /** | ||
1555 | * @ingroup crypto | ||
1468 | * Create a new private key. Clear with #GNUNET_CRYPTO_ecdhe_key_clear(). | 1556 | * Create a new private key. Clear with #GNUNET_CRYPTO_ecdhe_key_clear(). |
1469 | * | 1557 | * |
1470 | * @param[out] pk set to fresh private key; | 1558 | * @param[out] pk set to fresh private key; |
@@ -1492,6 +1580,14 @@ GNUNET_CRYPTO_eddsa_key_clear (struct GNUNET_CRYPTO_EddsaPrivateKey *pk); | |||
1492 | void | 1580 | void |
1493 | GNUNET_CRYPTO_ecdsa_key_clear (struct GNUNET_CRYPTO_EcdsaPrivateKey *pk); | 1581 | GNUNET_CRYPTO_ecdsa_key_clear (struct GNUNET_CRYPTO_EcdsaPrivateKey *pk); |
1494 | 1582 | ||
1583 | /** | ||
1584 | * @ingroup crypto | ||
1585 | * Clear memory that was used to store a private key. | ||
1586 | * | ||
1587 | * @param pk location of the key | ||
1588 | */ | ||
1589 | void | ||
1590 | GNUNET_CRYPTO_edx25519_key_clear (struct GNUNET_CRYPTO_Edx25519PrivateKey *pk); | ||
1495 | 1591 | ||
1496 | /** | 1592 | /** |
1497 | * @ingroup crypto | 1593 | * @ingroup crypto |
@@ -1874,6 +1970,53 @@ GNUNET_CRYPTO_ecdsa_sign_ ( | |||
1874 | sig)); \ | 1970 | sig)); \ |
1875 | } while (0) | 1971 | } while (0) |
1876 | 1972 | ||
1973 | /** | ||
1974 | * @ingroup crypto | ||
1975 | * @brief Edx25519 sign a given block. | ||
1976 | * | ||
1977 | * The @a purpose data is the beginning of the data of which the signature is | ||
1978 | * to be created. The `size` field in @a purpose must correctly indicate the | ||
1979 | * number of bytes of the data structure, including its header. If possible, | ||
1980 | * use #GNUNET_CRYPTO_edx25519_sign() instead of this function (only if @a | ||
1981 | * validate is not fixed-size, you must use this function directly). | ||
1982 | * | ||
1983 | * @param priv private key to use for the signing | ||
1984 | * @param purpose what to sign (size, purpose) | ||
1985 | * @param[out] sig where to write the signature | ||
1986 | * @return #GNUNET_SYSERR on error, #GNUNET_OK on success | ||
1987 | */ | ||
1988 | enum GNUNET_GenericReturnValue | ||
1989 | GNUNET_CRYPTO_edx25519_sign_ ( | ||
1990 | const struct GNUNET_CRYPTO_Edx25519PrivateKey *priv, | ||
1991 | const struct GNUNET_CRYPTO_EccSignaturePurpose *purpose, | ||
1992 | struct GNUNET_CRYPTO_Edx25519Signature *sig); | ||
1993 | |||
1994 | |||
1995 | /** | ||
1996 | * @ingroup crypto | ||
1997 | * @brief Edx25519 sign a given block. The resulting signature is compatible | ||
1998 | * with EdDSA. | ||
1999 | * | ||
2000 | * The @a ps data must be a fixed-size struct for which the signature is to be | ||
2001 | * created. The `size` field in @a ps->purpose must correctly indicate the | ||
2002 | * number of bytes of the data structure, including its header. | ||
2003 | * | ||
2004 | * @param priv private key to use for the signing | ||
2005 | * @param ps packed struct with what to sign, MUST begin with a purpose | ||
2006 | * @param[out] sig where to write the signature | ||
2007 | */ | ||
2008 | #define GNUNET_CRYPTO_edx25519_sign(priv,ps,sig) do { \ | ||
2009 | /* check size is set correctly */ \ | ||
2010 | GNUNET_assert (ntohl ((ps)->purpose.size) == sizeof (*(ps))); \ | ||
2011 | /* check 'ps' begins with the purpose */ \ | ||
2012 | GNUNET_static_assert (((void*) (ps)) == \ | ||
2013 | ((void*) &(ps)->purpose)); \ | ||
2014 | GNUNET_assert (GNUNET_OK == \ | ||
2015 | GNUNET_CRYPTO_edx25519_sign_ (priv, \ | ||
2016 | &(ps)->purpose, \ | ||
2017 | sig)); \ | ||
2018 | } while (0) | ||
2019 | |||
1877 | 2020 | ||
1878 | /** | 2021 | /** |
1879 | * @ingroup crypto | 2022 | * @ingroup crypto |
@@ -1917,7 +2060,7 @@ GNUNET_CRYPTO_eddsa_verify_ ( | |||
1917 | */ | 2060 | */ |
1918 | #define GNUNET_CRYPTO_eddsa_verify(purp,ps,sig,pub) ({ \ | 2061 | #define GNUNET_CRYPTO_eddsa_verify(purp,ps,sig,pub) ({ \ |
1919 | /* check size is set correctly */ \ | 2062 | /* check size is set correctly */ \ |
1920 | GNUNET_assert (ntohl ((ps)->purpose.size) == sizeof (*(ps))); \ | 2063 | GNUNET_assert (ntohl ((ps)->purpose.size) == sizeof (*(ps))); \ |
1921 | /* check 'ps' begins with the purpose */ \ | 2064 | /* check 'ps' begins with the purpose */ \ |
1922 | GNUNET_static_assert (((void*) (ps)) == \ | 2065 | GNUNET_static_assert (((void*) (ps)) == \ |
1923 | ((void*) &(ps)->purpose)); \ | 2066 | ((void*) &(ps)->purpose)); \ |
@@ -1927,7 +2070,6 @@ GNUNET_CRYPTO_eddsa_verify_ ( | |||
1927 | pub); \ | 2070 | pub); \ |
1928 | }) | 2071 | }) |
1929 | 2072 | ||
1930 | |||
1931 | /** | 2073 | /** |
1932 | * @ingroup crypto | 2074 | * @ingroup crypto |
1933 | * @brief Verify ECDSA signature. | 2075 | * @brief Verify ECDSA signature. |
@@ -1982,6 +2124,58 @@ GNUNET_CRYPTO_ecdsa_verify_ ( | |||
1982 | 2124 | ||
1983 | /** | 2125 | /** |
1984 | * @ingroup crypto | 2126 | * @ingroup crypto |
2127 | * @brief Verify Edx25519 signature. | ||
2128 | * | ||
2129 | * The @a validate data is the beginning of the data of which the signature | ||
2130 | * is to be verified. The `size` field in @a validate must correctly indicate | ||
2131 | * the number of bytes of the data structure, including its header. If @a | ||
2132 | * purpose does not match the purpose given in @a validate (the latter must be | ||
2133 | * in big endian), signature verification fails. If possible, use | ||
2134 | * #GNUNET_CRYPTO_edx25519_verify() instead of this function (only if @a | ||
2135 | * validate is not fixed-size, you must use this function directly). | ||
2136 | * | ||
2137 | * @param purpose what is the purpose that the signature should have? | ||
2138 | * @param validate block to validate (size, purpose, data) | ||
2139 | * @param sig signature that is being validated | ||
2140 | * @param pub public key of the signer | ||
2141 | * @returns #GNUNET_OK if ok, #GNUNET_SYSERR if invalid | ||
2142 | */ | ||
2143 | enum GNUNET_GenericReturnValue | ||
2144 | GNUNET_CRYPTO_edx25519_verify_ ( | ||
2145 | uint32_t purpose, | ||
2146 | const struct GNUNET_CRYPTO_EccSignaturePurpose *validate, | ||
2147 | const struct GNUNET_CRYPTO_Edx25519Signature *sig, | ||
2148 | const struct GNUNET_CRYPTO_Edx25519PublicKey *pub); | ||
2149 | |||
2150 | |||
2151 | /** | ||
2152 | * @ingroup crypto | ||
2153 | * @brief Verify Edx25519 signature. | ||
2154 | * | ||
2155 | * The @a ps data must be a fixed-size struct for which the signature is to be | ||
2156 | * created. The `size` field in @a ps->purpose must correctly indicate the | ||
2157 | * number of bytes of the data structure, including its header. | ||
2158 | * | ||
2159 | * @param purp purpose of the signature, must match 'ps->purpose.purpose' | ||
2160 | * (except in host byte order) | ||
2161 | * @param priv private key to use for the signing | ||
2162 | * @param ps packed struct with what to sign, MUST begin with a purpose | ||
2163 | * @param sig where to write the signature | ||
2164 | */ | ||
2165 | #define GNUNET_CRYPTO_edx25519_verify(purp,ps,sig,pub) ({ \ | ||
2166 | /* check size is set correctly */ \ | ||
2167 | GNUNET_assert (ntohl ((ps)->purpose.size) == sizeof (*(ps))); \ | ||
2168 | /* check 'ps' begins with the purpose */ \ | ||
2169 | GNUNET_static_assert (((void*) (ps)) == \ | ||
2170 | ((void*) &(ps)->purpose)); \ | ||
2171 | GNUNET_CRYPTO_edx25519_verify_ (purp, \ | ||
2172 | &(ps)->purpose, \ | ||
2173 | sig, \ | ||
2174 | pub); \ | ||
2175 | }) | ||
2176 | |||
2177 | /** | ||
2178 | * @ingroup crypto | ||
1985 | * Derive a private key from a given private key and a label. | 2179 | * Derive a private key from a given private key and a label. |
1986 | * Essentially calculates a private key 'h = H(l,P) * d mod n' | 2180 | * Essentially calculates a private key 'h = H(l,P) * d mod n' |
1987 | * where n is the size of the ECC group and P is the public | 2181 | * where n is the size of the ECC group and P is the public |
@@ -2018,6 +2212,26 @@ GNUNET_CRYPTO_ecdsa_public_key_derive ( | |||
2018 | const char *context, | 2212 | const char *context, |
2019 | struct GNUNET_CRYPTO_EcdsaPublicKey *result); | 2213 | struct GNUNET_CRYPTO_EcdsaPublicKey *result); |
2020 | 2214 | ||
2215 | /** | ||
2216 | * This is a signature function for ECDSA which takes a | ||
2217 | * private key, derives/blinds it and signs the message. | ||
2218 | * | ||
2219 | * @param pkey original private key | ||
2220 | * @param label label to use for key deriviation | ||
2221 | * @param context additional context to use for HKDF of 'h'; | ||
2222 | * typically the name of the subsystem/application | ||
2223 | * @param purp the signature purpose | ||
2224 | * @param sig the resulting signature | ||
2225 | * @return GNUNET_OK on success | ||
2226 | */ | ||
2227 | enum GNUNET_GenericReturnValue | ||
2228 | GNUNET_CRYPTO_ecdsa_sign_derived ( | ||
2229 | const struct GNUNET_CRYPTO_EcdsaPrivateKey *pkey, | ||
2230 | const char *label, | ||
2231 | const char *context, | ||
2232 | const struct GNUNET_CRYPTO_EccSignaturePurpose *purpose, | ||
2233 | struct GNUNET_CRYPTO_EcdsaSignature *sig); | ||
2234 | |||
2021 | 2235 | ||
2022 | /** | 2236 | /** |
2023 | * @ingroup crypto | 2237 | * @ingroup crypto |
@@ -2063,23 +2277,23 @@ GNUNET_CRYPTO_eddsa_public_key_derive ( | |||
2063 | 2277 | ||
2064 | 2278 | ||
2065 | /** | 2279 | /** |
2066 | * This is a signature function for EdDSA which takes the | 2280 | * This is a signature function for EdDSA which takes a |
2067 | * secret scalar sk instead of the private seed which is | 2281 | * private key and derives it using the label and context |
2068 | * usually the case for crypto APIs. We require this functionality | 2282 | * before signing. |
2069 | * in order to use derived private keys for signatures we | ||
2070 | * cannot calculate the inverse of a sk to find the seed | ||
2071 | * efficiently. | ||
2072 | * | 2283 | * |
2073 | * The resulting signature is a standard EdDSA signature | 2284 | * @param pkey original private key |
2074 | * which can be verified using the usual APIs. | 2285 | * @param label label to use for key deriviation |
2075 | * | 2286 | * @param context additional context to use for HKDF of 'h'; |
2076 | * @param sk the secret scalar | 2287 | * typically the name of the subsystem/application |
2077 | * @param purp the signature purpose | 2288 | * @param purp the signature purpose |
2078 | * @param sig the resulting signature | 2289 | * @param sig the resulting signature |
2290 | * @return GNUNET_OK on success | ||
2079 | */ | 2291 | */ |
2080 | void | 2292 | enum GNUNET_GenericReturnValue |
2081 | GNUNET_CRYPTO_eddsa_sign_with_scalar ( | 2293 | GNUNET_CRYPTO_eddsa_sign_derived ( |
2082 | const struct GNUNET_CRYPTO_EddsaPrivateScalar *priv, | 2294 | const struct GNUNET_CRYPTO_EddsaPrivateKey *pkey, |
2295 | const char *label, | ||
2296 | const char *context, | ||
2083 | const struct GNUNET_CRYPTO_EccSignaturePurpose *purpose, | 2297 | const struct GNUNET_CRYPTO_EccSignaturePurpose *purpose, |
2084 | struct GNUNET_CRYPTO_EddsaSignature *sig); | 2298 | struct GNUNET_CRYPTO_EddsaSignature *sig); |
2085 | 2299 | ||
@@ -2095,6 +2309,43 @@ GNUNET_CRYPTO_eddsa_key_get_public_from_scalar ( | |||
2095 | const struct GNUNET_CRYPTO_EddsaPrivateScalar *s, | 2309 | const struct GNUNET_CRYPTO_EddsaPrivateScalar *s, |
2096 | struct GNUNET_CRYPTO_EddsaPublicKey *pkey); | 2310 | struct GNUNET_CRYPTO_EddsaPublicKey *pkey); |
2097 | 2311 | ||
2312 | /** | ||
2313 | * @ingroup crypto | ||
2314 | * Derive a private scalar from a given private key and a label. | ||
2315 | * Essentially calculates a private key 'h = H(l,P) * d mod n' | ||
2316 | * where n is the size of the ECC group and P is the public | ||
2317 | * key associated with the private key 'd'. | ||
2318 | * | ||
2319 | * @param priv original private key | ||
2320 | * @param seed input seed | ||
2321 | * @param seedsize size of the seed | ||
2322 | * @param result derived private key | ||
2323 | */ | ||
2324 | void | ||
2325 | GNUNET_CRYPTO_edx25519_private_key_derive ( | ||
2326 | const struct GNUNET_CRYPTO_Edx25519PrivateKey *priv, | ||
2327 | const void *seed, | ||
2328 | size_t seedsize, | ||
2329 | struct GNUNET_CRYPTO_Edx25519PrivateKey *result); | ||
2330 | |||
2331 | |||
2332 | /** | ||
2333 | * @ingroup crypto | ||
2334 | * Derive a public key from a given public key and a label. | ||
2335 | * Essentially calculates a public key 'V = H(l,P) * P'. | ||
2336 | * | ||
2337 | * @param pub original public key | ||
2338 | * @param seed input seed | ||
2339 | * @param seedsize size of the seed | ||
2340 | * @param result where to write the derived public key | ||
2341 | */ | ||
2342 | void | ||
2343 | GNUNET_CRYPTO_edx25519_public_key_derive ( | ||
2344 | const struct GNUNET_CRYPTO_Edx25519PublicKey *pub, | ||
2345 | const void *seed, | ||
2346 | size_t seedsize, | ||
2347 | struct GNUNET_CRYPTO_Edx25519PublicKey *result); | ||
2348 | |||
2098 | 2349 | ||
2099 | /** | 2350 | /** |
2100 | * Output the given MPI value to the given buffer in network | 2351 | * Output the given MPI value to the given buffer in network |
diff --git a/src/include/gnunet_messenger_service.h b/src/include/gnunet_messenger_service.h index 96d48b411..f8bbc7398 100644 --- a/src/include/gnunet_messenger_service.h +++ b/src/include/gnunet_messenger_service.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of GNUnet. | 2 | This file is part of GNUnet. |
3 | Copyright (C) 2020--2021 GNUnet e.V. | 3 | Copyright (C) 2020--2022 GNUnet e.V. |
4 | 4 | ||
5 | GNUnet is free software: you can redistribute it and/or modify it | 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 | 6 | under the terms of the GNU Affero General Public License as published |
@@ -96,6 +96,27 @@ struct GNUNET_MESSENGER_RoomEntryRecord | |||
96 | 96 | ||
97 | GNUNET_NETWORK_STRUCT_END | 97 | GNUNET_NETWORK_STRUCT_END |
98 | 98 | ||
99 | GNUNET_NETWORK_STRUCT_BEGIN | ||
100 | |||
101 | /** | ||
102 | * A room details record specifies a custom name for a given room and | ||
103 | * some additional space for flags. | ||
104 | */ | ||
105 | struct GNUNET_MESSENGER_RoomDetailsRecord | ||
106 | { | ||
107 | /** | ||
108 | * The custom name for the room. | ||
109 | */ | ||
110 | char name [256]; | ||
111 | |||
112 | /** | ||
113 | * The flags of the room. | ||
114 | */ | ||
115 | uint32_t flags; | ||
116 | }; | ||
117 | |||
118 | GNUNET_NETWORK_STRUCT_END | ||
119 | |||
99 | /** | 120 | /** |
100 | * Enum for the different supported kinds of messages | 121 | * Enum for the different supported kinds of messages |
101 | */ | 122 | */ |
diff --git a/src/include/gnunet_namestore_plugin.h b/src/include/gnunet_namestore_plugin.h index 9cc8abc6e..3dca5a853 100644 --- a/src/include/gnunet_namestore_plugin.h +++ b/src/include/gnunet_namestore_plugin.h | |||
@@ -150,6 +150,71 @@ struct GNUNET_NAMESTORE_PluginFunctions | |||
150 | const struct GNUNET_IDENTITY_PublicKey *value_zone, | 150 | const struct GNUNET_IDENTITY_PublicKey *value_zone, |
151 | GNUNET_NAMESTORE_RecordIterator iter, | 151 | GNUNET_NAMESTORE_RecordIterator iter, |
152 | void *iter_cls); | 152 | void *iter_cls); |
153 | |||
154 | /** Transaction-based API draft **/ | ||
155 | |||
156 | /** | ||
157 | * Start a transaction in the database | ||
158 | * | ||
159 | * @param cls closure (internal context for the plugin) | ||
160 | * @return #GNUNET_OK on success, #GNUNET_NO if there were no results, #GNUNET_SYSERR on error | ||
161 | */ | ||
162 | enum GNUNET_GenericReturnValue | ||
163 | (*transaction_begin) (void *cls); | ||
164 | |||
165 | /** | ||
166 | * Abort a transaction in the database | ||
167 | * | ||
168 | * @param cls closure (internal context for the plugin) | ||
169 | * @return #GNUNET_OK on success, #GNUNET_NO if there were no results, #GNUNET_SYSERR on error | ||
170 | */ | ||
171 | enum GNUNET_GenericReturnValue | ||
172 | (*transaction_abort) (void *cls); | ||
173 | |||
174 | /** | ||
175 | * Commit a transaction in the database | ||
176 | * | ||
177 | * @param cls closure (internal context for the plugin) | ||
178 | * @return #GNUNET_OK on success, #GNUNET_NO if there were no results, #GNUNET_SYSERR on error | ||
179 | */ | ||
180 | enum GNUNET_GenericReturnValue | ||
181 | (*transaction_commit) (void *cls); | ||
182 | |||
183 | /** | ||
184 | * Replace a record in the datastore for which we are the authority. | ||
185 | * Removes any existing record in the same zone with the same name. | ||
186 | * | ||
187 | * @param cls closure (internal context for the plugin) | ||
188 | * @param zone private key of the zone | ||
189 | * @param label name of the record in the zone | ||
190 | * @param rd_count number of entries in @a rd array, 0 to delete all records | ||
191 | * @param rd array of records with data to store | ||
192 | * @return #GNUNET_OK on success, else #GNUNET_SYSERR | ||
193 | */ | ||
194 | int | ||
195 | (*replace_records) (void *cls, | ||
196 | const struct GNUNET_IDENTITY_PrivateKey *zone, | ||
197 | const char *label, | ||
198 | unsigned int rd_count, | ||
199 | const struct GNUNET_GNSRECORD_Data *rd); | ||
200 | |||
201 | /** | ||
202 | * Lookup records in the datastore for which we are the authority. | ||
203 | * | ||
204 | * @param cls closure (internal context for the plugin) | ||
205 | * @param zone private key of the zone | ||
206 | * @param label name of the record in the zone | ||
207 | * @param iter function to call with the result | ||
208 | * @param iter_cls closure for @a iter | ||
209 | * @return #GNUNET_OK on success, #GNUNET_NO for no results, else #GNUNET_SYSERR | ||
210 | */ | ||
211 | int | ||
212 | (*select_records) (void *cls, | ||
213 | const struct GNUNET_IDENTITY_PrivateKey *zone, | ||
214 | const char *label, | ||
215 | GNUNET_NAMESTORE_RecordIterator iter, | ||
216 | void *iter_cls); | ||
217 | |||
153 | }; | 218 | }; |
154 | 219 | ||
155 | 220 | ||
diff --git a/src/include/gnunet_namestore_service.h b/src/include/gnunet_namestore_service.h index 619b81aed..86572803f 100644 --- a/src/include/gnunet_namestore_service.h +++ b/src/include/gnunet_namestore_service.h | |||
@@ -212,61 +212,6 @@ GNUNET_NAMESTORE_records_lookup (struct GNUNET_NAMESTORE_Handle *h, | |||
212 | 212 | ||
213 | 213 | ||
214 | /** | 214 | /** |
215 | * Open a record set for editing. | ||
216 | * Retrieves an exclusive lock on this set. | ||
217 | * Must be commited using @a GNUNET_NAMESTORE_records_commit | ||
218 | * | ||
219 | * @param h handle to the namestore | ||
220 | * @param pkey private key of the zone | ||
221 | * @param label name that is being mapped | ||
222 | * @param error_cb function to call on error (i.e. disconnect or unable to get lock) | ||
223 | * the handle is afterwards invalid | ||
224 | * @param error_cb_cls closure for @a error_cb | ||
225 | * @param rm function to call with the result (with 0 records if we don't have that label) | ||
226 | * @param rm_cls closure for @a rm | ||
227 | * @return handle to abort the request | ||
228 | */ | ||
229 | struct GNUNET_NAMESTORE_QueueEntry * | ||
230 | GNUNET_NAMESTORE_records_open (struct GNUNET_NAMESTORE_Handle *h, | ||
231 | const struct | ||
232 | GNUNET_IDENTITY_PrivateKey *pkey, | ||
233 | const char *label, | ||
234 | GNUNET_SCHEDULER_TaskCallback error_cb, | ||
235 | void *error_cb_cls, | ||
236 | GNUNET_NAMESTORE_RecordMonitor rm, | ||
237 | void *rm_cls); | ||
238 | |||
239 | /** | ||
240 | * Commit the record set to the namestore. | ||
241 | * Releases the lock on the record set. | ||
242 | * Use an empty array to | ||
243 | * remove all records under the given name. | ||
244 | * | ||
245 | * The continuation is called after the value has been stored in the | ||
246 | * database. Monitors may be notified asynchronously (basically with | ||
247 | * a buffer). However, if any monitor is consistently too slow to | ||
248 | * keep up with the changes, calling @a cont will be delayed until the | ||
249 | * monitors do keep up. | ||
250 | * | ||
251 | * @param h handle to the namestore | ||
252 | * @param pkey private key of the zone | ||
253 | * @param label name that is being mapped | ||
254 | * @param rd_count number of records in the 'rd' array | ||
255 | * @param rd array of records with data to store | ||
256 | * @param cont continuation to call when done | ||
257 | * @param cont_cls closure for @a cont | ||
258 | * @return handle to abort the request | ||
259 | */ | ||
260 | struct GNUNET_NAMESTORE_QueueEntry * | ||
261 | GNUNET_NAMESTORE_records_commit (struct GNUNET_NAMESTORE_Handle *h, | ||
262 | const struct GNUNET_IDENTITY_PrivateKey *pkey, | ||
263 | const char *label, | ||
264 | unsigned int rd_count, | ||
265 | const struct GNUNET_GNSRECORD_Data *rd, | ||
266 | GNUNET_NAMESTORE_ContinuationWithStatus cont, | ||
267 | void *cont_cls); | ||
268 | |||
269 | /** | ||
270 | * Look for an existing PKEY delegation record for a given public key. | 215 | * Look for an existing PKEY delegation record for a given public key. |
271 | * Returns at most one result to the processor. | 216 | * Returns at most one result to the processor. |
272 | * | 217 | * |
@@ -448,6 +393,107 @@ void | |||
448 | GNUNET_NAMESTORE_zone_monitor_stop (struct GNUNET_NAMESTORE_ZoneMonitor *zm); | 393 | GNUNET_NAMESTORE_zone_monitor_stop (struct GNUNET_NAMESTORE_ZoneMonitor *zm); |
449 | 394 | ||
450 | 395 | ||
396 | /** | ||
397 | * New API draft. Experimental | ||
398 | */ | ||
399 | |||
400 | /** | ||
401 | * Begin a namestore transaction. | ||
402 | * | ||
403 | * @param h handle to the namestore | ||
404 | * @param error_cb function to call on error (i.e. disconnect or unable to get lock) | ||
405 | * the handle is afterwards invalid | ||
406 | * @param error_cb_cls closure for @a error_cb | ||
407 | * @return handle to abort the request | ||
408 | */ | ||
409 | struct GNUNET_NAMESTORE_QueueEntry * | ||
410 | GNUNET_NAMESTORE_transaction_begin (struct GNUNET_NAMESTORE_Handle *h, | ||
411 | GNUNET_SCHEDULER_TaskCallback error_cb, | ||
412 | void *error_cb_cls); | ||
413 | |||
414 | /** | ||
415 | * Begin rollback all actions in a transaction. | ||
416 | * Reverts all actions performed since #GNUNET_NAMESTORE_transaction_begin | ||
417 | * | ||
418 | * @param h handle to the namestore | ||
419 | * @param error_cb function to call on error (i.e. disconnect or unable to get lock) | ||
420 | * the handle is afterwards invalid | ||
421 | * @param error_cb_cls closure for @a error_cb | ||
422 | * @return handle to abort the request | ||
423 | */ | ||
424 | struct GNUNET_NAMESTORE_QueueEntry * | ||
425 | GNUNET_NAMESTORE_transaction_abort (struct GNUNET_NAMESTORE_Handle *h, | ||
426 | GNUNET_SCHEDULER_TaskCallback error_cb, | ||
427 | void *error_cb_cls); | ||
428 | /** | ||
429 | * Commit a namestore transaction. | ||
430 | * Saves all actions performed since #GNUNET_NAMESTORE_transaction_begin | ||
431 | * | ||
432 | * @param h handle to the namestore | ||
433 | * @param error_cb function to call on error (i.e. disconnect or unable to get lock) | ||
434 | * the handle is afterwards invalid | ||
435 | * @param error_cb_cls closure for @a error_cb | ||
436 | * @return handle to abort the request | ||
437 | */ | ||
438 | struct GNUNET_NAMESTORE_QueueEntry * | ||
439 | GNUNET_NAMESTORE_transaction_commit (struct GNUNET_NAMESTORE_Handle *h, | ||
440 | GNUNET_SCHEDULER_TaskCallback error_cb, | ||
441 | void *error_cb_cls); | ||
442 | |||
443 | /** | ||
444 | * Lookup an item in the namestore. | ||
445 | * | ||
446 | * @param h handle to the namestore | ||
447 | * @param pkey private key of the zone | ||
448 | * @param label name that is being mapped | ||
449 | * @param error_cb function to call on error (i.e. disconnect) | ||
450 | * the handle is afterwards invalid | ||
451 | * @param error_cb_cls closure for @a error_cb | ||
452 | * @param rm function to call with the result (with 0 records if we don't have that label); | ||
453 | * the handle is afterwards invalid | ||
454 | * @param rm_cls closure for @a rm | ||
455 | * @return handle to abort the request | ||
456 | */ | ||
457 | struct GNUNET_NAMESTORE_QueueEntry * | ||
458 | GNUNET_NAMESTORE_records_select (struct GNUNET_NAMESTORE_Handle *h, | ||
459 | const struct | ||
460 | GNUNET_IDENTITY_PrivateKey *pkey, | ||
461 | const char *label, | ||
462 | GNUNET_SCHEDULER_TaskCallback error_cb, | ||
463 | void *error_cb_cls, | ||
464 | GNUNET_NAMESTORE_RecordMonitor rm, | ||
465 | void *rm_cls); | ||
466 | |||
467 | |||
468 | /** | ||
469 | * Creates, deletes or updates an item in the namestore. | ||
470 | * If the item is already present, it is replaced with the new record set. | ||
471 | * Use an empty array to remove all records under the given name. | ||
472 | * | ||
473 | * The continuation is called after the value has been stored in the | ||
474 | * database. Monitors may be notified asynchronously (basically with | ||
475 | * a buffer). However, if any monitor is consistently too slow to | ||
476 | * keep up with the changes, calling @a cont will be delayed until the | ||
477 | * monitors do keep up. | ||
478 | * | ||
479 | * @param h handle to the namestore | ||
480 | * @param pkey private key of the zone | ||
481 | * @param label name that is being mapped | ||
482 | * @param rd_count number of records in the 'rd' array | ||
483 | * @param rd array of records with data to store | ||
484 | * @param cont continuation to call when done | ||
485 | * @param cont_cls closure for @a cont | ||
486 | * @return handle to abort the request | ||
487 | */ | ||
488 | struct GNUNET_NAMESTORE_QueueEntry * | ||
489 | GNUNET_NAMESTORE_records_replace (struct GNUNET_NAMESTORE_Handle *h, | ||
490 | const struct GNUNET_IDENTITY_PrivateKey *pkey, | ||
491 | const char *label, | ||
492 | unsigned int rd_count, | ||
493 | const struct GNUNET_GNSRECORD_Data *rd, | ||
494 | GNUNET_NAMESTORE_ContinuationWithStatus cont, | ||
495 | void *cont_cls); | ||
496 | |||
451 | #if 0 /* keep Emacsens' auto-indent happy */ | 497 | #if 0 /* keep Emacsens' auto-indent happy */ |
452 | { | 498 | { |
453 | #endif | 499 | #endif |
diff --git a/src/include/gnunet_time_lib.h b/src/include/gnunet_time_lib.h index 96413c3cc..d59eb984d 100644 --- a/src/include/gnunet_time_lib.h +++ b/src/include/gnunet_time_lib.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of GNUnet. | 2 | This file is part of GNUnet. |
3 | Copyright (C) 2001-2013 GNUnet e.V. | 3 | Copyright (C) 2001-2022 GNUnet e.V. |
4 | 4 | ||
5 | GNUnet is free software: you can redistribute it and/or modify it | 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 | 6 | under the terms of the GNU Affero General Public License as published |
@@ -482,6 +482,18 @@ GNUNET_TIME_absolute_max (struct GNUNET_TIME_Absolute t1, | |||
482 | 482 | ||
483 | 483 | ||
484 | /** | 484 | /** |
485 | * Round down absolute time @a at to multiple of @a rt. | ||
486 | * | ||
487 | * @param at absolute time to round | ||
488 | * @param rt multiple to round to (non-zero) | ||
489 | * @return rounded time | ||
490 | */ | ||
491 | struct GNUNET_TIME_Absolute | ||
492 | GNUNET_TIME_absolute_round_down (struct GNUNET_TIME_Absolute at, | ||
493 | struct GNUNET_TIME_Relative rt); | ||
494 | |||
495 | |||
496 | /** | ||
485 | * Return the maximum of two timestamps. | 497 | * Return the maximum of two timestamps. |
486 | * | 498 | * |
487 | * @param t1 first timestamp | 499 | * @param t1 first timestamp |
@@ -517,6 +529,21 @@ GNUNET_TIME_absolute_get_remaining (struct GNUNET_TIME_Absolute future); | |||
517 | 529 | ||
518 | 530 | ||
519 | /** | 531 | /** |
532 | * Test if @a a1 and @a a2 are equal within a margin of | ||
533 | * error of @a t. | ||
534 | * | ||
535 | * @param a1 time to compare | ||
536 | * @param a2 time to compare | ||
537 | * @param t tolerance to apply | ||
538 | * @return true if "|a1-a2|<=t" holds. | ||
539 | */ | ||
540 | bool | ||
541 | GNUNET_TIME_absolute_approx_eq (struct GNUNET_TIME_Absolute a1, | ||
542 | struct GNUNET_TIME_Absolute a2, | ||
543 | struct GNUNET_TIME_Relative t); | ||
544 | |||
545 | |||
546 | /** | ||
520 | * Calculate the estimate time of arrival/completion | 547 | * Calculate the estimate time of arrival/completion |
521 | * for an operation. | 548 | * for an operation. |
522 | * | 549 | * |
diff --git a/src/messenger/plugin_gnsrecord_messenger.c b/src/messenger/plugin_gnsrecord_messenger.c index 2219f0bde..e09a0330d 100644 --- a/src/messenger/plugin_gnsrecord_messenger.c +++ b/src/messenger/plugin_gnsrecord_messenger.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of GNUnet. | 2 | This file is part of GNUnet. |
3 | Copyright (C) 2021 GNUnet e.V. | 3 | Copyright (C) 2021--2022 GNUnet e.V. |
4 | 4 | ||
5 | GNUnet is free software: you can redistribute it and/or modify it | 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 | 6 | under the terms of the GNU Affero General Public License as published |
@@ -63,12 +63,30 @@ messenger_value_to_string (void *cls, | |||
63 | char *key = GNUNET_STRINGS_data_to_string_alloc (&(record->key), sizeof(struct GNUNET_HashCode)); | 63 | char *key = GNUNET_STRINGS_data_to_string_alloc (&(record->key), sizeof(struct GNUNET_HashCode)); |
64 | 64 | ||
65 | char *ret; | 65 | char *ret; |
66 | GNUNET_asprintf (&ret, "%s-%s", door, key); | 66 | GNUNET_asprintf (&ret, "%s-%s", key, door); |
67 | GNUNET_free (key); | 67 | GNUNET_free (key); |
68 | GNUNET_free (door); | 68 | GNUNET_free (door); |
69 | return ret; | 69 | return ret; |
70 | } | 70 | } |
71 | case GNUNET_GNSRECORD_TYPE_MESSENGER_ROOM_DETAILS: | ||
72 | { | ||
73 | if (data_size != sizeof(struct GNUNET_MESSENGER_RoomDetailsRecord)) | ||
74 | { | ||
75 | GNUNET_break_op (0); | ||
76 | return NULL; | ||
77 | } | ||
78 | |||
79 | const struct GNUNET_MESSENGER_RoomDetailsRecord *record = data; | ||
71 | 80 | ||
81 | char *name = GNUNET_strndup(record->name, 256); | ||
82 | char *flags = GNUNET_STRINGS_data_to_string_alloc (&(record->flags), sizeof(uint32_t)); | ||
83 | |||
84 | char *ret; | ||
85 | GNUNET_asprintf (&ret, "%s-%s", flags, name); | ||
86 | GNUNET_free (flags); | ||
87 | GNUNET_free (name); | ||
88 | return ret; | ||
89 | } | ||
72 | default: | 90 | default: |
73 | return NULL; | 91 | return NULL; |
74 | } | 92 | } |
@@ -141,7 +159,43 @@ messenger_string_to_value (void *cls, | |||
141 | *data_size = sizeof(struct GNUNET_MESSENGER_RoomEntryRecord); | 159 | *data_size = sizeof(struct GNUNET_MESSENGER_RoomEntryRecord); |
142 | return GNUNET_OK; | 160 | return GNUNET_OK; |
143 | } | 161 | } |
162 | case GNUNET_GNSRECORD_TYPE_MESSENGER_ROOM_DETAILS: | ||
163 | { | ||
164 | char flags [7]; | ||
165 | const char *dash; | ||
166 | |||
167 | if ((NULL == (dash = strchr (s, '-'))) || | ||
168 | (1 != sscanf (s, "%7s-", flags)) || | ||
169 | (strlen (dash + 1) > 256)) | ||
170 | { | ||
171 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | ||
172 | _ ("Unable to parse MESSENGER_ROOM_DETAILS record `%s'\n"), | ||
173 | s); | ||
174 | return GNUNET_SYSERR; | ||
175 | } | ||
176 | |||
177 | struct GNUNET_MESSENGER_RoomDetailsRecord *record = GNUNET_new ( | ||
178 | struct GNUNET_MESSENGER_RoomDetailsRecord | ||
179 | ); | ||
180 | |||
181 | if (GNUNET_OK != GNUNET_STRINGS_string_to_data (flags, | ||
182 | strlen (flags), | ||
183 | &(record->flags), | ||
184 | sizeof(uint32_t))) | ||
185 | { | ||
186 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | ||
187 | _ ("Unable to parse MESSENGER_ROOM_DETAILS record `%s'\n"), | ||
188 | s); | ||
189 | GNUNET_free (record); | ||
190 | return GNUNET_SYSERR; | ||
191 | } | ||
144 | 192 | ||
193 | GNUNET_memcpy(record->name, dash + 1, strlen(dash + 1)); | ||
194 | |||
195 | *data = record; | ||
196 | *data_size = sizeof(struct GNUNET_MESSENGER_RoomDetailsRecord); | ||
197 | return GNUNET_OK; | ||
198 | } | ||
145 | default: | 199 | default: |
146 | return GNUNET_SYSERR; | 200 | return GNUNET_SYSERR; |
147 | } | 201 | } |
@@ -158,6 +212,7 @@ static struct | |||
158 | uint32_t number; | 212 | uint32_t number; |
159 | } name_map[] = { | 213 | } name_map[] = { |
160 | { "MESSENGER_ROOM_ENTRY", GNUNET_GNSRECORD_TYPE_MESSENGER_ROOM_ENTRY }, | 214 | { "MESSENGER_ROOM_ENTRY", GNUNET_GNSRECORD_TYPE_MESSENGER_ROOM_ENTRY }, |
215 | { "MESSENGER_ROOM_DETAILS", GNUNET_GNSRECORD_TYPE_MESSENGER_ROOM_DETAILS }, | ||
161 | { NULL, UINT32_MAX } | 216 | { NULL, UINT32_MAX } |
162 | }; | 217 | }; |
163 | 218 | ||
diff --git a/src/namestore/Makefile.am b/src/namestore/Makefile.am index 2441b864a..51708dd67 100644 --- a/src/namestore/Makefile.am +++ b/src/namestore/Makefile.am | |||
@@ -39,7 +39,6 @@ if HAVE_SQLITE | |||
39 | SQLITE_PLUGIN = libgnunet_plugin_namestore_sqlite.la | 39 | SQLITE_PLUGIN = libgnunet_plugin_namestore_sqlite.la |
40 | SQLITE_TESTS = test_plugin_namestore_sqlite \ | 40 | SQLITE_TESTS = test_plugin_namestore_sqlite \ |
41 | test_namestore_api_store_sqlite \ | 41 | test_namestore_api_store_sqlite \ |
42 | test_namestore_api_store_locking_sqlite \ | ||
43 | test_namestore_api_store_update_sqlite \ | 42 | test_namestore_api_store_update_sqlite \ |
44 | test_namestore_api_zone_iteration_sqlite \ | 43 | test_namestore_api_zone_iteration_sqlite \ |
45 | test_namestore_api_remove_sqlite \ | 44 | test_namestore_api_remove_sqlite \ |
@@ -250,16 +249,6 @@ test_namestore_api_store_sqlite_LDADD = \ | |||
250 | $(top_builddir)/src/identity/libgnunetidentity.la \ | 249 | $(top_builddir)/src/identity/libgnunetidentity.la \ |
251 | libgnunetnamestore.la | 250 | libgnunetnamestore.la |
252 | 251 | ||
253 | test_namestore_api_store_locking_sqlite_SOURCES = \ | ||
254 | test_namestore_api_store_locking.c | ||
255 | test_namestore_api_store_locking_sqlite_LDADD = \ | ||
256 | $(top_builddir)/src/testing/libgnunettesting.la \ | ||
257 | $(top_builddir)/src/util/libgnunetutil.la \ | ||
258 | $(top_builddir)/src/gnsrecord/libgnunetgnsrecord.la \ | ||
259 | $(top_builddir)/src/identity/libgnunetidentity.la \ | ||
260 | libgnunetnamestore.la | ||
261 | |||
262 | |||
263 | test_namestore_api_store_postgres_SOURCES = \ | 252 | test_namestore_api_store_postgres_SOURCES = \ |
264 | test_namestore_api_store.c | 253 | test_namestore_api_store.c |
265 | test_namestore_api_store_postgres_LDADD = \ | 254 | test_namestore_api_store_postgres_LDADD = \ |
diff --git a/src/namestore/gnunet-service-namestore.c b/src/namestore/gnunet-service-namestore.c index d735822fb..95260ff9c 100644 --- a/src/namestore/gnunet-service-namestore.c +++ b/src/namestore/gnunet-service-namestore.c | |||
@@ -122,24 +122,6 @@ struct ZoneIteration | |||
122 | }; | 122 | }; |
123 | 123 | ||
124 | /** | 124 | /** |
125 | * Lock on a record set | ||
126 | */ | ||
127 | struct RecordsLock | ||
128 | { | ||
129 | /* DLL */ | ||
130 | struct RecordsLock *prev; | ||
131 | |||
132 | /* DLL */ | ||
133 | struct RecordsLock *next; | ||
134 | |||
135 | /* Hash of the locked label */ | ||
136 | struct GNUNET_HashCode label_hash; | ||
137 | |||
138 | /* Client locking the zone */ | ||
139 | struct NamestoreClient *client; | ||
140 | }; | ||
141 | |||
142 | /** | ||
143 | * A namestore client | 125 | * A namestore client |
144 | */ | 126 | */ |
145 | struct NamestoreClient | 127 | struct NamestoreClient |
@@ -411,16 +393,6 @@ static struct StoreActivity *sa_head; | |||
411 | static struct StoreActivity *sa_tail; | 393 | static struct StoreActivity *sa_tail; |
412 | 394 | ||
413 | /** | 395 | /** |
414 | * Head of the DLL of record set locks | ||
415 | */ | ||
416 | static struct RecordsLock *locks_head; | ||
417 | |||
418 | /** | ||
419 | * Tail of the DLL of record set locks | ||
420 | */ | ||
421 | static struct RecordsLock *locks_tail; | ||
422 | |||
423 | /** | ||
424 | * Notification context shared by all monitors. | 396 | * Notification context shared by all monitors. |
425 | */ | 397 | */ |
426 | static struct GNUNET_NotificationContext *monitor_nc; | 398 | static struct GNUNET_NotificationContext *monitor_nc; |
@@ -447,7 +419,6 @@ static void | |||
447 | cleanup_task (void *cls) | 419 | cleanup_task (void *cls) |
448 | { | 420 | { |
449 | struct CacheOperation *cop; | 421 | struct CacheOperation *cop; |
450 | struct RecordsLock *lock; | ||
451 | 422 | ||
452 | (void) cls; | 423 | (void) cls; |
453 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Stopping namestore service\n"); | 424 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Stopping namestore service\n"); |
@@ -459,13 +430,6 @@ cleanup_task (void *cls) | |||
459 | GNUNET_CONTAINER_DLL_remove (cop_head, cop_tail, cop); | 430 | GNUNET_CONTAINER_DLL_remove (cop_head, cop_tail, cop); |
460 | GNUNET_free (cop); | 431 | GNUNET_free (cop); |
461 | } | 432 | } |
462 | while (NULL != (lock = locks_head)) | ||
463 | { | ||
464 | GNUNET_CONTAINER_DLL_remove (locks_head, | ||
465 | locks_tail, | ||
466 | lock); | ||
467 | GNUNET_free (lock); | ||
468 | } | ||
469 | 433 | ||
470 | if (NULL != namecache) | 434 | if (NULL != namecache) |
471 | { | 435 | { |
@@ -1154,7 +1118,6 @@ client_disconnect_cb (void *cls, | |||
1154 | struct NamestoreClient *nc = app_ctx; | 1118 | struct NamestoreClient *nc = app_ctx; |
1155 | struct ZoneIteration *no; | 1119 | struct ZoneIteration *no; |
1156 | struct CacheOperation *cop; | 1120 | struct CacheOperation *cop; |
1157 | struct RecordsLock *lock; | ||
1158 | 1121 | ||
1159 | (void) cls; | 1122 | (void) cls; |
1160 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Client %p disconnected\n", client); | 1123 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Client %p disconnected\n", client); |
@@ -1205,15 +1168,6 @@ client_disconnect_cb (void *cls, | |||
1205 | for (cop = cop_head; NULL != cop; cop = cop->next) | 1168 | for (cop = cop_head; NULL != cop; cop = cop->next) |
1206 | if (nc == cop->nc) | 1169 | if (nc == cop->nc) |
1207 | cop->nc = NULL; | 1170 | cop->nc = NULL; |
1208 | for (lock = locks_head; NULL != lock; lock = lock->next) | ||
1209 | { | ||
1210 | if (nc != lock->client) | ||
1211 | continue; | ||
1212 | GNUNET_CONTAINER_DLL_remove (locks_head, | ||
1213 | locks_tail, | ||
1214 | lock); | ||
1215 | GNUNET_free (lock); | ||
1216 | } | ||
1217 | GNUNET_free (nc); | 1171 | GNUNET_free (nc); |
1218 | } | 1172 | } |
1219 | 1173 | ||
@@ -1407,105 +1361,6 @@ check_record_lookup (void *cls, const struct LabelLookupMessage *ll_msg) | |||
1407 | return GNUNET_OK; | 1361 | return GNUNET_OK; |
1408 | } | 1362 | } |
1409 | 1363 | ||
1410 | static void | ||
1411 | calculate_lock_hash (const char *label, | ||
1412 | const struct GNUNET_IDENTITY_PrivateKey *zone, | ||
1413 | struct GNUNET_HashCode *result) | ||
1414 | { | ||
1415 | struct GNUNET_HashContext *hctx; | ||
1416 | |||
1417 | hctx = GNUNET_CRYPTO_hash_context_start (); | ||
1418 | GNUNET_CRYPTO_hash_context_read (hctx, label, strlen (label)); | ||
1419 | GNUNET_CRYPTO_hash_context_read (hctx, zone, | ||
1420 | sizeof (*zone)); | ||
1421 | GNUNET_CRYPTO_hash_context_finish (hctx, result); | ||
1422 | } | ||
1423 | |||
1424 | /** | ||
1425 | * Release a lock on a record set. | ||
1426 | * Does nothing if lock not held. | ||
1427 | * | ||
1428 | * @param label the label of the record set | ||
1429 | * @param zone the zone | ||
1430 | * @param nc the client releasing the lock | ||
1431 | */ | ||
1432 | static void | ||
1433 | NST_label_lock_release (const char *label, | ||
1434 | const struct GNUNET_IDENTITY_PrivateKey *zone, | ||
1435 | const struct NamestoreClient *nc) | ||
1436 | { | ||
1437 | struct GNUNET_HashCode label_hash; | ||
1438 | struct RecordsLock *lock; | ||
1439 | |||
1440 | calculate_lock_hash (label, zone, &label_hash); | ||
1441 | for (lock = locks_head; NULL != lock; lock = lock->next) | ||
1442 | if (0 == memcmp (&label_hash, &lock->label_hash, sizeof (label_hash))) | ||
1443 | break; | ||
1444 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1445 | "Record locked: %s\n", (NULL == lock) ? "No" : "Yes"); | ||
1446 | if (NULL == lock) | ||
1447 | return; | ||
1448 | if (lock->client != nc) | ||
1449 | { | ||
1450 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
1451 | "Lock is held by other client on `%s'\n", label); | ||
1452 | return; | ||
1453 | } | ||
1454 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1455 | "Unocking %s\n", GNUNET_h2s (&label_hash)); | ||
1456 | GNUNET_CONTAINER_DLL_remove (locks_head, | ||
1457 | locks_tail, | ||
1458 | lock); | ||
1459 | GNUNET_free (lock); | ||
1460 | } | ||
1461 | |||
1462 | /** | ||
1463 | * Get/set a lock on a record set. | ||
1464 | * May be called multiple times but will | ||
1465 | * not aquire additional locks. | ||
1466 | * | ||
1467 | * @param the label of the record set | ||
1468 | * @param the zone | ||
1469 | * @param the client doing the locking | ||
1470 | * @return GNUNET_YES if lock retrieved or set already. | ||
1471 | */ | ||
1472 | static enum GNUNET_GenericReturnValue | ||
1473 | NST_label_lock (const char *label, | ||
1474 | const struct GNUNET_IDENTITY_PrivateKey *zone, | ||
1475 | struct NamestoreClient *nc) | ||
1476 | { | ||
1477 | struct GNUNET_HashCode label_hash; | ||
1478 | struct RecordsLock *lock; | ||
1479 | |||
1480 | calculate_lock_hash (label, zone, &label_hash); | ||
1481 | for (lock = locks_head; NULL != lock; lock = lock->next) | ||
1482 | if (0 == memcmp (&label_hash, &lock->label_hash, sizeof (label_hash))) | ||
1483 | break; | ||
1484 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1485 | "Record locked: %s\n", (NULL == lock) ? "No" : "Yes"); | ||
1486 | if (NULL != lock) | ||
1487 | { | ||
1488 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1489 | "Client holds lock: %s\n", (lock->client != nc) ? "No" : "Yes"); | ||
1490 | if (lock->client != nc) | ||
1491 | { | ||
1492 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
1493 | "Lock is held by other client on `%s'\n", label); | ||
1494 | return GNUNET_NO; | ||
1495 | } | ||
1496 | return GNUNET_YES; | ||
1497 | } | ||
1498 | lock = GNUNET_new (struct RecordsLock); | ||
1499 | lock->client = nc; | ||
1500 | memcpy (&lock->label_hash, &label_hash, sizeof (label_hash)); | ||
1501 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1502 | "Locking %s\n", GNUNET_h2s (&label_hash)); | ||
1503 | GNUNET_CONTAINER_DLL_insert (locks_head, | ||
1504 | locks_tail, | ||
1505 | lock); | ||
1506 | return GNUNET_YES; | ||
1507 | } | ||
1508 | |||
1509 | 1364 | ||
1510 | /** | 1365 | /** |
1511 | * Handles a #GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_LOOKUP message | 1366 | * Handles a #GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_LOOKUP message |
@@ -1520,7 +1375,6 @@ handle_record_lookup (void *cls, const struct LabelLookupMessage *ll_msg) | |||
1520 | struct GNUNET_MQ_Envelope *env; | 1375 | struct GNUNET_MQ_Envelope *env; |
1521 | struct LabelLookupResponseMessage *llr_msg; | 1376 | struct LabelLookupResponseMessage *llr_msg; |
1522 | struct RecordLookupContext rlc; | 1377 | struct RecordLookupContext rlc; |
1523 | struct RecordsLock *lock; | ||
1524 | struct GNUNET_HashCode label_hash; | 1378 | struct GNUNET_HashCode label_hash; |
1525 | const char *name_tmp; | 1379 | const char *name_tmp; |
1526 | char *res_name; | 1380 | char *res_name; |
@@ -1544,28 +1398,6 @@ handle_record_lookup (void *cls, const struct LabelLookupMessage *ll_msg) | |||
1544 | return; | 1398 | return; |
1545 | } | 1399 | } |
1546 | name_len = strlen (conv_name) + 1; | 1400 | name_len = strlen (conv_name) + 1; |
1547 | if (GNUNET_YES == ntohl (ll_msg->locking)) | ||
1548 | { | ||
1549 | if (GNUNET_NO == NST_label_lock (conv_name, &ll_msg->zone, nc)) | ||
1550 | { | ||
1551 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
1552 | "Lock is held by other client on `%s'\n", conv_name); | ||
1553 | env = | ||
1554 | GNUNET_MQ_msg_extra (llr_msg, | ||
1555 | name_len, | ||
1556 | GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_LOOKUP_RESPONSE); | ||
1557 | llr_msg->gns_header.r_id = ll_msg->gns_header.r_id; | ||
1558 | llr_msg->private_key = ll_msg->zone; | ||
1559 | llr_msg->name_len = htons (name_len); | ||
1560 | llr_msg->rd_count = htons (0); | ||
1561 | llr_msg->rd_len = htons (0); | ||
1562 | llr_msg->found = htons (GNUNET_SYSERR); | ||
1563 | GNUNET_memcpy (&llr_msg[1], conv_name, name_len); | ||
1564 | GNUNET_MQ_send (nc->mq, env); | ||
1565 | GNUNET_free (conv_name); | ||
1566 | return; | ||
1567 | } | ||
1568 | } | ||
1569 | rlc.label = conv_name; | 1401 | rlc.label = conv_name; |
1570 | rlc.found = GNUNET_NO; | 1402 | rlc.found = GNUNET_NO; |
1571 | rlc.res_rd_count = 0; | 1403 | rlc.res_rd_count = 0; |
@@ -1699,7 +1531,6 @@ handle_record_store (void *cls, const struct RecordStoreMessage *rp_msg) | |||
1699 | unsigned int rd_count; | 1531 | unsigned int rd_count; |
1700 | int res; | 1532 | int res; |
1701 | struct StoreActivity *sa; | 1533 | struct StoreActivity *sa; |
1702 | struct RecordsLock *lock; | ||
1703 | struct GNUNET_HashCode label_hash; | 1534 | struct GNUNET_HashCode label_hash; |
1704 | struct GNUNET_TIME_Absolute existing_block_exp; | 1535 | struct GNUNET_TIME_Absolute existing_block_exp; |
1705 | struct GNUNET_TIME_Absolute new_block_exp; | 1536 | struct GNUNET_TIME_Absolute new_block_exp; |
@@ -1753,20 +1584,6 @@ handle_record_store (void *cls, const struct RecordStoreMessage *rp_msg) | |||
1753 | GNUNET_SERVICE_client_continue (nc->client); | 1584 | GNUNET_SERVICE_client_continue (nc->client); |
1754 | return; | 1585 | return; |
1755 | } | 1586 | } |
1756 | if (GNUNET_YES == ntohl (rp_msg->locking)) | ||
1757 | { | ||
1758 | if (GNUNET_NO == NST_label_lock (conv_name, &rp_msg->private_key, nc)) | ||
1759 | { | ||
1760 | send_store_response (nc, GNUNET_SYSERR, _ ("Record set locked."), rid); | ||
1761 | GNUNET_SERVICE_client_continue (nc->client); | ||
1762 | GNUNET_free (conv_name); | ||
1763 | return; | ||
1764 | } | ||
1765 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1766 | "Client has lock on `%s', continuing.\n", conv_name); | ||
1767 | if (GNUNET_YES == ntohl (rp_msg->locking)) | ||
1768 | NST_label_lock_release (conv_name, &rp_msg->private_key, nc); | ||
1769 | } | ||
1770 | 1587 | ||
1771 | GNUNET_STATISTICS_update (statistics, | 1588 | GNUNET_STATISTICS_update (statistics, |
1772 | "Well-formed store requests received", | 1589 | "Well-formed store requests received", |
diff --git a/src/namestore/namestore.h b/src/namestore/namestore.h index 0f3ffa837..583ec1e68 100644 --- a/src/namestore/namestore.h +++ b/src/namestore/namestore.h | |||
@@ -68,11 +68,6 @@ struct RecordStoreMessage | |||
68 | struct GNUNET_TIME_AbsoluteNBO expire; | 68 | struct GNUNET_TIME_AbsoluteNBO expire; |
69 | 69 | ||
70 | /** | 70 | /** |
71 | * Unock the label with this request. | ||
72 | */ | ||
73 | uint32_t locking GNUNET_PACKED; | ||
74 | |||
75 | /** | ||
76 | * Name length | 71 | * Name length |
77 | */ | 72 | */ |
78 | uint16_t name_len GNUNET_PACKED; | 73 | uint16_t name_len GNUNET_PACKED; |
@@ -151,11 +146,6 @@ struct LabelLookupMessage | |||
151 | uint32_t label_len GNUNET_PACKED; | 146 | uint32_t label_len GNUNET_PACKED; |
152 | 147 | ||
153 | /** | 148 | /** |
154 | * Lock the label with this lookup | ||
155 | */ | ||
156 | uint32_t locking GNUNET_PACKED; | ||
157 | |||
158 | /** | ||
159 | * The private key of the zone to look up in | 149 | * The private key of the zone to look up in |
160 | */ | 150 | */ |
161 | struct GNUNET_IDENTITY_PrivateKey zone; | 151 | struct GNUNET_IDENTITY_PrivateKey zone; |
diff --git a/src/namestore/namestore_api.c b/src/namestore/namestore_api.c index a7380bbde..73f985803 100644 --- a/src/namestore/namestore_api.c +++ b/src/namestore/namestore_api.c | |||
@@ -411,7 +411,7 @@ handle_record_store_response (void *cls, | |||
411 | return; | 411 | return; |
412 | if (NULL != qe->cont) | 412 | if (NULL != qe->cont) |
413 | qe->cont (qe->cont_cls, res, | 413 | qe->cont (qe->cont_cls, res, |
414 | (GNUNET_OK == res) ? NULL : emsg); | 414 | (GNUNET_OK == res) ? NULL : emsg); |
415 | free_qe (qe); | 415 | free_qe (qe); |
416 | } | 416 | } |
417 | 417 | ||
@@ -482,7 +482,7 @@ handle_lookup_result (void *cls, const struct LabelLookupResponseMessage *msg) | |||
482 | int16_t found = (int16_t) ntohs (msg->found); | 482 | int16_t found = (int16_t) ntohs (msg->found); |
483 | 483 | ||
484 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Received RECORD_LOOKUP_RESULT (found=%i)\n", | 484 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Received RECORD_LOOKUP_RESULT (found=%i)\n", |
485 | found); | 485 | found); |
486 | qe = find_qe (h, ntohl (msg->gns_header.r_id)); | 486 | qe = find_qe (h, ntohl (msg->gns_header.r_id)); |
487 | if (NULL == qe) | 487 | if (NULL == qe) |
488 | return; | 488 | return; |
@@ -820,9 +820,9 @@ reconnect (struct GNUNET_NAMESTORE_Handle *h) | |||
820 | { | 820 | { |
821 | struct GNUNET_MQ_MessageHandler handlers[] = | 821 | struct GNUNET_MQ_MessageHandler handlers[] = |
822 | { GNUNET_MQ_hd_var_size (record_store_response, | 822 | { GNUNET_MQ_hd_var_size (record_store_response, |
823 | GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_STORE_RESPONSE, | 823 | GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_STORE_RESPONSE, |
824 | struct RecordStoreResponseMessage, | 824 | struct RecordStoreResponseMessage, |
825 | h), | 825 | h), |
826 | GNUNET_MQ_hd_var_size (zone_to_name_response, | 826 | GNUNET_MQ_hd_var_size (zone_to_name_response, |
827 | GNUNET_MESSAGE_TYPE_NAMESTORE_ZONE_TO_NAME_RESPONSE, | 827 | GNUNET_MESSAGE_TYPE_NAMESTORE_ZONE_TO_NAME_RESPONSE, |
828 | struct ZoneToNameResponseMessage, | 828 | struct ZoneToNameResponseMessage, |
@@ -1013,16 +1013,16 @@ warn_delay (void *cls) | |||
1013 | GNUNET_NAMESTORE_cancel (qe); | 1013 | GNUNET_NAMESTORE_cancel (qe); |
1014 | } | 1014 | } |
1015 | 1015 | ||
1016 | |||
1016 | struct GNUNET_NAMESTORE_QueueEntry * | 1017 | struct GNUNET_NAMESTORE_QueueEntry * |
1017 | records_store_ ( | 1018 | GNUNET_NAMESTORE_records_store ( |
1018 | struct GNUNET_NAMESTORE_Handle *h, | 1019 | struct GNUNET_NAMESTORE_Handle *h, |
1019 | const struct GNUNET_IDENTITY_PrivateKey *pkey, | 1020 | const struct GNUNET_IDENTITY_PrivateKey *pkey, |
1020 | const char *label, | 1021 | const char *label, |
1021 | unsigned int rd_count, | 1022 | unsigned int rd_count, |
1022 | const struct GNUNET_GNSRECORD_Data *rd, | 1023 | const struct GNUNET_GNSRECORD_Data *rd, |
1023 | GNUNET_NAMESTORE_ContinuationWithStatus cont, | 1024 | GNUNET_NAMESTORE_ContinuationWithStatus cont, |
1024 | void *cont_cls, | 1025 | void *cont_cls) |
1025 | int locking) | ||
1026 | { | 1026 | { |
1027 | struct GNUNET_NAMESTORE_QueueEntry *qe; | 1027 | struct GNUNET_NAMESTORE_QueueEntry *qe; |
1028 | struct GNUNET_MQ_Envelope *env; | 1028 | struct GNUNET_MQ_Envelope *env; |
@@ -1067,9 +1067,8 @@ records_store_ ( | |||
1067 | msg->name_len = htons (name_len); | 1067 | msg->name_len = htons (name_len); |
1068 | msg->rd_count = htons (rd_count); | 1068 | msg->rd_count = htons (rd_count); |
1069 | msg->rd_len = htons (rd_ser_len); | 1069 | msg->rd_len = htons (rd_ser_len); |
1070 | msg->reserved = ntohs(0); | 1070 | msg->reserved = ntohs (0); |
1071 | msg->private_key = *pkey; | 1071 | msg->private_key = *pkey; |
1072 | msg->locking = htonl (locking); | ||
1073 | 1072 | ||
1074 | name_tmp = (char *) &msg[1]; | 1073 | name_tmp = (char *) &msg[1]; |
1075 | GNUNET_memcpy (name_tmp, label, name_len); | 1074 | GNUNET_memcpy (name_tmp, label, name_len); |
@@ -1101,22 +1100,11 @@ records_store_ ( | |||
1101 | return qe; | 1100 | return qe; |
1102 | } | 1101 | } |
1103 | 1102 | ||
1103 | /** | ||
1104 | * TODO: Experimental API will replace API above. | ||
1105 | */ | ||
1104 | struct GNUNET_NAMESTORE_QueueEntry * | 1106 | struct GNUNET_NAMESTORE_QueueEntry * |
1105 | GNUNET_NAMESTORE_records_store ( | 1107 | GNUNET_NAMESTORE_records_replace ( |
1106 | struct GNUNET_NAMESTORE_Handle *h, | ||
1107 | const struct GNUNET_IDENTITY_PrivateKey *pkey, | ||
1108 | const char *label, | ||
1109 | unsigned int rd_count, | ||
1110 | const struct GNUNET_GNSRECORD_Data *rd, | ||
1111 | GNUNET_NAMESTORE_ContinuationWithStatus cont, | ||
1112 | void *cont_cls) | ||
1113 | { | ||
1114 | return records_store_ (h, pkey, label, | ||
1115 | rd_count, rd, cont, cont_cls, GNUNET_NO); | ||
1116 | } | ||
1117 | |||
1118 | struct GNUNET_NAMESTORE_QueueEntry * | ||
1119 | GNUNET_NAMESTORE_records_commit ( | ||
1120 | struct GNUNET_NAMESTORE_Handle *h, | 1108 | struct GNUNET_NAMESTORE_Handle *h, |
1121 | const struct GNUNET_IDENTITY_PrivateKey *pkey, | 1109 | const struct GNUNET_IDENTITY_PrivateKey *pkey, |
1122 | const char *label, | 1110 | const char *label, |
@@ -1125,21 +1113,19 @@ GNUNET_NAMESTORE_records_commit ( | |||
1125 | GNUNET_NAMESTORE_ContinuationWithStatus cont, | 1113 | GNUNET_NAMESTORE_ContinuationWithStatus cont, |
1126 | void *cont_cls) | 1114 | void *cont_cls) |
1127 | { | 1115 | { |
1128 | return records_store_ (h, pkey, label, | 1116 | return GNUNET_NAMESTORE_records_store (h, pkey, label, rd_count, rd, |
1129 | rd_count, rd, cont, cont_cls, GNUNET_YES); | 1117 | cont, cont_cls); |
1130 | } | 1118 | } |
1131 | 1119 | ||
1132 | |||
1133 | struct GNUNET_NAMESTORE_QueueEntry * | 1120 | struct GNUNET_NAMESTORE_QueueEntry * |
1134 | records_lookup_ ( | 1121 | GNUNET_NAMESTORE_records_lookup ( |
1135 | struct GNUNET_NAMESTORE_Handle *h, | 1122 | struct GNUNET_NAMESTORE_Handle *h, |
1136 | const struct GNUNET_IDENTITY_PrivateKey *pkey, | 1123 | const struct GNUNET_IDENTITY_PrivateKey *pkey, |
1137 | const char *label, | 1124 | const char *label, |
1138 | GNUNET_SCHEDULER_TaskCallback error_cb, | 1125 | GNUNET_SCHEDULER_TaskCallback error_cb, |
1139 | void *error_cb_cls, | 1126 | void *error_cb_cls, |
1140 | GNUNET_NAMESTORE_RecordMonitor rm, | 1127 | GNUNET_NAMESTORE_RecordMonitor rm, |
1141 | void *rm_cls, | 1128 | void *rm_cls) |
1142 | int locking) | ||
1143 | { | 1129 | { |
1144 | struct GNUNET_NAMESTORE_QueueEntry *qe; | 1130 | struct GNUNET_NAMESTORE_QueueEntry *qe; |
1145 | struct GNUNET_MQ_Envelope *env; | 1131 | struct GNUNET_MQ_Envelope *env; |
@@ -1167,7 +1153,6 @@ records_lookup_ ( | |||
1167 | msg->gns_header.r_id = htonl (qe->op_id); | 1153 | msg->gns_header.r_id = htonl (qe->op_id); |
1168 | msg->zone = *pkey; | 1154 | msg->zone = *pkey; |
1169 | msg->label_len = htonl (label_len); | 1155 | msg->label_len = htonl (label_len); |
1170 | msg->locking = htonl (locking); | ||
1171 | GNUNET_memcpy (&msg[1], label, label_len); | 1156 | GNUNET_memcpy (&msg[1], label, label_len); |
1172 | if (NULL == h->mq) | 1157 | if (NULL == h->mq) |
1173 | qe->env = env; | 1158 | qe->env = env; |
@@ -1176,22 +1161,12 @@ records_lookup_ ( | |||
1176 | return qe; | 1161 | return qe; |
1177 | } | 1162 | } |
1178 | 1163 | ||
1179 | struct GNUNET_NAMESTORE_QueueEntry * | ||
1180 | GNUNET_NAMESTORE_records_lookup ( | ||
1181 | struct GNUNET_NAMESTORE_Handle *h, | ||
1182 | const struct GNUNET_IDENTITY_PrivateKey *pkey, | ||
1183 | const char *label, | ||
1184 | GNUNET_SCHEDULER_TaskCallback error_cb, | ||
1185 | void *error_cb_cls, | ||
1186 | GNUNET_NAMESTORE_RecordMonitor rm, | ||
1187 | void *rm_cls) | ||
1188 | { | ||
1189 | return records_lookup_ (h, pkey, label, | ||
1190 | error_cb, error_cb_cls, rm, rm_cls, GNUNET_NO); | ||
1191 | } | ||
1192 | 1164 | ||
1165 | /** | ||
1166 | * TODO experimental API. Will replace old API above. | ||
1167 | */ | ||
1193 | struct GNUNET_NAMESTORE_QueueEntry * | 1168 | struct GNUNET_NAMESTORE_QueueEntry * |
1194 | GNUNET_NAMESTORE_records_open ( | 1169 | GNUNET_NAMESTORE_records_select ( |
1195 | struct GNUNET_NAMESTORE_Handle *h, | 1170 | struct GNUNET_NAMESTORE_Handle *h, |
1196 | const struct GNUNET_IDENTITY_PrivateKey *pkey, | 1171 | const struct GNUNET_IDENTITY_PrivateKey *pkey, |
1197 | const char *label, | 1172 | const char *label, |
@@ -1200,8 +1175,9 @@ GNUNET_NAMESTORE_records_open ( | |||
1200 | GNUNET_NAMESTORE_RecordMonitor rm, | 1175 | GNUNET_NAMESTORE_RecordMonitor rm, |
1201 | void *rm_cls) | 1176 | void *rm_cls) |
1202 | { | 1177 | { |
1203 | return records_lookup_ (h, pkey, label, | 1178 | return GNUNET_NAMESTORE_records_lookup (h, pkey, label, |
1204 | error_cb, error_cb_cls, rm, rm_cls, GNUNET_YES); | 1179 | error_cb, error_cb_cls, |
1180 | rm, rm_cls); | ||
1205 | } | 1181 | } |
1206 | 1182 | ||
1207 | struct GNUNET_NAMESTORE_QueueEntry * | 1183 | struct GNUNET_NAMESTORE_QueueEntry * |
@@ -1364,5 +1340,48 @@ GNUNET_NAMESTORE_cancel (struct GNUNET_NAMESTORE_QueueEntry *qe) | |||
1364 | free_qe (qe); | 1340 | free_qe (qe); |
1365 | } | 1341 | } |
1366 | 1342 | ||
1343 | /** | ||
1344 | * New API draft. Experimental | ||
1345 | */ | ||
1346 | |||
1347 | struct GNUNET_NAMESTORE_QueueEntry * | ||
1348 | GNUNET_NAMESTORE_transaction_begin (struct GNUNET_NAMESTORE_Handle *h, | ||
1349 | GNUNET_SCHEDULER_TaskCallback error_cb, | ||
1350 | void *error_cb_cls) | ||
1351 | { | ||
1352 | GNUNET_break (0); | ||
1353 | return NULL; | ||
1354 | } | ||
1355 | |||
1356 | |||
1357 | struct GNUNET_NAMESTORE_QueueEntry * | ||
1358 | GNUNET_NAMESTORE_transaction_abort (struct GNUNET_NAMESTORE_Handle *h, | ||
1359 | GNUNET_SCHEDULER_TaskCallback error_cb, | ||
1360 | void *error_cb_cls) | ||
1361 | { | ||
1362 | GNUNET_break (0); | ||
1363 | return NULL; | ||
1364 | } | ||
1365 | |||
1366 | |||
1367 | /** | ||
1368 | * Commit a namestore transaction. | ||
1369 | * Saves all actions performed since #GNUNET_NAMESTORE_transaction_begin | ||
1370 | * | ||
1371 | * @param h handle to the namestore | ||
1372 | * @param error_cb function to call on error (i.e. disconnect or unable to get lock) | ||
1373 | * the handle is afterwards invalid | ||
1374 | * @param error_cb_cls closure for @a error_cb | ||
1375 | * @return handle to abort the request | ||
1376 | */ | ||
1377 | struct GNUNET_NAMESTORE_QueueEntry * | ||
1378 | GNUNET_NAMESTORE_transaction_commit (struct GNUNET_NAMESTORE_Handle *h, | ||
1379 | GNUNET_SCHEDULER_TaskCallback error_cb, | ||
1380 | void *error_cb_cls) | ||
1381 | { | ||
1382 | GNUNET_break (0); | ||
1383 | return NULL; | ||
1384 | } | ||
1385 | |||
1367 | 1386 | ||
1368 | /* end of namestore_api.c */ | 1387 | /* end of namestore_api.c */ |
diff --git a/src/pq/pq_result_helper.c b/src/pq/pq_result_helper.c index 2c11f5202..f3d246c36 100644 --- a/src/pq/pq_result_helper.c +++ b/src/pq/pq_result_helper.c | |||
@@ -1086,6 +1086,12 @@ extract_uint64 (void *cls, | |||
1086 | fnum)) | 1086 | fnum)) |
1087 | { | 1087 | { |
1088 | GNUNET_break (0); | 1088 | GNUNET_break (0); |
1089 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | ||
1090 | "Got length %u for field `%s'\n", | ||
1091 | PQgetlength (result, | ||
1092 | row, | ||
1093 | fnum), | ||
1094 | fname); | ||
1089 | return GNUNET_SYSERR; | 1095 | return GNUNET_SYSERR; |
1090 | } | 1096 | } |
1091 | res = (uint64_t *) PQgetvalue (result, | 1097 | res = (uint64_t *) PQgetvalue (result, |
diff --git a/src/transport/Makefile.am b/src/transport/Makefile.am index 69b05fb13..2b09ccf63 100644 --- a/src/transport/Makefile.am +++ b/src/transport/Makefile.am | |||
@@ -1528,6 +1528,7 @@ test_transport_simple_send_string.sh \ | |||
1528 | test_transport_simple_send.sh \ | 1528 | test_transport_simple_send.sh \ |
1529 | test_transport_simple_send_broadcast.sh \ | 1529 | test_transport_simple_send_broadcast.sh \ |
1530 | test_transport_udp_backchannel.sh \ | 1530 | test_transport_udp_backchannel.sh \ |
1531 | test_transport_simple_send_dv_circle.sh \ | ||
1531 | gnunet-transport-certificate-creation.in \ | 1532 | gnunet-transport-certificate-creation.in \ |
1532 | communicator-unix.conf \ | 1533 | communicator-unix.conf \ |
1533 | test_plugin_hostkey \ | 1534 | test_plugin_hostkey \ |
diff --git a/src/util/.gitignore b/src/util/.gitignore index 51eab71db..0e3449fed 100644 --- a/src/util/.gitignore +++ b/src/util/.gitignore | |||
@@ -36,6 +36,7 @@ test_crypto_ecdh_eddsa | |||
36 | test_crypto_ecdhe | 36 | test_crypto_ecdhe |
37 | test_crypto_ecdsa | 37 | test_crypto_ecdsa |
38 | test_crypto_eddsa | 38 | test_crypto_eddsa |
39 | test_crypto_edx25519 | ||
39 | test_crypto_hash | 40 | test_crypto_hash |
40 | test_crypto_hash_context | 41 | test_crypto_hash_context |
41 | test_crypto_hkdf | 42 | test_crypto_hkdf |
diff --git a/src/util/Makefile.am b/src/util/Makefile.am index 406d42b1e..9cb7da15b 100644 --- a/src/util/Makefile.am +++ b/src/util/Makefile.am | |||
@@ -66,6 +66,7 @@ libgnunetutil_la_SOURCES = \ | |||
66 | crypto_ecc_gnsrecord.c \ | 66 | crypto_ecc_gnsrecord.c \ |
67 | $(DLOG) \ | 67 | $(DLOG) \ |
68 | crypto_ecc_setup.c \ | 68 | crypto_ecc_setup.c \ |
69 | crypto_edx25519.c \ | ||
69 | crypto_hash.c \ | 70 | crypto_hash.c \ |
70 | crypto_hash_file.c \ | 71 | crypto_hash_file.c \ |
71 | crypto_hkdf.c \ | 72 | crypto_hkdf.c \ |
@@ -297,6 +298,7 @@ check_PROGRAMS = \ | |||
297 | test_crypto_ecdhe \ | 298 | test_crypto_ecdhe \ |
298 | test_crypto_ecdh_eddsa \ | 299 | test_crypto_ecdh_eddsa \ |
299 | test_crypto_ecdh_ecdsa \ | 300 | test_crypto_ecdh_ecdsa \ |
301 | test_crypto_edx25519 \ | ||
300 | $(DLOG_TEST) \ | 302 | $(DLOG_TEST) \ |
301 | test_crypto_hash \ | 303 | test_crypto_hash \ |
302 | test_crypto_hash_context \ | 304 | test_crypto_hash_context \ |
@@ -470,6 +472,12 @@ test_crypto_eddsa_LDADD = \ | |||
470 | libgnunetutil.la \ | 472 | libgnunetutil.la \ |
471 | $(LIBGCRYPT_LIBS) | 473 | $(LIBGCRYPT_LIBS) |
472 | 474 | ||
475 | test_crypto_edx25519_SOURCES = \ | ||
476 | test_crypto_edx25519.c | ||
477 | test_crypto_edx25519_LDADD = \ | ||
478 | libgnunetutil.la \ | ||
479 | $(LIBGCRYPT_LIBS) | ||
480 | |||
473 | test_crypto_ecc_dlog_SOURCES = \ | 481 | test_crypto_ecc_dlog_SOURCES = \ |
474 | test_crypto_ecc_dlog.c | 482 | test_crypto_ecc_dlog.c |
475 | test_crypto_ecc_dlog_LDADD = \ | 483 | test_crypto_ecc_dlog_LDADD = \ |
diff --git a/src/util/crypto_ecc_gnsrecord.c b/src/util/crypto_ecc_gnsrecord.c index ce41a4699..0ee0570c0 100644 --- a/src/util/crypto_ecc_gnsrecord.c +++ b/src/util/crypto_ecc_gnsrecord.c | |||
@@ -68,28 +68,15 @@ derive_h (const void *pub, | |||
68 | } | 68 | } |
69 | 69 | ||
70 | 70 | ||
71 | /** | 71 | enum GNUNET_GenericReturnValue |
72 | * This is a signature function for EdDSA which takes the | 72 | GNUNET_CRYPTO_eddsa_sign_derived ( |
73 | * secret scalar sk instead of the private seed which is | 73 | const struct GNUNET_CRYPTO_EddsaPrivateKey *pkey, |
74 | * usually the case for crypto APIs. We require this functionality | 74 | const char *label, |
75 | * in order to use derived private keys for signatures we | 75 | const char *context, |
76 | * cannot calculate the inverse of a sk to find the seed | ||
77 | * efficiently. | ||
78 | * | ||
79 | * The resulting signature is a standard EdDSA signature | ||
80 | * which can be verified using the usual APIs. | ||
81 | * | ||
82 | * @param sk the secret scalar | ||
83 | * @param purp the signature purpose | ||
84 | * @param sig the resulting signature | ||
85 | */ | ||
86 | void | ||
87 | GNUNET_CRYPTO_eddsa_sign_with_scalar ( | ||
88 | const struct GNUNET_CRYPTO_EddsaPrivateScalar *priv, | ||
89 | const struct GNUNET_CRYPTO_EccSignaturePurpose *purpose, | 76 | const struct GNUNET_CRYPTO_EccSignaturePurpose *purpose, |
90 | struct GNUNET_CRYPTO_EddsaSignature *sig) | 77 | struct GNUNET_CRYPTO_EddsaSignature *sig) |
91 | { | 78 | { |
92 | 79 | struct GNUNET_CRYPTO_EddsaPrivateScalar priv; | |
93 | crypto_hash_sha512_state hs; | 80 | crypto_hash_sha512_state hs; |
94 | unsigned char sk[64]; | 81 | unsigned char sk[64]; |
95 | unsigned char r[64]; | 82 | unsigned char r[64]; |
@@ -98,6 +85,14 @@ GNUNET_CRYPTO_eddsa_sign_with_scalar ( | |||
98 | unsigned char zk[32]; | 85 | unsigned char zk[32]; |
99 | unsigned char tmp[32]; | 86 | unsigned char tmp[32]; |
100 | 87 | ||
88 | /** | ||
89 | * Derive the private key | ||
90 | */ | ||
91 | GNUNET_CRYPTO_eddsa_private_key_derive (pkey, | ||
92 | label, | ||
93 | context, | ||
94 | &priv); | ||
95 | |||
101 | crypto_hash_sha512_init (&hs); | 96 | crypto_hash_sha512_init (&hs); |
102 | 97 | ||
103 | /** | 98 | /** |
@@ -108,7 +103,7 @@ GNUNET_CRYPTO_eddsa_sign_with_scalar ( | |||
108 | * sk[0..31] = h * SHA512 (d)[0..31] | 103 | * sk[0..31] = h * SHA512 (d)[0..31] |
109 | * sk[32..63] = SHA512 (d)[32..63] | 104 | * sk[32..63] = SHA512 (d)[32..63] |
110 | */ | 105 | */ |
111 | memcpy (sk, priv->s, 64); | 106 | memcpy (sk, priv.s, 64); |
112 | 107 | ||
113 | /** | 108 | /** |
114 | * Calculate the derived zone key zk' from the | 109 | * Calculate the derived zone key zk' from the |
@@ -172,8 +167,28 @@ GNUNET_CRYPTO_eddsa_sign_with_scalar ( | |||
172 | sodium_memzero (sk, sizeof (sk)); | 167 | sodium_memzero (sk, sizeof (sk)); |
173 | sodium_memzero (r, sizeof (r)); | 168 | sodium_memzero (r, sizeof (r)); |
174 | sodium_memzero (r_mod, sizeof (r_mod)); | 169 | sodium_memzero (r_mod, sizeof (r_mod)); |
170 | return GNUNET_OK; | ||
175 | } | 171 | } |
176 | 172 | ||
173 | enum GNUNET_GenericReturnValue | ||
174 | GNUNET_CRYPTO_ecdsa_sign_derived ( | ||
175 | const struct GNUNET_CRYPTO_EcdsaPrivateKey *priv, | ||
176 | const char *label, | ||
177 | const char *context, | ||
178 | const struct GNUNET_CRYPTO_EccSignaturePurpose *purpose, | ||
179 | struct GNUNET_CRYPTO_EcdsaSignature *sig) | ||
180 | { | ||
181 | struct GNUNET_CRYPTO_EcdsaPrivateKey *key; | ||
182 | enum GNUNET_GenericReturnValue res; | ||
183 | key = GNUNET_CRYPTO_ecdsa_private_key_derive (priv, | ||
184 | label, | ||
185 | context); | ||
186 | res = GNUNET_CRYPTO_ecdsa_sign_ (key, | ||
187 | purpose, | ||
188 | sig); | ||
189 | GNUNET_free (key); | ||
190 | return res; | ||
191 | } | ||
177 | 192 | ||
178 | struct GNUNET_CRYPTO_EcdsaPrivateKey * | 193 | struct GNUNET_CRYPTO_EcdsaPrivateKey * |
179 | GNUNET_CRYPTO_ecdsa_private_key_derive ( | 194 | GNUNET_CRYPTO_ecdsa_private_key_derive ( |
diff --git a/src/util/crypto_edx25519.c b/src/util/crypto_edx25519.c new file mode 100644 index 000000000..26b45407e --- /dev/null +++ b/src/util/crypto_edx25519.c | |||
@@ -0,0 +1,418 @@ | |||
1 | /* | ||
2 | This file is part of GNUnet. | ||
3 | Copyright (C) 2022 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 util/crypto_edx25519.c | ||
23 | * @brief An variant of EdDSA which allows for iterative derivation of key pairs. | ||
24 | * @author Özgür Kesim | ||
25 | * @author Christian Grothoff | ||
26 | * @author Florian Dold | ||
27 | * @author Martin Schanzenbach | ||
28 | */ | ||
29 | #include "platform.h" | ||
30 | #include <gcrypt.h> | ||
31 | #include <sodium.h> | ||
32 | #include "gnunet_crypto_lib.h" | ||
33 | #include "gnunet_strings_lib.h" | ||
34 | |||
35 | #define CURVE "Ed25519" | ||
36 | |||
37 | void | ||
38 | GNUNET_CRYPTO_edx25519_key_clear (struct GNUNET_CRYPTO_Edx25519PrivateKey *pk) | ||
39 | { | ||
40 | memset (pk, 0, sizeof(struct GNUNET_CRYPTO_Edx25519PrivateKey)); | ||
41 | } | ||
42 | |||
43 | |||
44 | void | ||
45 | GNUNET_CRYPTO_edx25519_key_create_from_seed ( | ||
46 | const void *seed, | ||
47 | size_t seedsize, | ||
48 | struct GNUNET_CRYPTO_Edx25519PrivateKey *pk) | ||
49 | { | ||
50 | |||
51 | GNUNET_static_assert (sizeof(*pk) == sizeof(struct GNUNET_HashCode)); | ||
52 | GNUNET_CRYPTO_hash (seed, | ||
53 | seedsize, | ||
54 | (struct GNUNET_HashCode *) pk); | ||
55 | |||
56 | /* Clamp the first half of the key. The second half is used in the signature | ||
57 | * process. */ | ||
58 | pk->a[0] &= 248; | ||
59 | pk->a[31] &= 127; | ||
60 | pk->a[31] |= 64; | ||
61 | } | ||
62 | |||
63 | |||
64 | void | ||
65 | GNUNET_CRYPTO_edx25519_key_create ( | ||
66 | struct GNUNET_CRYPTO_Edx25519PrivateKey *pk) | ||
67 | { | ||
68 | char seed[256 / 8]; | ||
69 | GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_NONCE, | ||
70 | seed, | ||
71 | sizeof (seed)); | ||
72 | GNUNET_CRYPTO_edx25519_key_create_from_seed (seed, | ||
73 | sizeof(seed), | ||
74 | pk); | ||
75 | } | ||
76 | |||
77 | |||
78 | void | ||
79 | GNUNET_CRYPTO_edx25519_key_get_public ( | ||
80 | const struct GNUNET_CRYPTO_Edx25519PrivateKey *priv, | ||
81 | struct GNUNET_CRYPTO_Edx25519PublicKey *pub) | ||
82 | { | ||
83 | crypto_scalarmult_ed25519_base_noclamp (pub->q_y, | ||
84 | priv->a); | ||
85 | } | ||
86 | |||
87 | |||
88 | /** | ||
89 | * This function operates the basically same way as the signature function for | ||
90 | * EdDSA. But instead of expanding a private seed (which is usually the case | ||
91 | * for crypto APIs) and using the resulting scalars, it takes the scalars | ||
92 | * directly from Edx25519PrivateKey. We require this functionality in order to | ||
93 | * use derived private keys for signatures. | ||
94 | * | ||
95 | * The resulting signature is a standard EdDSA signature | ||
96 | * which can be verified using the usual APIs. | ||
97 | * | ||
98 | * @param priv the private key (containing two scalars .a and .b) | ||
99 | * @param purp the signature purpose | ||
100 | * @param sig the resulting signature | ||
101 | */ | ||
102 | enum GNUNET_GenericReturnValue | ||
103 | GNUNET_CRYPTO_edx25519_sign_ ( | ||
104 | const struct GNUNET_CRYPTO_Edx25519PrivateKey *priv, | ||
105 | const struct GNUNET_CRYPTO_EccSignaturePurpose *purpose, | ||
106 | struct GNUNET_CRYPTO_Edx25519Signature *sig) | ||
107 | { | ||
108 | |||
109 | crypto_hash_sha512_state hs; | ||
110 | unsigned char r[64]; | ||
111 | unsigned char hram[64]; | ||
112 | unsigned char P[32]; | ||
113 | unsigned char r_mod[64]; | ||
114 | unsigned char R[32]; | ||
115 | unsigned char tmp[32]; | ||
116 | |||
117 | crypto_hash_sha512_init (&hs); | ||
118 | |||
119 | /** | ||
120 | * Calculate the public key P from the private scalar in the key. | ||
121 | */ | ||
122 | crypto_scalarmult_ed25519_base_noclamp (P, | ||
123 | priv->a); | ||
124 | |||
125 | /** | ||
126 | * Calculate r: | ||
127 | * r = SHA512 (b ∥ M) | ||
128 | * where M is our message (purpose). | ||
129 | */ | ||
130 | crypto_hash_sha512_update (&hs, | ||
131 | priv->b, | ||
132 | sizeof(priv->b)); | ||
133 | crypto_hash_sha512_update (&hs, | ||
134 | (uint8_t*) purpose, | ||
135 | ntohl (purpose->size)); | ||
136 | crypto_hash_sha512_final (&hs, | ||
137 | r); | ||
138 | |||
139 | /** | ||
140 | * Temporarily put P into S | ||
141 | */ | ||
142 | memcpy (sig->s, P, 32); | ||
143 | |||
144 | /** | ||
145 | * Reduce the scalar value r | ||
146 | */ | ||
147 | crypto_core_ed25519_scalar_reduce (r_mod, r); | ||
148 | |||
149 | /** | ||
150 | * Calculate R := r * G of the signature | ||
151 | */ | ||
152 | crypto_scalarmult_ed25519_base_noclamp (R, r_mod); | ||
153 | memcpy (sig->r, R, sizeof (R)); | ||
154 | |||
155 | /** | ||
156 | * Calculate | ||
157 | * hram := SHA512 (R ∥ P ∥ M) | ||
158 | */ | ||
159 | crypto_hash_sha512_init (&hs); | ||
160 | crypto_hash_sha512_update (&hs, (uint8_t*) sig, 64); | ||
161 | crypto_hash_sha512_update (&hs, (uint8_t*) purpose, | ||
162 | ntohl (purpose->size)); | ||
163 | crypto_hash_sha512_final (&hs, hram); | ||
164 | |||
165 | /** | ||
166 | * Reduce the resulting scalar value | ||
167 | */ | ||
168 | unsigned char hram_mod[64]; | ||
169 | crypto_core_ed25519_scalar_reduce (hram_mod, hram); | ||
170 | |||
171 | /** | ||
172 | * Calculate | ||
173 | * S := r + hram * s mod L | ||
174 | */ | ||
175 | crypto_core_ed25519_scalar_mul (tmp, hram_mod, priv->a); | ||
176 | crypto_core_ed25519_scalar_add (sig->s, tmp, r_mod); | ||
177 | |||
178 | sodium_memzero (r, sizeof (r)); | ||
179 | sodium_memzero (r_mod, sizeof (r_mod)); | ||
180 | |||
181 | return GNUNET_OK; | ||
182 | } | ||
183 | |||
184 | |||
185 | enum GNUNET_GenericReturnValue | ||
186 | GNUNET_CRYPTO_edx25519_verify_ ( | ||
187 | uint32_t purpose, | ||
188 | const struct GNUNET_CRYPTO_EccSignaturePurpose *validate, | ||
189 | const struct GNUNET_CRYPTO_Edx25519Signature *sig, | ||
190 | const struct GNUNET_CRYPTO_Edx25519PublicKey *pub) | ||
191 | { | ||
192 | const unsigned char *m = (const void *) validate; | ||
193 | size_t mlen = ntohl (validate->size); | ||
194 | const unsigned char *s = (const void *) sig; | ||
195 | |||
196 | int res; | ||
197 | |||
198 | if (purpose != ntohl (validate->purpose)) | ||
199 | return GNUNET_SYSERR; /* purpose mismatch */ | ||
200 | |||
201 | res = crypto_sign_verify_detached (s, m, mlen, pub->q_y); | ||
202 | return (res == 0) ? GNUNET_OK : GNUNET_SYSERR; | ||
203 | } | ||
204 | |||
205 | |||
206 | /** | ||
207 | * Derive the 'h' value for key derivation, where | ||
208 | * 'h = H(P ∥ seed) mod n' and 'n' is the size of the cyclic subroup. | ||
209 | * | ||
210 | * @param pub public key for deriviation | ||
211 | * @param seed seed for key the deriviation | ||
212 | * @param seedsize the size of the seed | ||
213 | * @param n The value for the modulus 'n' | ||
214 | * @param[out] phc if not NULL, the output of H() will be written into | ||
215 | * return h_mod_n (allocated by this function) | ||
216 | */ | ||
217 | static gcry_mpi_t | ||
218 | derive_h_mod_n ( | ||
219 | const struct GNUNET_CRYPTO_Edx25519PublicKey *pub, | ||
220 | const void *seed, | ||
221 | size_t seedsize, | ||
222 | const gcry_mpi_t n, | ||
223 | struct GNUNET_HashCode *phc) | ||
224 | { | ||
225 | static const char *const salt = "edx2559-derivation"; | ||
226 | struct GNUNET_HashCode hc; | ||
227 | gcry_mpi_t h; | ||
228 | gcry_mpi_t h_mod_n; | ||
229 | |||
230 | if (NULL == phc) | ||
231 | phc = &hc; | ||
232 | |||
233 | GNUNET_CRYPTO_kdf (phc, sizeof(*phc), | ||
234 | salt, strlen (salt), | ||
235 | pub, sizeof(*pub), | ||
236 | seed, seedsize, | ||
237 | NULL, 0); | ||
238 | |||
239 | /* calculate h_mod_n = h % n */ | ||
240 | GNUNET_CRYPTO_mpi_scan_unsigned (&h, | ||
241 | (unsigned char *) phc, | ||
242 | sizeof(*phc)); | ||
243 | h_mod_n = gcry_mpi_new (256); | ||
244 | gcry_mpi_mod (h_mod_n, h, n); | ||
245 | |||
246 | #ifdef CHECK_RARE_CASES | ||
247 | /** | ||
248 | * Note that the following cases would be problematic: | ||
249 | * 1.) h == 0 mod n | ||
250 | * 2.) h == 1 mod n | ||
251 | * 3.) [h] * P == E | ||
252 | * We assume that the probalities for these cases to occur are neglegible. | ||
253 | */ | ||
254 | GNUNET_assert (! gcry_mpi_cmp_ui (h_mod_n, 0)); | ||
255 | GNUNET_assert (! gcry_mpi_cmp_ui (h_mod_n, 1)); | ||
256 | #endif | ||
257 | |||
258 | gcry_mpi_release(h); | ||
259 | return h_mod_n; | ||
260 | } | ||
261 | |||
262 | |||
263 | void | ||
264 | GNUNET_CRYPTO_edx25519_private_key_derive ( | ||
265 | const struct GNUNET_CRYPTO_Edx25519PrivateKey *priv, | ||
266 | const void *seed, | ||
267 | size_t seedsize, | ||
268 | struct GNUNET_CRYPTO_Edx25519PrivateKey *result) | ||
269 | { | ||
270 | struct GNUNET_CRYPTO_Edx25519PublicKey pub; | ||
271 | struct GNUNET_HashCode hc; | ||
272 | uint8_t a[32]; | ||
273 | gcry_ctx_t ctx; | ||
274 | gcry_mpi_t h_mod_n; | ||
275 | gcry_mpi_t x; | ||
276 | gcry_mpi_t n; | ||
277 | gcry_mpi_t a1; | ||
278 | gcry_mpi_t a2; | ||
279 | gcry_mpi_t ap; // a' | ||
280 | |||
281 | GNUNET_CRYPTO_edx25519_key_get_public (priv, &pub); | ||
282 | |||
283 | /** | ||
284 | * Libsodium does not offer an API with arbitrary arithmetic. | ||
285 | * Hence we have to use libgcrypt here. | ||
286 | */ | ||
287 | GNUNET_assert (0 == gcry_mpi_ec_new (&ctx, NULL, "Ed25519")); | ||
288 | |||
289 | /** | ||
290 | * Get our modulo | ||
291 | */ | ||
292 | n = gcry_mpi_ec_get_mpi ("n", ctx, 1); | ||
293 | GNUNET_assert (NULL != n); | ||
294 | |||
295 | /** | ||
296 | * Get h mod n | ||
297 | */ | ||
298 | h_mod_n = derive_h_mod_n (&pub, | ||
299 | seed, | ||
300 | seedsize, | ||
301 | n, | ||
302 | &hc); | ||
303 | |||
304 | /* Convert priv->a scalar to big endian for libgcrypt */ | ||
305 | for (size_t i = 0; i < 32; i++) | ||
306 | a[i] = priv->a[31 - i]; | ||
307 | |||
308 | /** | ||
309 | * dc now contains the private scalar "a". | ||
310 | * We carefully remove the clamping and derive a'. | ||
311 | * Calculate: | ||
312 | * a1 := a / 8 | ||
313 | * a2 := h * a1 mod n | ||
314 | * a' := a2 * 8 mod n | ||
315 | */ | ||
316 | GNUNET_CRYPTO_mpi_scan_unsigned (&x, a, sizeof(a)); // a | ||
317 | a1 = gcry_mpi_new (256); | ||
318 | gcry_mpi_t eight = gcry_mpi_set_ui (NULL, 8); | ||
319 | gcry_mpi_div (a1, NULL, x, eight, 0); // a1 := a / 8 | ||
320 | a2 = gcry_mpi_new (256); | ||
321 | gcry_mpi_mulm (a2, h_mod_n, a1, n); // a2 := h * a1 mod n | ||
322 | ap = gcry_mpi_new (256); | ||
323 | gcry_mpi_mul (ap, a2, eight); // a' := a2 * 8 | ||
324 | |||
325 | #ifdef CHECK_RARE_CASES | ||
326 | /* The likelihood for a' == 0 or a' == 1 is neglegible */ | ||
327 | GNUNET_assert (! gcry_mpi_cmp_ui (ap, 0)); | ||
328 | GNUNET_assert (! gcry_mpi_cmp_ui (ap, 1)); | ||
329 | #endif | ||
330 | |||
331 | gcry_mpi_release (h_mod_n); | ||
332 | gcry_mpi_release (eight); | ||
333 | gcry_mpi_release (x); | ||
334 | gcry_mpi_release (n); | ||
335 | gcry_mpi_release (a1); | ||
336 | gcry_mpi_release (a2); | ||
337 | gcry_ctx_release (ctx); | ||
338 | GNUNET_CRYPTO_mpi_print_unsigned (a, sizeof(a), ap); | ||
339 | gcry_mpi_release (ap); | ||
340 | |||
341 | /** | ||
342 | * We hash the derived "h" parameter with the other half of the expanded | ||
343 | * private key (that is: priv->b). This ensures that for signature | ||
344 | * generation, the "R" is derived from the same derivation path as "h" and is | ||
345 | * not reused. | ||
346 | */ | ||
347 | { | ||
348 | crypto_hash_sha256_state hs; | ||
349 | crypto_hash_sha256_init (&hs); | ||
350 | crypto_hash_sha256_update (&hs, priv->b, sizeof(priv->b)); | ||
351 | crypto_hash_sha256_update (&hs, (unsigned char*) &hc, sizeof (hc)); | ||
352 | crypto_hash_sha256_final (&hs, result->b); | ||
353 | } | ||
354 | |||
355 | /* Convert to little endian for libsodium */ | ||
356 | for (size_t i = 0; i < 32; i++) | ||
357 | result->a[i] = a[31 - i]; | ||
358 | |||
359 | sodium_memzero (a, sizeof(a)); | ||
360 | } | ||
361 | |||
362 | |||
363 | void | ||
364 | GNUNET_CRYPTO_edx25519_public_key_derive ( | ||
365 | const struct GNUNET_CRYPTO_Edx25519PublicKey *pub, | ||
366 | const void *seed, | ||
367 | size_t seedsize, | ||
368 | struct GNUNET_CRYPTO_Edx25519PublicKey *result) | ||
369 | { | ||
370 | gcry_ctx_t ctx; | ||
371 | gcry_mpi_t q_y; | ||
372 | gcry_mpi_t n; | ||
373 | gcry_mpi_t h_mod_n; | ||
374 | gcry_mpi_point_t q; | ||
375 | gcry_mpi_point_t v; | ||
376 | |||
377 | GNUNET_assert (0 == gcry_mpi_ec_new (&ctx, NULL, "Ed25519")); | ||
378 | |||
379 | /* obtain point 'q' from original public key. The provided 'q' is | ||
380 | compressed thus we first store it in the context and then get it | ||
381 | back as a (decompresssed) point. */ | ||
382 | q_y = gcry_mpi_set_opaque_copy (NULL, | ||
383 | pub->q_y, | ||
384 | 8 * sizeof(pub->q_y)); | ||
385 | GNUNET_assert (NULL != q_y); | ||
386 | GNUNET_assert (0 == gcry_mpi_ec_set_mpi ("q", q_y, ctx)); | ||
387 | gcry_mpi_release (q_y); | ||
388 | q = gcry_mpi_ec_get_point ("q", ctx, 0); | ||
389 | GNUNET_assert (q); | ||
390 | |||
391 | /** | ||
392 | * Get h mod n | ||
393 | */ | ||
394 | n = gcry_mpi_ec_get_mpi ("n", ctx, 1); | ||
395 | GNUNET_assert (NULL != n); | ||
396 | GNUNET_assert (NULL != pub); | ||
397 | h_mod_n = derive_h_mod_n (pub, | ||
398 | seed, | ||
399 | seedsize, | ||
400 | n, | ||
401 | NULL /* We don't need hc here */); | ||
402 | |||
403 | /* calculate v = h_mod_n * q */ | ||
404 | v = gcry_mpi_point_new (0); | ||
405 | gcry_mpi_ec_mul (v, h_mod_n, q, ctx); | ||
406 | gcry_mpi_release (h_mod_n); | ||
407 | gcry_mpi_release (n); | ||
408 | gcry_mpi_point_release (q); | ||
409 | |||
410 | /* convert point 'v' to public key that we return */ | ||
411 | GNUNET_assert (0 == gcry_mpi_ec_set_point ("q", v, ctx)); | ||
412 | gcry_mpi_point_release (v); | ||
413 | q_y = gcry_mpi_ec_get_mpi ("q@eddsa", ctx, 0); | ||
414 | GNUNET_assert (q_y); | ||
415 | GNUNET_CRYPTO_mpi_print_unsigned (result->q_y, sizeof(result->q_y), q_y); | ||
416 | gcry_mpi_release (q_y); | ||
417 | gcry_ctx_release (ctx); | ||
418 | } | ||
diff --git a/src/util/crypto_hkdf.c b/src/util/crypto_hkdf.c index 4e4496819..838e37d8d 100644 --- a/src/util/crypto_hkdf.c +++ b/src/util/crypto_hkdf.c | |||
@@ -74,16 +74,21 @@ | |||
74 | * @return HMAC, freed by caller via gcry_md_close/_reset | 74 | * @return HMAC, freed by caller via gcry_md_close/_reset |
75 | */ | 75 | */ |
76 | static const void * | 76 | static const void * |
77 | doHMAC (gcry_md_hd_t mac, const void *key, size_t key_len, const void *buf, | 77 | doHMAC (gcry_md_hd_t mac, |
78 | const void *key, | ||
79 | size_t key_len, | ||
80 | const void *buf, | ||
78 | size_t buf_len) | 81 | size_t buf_len) |
79 | { | 82 | { |
80 | if (GPG_ERR_NO_ERROR != gcry_md_setkey (mac, key, key_len)) | 83 | if (GPG_ERR_NO_ERROR != |
84 | gcry_md_setkey (mac, key, key_len)) | ||
81 | { | 85 | { |
82 | GNUNET_break (0); | 86 | GNUNET_break (0); |
83 | return NULL; | 87 | return NULL; |
84 | } | 88 | } |
85 | gcry_md_write (mac, buf, buf_len); | 89 | gcry_md_write (mac, |
86 | 90 | buf, | |
91 | buf_len); | ||
87 | return (const void *) gcry_md_read (mac, 0); | 92 | return (const void *) gcry_md_read (mac, 0); |
88 | } | 93 | } |
89 | 94 | ||
@@ -98,9 +103,13 @@ doHMAC (gcry_md_hd_t mac, const void *key, size_t key_len, const void *buf, | |||
98 | * @param prk result buffer (allocated by caller; at least gcry_md_dlen() bytes) | 103 | * @param prk result buffer (allocated by caller; at least gcry_md_dlen() bytes) |
99 | * @return #GNUNET_YES on success | 104 | * @return #GNUNET_YES on success |
100 | */ | 105 | */ |
101 | static int | 106 | static enum GNUNET_GenericReturnValue |
102 | getPRK (gcry_md_hd_t mac, const void *xts, size_t xts_len, const void *skm, | 107 | getPRK (gcry_md_hd_t mac, |
103 | size_t skm_len, void *prk) | 108 | const void *xts, |
109 | size_t xts_len, | ||
110 | const void *skm, | ||
111 | size_t skm_len, | ||
112 | void *prk) | ||
104 | { | 113 | { |
105 | const void *ret; | 114 | const void *ret; |
106 | size_t dlen; | 115 | size_t dlen; |
@@ -114,9 +123,10 @@ getPRK (gcry_md_hd_t mac, const void *xts, size_t xts_len, const void *skm, | |||
114 | * salt - optional salt value (a non-secret random value); | 123 | * salt - optional salt value (a non-secret random value); |
115 | * if not provided, it is set to a string of HashLen zeros. */ | 124 | * if not provided, it is set to a string of HashLen zeros. */ |
116 | 125 | ||
117 | if (xts_len == 0) | 126 | if (0 == xts_len) |
118 | { | 127 | { |
119 | char zero_salt[dlen]; | 128 | char zero_salt[dlen]; |
129 | |||
120 | memset (zero_salt, 0, dlen); | 130 | memset (zero_salt, 0, dlen); |
121 | ret = doHMAC (mac, zero_salt, dlen, skm, skm_len); | 131 | ret = doHMAC (mac, zero_salt, dlen, skm, skm_len); |
122 | } | 132 | } |
@@ -124,22 +134,23 @@ getPRK (gcry_md_hd_t mac, const void *xts, size_t xts_len, const void *skm, | |||
124 | { | 134 | { |
125 | ret = doHMAC (mac, xts, xts_len, skm, skm_len); | 135 | ret = doHMAC (mac, xts, xts_len, skm, skm_len); |
126 | } | 136 | } |
127 | if (ret == NULL) | 137 | if (NULL == ret) |
128 | return GNUNET_SYSERR; | 138 | return GNUNET_SYSERR; |
129 | GNUNET_memcpy (prk, ret, dlen); | 139 | GNUNET_memcpy (prk, |
130 | 140 | ret, | |
141 | dlen); | ||
131 | return GNUNET_YES; | 142 | return GNUNET_YES; |
132 | } | 143 | } |
133 | 144 | ||
134 | 145 | ||
135 | #if DEBUG_HKDF | 146 | #if DEBUG_HKDF |
136 | static void | 147 | static void |
137 | dump (const char *src, const void *p, unsigned int l) | 148 | dump (const char *src, |
149 | const void *p, | ||
150 | unsigned int l) | ||
138 | { | 151 | { |
139 | unsigned int i; | ||
140 | |||
141 | printf ("\n%s: ", src); | 152 | printf ("\n%s: ", src); |
142 | for (i = 0; i < l; i++) | 153 | for (unsigned int i = 0; i < l; i++) |
143 | { | 154 | { |
144 | printf ("%2x", (int) ((const unsigned char *) p)[i]); | 155 | printf ("%2x", (int) ((const unsigned char *) p)[i]); |
145 | } | 156 | } |
@@ -150,23 +161,16 @@ dump (const char *src, const void *p, unsigned int l) | |||
150 | #endif | 161 | #endif |
151 | 162 | ||
152 | 163 | ||
153 | /** | 164 | enum GNUNET_GenericReturnValue |
154 | * @brief Derive key | 165 | GNUNET_CRYPTO_hkdf_v (void *result, |
155 | * @param result buffer for the derived key, allocated by caller | 166 | size_t out_len, |
156 | * @param out_len desired length of the derived key | 167 | int xtr_algo, |
157 | * @param xtr_algo hash algorithm for the extraction phase, GCRY_MD_... | 168 | int prf_algo, |
158 | * @param prf_algo hash algorithm for the expansion phase, GCRY_MD_... | 169 | const void *xts, |
159 | * @param xts salt | 170 | size_t xts_len, |
160 | * @param xts_len length of @a xts | 171 | const void *skm, |
161 | * @param skm source key material | 172 | size_t skm_len, |
162 | * @param skm_len length of @a skm | 173 | va_list argp) |
163 | * @param argp va_list of void * & size_t pairs for context chunks | ||
164 | * @return #GNUNET_YES on success | ||
165 | */ | ||
166 | int | ||
167 | GNUNET_CRYPTO_hkdf_v (void *result, size_t out_len, int xtr_algo, int prf_algo, | ||
168 | const void *xts, size_t xts_len, const void *skm, | ||
169 | size_t skm_len, va_list argp) | ||
170 | { | 174 | { |
171 | gcry_md_hd_t xtr; | 175 | gcry_md_hd_t xtr; |
172 | gcry_md_hd_t prf; | 176 | gcry_md_hd_t prf; |
@@ -186,10 +190,14 @@ GNUNET_CRYPTO_hkdf_v (void *result, size_t out_len, int xtr_algo, int prf_algo, | |||
186 | if (0 == k) | 190 | if (0 == k) |
187 | return GNUNET_SYSERR; | 191 | return GNUNET_SYSERR; |
188 | if (GPG_ERR_NO_ERROR != | 192 | if (GPG_ERR_NO_ERROR != |
189 | gcry_md_open (&xtr, xtr_algo, GCRY_MD_FLAG_HMAC)) | 193 | gcry_md_open (&xtr, |
194 | xtr_algo, | ||
195 | GCRY_MD_FLAG_HMAC)) | ||
190 | return GNUNET_SYSERR; | 196 | return GNUNET_SYSERR; |
191 | if (GPG_ERR_NO_ERROR != | 197 | if (GPG_ERR_NO_ERROR != |
192 | gcry_md_open (&prf, prf_algo, GCRY_MD_FLAG_HMAC)) | 198 | gcry_md_open (&prf, |
199 | prf_algo, | ||
200 | GCRY_MD_FLAG_HMAC)) | ||
193 | { | 201 | { |
194 | gcry_md_close (xtr); | 202 | gcry_md_close (xtr); |
195 | return GNUNET_SYSERR; | 203 | return GNUNET_SYSERR; |
@@ -221,7 +229,8 @@ GNUNET_CRYPTO_hkdf_v (void *result, size_t out_len, int xtr_algo, int prf_algo, | |||
221 | } | 229 | } |
222 | 230 | ||
223 | memset (result, 0, out_len); | 231 | memset (result, 0, out_len); |
224 | if (getPRK (xtr, xts, xts_len, skm, skm_len, prk) != GNUNET_YES) | 232 | if (GNUNET_YES != |
233 | getPRK (xtr, xts, xts_len, skm, skm_len, prk)) | ||
225 | goto hkdf_error; | 234 | goto hkdf_error; |
226 | #if DEBUG_HKDF | 235 | #if DEBUG_HKDF |
227 | dump ("PRK", prk, xtr_len); | 236 | dump ("PRK", prk, xtr_len); |
@@ -276,7 +285,7 @@ GNUNET_CRYPTO_hkdf_v (void *result, size_t out_len, int xtr_algo, int prf_algo, | |||
276 | dump ("K(i+1)", plain, plain_len); | 285 | dump ("K(i+1)", plain, plain_len); |
277 | #endif | 286 | #endif |
278 | hc = doHMAC (prf, prk, xtr_len, plain, plain_len); | 287 | hc = doHMAC (prf, prk, xtr_len, plain, plain_len); |
279 | if (hc == NULL) | 288 | if (NULL == hc) |
280 | { | 289 | { |
281 | GNUNET_free (plain); | 290 | GNUNET_free (plain); |
282 | goto hkdf_error; | 291 | goto hkdf_error; |
@@ -327,32 +336,31 @@ hkdf_ok: | |||
327 | } | 336 | } |
328 | 337 | ||
329 | 338 | ||
330 | /** | 339 | enum GNUNET_GenericReturnValue |
331 | * @brief Derive key | 340 | GNUNET_CRYPTO_hkdf (void *result, |
332 | * @param result buffer for the derived key, allocated by caller | 341 | size_t out_len, |
333 | * @param out_len desired length of the derived key | 342 | int xtr_algo, |
334 | * @param xtr_algo hash algorithm for the extraction phase, GCRY_MD_... | 343 | int prf_algo, |
335 | * @param prf_algo hash algorithm for the expansion phase, GCRY_MD_... | 344 | const void *xts, |
336 | * @param xts salt | 345 | size_t xts_len, |
337 | * @param xts_len length of @a xts | 346 | const void *skm, |
338 | * @param skm source key material | ||
339 | * @param skm_len length of @a skm | ||
340 | * @return #GNUNET_YES on success | ||
341 | */ | ||
342 | int | ||
343 | GNUNET_CRYPTO_hkdf (void *result, size_t out_len, int xtr_algo, int prf_algo, | ||
344 | const void *xts, size_t xts_len, const void *skm, | ||
345 | size_t skm_len, ...) | 347 | size_t skm_len, ...) |
346 | { | 348 | { |
347 | va_list argp; | 349 | va_list argp; |
348 | int ret; | 350 | enum GNUNET_GenericReturnValue ret; |
349 | 351 | ||
350 | va_start (argp, skm_len); | 352 | va_start (argp, skm_len); |
351 | ret = | 353 | ret = |
352 | GNUNET_CRYPTO_hkdf_v (result, out_len, xtr_algo, prf_algo, xts, xts_len, | 354 | GNUNET_CRYPTO_hkdf_v (result, |
353 | skm, skm_len, argp); | 355 | out_len, |
356 | xtr_algo, | ||
357 | prf_algo, | ||
358 | xts, | ||
359 | xts_len, | ||
360 | skm, | ||
361 | skm_len, | ||
362 | argp); | ||
354 | va_end (argp); | 363 | va_end (argp); |
355 | |||
356 | return ret; | 364 | return ret; |
357 | } | 365 | } |
358 | 366 | ||
diff --git a/src/util/crypto_kdf.c b/src/util/crypto_kdf.c index 0dc734549..f577e0f7a 100644 --- a/src/util/crypto_kdf.c +++ b/src/util/crypto_kdf.c | |||
@@ -32,18 +32,8 @@ | |||
32 | 32 | ||
33 | #define LOG(kind, ...) GNUNET_log_from (kind, "util-crypto-kdf", __VA_ARGS__) | 33 | #define LOG(kind, ...) GNUNET_log_from (kind, "util-crypto-kdf", __VA_ARGS__) |
34 | 34 | ||
35 | /** | 35 | |
36 | * @brief Derive key | 36 | enum GNUNET_GenericReturnValue |
37 | * @param result buffer for the derived key, allocated by caller | ||
38 | * @param out_len desired length of the derived key | ||
39 | * @param xts salt | ||
40 | * @param xts_len length of @a xts | ||
41 | * @param skm source key material | ||
42 | * @param skm_len length of @a skm | ||
43 | * @param argp va_list of void * & size_t pairs for context chunks | ||
44 | * @return #GNUNET_YES on success | ||
45 | */ | ||
46 | int | ||
47 | GNUNET_CRYPTO_kdf_v (void *result, | 37 | GNUNET_CRYPTO_kdf_v (void *result, |
48 | size_t out_len, | 38 | size_t out_len, |
49 | const void *xts, | 39 | const void *xts, |
@@ -62,7 +52,7 @@ GNUNET_CRYPTO_kdf_v (void *result, | |||
62 | * hash function." | 52 | * hash function." |
63 | * | 53 | * |
64 | * http://eprint.iacr.org/2010/264 | 54 | * http://eprint.iacr.org/2010/264 |
65 | */// | 55 | */ |
66 | return GNUNET_CRYPTO_hkdf_v (result, | 56 | return GNUNET_CRYPTO_hkdf_v (result, |
67 | out_len, | 57 | out_len, |
68 | GCRY_MD_SHA512, | 58 | GCRY_MD_SHA512, |
@@ -75,18 +65,7 @@ GNUNET_CRYPTO_kdf_v (void *result, | |||
75 | } | 65 | } |
76 | 66 | ||
77 | 67 | ||
78 | /** | 68 | enum GNUNET_GenericReturnValue |
79 | * @brief Derive key | ||
80 | * @param result buffer for the derived key, allocated by caller | ||
81 | * @param out_len desired length of the derived key | ||
82 | * @param xts salt | ||
83 | * @param xts_len length of @a xts | ||
84 | * @param skm source key material | ||
85 | * @param skm_len length of @a skm | ||
86 | * @param ... void * & size_t pairs for context chunks | ||
87 | * @return #GNUNET_YES on success | ||
88 | */ | ||
89 | int | ||
90 | GNUNET_CRYPTO_kdf (void *result, | 69 | GNUNET_CRYPTO_kdf (void *result, |
91 | size_t out_len, | 70 | size_t out_len, |
92 | const void *xts, | 71 | const void *xts, |
@@ -111,18 +90,6 @@ GNUNET_CRYPTO_kdf (void *result, | |||
111 | } | 90 | } |
112 | 91 | ||
113 | 92 | ||
114 | /** | ||
115 | * Deterministically generate a pseudo-random number uniformly from the | ||
116 | * integers modulo a libgcrypt mpi. | ||
117 | * | ||
118 | * @param[out] r MPI value set to the FDH | ||
119 | * @param n MPI to work modulo | ||
120 | * @param xts salt | ||
121 | * @param xts_len length of @a xts | ||
122 | * @param skm source key material | ||
123 | * @param skm_len length of @a skm | ||
124 | * @param ctx context string | ||
125 | */ | ||
126 | void | 93 | void |
127 | GNUNET_CRYPTO_kdf_mod_mpi (gcry_mpi_t *r, | 94 | GNUNET_CRYPTO_kdf_mod_mpi (gcry_mpi_t *r, |
128 | gcry_mpi_t n, | 95 | gcry_mpi_t n, |
@@ -137,32 +104,34 @@ GNUNET_CRYPTO_kdf_mod_mpi (gcry_mpi_t *r, | |||
137 | 104 | ||
138 | nbits = gcry_mpi_get_nbits (n); | 105 | nbits = gcry_mpi_get_nbits (n); |
139 | /* GNUNET_assert (nbits > 512); */ | 106 | /* GNUNET_assert (nbits > 512); */ |
140 | |||
141 | ctr = 0; | 107 | ctr = 0; |
142 | while (1) | 108 | while (1) |
143 | { | 109 | { |
144 | /* Ain't clear if n is always divisible by 8 */ | 110 | /* Ain't clear if n is always divisible by 8 */ |
145 | uint8_t buf[ (nbits - 1) / 8 + 1 ]; | 111 | size_t bsize = (nbits - 1) / 8 + 1; |
112 | uint8_t buf[bsize]; | ||
146 | uint16_t ctr_nbo = htons (ctr); | 113 | uint16_t ctr_nbo = htons (ctr); |
147 | 114 | ||
148 | rc = GNUNET_CRYPTO_kdf (buf, | 115 | rc = GNUNET_CRYPTO_kdf (buf, |
149 | sizeof(buf), | 116 | bsize, |
150 | xts, xts_len, | 117 | xts, xts_len, |
151 | skm, skm_len, | 118 | skm, skm_len, |
152 | ctx, strlen (ctx), | 119 | ctx, strlen (ctx), |
153 | &ctr_nbo, sizeof(ctr_nbo), | 120 | &ctr_nbo, sizeof(ctr_nbo), |
154 | NULL, 0); | 121 | NULL, 0); |
155 | GNUNET_assert (GNUNET_YES == rc); | 122 | GNUNET_assert (GNUNET_YES == rc); |
156 | |||
157 | rc = gcry_mpi_scan (r, | 123 | rc = gcry_mpi_scan (r, |
158 | GCRYMPI_FMT_USG, | 124 | GCRYMPI_FMT_USG, |
159 | (const unsigned char *) buf, | 125 | (const unsigned char *) buf, |
160 | sizeof(buf), | 126 | bsize, |
161 | &rsize); | 127 | &rsize); |
162 | GNUNET_assert (0 == rc); /* Allocation error? */ | 128 | GNUNET_assert (GPG_ERR_NO_ERROR == rc); /* Allocation error? */ |
163 | 129 | GNUNET_assert (rsize == bsize); | |
164 | gcry_mpi_clear_highbit (*r, nbits); | 130 | gcry_mpi_clear_highbit (*r, |
165 | GNUNET_assert (0 == gcry_mpi_test_bit (*r, nbits)); | 131 | nbits); |
132 | GNUNET_assert (0 == | ||
133 | gcry_mpi_test_bit (*r, | ||
134 | nbits)); | ||
166 | ++ctr; | 135 | ++ctr; |
167 | /* We reject this FDH if either *r > n and retry with another ctr */ | 136 | /* We reject this FDH if either *r > n and retry with another ctr */ |
168 | if (0 > gcry_mpi_cmp (*r, n)) | 137 | if (0 > gcry_mpi_cmp (*r, n)) |
diff --git a/src/util/crypto_rsa.c b/src/util/crypto_rsa.c index 43e6eedac..4b8e5a5ce 100644 --- a/src/util/crypto_rsa.c +++ b/src/util/crypto_rsa.c | |||
@@ -497,7 +497,8 @@ GNUNET_CRYPTO_rsa_public_key_decode (const char *buf, | |||
497 | * @return True if gcd(r,n) = 1, False means RSA key is malicious | 497 | * @return True if gcd(r,n) = 1, False means RSA key is malicious |
498 | */ | 498 | */ |
499 | static int | 499 | static int |
500 | rsa_gcd_validate (gcry_mpi_t r, gcry_mpi_t n) | 500 | rsa_gcd_validate (gcry_mpi_t r, |
501 | gcry_mpi_t n) | ||
501 | { | 502 | { |
502 | gcry_mpi_t g; | 503 | gcry_mpi_t g; |
503 | int t; | 504 | int t; |
@@ -520,29 +521,34 @@ static struct RsaBlindingKey * | |||
520 | rsa_blinding_key_derive (const struct GNUNET_CRYPTO_RsaPublicKey *pkey, | 521 | rsa_blinding_key_derive (const struct GNUNET_CRYPTO_RsaPublicKey *pkey, |
521 | const struct GNUNET_CRYPTO_RsaBlindingKeySecret *bks) | 522 | const struct GNUNET_CRYPTO_RsaBlindingKeySecret *bks) |
522 | { | 523 | { |
523 | char *xts = "Blinding KDF extractor HMAC key"; /* Trusts bks' randomness more */ | 524 | const char *xts = "Blinding KDF extractor HMAC key"; /* Trusts bks' randomness more */ |
524 | struct RsaBlindingKey *blind; | 525 | struct RsaBlindingKey *blind; |
525 | gcry_mpi_t n; | 526 | gcry_mpi_t n; |
526 | 527 | ||
527 | blind = GNUNET_new (struct RsaBlindingKey); | 528 | blind = GNUNET_new (struct RsaBlindingKey); |
528 | GNUNET_assert (NULL != blind); | ||
529 | 529 | ||
530 | /* Extract the composite n from the RSA public key */ | 530 | /* Extract the composite n from the RSA public key */ |
531 | GNUNET_assert (0 == key_from_sexp (&n, pkey->sexp, "rsa", "n")); | 531 | GNUNET_assert (0 == |
532 | key_from_sexp (&n, | ||
533 | pkey->sexp, | ||
534 | "rsa", | ||
535 | "n")); | ||
532 | /* Assert that it at least looks like an RSA key */ | 536 | /* Assert that it at least looks like an RSA key */ |
533 | GNUNET_assert (0 == gcry_mpi_get_flag (n, GCRYMPI_FLAG_OPAQUE)); | 537 | GNUNET_assert (0 == |
534 | 538 | gcry_mpi_get_flag (n, | |
539 | GCRYMPI_FLAG_OPAQUE)); | ||
535 | GNUNET_CRYPTO_kdf_mod_mpi (&blind->r, | 540 | GNUNET_CRYPTO_kdf_mod_mpi (&blind->r, |
536 | n, | 541 | n, |
537 | xts, strlen (xts), | 542 | xts, strlen (xts), |
538 | bks, sizeof(*bks), | 543 | bks, sizeof(*bks), |
539 | "Blinding KDF"); | 544 | "Blinding KDF"); |
540 | if (0 == rsa_gcd_validate (blind->r, n)) | 545 | if (0 == rsa_gcd_validate (blind->r, |
546 | n)) | ||
541 | { | 547 | { |
548 | gcry_mpi_release (blind->r); | ||
542 | GNUNET_free (blind); | 549 | GNUNET_free (blind); |
543 | blind = NULL; | 550 | blind = NULL; |
544 | } | 551 | } |
545 | |||
546 | gcry_mpi_release (n); | 552 | gcry_mpi_release (n); |
547 | return blind; | 553 | return blind; |
548 | } | 554 | } |
@@ -760,8 +766,9 @@ rsa_full_domain_hash (const struct GNUNET_CRYPTO_RsaPublicKey *pkey, | |||
760 | /* We key with the public denomination key as a homage to RSA-PSS by * | 766 | /* We key with the public denomination key as a homage to RSA-PSS by * |
761 | * Mihir Bellare and Phillip Rogaway. Doing this lowers the degree * | 767 | * Mihir Bellare and Phillip Rogaway. Doing this lowers the degree * |
762 | * of the hypothetical polyomial-time attack on RSA-KTI created by a * | 768 | * of the hypothetical polyomial-time attack on RSA-KTI created by a * |
763 | * polynomial-time one-more forgary attack. Yey seeding! */ | 769 | * polynomial-time one-more forgary attack. Yey seeding! */ |
764 | xts_len = GNUNET_CRYPTO_rsa_public_key_encode (pkey, &xts); | 770 | xts_len = GNUNET_CRYPTO_rsa_public_key_encode (pkey, |
771 | &xts); | ||
765 | 772 | ||
766 | GNUNET_CRYPTO_kdf_mod_mpi (&r, | 773 | GNUNET_CRYPTO_kdf_mod_mpi (&r, |
767 | n, | 774 | n, |
@@ -769,7 +776,6 @@ rsa_full_domain_hash (const struct GNUNET_CRYPTO_RsaPublicKey *pkey, | |||
769 | hash, sizeof(*hash), | 776 | hash, sizeof(*hash), |
770 | "RSA-FDA FTpsW!"); | 777 | "RSA-FDA FTpsW!"); |
771 | GNUNET_free (xts); | 778 | GNUNET_free (xts); |
772 | |||
773 | ok = rsa_gcd_validate (r, n); | 779 | ok = rsa_gcd_validate (r, n); |
774 | gcry_mpi_release (n); | 780 | gcry_mpi_release (n); |
775 | if (ok) | 781 | if (ok) |
diff --git a/src/util/test_crypto_eddsa.c b/src/util/test_crypto_eddsa.c index 459619ff2..e9573a307 100644 --- a/src/util/test_crypto_eddsa.c +++ b/src/util/test_crypto_eddsa.c | |||
@@ -130,9 +130,11 @@ testDeriveSignVerify (void) | |||
130 | return GNUNET_SYSERR; | 130 | return GNUNET_SYSERR; |
131 | } | 131 | } |
132 | 132 | ||
133 | GNUNET_CRYPTO_eddsa_sign_with_scalar (&dpriv, | 133 | GNUNET_CRYPTO_eddsa_sign_derived (&key, |
134 | &purp, | 134 | "test-derive", |
135 | &sig); | 135 | "test-CTX", |
136 | &purp, | ||
137 | &sig); | ||
136 | if (GNUNET_SYSERR == | 138 | if (GNUNET_SYSERR == |
137 | GNUNET_CRYPTO_eddsa_verify_ (GNUNET_SIGNATURE_PURPOSE_TEST, | 139 | GNUNET_CRYPTO_eddsa_verify_ (GNUNET_SIGNATURE_PURPOSE_TEST, |
138 | &purp, | 140 | &purp, |
diff --git a/src/util/test_crypto_edx25519.c b/src/util/test_crypto_edx25519.c new file mode 100644 index 000000000..ead6f0bb9 --- /dev/null +++ b/src/util/test_crypto_edx25519.c | |||
@@ -0,0 +1,326 @@ | |||
1 | /* | ||
2 | This file is part of GNUnet. | ||
3 | Copyright (C) 2022 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 util/test_crypto_edx25519.c | ||
23 | * @brief testcase for ECC public key crypto for edx25519 | ||
24 | * @author Özgür Kesim | ||
25 | */ | ||
26 | #include "platform.h" | ||
27 | #include "gnunet_util_lib.h" | ||
28 | #include "gnunet_signatures.h" | ||
29 | #include <gcrypt.h> | ||
30 | |||
31 | #define ITER 25 | ||
32 | |||
33 | #define KEYFILE "/tmp/test-gnunet-crypto-edx25519.key" | ||
34 | |||
35 | #define PERF GNUNET_YES | ||
36 | |||
37 | |||
38 | static struct GNUNET_CRYPTO_Edx25519PrivateKey key; | ||
39 | |||
40 | |||
41 | static int | ||
42 | testSignVerify (void) | ||
43 | { | ||
44 | struct GNUNET_CRYPTO_Edx25519Signature sig; | ||
45 | struct GNUNET_CRYPTO_EccSignaturePurpose purp; | ||
46 | struct GNUNET_CRYPTO_Edx25519PublicKey pkey; | ||
47 | struct GNUNET_TIME_Absolute start; | ||
48 | int ok = GNUNET_OK; | ||
49 | |||
50 | fprintf (stderr, "%s", "W"); | ||
51 | GNUNET_CRYPTO_edx25519_key_get_public (&key, | ||
52 | &pkey); | ||
53 | start = GNUNET_TIME_absolute_get (); | ||
54 | purp.size = htonl (sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose)); | ||
55 | purp.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_TEST); | ||
56 | |||
57 | for (unsigned int i = 0; i < ITER; i++) | ||
58 | { | ||
59 | fprintf (stderr, "%s", "."); fflush (stderr); | ||
60 | if (GNUNET_SYSERR == GNUNET_CRYPTO_edx25519_sign_ (&key, | ||
61 | &purp, | ||
62 | &sig)) | ||
63 | { | ||
64 | fprintf (stderr, | ||
65 | "GNUNET_CRYPTO_edx25519_sign returned SYSERR\n"); | ||
66 | ok = GNUNET_SYSERR; | ||
67 | continue; | ||
68 | } | ||
69 | if (GNUNET_SYSERR == | ||
70 | GNUNET_CRYPTO_edx25519_verify_ (GNUNET_SIGNATURE_PURPOSE_TEST, | ||
71 | &purp, | ||
72 | &sig, | ||
73 | &pkey)) | ||
74 | { | ||
75 | fprintf (stderr, | ||
76 | "GNUNET_CRYPTO_edx25519_verify failed!\n"); | ||
77 | ok = GNUNET_SYSERR; | ||
78 | continue; | ||
79 | } | ||
80 | if (GNUNET_SYSERR != | ||
81 | GNUNET_CRYPTO_edx25519_verify_ ( | ||
82 | GNUNET_SIGNATURE_PURPOSE_TRANSPORT_PONG_OWN, | ||
83 | &purp, | ||
84 | &sig, | ||
85 | &pkey)) | ||
86 | { | ||
87 | fprintf (stderr, | ||
88 | "GNUNET_CRYPTO_edx25519_verify failed to fail!\n"); | ||
89 | ok = GNUNET_SYSERR; | ||
90 | continue; | ||
91 | } | ||
92 | } | ||
93 | fprintf (stderr, "\n"); | ||
94 | printf ("%d EdDSA sign/verify operations %s\n", | ||
95 | ITER, | ||
96 | GNUNET_STRINGS_relative_time_to_string ( | ||
97 | GNUNET_TIME_absolute_get_duration (start), | ||
98 | GNUNET_YES)); | ||
99 | return ok; | ||
100 | } | ||
101 | |||
102 | |||
103 | static int | ||
104 | testDeriveSignVerify (void) | ||
105 | { | ||
106 | struct GNUNET_CRYPTO_EccSignaturePurpose purp; | ||
107 | struct GNUNET_CRYPTO_Edx25519Signature sig; | ||
108 | struct GNUNET_CRYPTO_Edx25519PrivateKey dkey; | ||
109 | struct GNUNET_CRYPTO_Edx25519PublicKey pub; | ||
110 | struct GNUNET_CRYPTO_Edx25519PublicKey dpub; | ||
111 | struct GNUNET_CRYPTO_Edx25519PublicKey dpub2; | ||
112 | |||
113 | GNUNET_CRYPTO_edx25519_key_get_public (&key, &pub); | ||
114 | GNUNET_CRYPTO_edx25519_private_key_derive (&key, | ||
115 | "test-derive", | ||
116 | sizeof("test-derive"), | ||
117 | &dkey); | ||
118 | GNUNET_CRYPTO_edx25519_public_key_derive (&pub, | ||
119 | "test-derive", | ||
120 | sizeof("test-derive"), | ||
121 | &dpub); | ||
122 | GNUNET_CRYPTO_edx25519_key_get_public (&dkey, &dpub2); | ||
123 | |||
124 | if (0 != GNUNET_memcmp (&dpub.q_y, &dpub2.q_y)) | ||
125 | { | ||
126 | fprintf (stderr, "key deriviation failed\n"); | ||
127 | return GNUNET_SYSERR; | ||
128 | } | ||
129 | |||
130 | purp.size = htonl (sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose)); | ||
131 | purp.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_TEST); | ||
132 | |||
133 | GNUNET_CRYPTO_edx25519_sign_ (&dkey, | ||
134 | &purp, | ||
135 | &sig); | ||
136 | |||
137 | if (GNUNET_SYSERR == | ||
138 | GNUNET_CRYPTO_edx25519_verify_ (GNUNET_SIGNATURE_PURPOSE_TEST, | ||
139 | &purp, | ||
140 | &sig, | ||
141 | &dpub)) | ||
142 | { | ||
143 | fprintf (stderr, | ||
144 | "GNUNET_CRYPTO_edx25519_verify failed after derivation!\n"); | ||
145 | return GNUNET_SYSERR; | ||
146 | } | ||
147 | |||
148 | if (GNUNET_SYSERR != | ||
149 | GNUNET_CRYPTO_edx25519_verify_ (GNUNET_SIGNATURE_PURPOSE_TEST, | ||
150 | &purp, | ||
151 | &sig, | ||
152 | &pub)) | ||
153 | { | ||
154 | fprintf (stderr, | ||
155 | "GNUNET_CRYPTO_edx25519_verify failed to fail after derivation!\n"); | ||
156 | return GNUNET_SYSERR; | ||
157 | } | ||
158 | |||
159 | if (GNUNET_SYSERR != | ||
160 | GNUNET_CRYPTO_edx25519_verify_ ( | ||
161 | GNUNET_SIGNATURE_PURPOSE_TRANSPORT_PONG_OWN, | ||
162 | &purp, | ||
163 | &sig, | ||
164 | &dpub)) | ||
165 | { | ||
166 | fprintf (stderr, | ||
167 | "GNUNET_CRYPTO_edx25519_verify failed to fail after derivation!\n"); | ||
168 | return GNUNET_SYSERR; | ||
169 | } | ||
170 | return GNUNET_OK; | ||
171 | } | ||
172 | |||
173 | |||
174 | #if PERF | ||
175 | static int | ||
176 | testSignPerformance () | ||
177 | { | ||
178 | struct GNUNET_CRYPTO_EccSignaturePurpose purp; | ||
179 | struct GNUNET_CRYPTO_Edx25519Signature sig; | ||
180 | struct GNUNET_CRYPTO_Edx25519PublicKey pkey; | ||
181 | struct GNUNET_TIME_Absolute start; | ||
182 | int ok = GNUNET_OK; | ||
183 | |||
184 | purp.size = htonl (sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose)); | ||
185 | purp.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_TEST); | ||
186 | fprintf (stderr, "%s", "W"); | ||
187 | GNUNET_CRYPTO_edx25519_key_get_public (&key, | ||
188 | &pkey); | ||
189 | start = GNUNET_TIME_absolute_get (); | ||
190 | for (unsigned int i = 0; i < ITER; i++) | ||
191 | { | ||
192 | fprintf (stderr, "%s", "."); | ||
193 | fflush (stderr); | ||
194 | if (GNUNET_SYSERR == | ||
195 | GNUNET_CRYPTO_edx25519_sign_ (&key, | ||
196 | &purp, | ||
197 | &sig)) | ||
198 | { | ||
199 | fprintf (stderr, "%s", "GNUNET_CRYPTO_edx25519_sign returned SYSERR\n"); | ||
200 | ok = GNUNET_SYSERR; | ||
201 | continue; | ||
202 | } | ||
203 | } | ||
204 | fprintf (stderr, "\n"); | ||
205 | printf ("%d EdDSA sign operations %s\n", | ||
206 | ITER, | ||
207 | GNUNET_STRINGS_relative_time_to_string ( | ||
208 | GNUNET_TIME_absolute_get_duration (start), | ||
209 | GNUNET_YES)); | ||
210 | return ok; | ||
211 | } | ||
212 | |||
213 | |||
214 | #endif | ||
215 | |||
216 | |||
217 | #if 0 /* not implemented */ | ||
218 | static int | ||
219 | testCreateFromFile (void) | ||
220 | { | ||
221 | struct GNUNET_CRYPTO_Edx25519PublicKey p1; | ||
222 | struct GNUNET_CRYPTO_Edx25519PublicKey p2; | ||
223 | |||
224 | /* do_create == GNUNET_YES and non-existing file MUST return GNUNET_YES */ | ||
225 | GNUNET_assert (0 == unlink (KEYFILE) || ENOENT == errno); | ||
226 | GNUNET_assert (GNUNET_YES == | ||
227 | GNUNET_CRYPTO_edx25519_key_from_file (KEYFILE, | ||
228 | GNUNET_YES, | ||
229 | &key)); | ||
230 | GNUNET_CRYPTO_edx25519_key_get_public (&key, | ||
231 | &p1); | ||
232 | |||
233 | /* do_create == GNUNET_YES and _existing_ file MUST return GNUNET_NO */ | ||
234 | GNUNET_assert (GNUNET_NO == | ||
235 | GNUNET_CRYPTO_edx25519_key_from_file (KEYFILE, | ||
236 | GNUNET_YES, | ||
237 | &key)); | ||
238 | GNUNET_CRYPTO_edx25519_key_get_public (&key, | ||
239 | &p2); | ||
240 | GNUNET_assert (0 == | ||
241 | GNUNET_memcmp (&p1, | ||
242 | &p2)); | ||
243 | |||
244 | /* do_create == GNUNET_NO and non-existing file MUST return GNUNET_SYSERR */ | ||
245 | GNUNET_assert (0 == unlink (KEYFILE)); | ||
246 | GNUNET_assert (GNUNET_SYSERR == | ||
247 | GNUNET_CRYPTO_edx25519_key_from_file (KEYFILE, | ||
248 | GNUNET_NO, | ||
249 | &key)); | ||
250 | return GNUNET_OK; | ||
251 | } | ||
252 | |||
253 | |||
254 | #endif | ||
255 | |||
256 | |||
257 | static void | ||
258 | perf_keygen (void) | ||
259 | { | ||
260 | struct GNUNET_TIME_Absolute start; | ||
261 | struct GNUNET_CRYPTO_Edx25519PrivateKey pk; | ||
262 | |||
263 | fprintf (stderr, "%s", "W"); | ||
264 | start = GNUNET_TIME_absolute_get (); | ||
265 | for (unsigned int i = 0; i < 10; i++) | ||
266 | { | ||
267 | fprintf (stderr, "."); | ||
268 | fflush (stderr); | ||
269 | GNUNET_CRYPTO_edx25519_key_create (&pk); | ||
270 | } | ||
271 | fprintf (stderr, "\n"); | ||
272 | printf ("10 EdDSA keys created in %s\n", | ||
273 | GNUNET_STRINGS_relative_time_to_string ( | ||
274 | GNUNET_TIME_absolute_get_duration (start), GNUNET_YES)); | ||
275 | } | ||
276 | |||
277 | |||
278 | int | ||
279 | main (int argc, char *argv[]) | ||
280 | { | ||
281 | int failure_count = 0; | ||
282 | |||
283 | if (! gcry_check_version ("1.6.0")) | ||
284 | { | ||
285 | fprintf (stderr, | ||
286 | "libgcrypt has not the expected version (version %s is required).\n", | ||
287 | "1.6.0"); | ||
288 | return 0; | ||
289 | } | ||
290 | if (getenv ("GNUNET_GCRYPT_DEBUG")) | ||
291 | gcry_control (GCRYCTL_SET_DEBUG_FLAGS, 1u, 0); | ||
292 | GNUNET_log_setup ("test-crypto-edx25519", | ||
293 | "WARNING", | ||
294 | NULL); | ||
295 | GNUNET_CRYPTO_edx25519_key_create (&key); | ||
296 | if (GNUNET_OK != testDeriveSignVerify ()) | ||
297 | { | ||
298 | failure_count++; | ||
299 | fprintf (stderr, | ||
300 | "\n\n%d TESTS FAILED!\n\n", failure_count); | ||
301 | return -1; | ||
302 | } | ||
303 | #if PERF | ||
304 | if (GNUNET_OK != testSignPerformance ()) | ||
305 | failure_count++; | ||
306 | #endif | ||
307 | if (GNUNET_OK != testSignVerify ()) | ||
308 | failure_count++; | ||
309 | #if 0 /* not implemented */ | ||
310 | if (GNUNET_OK != testCreateFromFile ()) | ||
311 | failure_count++; | ||
312 | #endif | ||
313 | perf_keygen (); | ||
314 | |||
315 | if (0 != failure_count) | ||
316 | { | ||
317 | fprintf (stderr, | ||
318 | "\n\n%d TESTS FAILED!\n\n", | ||
319 | failure_count); | ||
320 | return -1; | ||
321 | } | ||
322 | return 0; | ||
323 | } | ||
324 | |||
325 | |||
326 | /* end of test_crypto_edx25519.c */ | ||
diff --git a/src/util/time.c b/src/util/time.c index 68a6937a0..cf072aebf 100644 --- a/src/util/time.c +++ b/src/util/time.c | |||
@@ -58,6 +58,22 @@ GNUNET_TIME_get_offset () | |||
58 | } | 58 | } |
59 | 59 | ||
60 | 60 | ||
61 | bool | ||
62 | GNUNET_TIME_absolute_approx_eq (struct GNUNET_TIME_Absolute a1, | ||
63 | struct GNUNET_TIME_Absolute a2, | ||
64 | struct GNUNET_TIME_Relative t) | ||
65 | { | ||
66 | struct GNUNET_TIME_Relative delta; | ||
67 | |||
68 | delta = GNUNET_TIME_relative_min ( | ||
69 | GNUNET_TIME_absolute_get_difference (a1, a2), | ||
70 | GNUNET_TIME_absolute_get_difference (a2, a1)); | ||
71 | return GNUNET_TIME_relative_cmp (delta, | ||
72 | <=, | ||
73 | t); | ||
74 | } | ||
75 | |||
76 | |||
61 | struct GNUNET_TIME_Timestamp | 77 | struct GNUNET_TIME_Timestamp |
62 | GNUNET_TIME_absolute_to_timestamp (struct GNUNET_TIME_Absolute at) | 78 | GNUNET_TIME_absolute_to_timestamp (struct GNUNET_TIME_Absolute at) |
63 | { | 79 | { |
@@ -370,6 +386,20 @@ GNUNET_TIME_timestamp_min (struct GNUNET_TIME_Timestamp t1, | |||
370 | } | 386 | } |
371 | 387 | ||
372 | 388 | ||
389 | struct GNUNET_TIME_Absolute | ||
390 | GNUNET_TIME_absolute_round_down (struct GNUNET_TIME_Absolute at, | ||
391 | struct GNUNET_TIME_Relative rt) | ||
392 | { | ||
393 | struct GNUNET_TIME_Absolute ret; | ||
394 | |||
395 | GNUNET_assert (! GNUNET_TIME_relative_is_zero (rt)); | ||
396 | ret.abs_value_us | ||
397 | = at.abs_value_us | ||
398 | - at.abs_value_us % rt.rel_value_us; | ||
399 | return ret; | ||
400 | } | ||
401 | |||
402 | |||
373 | struct GNUNET_TIME_Relative | 403 | struct GNUNET_TIME_Relative |
374 | GNUNET_TIME_absolute_get_remaining (struct GNUNET_TIME_Absolute future) | 404 | GNUNET_TIME_absolute_get_remaining (struct GNUNET_TIME_Absolute future) |
375 | { | 405 | { |