aboutsummaryrefslogtreecommitdiff
path: root/src/gnsrecord
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2022-02-01 09:31:19 +0100
committerChristian Grothoff <christian@grothoff.org>2022-02-19 12:43:32 +0100
commit5b4ac38b55682277269bfe54324c15a6af1bb118 (patch)
tree3b7e7a1093c3a6890e250bfa9d2b4d35f65f1155 /src/gnsrecord
parent5e041b56a98c49a944804420ad53e18707c9f823 (diff)
downloadgnunet-5b4ac38b55682277269bfe54324c15a6af1bb118.tar.gz
gnunet-5b4ac38b55682277269bfe54324c15a6af1bb118.zip
-try to make static analysis happy
Diffstat (limited to 'src/gnsrecord')
-rw-r--r--src/gnsrecord/gnunet-gnsrecord-tvg.c109
1 files changed, 25 insertions, 84 deletions
diff --git a/src/gnsrecord/gnunet-gnsrecord-tvg.c b/src/gnsrecord/gnunet-gnsrecord-tvg.c
index 31a2c5da2..2db301850 100644
--- a/src/gnsrecord/gnunet-gnsrecord-tvg.c
+++ b/src/gnsrecord/gnunet-gnsrecord-tvg.c
@@ -40,7 +40,8 @@ static char *d_pkey =
40static char *d_edkey = 40static char *d_edkey =
41 "5af7020ee19160328832352bbc6a68a8d71a7cbe1b929969a7c66d415a0d8f65"; 41 "5af7020ee19160328832352bbc6a68a8d71a7cbe1b929969a7c66d415a0d8f65";
42 42
43int parsehex (char *src, char *dst, size_t dstlen, int invert) 43int
44parsehex (char *src, char *dst, size_t dstlen, int invert)
44{ 45{
45 char *line = src; 46 char *line = src;
46 char *data = line; 47 char *data = line;
@@ -80,6 +81,7 @@ print_bytes_ (void *buf,
80 printf ("\n"); 81 printf ("\n");
81} 82}
82 83
84
83static void 85static void
84print_bytes (void *buf, 86print_bytes (void *buf,
85 size_t buf_len, 87 size_t buf_len,
@@ -92,7 +94,7 @@ print_bytes (void *buf,
92static void 94static void
93print_record (const struct GNUNET_GNSRECORD_Data *rd) 95print_record (const struct GNUNET_GNSRECORD_Data *rd)
94{ 96{
95 uint16_t flags = htons(rd->flags); 97 uint16_t flags = htons (rd->flags);
96 fprintf (stdout, 98 fprintf (stdout,
97 "EXPIRATION: %" PRIu64 "\n", rd->expiration_time); 99 "EXPIRATION: %" PRIu64 "\n", rd->expiration_time);
98 fprintf (stdout, 100 fprintf (stdout,
@@ -101,7 +103,7 @@ print_record (const struct GNUNET_GNSRECORD_Data *rd)
101 "TYPE: %d\n", rd->record_type); 103 "TYPE: %d\n", rd->record_type);
102 fprintf (stdout, 104 fprintf (stdout,
103 "FLAGS: "); 105 "FLAGS: ");
104 print_bytes ((void*)&flags, sizeof (flags), 8); 106 print_bytes ((void*) &flags, sizeof (flags), 8);
105 printf ("\n"); 107 printf ("\n");
106 fprintf (stdout, 108 fprintf (stdout,
107 "DATA:\n"); 109 "DATA:\n");
@@ -136,12 +138,10 @@ run_pkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char *label)
136 size_t data_size; 138 size_t data_size;
137 char *rdata; 139 char *rdata;
138 size_t rdata_size; 140 size_t rdata_size;
139 uint32_t rd_count_nbo;
140 char ztld[128]; 141 char ztld[128];
141 unsigned char ctr[GNUNET_CRYPTO_AES_KEY_LENGTH / 2]; 142 unsigned char ctr[GNUNET_CRYPTO_AES_KEY_LENGTH / 2];
142 unsigned char skey[GNUNET_CRYPTO_AES_KEY_LENGTH]; 143 unsigned char skey[GNUNET_CRYPTO_AES_KEY_LENGTH];
143 144
144
145 id_priv.type = htonl (GNUNET_GNSRECORD_TYPE_PKEY); 145 id_priv.type = htonl (GNUNET_GNSRECORD_TYPE_PKEY);
146 GNUNET_CRYPTO_ecdsa_key_create (&id_priv.ecdsa_key); 146 GNUNET_CRYPTO_ecdsa_key_create (&id_priv.ecdsa_key);
147 parsehex (d_pkey, 147 parsehex (d_pkey,
@@ -179,16 +179,17 @@ run_pkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char *label)
179 print_record (&rd[i]); 179 print_record (&rd[i]);
180 } 180 }
181 181
182
183 rdata_size = GNUNET_GNSRECORD_records_get_size (rd_count, 182 rdata_size = GNUNET_GNSRECORD_records_get_size (rd_count,
184 rd); 183 rd);
185 rdata = GNUNET_malloc (rdata_size); 184 rdata = GNUNET_malloc (rdata_size);
186 GNUNET_GNSRECORD_records_serialize (rd_count, 185 GNUNET_GNSRECORD_records_serialize (rd_count,
187 rd, 186 rd,
188 rdata_size, 187 (size_t) rdata_size,
189 rdata); 188 rdata);
190 fprintf (stdout, "RDATA:\n"); 189 fprintf (stdout, "RDATA:\n");
191 print_bytes (rdata, rdata_size, 8); 190 print_bytes (rdata,
191 (size_t) rdata_size,
192 8);
192 fprintf (stdout, "\n"); 193 fprintf (stdout, "\n");
193 expire = GNUNET_GNSRECORD_record_get_expiration_time (rd_count, rd, 194 expire = GNUNET_GNSRECORD_record_get_expiration_time (rd_count, rd,
194 GNUNET_TIME_UNIT_ZERO_ABS); 195 GNUNET_TIME_UNIT_ZERO_ABS);
@@ -217,14 +218,15 @@ run_pkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char *label)
217 rd, 218 rd,
218 rd_count, 219 rd_count,
219 &rrblock)); 220 &rrblock));
220 size_t bdata_size = ntohl(rrblock->size) - sizeof (struct GNUNET_GNSRECORD_Block); 221 size_t bdata_size = ntohl (rrblock->size) - sizeof (struct
222 GNUNET_GNSRECORD_Block);
221 223
222 bdata = (char*) &(&rrblock->ecdsa_block)[1]; 224 bdata = (char*) &(&rrblock->ecdsa_block)[1];
223 fprintf (stdout, "BDATA:\n"); 225 fprintf (stdout, "BDATA:\n");
224 print_bytes (bdata, bdata_size, 8); 226 print_bytes (bdata, bdata_size, 8);
225 fprintf (stdout, "\n"); 227 fprintf (stdout, "\n");
226 fprintf (stdout, "RRBLOCK:\n"); 228 fprintf (stdout, "RRBLOCK:\n");
227 print_bytes (rrblock, ntohl(rrblock->size), 8); 229 print_bytes (rrblock, ntohl (rrblock->size), 8);
228 fprintf (stdout, "\n"); 230 fprintf (stdout, "\n");
229 GNUNET_free (rdata); 231 GNUNET_free (rdata);
230} 232}
@@ -239,7 +241,7 @@ run_pkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char *label)
239 * @param cfg configuration 241 * @param cfg configuration
240 */ 242 */
241static void 243static void
242run_edkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char* label) 244run_edkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char*label)
243{ 245{
244 struct GNUNET_TIME_Absolute expire; 246 struct GNUNET_TIME_Absolute expire;
245 struct GNUNET_TIME_Absolute now = GNUNET_TIME_absolute_get (); 247 struct GNUNET_TIME_Absolute now = GNUNET_TIME_absolute_get ();
@@ -256,7 +258,7 @@ run_edkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char* label)
256 size_t data_size; 258 size_t data_size;
257 char *rdata; 259 char *rdata;
258 size_t rdata_size; 260 size_t rdata_size;
259 uint32_t rd_count_nbo; 261
260 char ztld[128]; 262 char ztld[128];
261 unsigned char nonce[crypto_secretbox_NONCEBYTES]; 263 unsigned char nonce[crypto_secretbox_NONCEBYTES];
262 unsigned char skey[crypto_secretbox_KEYBYTES]; 264 unsigned char skey[crypto_secretbox_KEYBYTES];
@@ -307,13 +309,16 @@ run_edkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char* label)
307 expire = GNUNET_GNSRECORD_record_get_expiration_time (rd_count, 309 expire = GNUNET_GNSRECORD_record_get_expiration_time (rd_count,
308 rd, 310 rd,
309 GNUNET_TIME_UNIT_ZERO_ABS); 311 GNUNET_TIME_UNIT_ZERO_ABS);
310 rdata = GNUNET_malloc (rdata_size); 312 GNUNET_assert (0 < rdata_size);
313 rdata = GNUNET_malloc ((size_t) rdata_size);
311 GNUNET_GNSRECORD_records_serialize (rd_count, 314 GNUNET_GNSRECORD_records_serialize (rd_count,
312 rd, 315 rd,
313 rdata_size, 316 (size_t) rdata_size,
314 rdata); 317 rdata);
315 fprintf (stdout, "RDATA:\n"); 318 fprintf (stdout, "RDATA:\n");
316 print_bytes (rdata, rdata_size, 8); 319 print_bytes (rdata,
320 (size_t) rdata_size,
321 8);
317 fprintf (stdout, "\n"); 322 fprintf (stdout, "\n");
318 GNR_derive_block_xsalsa_key (nonce, 323 GNR_derive_block_xsalsa_key (nonce,
319 skey, 324 skey,
@@ -340,14 +345,15 @@ run_edkey (struct GNUNET_GNSRECORD_Data *rd, int rd_count, const char* label)
340 rd, 345 rd,
341 rd_count, 346 rd_count,
342 &rrblock)); 347 &rrblock));
343 size_t bdata_size = ntohl(rrblock->size) - sizeof (struct GNUNET_GNSRECORD_Block); 348 size_t bdata_size = ntohl (rrblock->size) - sizeof (struct
349 GNUNET_GNSRECORD_Block);
344 350
345 bdata = (char*) &(&rrblock->eddsa_block)[1]; 351 bdata = (char*) &(&rrblock->eddsa_block)[1];
346 fprintf (stdout, "BDATA:\n"); 352 fprintf (stdout, "BDATA:\n");
347 print_bytes (bdata, bdata_size, 8); 353 print_bytes (bdata, bdata_size, 8);
348 fprintf (stdout, "\n"); 354 fprintf (stdout, "\n");
349 fprintf (stdout, "RRBLOCK:\n"); 355 fprintf (stdout, "RRBLOCK:\n");
350 print_bytes (rrblock, ntohl(rrblock->size), 8); 356 print_bytes (rrblock, ntohl (rrblock->size), 8);
351 fprintf (stdout, "\n"); 357 fprintf (stdout, "\n");
352 GNUNET_free (rdata); 358 GNUNET_free (rdata);
353} 359}
@@ -367,73 +373,8 @@ run (void *cls,
367 const char *cfgfile, 373 const char *cfgfile,
368 const struct GNUNET_CONFIGURATION_Handle *cfg) 374 const struct GNUNET_CONFIGURATION_Handle *cfg)
369{ 375{
370 struct GNUNET_GNSRECORD_Data rd_pkey; 376 run_pkey ();
371 struct GNUNET_GNSRECORD_Data rd[3]; 377 run_edkey ();
372 struct GNUNET_TIME_Absolute exp1;
373 struct GNUNET_TIME_Absolute exp2;
374 struct GNUNET_TIME_Relative exp3;
375 size_t pkey_data_size;
376 size_t ip_data_size;
377 char *pkey_data;
378 char *ip_data;
379
380
381 /*
382 * Make different expiration times
383 */
384 GNUNET_STRINGS_fancy_time_to_absolute ("2048-01-23 10:51:34",
385 &exp1);
386 GNUNET_STRINGS_fancy_time_to_absolute ("3540-05-22 07:55:01",
387 &exp2);
388 GNUNET_STRINGS_fancy_time_to_relative ("100y",
389 &exp3);
390
391
392
393 memset (&rd_pkey, 0, sizeof (struct GNUNET_GNSRECORD_Data));
394 GNUNET_assert (GNUNET_OK == GNUNET_GNSRECORD_string_to_value (
395 GNUNET_GNSRECORD_TYPE_PKEY,
396 "000G0011WESGZY9VRV9NNJ66W3GKNZFZF56BFD2BQF3MHMJST2G2GKDYGG",
397 (void**)&pkey_data,
398 &pkey_data_size));
399 rd_pkey.data = pkey_data;
400 rd_pkey.data_size = pkey_data_size;
401 rd_pkey.expiration_time = exp1.abs_value_us;
402 rd_pkey.record_type = GNUNET_GNSRECORD_TYPE_PKEY;
403 rd_pkey.flags = GNUNET_GNSRECORD_RF_CRITICAL;
404 GNUNET_assert (GNUNET_OK == GNUNET_GNSRECORD_string_to_value (
405 GNUNET_DNSPARSER_TYPE_AAAA,
406 "::dead:beef",
407 (void**)&ip_data,
408 &ip_data_size));
409
410 rd[0].data = ip_data;
411 rd[0].data_size = ip_data_size;
412 rd[0].expiration_time = exp1.abs_value_us;
413 rd[0].record_type = GNUNET_DNSPARSER_TYPE_AAAA;
414 rd[0].flags = GNUNET_GNSRECORD_RF_NONE;
415
416 rd[1].data = "\u611b\u79f0";
417 rd[1].data_size = strlen (rd[1].data);
418 rd[1].expiration_time = exp2.abs_value_us;
419 rd[1].record_type = GNUNET_GNSRECORD_TYPE_NICK;
420 rd[1].flags = GNUNET_GNSRECORD_RF_PRIVATE;
421
422 rd[2].data = "Hello World";
423 rd[2].data_size = strlen (rd[2].data);
424 rd[2].expiration_time = exp3.rel_value_us;
425 rd[2].record_type = GNUNET_DNSPARSER_TYPE_TXT;
426 rd[2].flags = GNUNET_GNSRECORD_RF_SUPPLEMENTAL | GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION;
427
428 run_pkey (&rd_pkey, 1, "testdelegation");
429 run_pkey (rd, 3, "namesystem");
430 run_edkey (&rd_pkey, 1, "testdelegation");
431 run_edkey (rd, 3, "namesystem");
432 /*char *norm_lbl;
433 norm_lbl = GNUNET_GNSRECORD_string_normalize ("q\u0307\u0323namesysteM");
434 print_bytes ("q\u0307\u0323namesysteM", strlen ("q\u0307\u0323namesysteM"), 8);
435 print_bytes (norm_lbl, strlen (norm_lbl), 8);
436 printf ("%s\n", norm_lbl);*/
437} 378}
438 379
439 380