GNUnet  0.11.x
Functions | Variables
gnunet-abd.c File Reference

command line tool to access command line Credential service More...

#include "platform.h"
#include <gnunet_util_lib.h>
#include <gnunet_abd_service.h>
#include <gnunet_gnsrecord_lib.h>
#include <gnunet_namestore_service.h>
#include "delegate_misc.h"
#include "abd_serialization.h"
Include dependency graph for gnunet-abd.c:

Go to the source code of this file.

Functions

static void do_shutdown (void *cls)
 Task run on shutdown. More...
 
static void do_timeout (void *cls)
 Task run on timeout. More...
 
static void handle_intermediate_result (void *cls, struct GNUNET_ABD_Delegation *dd, bool is_bw)
 
static void handle_collect_result (void *cls, unsigned int d_count, struct GNUNET_ABD_Delegation *dc, unsigned int c_count, struct GNUNET_ABD_Delegate *dele)
 
static void handle_verify_result (void *cls, unsigned int d_count, struct GNUNET_ABD_Delegation *dc, unsigned int c_count, struct GNUNET_ABD_Delegate *dele)
 
static void identity_cb (void *cls, struct GNUNET_IDENTITY_Ego *ego)
 Callback invoked from identity service with ego information. More...
 
static int parse_expiration (const char *expirationstring, int *etime_is_rel, uint64_t *etime)
 Parse expiration time. More...
 
static void error_cb (void *cls)
 Function called if lookup fails. More...
 
static void add_continuation (void *cls, int32_t success, const char *emsg)
 
static void get_existing_record (void *cls, const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone_key, const char *rec_name, unsigned int rd_count, const struct GNUNET_GNSRECORD_Data *rd)
 
static void store_cb (void *cls, struct GNUNET_IDENTITY_Ego *ego)
 
static void sign_cb (void *cls, struct GNUNET_IDENTITY_Ego *ego)
 
static void run (void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *c)
 Main function that will be run. More...
 
int main (int argc, char *const *argv)
 The main function for gnunet-gns. More...
 

Variables

static const struct GNUNET_CONFIGURATION_Handlecfg
 Configuration we are using. More...
 
static struct GNUNET_NAMESTORE_Handlens
 Handle to the namestore. More...
 
static struct GNUNET_CRYPTO_EcdsaPrivateKey zone_pkey
 Private key for the our zone. More...
 
static struct GNUNET_IDENTITY_EgoLookupel
 EgoLookup. More...
 
static struct GNUNET_ABD_Handleabd
 Handle to Credential service. More...
 
static struct GNUNET_TIME_Relative timeout
 Desired timeout for the lookup (default is no timeout). More...
 
static struct GNUNET_ABD_Requestverify_request
 Handle to verify request. More...
 
static struct GNUNET_ABD_Requestcollect_request
 Handle to collect request. More...
 
static struct GNUNET_SCHEDULER_Tasktt
 Task scheduled to handle timeout. More...
 
static int ret = 0
 Return value of the commandline. More...
 
static char * subject
 Subject pubkey string. More...
 
static char * subject_delegate
 Subject delegate string. More...
 
static char * expiration
 Credential TTL. More...
 
struct GNUNET_CRYPTO_EcdsaPublicKey subject_pkey
 Subject key. More...
 
struct GNUNET_CRYPTO_EcdsaPublicKey issuer_pkey
 Issuer key. More...
 
static char * issuer_key
 Issuer pubkey string. More...
 
static char * ego_name
 ego More...
 
static char * issuer_attr
 Issuer attribute. More...
 
static int verify
 Verify mode. More...
 
static int collect
 Collect mode. More...
 
static int create_is
 Create mode. More...
 
static int create_ss
 Create mode. More...
 
static int sign_ss
 Create mode. More...
 
static char * import
 Signed issue credentials. More...
 
static int is_private
 Is record private. More...
 
static int forward
 Search direction: forward. More...
 
static int backward
 Search direction: backward. More...
 
enum GNUNET_ABD_AlgoDirectionFlags direction = 0
 API enum, filled and passed for collect/verify. More...
 
static struct GNUNET_NAMESTORE_QueueEntryadd_qe
 Queue entry for the 'add' operation. More...
 
static void * data
 Value in binary format. More...
 
static size_t data_size
 Number of bytes in data. More...
 
static uint32_t type
 Type string converted to DNS type value. More...
 
static char * typestring
 Type of the record to add/remove, NULL to remove all. More...
 
static uint64_t etime
 Expiration string converted to numeric value. More...
 
static int etime_is_rel = GNUNET_SYSERR
 Is expiration time relative or absolute time? More...
 
static const int key_length = 52
 Fixed size of the public/private keys. More...
 
static char * record_label
 Record label for storing delegations. More...
 

Detailed Description

command line tool to access command line Credential service

Author
Martin Schanzenbach

Definition in file gnunet-abd.c.

Function Documentation

◆ do_shutdown()

static void do_shutdown ( void *  cls)
static

Task run on shutdown.

Cleans up everything.

Parameters
clsunused

Definition at line 224 of file gnunet-abd.c.

225 {
226  if (NULL != verify_request)
227  {
229  verify_request = NULL;
230  }
231  if (NULL != abd)
232  {
234  abd = NULL;
235  }
236  if (NULL != tt)
237  {
239  tt = NULL;
240  }
241  if (NULL != el)
242  {
244  el = NULL;
245  }
246  if (NULL != add_qe)
247  {
249  add_qe = NULL;
250  }
251  if (NULL != ns)
252  {
254  ns = NULL;
255  }
256 }
static struct GNUNET_NAMESTORE_QueueEntry * add_qe
Queue entry for the 'add' operation.
Definition: gnunet-abd.c:177
static struct GNUNET_IDENTITY_EgoLookup * el
EgoLookup.
Definition: gnunet-abd.c:51
static struct GNUNET_SCHEDULER_Task * tt
Task scheduled to handle timeout.
Definition: gnunet-abd.c:76
static struct GNUNET_NAMESTORE_Handle * ns
Handle to the namestore.
Definition: gnunet-abd.c:41
static struct GNUNET_ABD_Handle * abd
Handle to Credential service.
Definition: gnunet-abd.c:56
static struct GNUNET_ABD_Request * verify_request
Handle to verify request.
Definition: gnunet-abd.c:66
void GNUNET_ABD_disconnect(struct GNUNET_ABD_Handle *handle)
Shutdown connection with the ABD service.
Definition: abd_api.c:377
void GNUNET_ABD_request_cancel(struct GNUNET_ABD_Request *lr)
Cancel pending verify request.
Definition: abd_api.c:400
void GNUNET_IDENTITY_ego_lookup_cancel(struct GNUNET_IDENTITY_EgoLookup *el)
Abort ego lookup attempt.
void GNUNET_NAMESTORE_disconnect(struct GNUNET_NAMESTORE_Handle *h)
Disconnect from the namestore service (and free associated resources).
void GNUNET_NAMESTORE_cancel(struct GNUNET_NAMESTORE_QueueEntry *qe)
Cancel a namestore operation.
void * GNUNET_SCHEDULER_cancel(struct GNUNET_SCHEDULER_Task *task)
Cancel the task with the specified identifier.
Definition: scheduler.c:972

References abd, add_qe, el, GNUNET_ABD_disconnect(), GNUNET_ABD_request_cancel(), GNUNET_IDENTITY_ego_lookup_cancel(), GNUNET_NAMESTORE_cancel(), GNUNET_NAMESTORE_disconnect(), GNUNET_SCHEDULER_cancel(), ns, tt, and verify_request.

Referenced by run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ do_timeout()

static void do_timeout ( void *  cls)
static

Task run on timeout.

Triggers shutdown.

Parameters
clsunused

Definition at line 265 of file gnunet-abd.c.

266 {
267  tt = NULL;
269 }
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
Definition: scheduler.c:531

References GNUNET_SCHEDULER_shutdown(), and tt.

Referenced by run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ handle_intermediate_result()

static void handle_intermediate_result ( void *  cls,
struct GNUNET_ABD_Delegation dd,
bool  is_bw 
)
static

Definition at line 273 of file gnunet-abd.c.

276 {
277  char *prefix = "";
278  if (is_bw)
279  prefix = "Backward -";
280  else
281  prefix = "Forward -";
282 
283  printf ("%s Intermediate result: %s.%s <- %s.%s\n",
284  prefix,
286  dd->issuer_attribute,
288  dd->subject_attribute);
289 }
static int prefix
If printing the value of PREFIX has been requested.
Definition: gnunet-config.c:53
char * GNUNET_CRYPTO_ecdsa_public_key_to_string(const struct GNUNET_CRYPTO_EcdsaPublicKey *pub)
Convert a public key to a string.
Definition: crypto_ecc.c:224
struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key
The issuer of the delegation.
struct GNUNET_CRYPTO_EcdsaPublicKey subject_key
Public key of the subject this attribute was delegated to.
const char * issuer_attribute
The attribute.
const char * subject_attribute
The attribute.

References GNUNET_CRYPTO_ecdsa_public_key_to_string(), GNUNET_ABD_Delegation::issuer_attribute, GNUNET_ABD_Delegation::issuer_key, prefix, GNUNET_ABD_Delegation::subject_attribute, and GNUNET_ABD_Delegation::subject_key.

Referenced by identity_cb(), and run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ handle_collect_result()

static void handle_collect_result ( void *  cls,
unsigned int  d_count,
struct GNUNET_ABD_Delegation dc,
unsigned int  c_count,
struct GNUNET_ABD_Delegate dele 
)
static

Definition at line 293 of file gnunet-abd.c.

298 {
299  int i;
300  char *line;
301 
302  verify_request = NULL;
303  if (NULL != dele)
304  {
305  for (i = 0; i < c_count; i++)
306  {
307  line = GNUNET_ABD_delegate_to_string (&dele[i]);
308  printf ("%s\n", line);
309  GNUNET_free (line);
310  }
311  }
312  else
313  {
314  printf ("Received NULL\n");
315  }
316 
318 }
char * GNUNET_ABD_delegate_to_string(const struct GNUNET_ABD_Delegate *cred)
Definition: delegate_misc.c:37
static char * line
Desired phone line (string to be converted to a hash).
#define GNUNET_free(ptr)
Wrapper around free.

References GNUNET_ABD_delegate_to_string(), GNUNET_free, GNUNET_SCHEDULER_shutdown(), line, and verify_request.

Referenced by identity_cb().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ handle_verify_result()

static void handle_verify_result ( void *  cls,
unsigned int  d_count,
struct GNUNET_ABD_Delegation dc,
unsigned int  c_count,
struct GNUNET_ABD_Delegate dele 
)
static

Definition at line 322 of file gnunet-abd.c.

327 {
328  int i;
329  char *iss_key;
330  char *sub_key;
331 
332  verify_request = NULL;
333  if (NULL == dele)
334  ret = 1;
335  else
336  {
337  printf ("Delegation Chain:\n");
338  for (i = 0; i < d_count; i++)
339  {
341  sub_key = GNUNET_CRYPTO_ecdsa_public_key_to_string (&dc[i].subject_key);
342 
343  if (0 != dc[i].subject_attribute_len)
344  {
345  printf ("(%d) %s.%s <- %s.%s\n",
346  i,
347  iss_key,
348  dc[i].issuer_attribute,
349  sub_key,
350  dc[i].subject_attribute);
351  }
352  else
353  {
354  printf ("(%d) %s.%s <- %s\n",
355  i,
356  iss_key,
357  dc[i].issuer_attribute,
358  sub_key);
359  }
360  GNUNET_free (iss_key);
361  GNUNET_free (sub_key);
362  }
363  printf ("\nDelegate(s):\n");
364  for (i = 0; i < c_count; i++)
365  {
367  sub_key = GNUNET_CRYPTO_ecdsa_public_key_to_string (&dele[i].subject_key);
368  printf ("%s.%s <- %s\n", iss_key, dele[i].issuer_attribute, sub_key);
369  GNUNET_free (iss_key);
370  GNUNET_free (sub_key);
371  }
372  printf ("Successful.\n");
373  }
374 
376 }
static char * issuer_key
Issuer pubkey string.
Definition: gnunet-abd.c:112
static int ret
Return value of the commandline.
Definition: gnunet-abd.c:81
static struct GNUNET_FS_DownloadContext * dc

References dc, GNUNET_CRYPTO_ecdsa_public_key_to_string(), GNUNET_free, GNUNET_SCHEDULER_shutdown(), issuer_key, ret, and verify_request.

Referenced by run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ identity_cb()

static void identity_cb ( void *  cls,
struct GNUNET_IDENTITY_Ego ego 
)
static

Callback invoked from identity service with ego information.

An ego of NULL means the ego was not found.

Parameters
clsclosure with the configuration
egoan ego known to identity service, or NULL

Definition at line 387 of file gnunet-abd.c.

388 {
389  const struct GNUNET_CRYPTO_EcdsaPrivateKey *privkey;
390 
391  el = NULL;
392  if (NULL == ego)
393  {
394  if (NULL != ego_name)
395  {
396  fprintf (stderr,
397  _ ("Ego `%s' not known to identity service\n"),
398  ego_name);
399  }
401  return;
402  }
403 
404  if (GNUNET_YES == collect)
405  {
406 
407  if (GNUNET_OK !=
409  strlen (issuer_key),
410  &issuer_pkey))
411  {
412  fprintf (stderr,
413  _ ("Issuer public key `%s' is not well-formed\n"),
414  issuer_key);
416  }
417  privkey = GNUNET_IDENTITY_ego_get_private_key (ego);
418 
420  &issuer_pkey,
421  issuer_attr,
422  privkey,
423  direction,
425  NULL,
427  NULL);
428  return;
429  }
431 }
static struct GNUNET_ABD_Request * collect_request
Handle to collect request.
Definition: gnunet-abd.c:71
static char * issuer_attr
Issuer attribute.
Definition: gnunet-abd.c:122
static int collect
Collect mode.
Definition: gnunet-abd.c:132
static void handle_collect_result(void *cls, unsigned int d_count, struct GNUNET_ABD_Delegation *dc, unsigned int c_count, struct GNUNET_ABD_Delegate *dele)
Definition: gnunet-abd.c:293
static char * ego_name
ego
Definition: gnunet-abd.c:117
struct GNUNET_CRYPTO_EcdsaPublicKey issuer_pkey
Issuer key.
Definition: gnunet-abd.c:106
enum GNUNET_ABD_AlgoDirectionFlags direction
API enum, filled and passed for collect/verify.
Definition: gnunet-abd.c:172
static void handle_intermediate_result(void *cls, struct GNUNET_ABD_Delegation *dd, bool is_bw)
Definition: gnunet-abd.c:273
@ GNUNET_OK
Definition: gnunet_common.h:95
@ GNUNET_YES
Definition: gnunet_common.h:97
enum GNUNET_GenericReturnValue GNUNET_CRYPTO_ecdsa_public_key_from_string(const char *enc, size_t enclen, struct GNUNET_CRYPTO_EcdsaPublicKey *pub)
Convert a string representing a public key to a public key.
Definition: crypto_ecc.c:332
struct GNUNET_ABD_Request * GNUNET_ABD_collect(struct GNUNET_ABD_Handle *handle, const struct GNUNET_CRYPTO_EcdsaPublicKey *issuer_key, const char *issuer_attribute, const struct GNUNET_CRYPTO_EcdsaPrivateKey *subject_key, enum GNUNET_ABD_AlgoDirectionFlags direction, GNUNET_ABD_CredentialResultProcessor proc, void *proc_cls, GNUNET_ABD_IntermediateResultProcessor proc2, void *proc2_cls)
Performs attribute collection.
Definition: abd_api.c:424
const struct GNUNET_IDENTITY_PrivateKey * GNUNET_IDENTITY_ego_get_private_key(const struct GNUNET_IDENTITY_Ego *ego)
Obtain the ECC key associated with a ego.
Definition: identity_api.c:639
#define _(String)
GNU gettext support macro.
Definition: platform.h:177
Private ECC key encoded for transmission.

References _, abd, collect, collect_request, direction, ego_name, el, GNUNET_ABD_collect(), GNUNET_CRYPTO_ecdsa_public_key_from_string(), GNUNET_IDENTITY_ego_get_private_key(), GNUNET_OK, GNUNET_SCHEDULER_shutdown(), GNUNET_YES, handle_collect_result(), handle_intermediate_result(), issuer_attr, issuer_key, and issuer_pkey.

Referenced by run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parse_expiration()

static int parse_expiration ( const char *  expirationstring,
int *  etime_is_rel,
uint64_t *  etime 
)
static

Parse expiration time.

Parameters
expirationstringtext to parse
etime_is_rel[out]set to GNUNET_YES if time is relative
etime[out]set to expiration time (abs or rel)
Returns
GNUNET_OK on success

Definition at line 443 of file gnunet-abd.c.

446 {
447  // copied from namestore/gnunet-namestore.c
448  struct GNUNET_TIME_Relative etime_rel;
449  struct GNUNET_TIME_Absolute etime_abs;
450 
451  if (0 == strcmp (expirationstring, "never"))
452  {
453  *etime = GNUNET_TIME_UNIT_FOREVER_ABS.abs_value_us;
455  return GNUNET_OK;
456  }
457  if (GNUNET_OK ==
459  {
461  *etime = etime_rel.rel_value_us;
463  "Storing record with relative expiration time of %s\n",
465  return GNUNET_OK;
466  }
467  if (GNUNET_OK ==
469  {
471  *etime = etime_abs.abs_value_us;
473  "Storing record with absolute expiration time of %s\n",
475  return GNUNET_OK;
476  }
477  return GNUNET_SYSERR;
478 }
static int etime_is_rel
Is expiration time relative or absolute time?
Definition: gnunet-abd.c:206
static uint64_t etime
Expiration string converted to numeric value.
Definition: gnunet-abd.c:201
static char * expirationstring
Desired expiration time.
#define GNUNET_log(kind,...)
@ GNUNET_NO
Definition: gnunet_common.h:94
@ GNUNET_SYSERR
Definition: gnunet_common.h:93
@ GNUNET_ERROR_TYPE_DEBUG
int GNUNET_STRINGS_fancy_time_to_relative(const char *fancy_time, struct GNUNET_TIME_Relative *rtime)
Convert a given fancy human-readable time to our internal representation.
Definition: strings.c:284
int GNUNET_STRINGS_fancy_time_to_absolute(const char *fancy_time, struct GNUNET_TIME_Absolute *atime)
Convert a given fancy human-readable time to our internal representation.
Definition: strings.c:326
const char * GNUNET_STRINGS_absolute_time_to_string(struct GNUNET_TIME_Absolute t)
Like asctime, except for GNUnet time.
Definition: strings.c:604
const char * GNUNET_STRINGS_relative_time_to_string(struct GNUNET_TIME_Relative delta, int do_round)
Give relative time in human-readable fancy format.
Definition: strings.c:557
#define GNUNET_TIME_UNIT_FOREVER_ABS
Constant used to specify "forever".
Time for absolute times used by GNUnet, in microseconds.
Time for relative time used by GNUnet, in microseconds.

References GNUNET_TIME_Absolute::abs_value_us, etime, etime_is_rel, expirationstring, GNUNET_ERROR_TYPE_DEBUG, GNUNET_log, GNUNET_NO, GNUNET_OK, GNUNET_STRINGS_absolute_time_to_string(), GNUNET_STRINGS_fancy_time_to_absolute(), GNUNET_STRINGS_fancy_time_to_relative(), GNUNET_STRINGS_relative_time_to_string(), GNUNET_SYSERR, GNUNET_TIME_UNIT_FOREVER_ABS, GNUNET_YES, and GNUNET_TIME_Relative::rel_value_us.

Referenced by store_cb().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ error_cb()

static void error_cb ( void *  cls)
static

Function called if lookup fails.

Definition at line 485 of file gnunet-abd.c.

486 {
487  fprintf (stderr, "Error occurred during lookup, shutting down.\n");
489  return;
490 }

References GNUNET_SCHEDULER_shutdown().

Referenced by GNUNET_NAMESTORE_records_lookup(), GNUNET_NAMESTORE_zone_iteration_start(), GNUNET_NAMESTORE_zone_monitor_start(), GNUNET_NAMESTORE_zone_to_name(), GNUNET_RECLAIM_get_attributes_start(), GNUNET_RECLAIM_get_credentials_start(), GNUNET_RECLAIM_ticket_iteration_start(), and store_cb().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_continuation()

static void add_continuation ( void *  cls,
int32_t  success,
const char *  emsg 
)
static

Definition at line 494 of file gnunet-abd.c.

495 {
496  struct GNUNET_NAMESTORE_QueueEntry **qe = cls;
497  *qe = NULL;
498 
499  if (GNUNET_OK == success)
500  printf ("Adding successful.\n");
501  else
502  fprintf (stderr, "Error occurred during adding, shutting down.\n");
503 
505 }
static struct GNUNET_DATASTORE_QueueEntry * qe
Current operation.
An QueueEntry used to store information for a pending NAMESTORE record operation.
Definition: namestore_api.c:54

References GNUNET_OK, GNUNET_SCHEDULER_shutdown(), and qe.

Referenced by get_existing_record().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_existing_record()

static void get_existing_record ( void *  cls,
const struct GNUNET_CRYPTO_EcdsaPrivateKey zone_key,
const char *  rec_name,
unsigned int  rd_count,
const struct GNUNET_GNSRECORD_Data rd 
)
static

Definition at line 509 of file gnunet-abd.c.

514 {
515  struct GNUNET_GNSRECORD_Data *rde;
516  struct GNUNET_GNSRECORD_Data*rdn =
517  GNUNET_malloc (sizeof(*rdn) * (rd_count + 1));
518 
519  memset (rdn, 0, sizeof (struct GNUNET_GNSRECORD_Data));
520  GNUNET_memcpy (&rdn[1], rd,
521  rd_count * sizeof (struct GNUNET_GNSRECORD_Data));
522  rde = &rdn[0];
523  rde->data = data;
524  rde->data_size = data_size;
525  rde->record_type = type;
526 
527  // Set flags
528  if (GNUNET_YES == is_private)
530  rde->expiration_time = etime;
531  if (GNUNET_YES == etime_is_rel)
533  else if (GNUNET_NO != etime_is_rel)
534  rde->expiration_time = GNUNET_TIME_UNIT_FOREVER_ABS.abs_value_us;
535 
536  GNUNET_assert (NULL != rec_name);
538  &zone_pkey,
539  rec_name,
540  rd_count + 1,
541  rde,
543  &add_qe);
544  GNUNET_free (rdn);
545  return;
546 }
static int is_private
Is record private.
Definition: gnunet-abd.c:157
static void * data
Value in binary format.
Definition: gnunet-abd.c:182
static void add_continuation(void *cls, int32_t success, const char *emsg)
Definition: gnunet-abd.c:494
static uint32_t type
Type string converted to DNS type value.
Definition: gnunet-abd.c:192
static size_t data_size
Number of bytes in data.
Definition: gnunet-abd.c:187
static struct GNUNET_CRYPTO_EcdsaPrivateKey zone_pkey
Private key for the our zone.
Definition: gnunet-abd.c:46
#define GNUNET_memcpy(dst, src, n)
Call memcpy() but check for n being 0 first.
@ GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION
This expiration time of the record is a relative time (not an absolute time).
@ GNUNET_GNSRECORD_RF_PRIVATE
This is a private record of this peer and it should thus not be handed out to other peers.
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
#define GNUNET_malloc(size)
Wrapper around malloc.
struct GNUNET_NAMESTORE_QueueEntry * GNUNET_NAMESTORE_records_store(struct GNUNET_NAMESTORE_Handle *h, const struct GNUNET_IDENTITY_PrivateKey *pkey, const char *label, unsigned int rd_count, const struct GNUNET_GNSRECORD_Data *rd, GNUNET_NAMESTORE_ContinuationWithStatus cont, void *cont_cls)
Store an item in the namestore.
uint32_t record_type
Type of the GNS/DNS record.
const void * data
Binary value stored in the DNS record.
size_t data_size
Number of bytes in data.
enum GNUNET_GNSRECORD_Flags flags
Flags for the record.
uint64_t expiration_time
Expiration time for the DNS record.

References add_continuation(), add_qe, data, GNUNET_GNSRECORD_Data::data, data_size, GNUNET_GNSRECORD_Data::data_size, etime, etime_is_rel, GNUNET_GNSRECORD_Data::expiration_time, GNUNET_GNSRECORD_Data::flags, GNUNET_assert, GNUNET_free, GNUNET_GNSRECORD_RF_PRIVATE, GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION, GNUNET_malloc, GNUNET_memcpy, GNUNET_NAMESTORE_records_store(), GNUNET_NO, GNUNET_TIME_UNIT_FOREVER_ABS, GNUNET_YES, is_private, ns, GNUNET_GNSRECORD_Data::record_type, type, and zone_pkey.

Referenced by store_cb().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ store_cb()

static void store_cb ( void *  cls,
struct GNUNET_IDENTITY_Ego ego 
)
static

Definition at line 550 of file gnunet-abd.c.

551 {
552  const struct GNUNET_CONFIGURATION_Handle *cfg = cls;
553 
554  el = NULL;
555 
557  if (NULL == ns)
558  {
560  _ ("Failed to connect to namestore\n"));
562  return;
563  }
564 
565  // Key handling
567 
569  {
570  // Parse import
571  struct GNUNET_ABD_Delegate *cred;
572  cred = GNUNET_ABD_delegate_from_string (import);
573 
574  // Get import subject public key string
575  char *subject_pubkey_str =
577 
578  // Get zone public key string
579  struct GNUNET_CRYPTO_EcdsaPublicKey zone_pubkey;
580  GNUNET_IDENTITY_ego_get_public_key (ego, &zone_pubkey);
581  char *zone_pubkey_str =
583 
584  // Check if the subject key in the signed import matches the zone's key it is issued to
585  if (strcmp (zone_pubkey_str, subject_pubkey_str) != 0)
586  {
587  fprintf (stderr,
588  "Import signed delegate does not match this ego's public key.\n");
590  return;
591  }
592 
593  // Expiration
594  etime = cred->expiration.abs_value_us;
596 
597  // Prepare the data to be store in the record
598  data_size = GNUNET_ABD_delegate_serialize (cred, (char **) &data);
599  GNUNET_free (cred);
600  }
601  else
602  {
603  // For all other types e.g. GNUNET_GNSRECORD_TYPE_ATTRIBUTE
604  if (GNUNET_OK !=
606  {
607  if (typestring == NULL)
608  {
609  fputs ("No value for unknown record type\n", stderr);
610  }
611  else if (subject == NULL)
612  {
613  fprintf (stderr,
614  "No value for record type`%s'\n",
615  typestring);
616  }
617  else
618  {
619  fprintf (stderr,
620  "Value `%s' invalid for record type `%s'\n",
621  subject,
622  typestring);
623  }
625  return;
626  }
627 
628  // Take care of expiration
629  if (NULL == expiration)
630  {
631  fprintf (stderr, "Missing option -e for operation 'create'\n");
633  return;
634  }
636  {
637  fprintf (stderr, "Invalid time format `%s'\n", expiration);
639  return;
640  }
641  }
642 
643  // Start lookup
645  &zone_pkey,
646  record_label,
647  &error_cb,
648  NULL,
650  NULL);
651  return;
652 }
int GNUNET_ABD_delegate_serialize(struct GNUNET_ABD_Delegate *dele, char **data)
struct GNUNET_ABD_Delegate * GNUNET_ABD_delegate_from_string(const char *s)
Definition: delegate_misc.c:80
#define GNUNET_GNSRECORD_TYPE_DELEGATE
For ABD policies.
static char * record_label
Record label for storing delegations.
Definition: gnunet-abd.c:216
static char * expiration
Credential TTL.
Definition: gnunet-abd.c:96
static void get_existing_record(void *cls, const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone_key, const char *rec_name, unsigned int rd_count, const struct GNUNET_GNSRECORD_Data *rd)
Definition: gnunet-abd.c:509
static const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration we are using.
Definition: gnunet-abd.c:36
static int parse_expiration(const char *expirationstring, int *etime_is_rel, uint64_t *etime)
Parse expiration time.
Definition: gnunet-abd.c:443
static void error_cb(void *cls)
Function called if lookup fails.
Definition: gnunet-abd.c:485
static char * subject
Subject pubkey string.
Definition: gnunet-abd.c:86
static char * typestring
Type of the record to add/remove, NULL to remove all.
Definition: gnunet-abd.c:197
int GNUNET_GNSRECORD_string_to_value(uint32_t type, const char *s, void **data, size_t *data_size)
Convert human-readable version of a 'value' of a record to the binary representation.
Definition: gnsrecord.c:188
void GNUNET_IDENTITY_ego_get_public_key(struct GNUNET_IDENTITY_Ego *ego, struct GNUNET_IDENTITY_PublicKey *pk)
Get the identifier (public key) of an ego.
Definition: identity_api.c:652
@ GNUNET_ERROR_TYPE_ERROR
struct GNUNET_NAMESTORE_QueueEntry * GNUNET_NAMESTORE_records_lookup(struct GNUNET_NAMESTORE_Handle *h, const struct GNUNET_IDENTITY_PrivateKey *pkey, const char *label, GNUNET_SCHEDULER_TaskCallback error_cb, void *error_cb_cls, GNUNET_NAMESTORE_RecordMonitor rm, void *rm_cls)
Lookup an item in the namestore.
struct GNUNET_NAMESTORE_Handle * GNUNET_NAMESTORE_connect(const struct GNUNET_CONFIGURATION_Handle *cfg)
Connect to the namestore service.
struct GNUNET_CRYPTO_EcdsaPublicKey subject_key
Public key of the subject this credential was issued to.
struct GNUNET_TIME_Absolute expiration
Expiration of this credential.
Public ECC key (always for Curve25519) encoded in a format suitable for network transmission and ECDS...
uint64_t abs_value_us
The actual value.

References _, GNUNET_TIME_Absolute::abs_value_us, add_qe, cfg, data, data_size, el, error_cb(), etime, etime_is_rel, expiration, GNUNET_ABD_Delegate::expiration, get_existing_record(), GNUNET_ABD_delegate_from_string(), GNUNET_ABD_delegate_serialize(), GNUNET_CRYPTO_ecdsa_public_key_to_string(), GNUNET_ERROR_TYPE_ERROR, GNUNET_free, GNUNET_GNSRECORD_string_to_value(), GNUNET_GNSRECORD_TYPE_DELEGATE, GNUNET_IDENTITY_ego_get_private_key(), GNUNET_IDENTITY_ego_get_public_key(), GNUNET_log, GNUNET_NAMESTORE_connect(), GNUNET_NAMESTORE_records_lookup(), GNUNET_NO, GNUNET_OK, GNUNET_SCHEDULER_shutdown(), ns, parse_expiration(), record_label, subject, GNUNET_ABD_Delegate::subject_key, type, typestring, and zone_pkey.

Referenced by run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sign_cb()

static void sign_cb ( void *  cls,
struct GNUNET_IDENTITY_Ego ego 
)
static

Definition at line 656 of file gnunet-abd.c.

657 {
658  const struct GNUNET_CRYPTO_EcdsaPrivateKey *privkey;
659  struct GNUNET_ABD_Delegate *dele;
660  struct GNUNET_TIME_Absolute etime_abs;
661  char *res;
662 
663  el = NULL;
664 
665  // work on expiration time
666  if (NULL == expiration)
667  {
668  fprintf (stderr, "Please specify a TTL\n");
670  return;
671  }
672  else if (GNUNET_OK !=
674  {
675  fprintf (stderr,
676  "%s is not a valid ttl! Only absolute times are accepted!\n",
677  expiration);
679  return;
680  }
681 
682  // If contains a space - split it by the first space only - assume first entry is subject followed by attribute(s)
683  char *subject_pubkey_str;
684  char *subject_attr = NULL;
685  char *token;
686 
687  // Subject Public Key
688  token = strtok (subject, " ");
689  if (key_length == strlen (token))
690  {
691  subject_pubkey_str = token;
692  }
693  else
694  {
695  fprintf (stderr, "Key error, wrong length: %ld!\n", strlen (token));
697  return;
698  }
699  // Subject Attribute(s)
700  token = strtok (NULL, " ");
701  if (NULL != token)
702  {
703  subject_attr = token;
704  }
705 
706  // work on keys
707  privkey = GNUNET_IDENTITY_ego_get_private_key (ego);
708 
709  if (GNUNET_OK !=
710  GNUNET_CRYPTO_ecdsa_public_key_from_string (subject_pubkey_str,
711  strlen (subject_pubkey_str),
712  &subject_pkey))
713  {
714  fprintf (stderr,
715  "Subject public key `%s' is not well-formed\n",
716  subject_pubkey_str);
718  return;
719  }
720 
721  // Sign delegate
722  dele = GNUNET_ABD_delegate_issue (privkey,
723  &subject_pkey,
724  issuer_attr,
725  subject_attr,
726  &etime_abs);
728  GNUNET_free (dele);
729  printf ("%s\n", res);
730 
732  ego_name = NULL;
733 
735 }
static const int key_length
Fixed size of the public/private keys.
Definition: gnunet-abd.c:211
struct GNUNET_CRYPTO_EcdsaPublicKey subject_pkey
Subject key.
Definition: gnunet-abd.c:101
static int res
struct GNUNET_ABD_Delegate * GNUNET_ABD_delegate_issue(const struct GNUNET_CRYPTO_EcdsaPrivateKey *issuer, struct GNUNET_CRYPTO_EcdsaPublicKey *subject, const char *iss_attr, const char *sub_attr, struct GNUNET_TIME_Absolute *expiration)
Issue an attribute to a subject.

References ego_name, el, expiration, GNUNET_ABD_delegate_issue(), GNUNET_ABD_delegate_to_string(), GNUNET_CRYPTO_ecdsa_public_key_from_string(), GNUNET_free, GNUNET_IDENTITY_ego_get_private_key(), GNUNET_OK, GNUNET_SCHEDULER_shutdown(), GNUNET_STRINGS_fancy_time_to_absolute(), issuer_attr, key_length, res, subject, and subject_pkey.

Referenced by run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ run()

static void run ( void *  cls,
char *const *  args,
const char *  cfgfile,
const struct GNUNET_CONFIGURATION_Handle c 
)
static

Main function that will be run.

Parameters
clsclosure
argsremaining command-line arguments
cfgfilename of the configuration file used (for saving, can be NULL!)
cconfiguration

Definition at line 747 of file gnunet-abd.c.

751 {
752  cfg = c;
753 
756 
757  // Check relevant cmdline parameters
758  if (GNUNET_YES == create_is)
759  {
760  if (NULL == ego_name)
761  {
762  fprintf (stderr, "Missing option '-ego'\n");
764  return;
765  }
766  if (NULL == issuer_attr)
767  {
768  fprintf (stderr, "Missing option '-attribute' for issuer attribute\n");
770  return;
771  }
772  if (NULL == subject)
773  {
774  fprintf (stderr, "Missing option -subject for operation 'create'.'\n");
776  return;
777  }
778 
779  // Lookup ego, on success call store_cb and store as ATTRIBUTE type
783  return;
784  }
785 
786  if (GNUNET_YES == create_ss)
787  {
788 
789  // check if signed parameter has been passed in cmd line call
790  if (NULL == import)
791  {
792  fprintf (stderr, "'import' required\n");
794  return;
795  }
796 
799  // Store subject side
801 
802  return;
803  }
804 
805  if (GNUNET_YES == sign_ss)
806  {
807  if (NULL == ego_name)
808  {
809  fprintf (stderr, "ego required\n");
811  return;
812  }
813  if (NULL == subject)
814  {
815  fprintf (stderr, "Subject public key needed\n");
817  return;
818  }
819 
820  // lookup ego and call function sign_cb on success
822  return;
823  }
824 
825  if ((GNUNET_NO == forward) && (GNUNET_NO == backward))
826  {
827  // set default: bidirectional
830  }
831  if (GNUNET_YES == forward)
833  if (GNUNET_YES == backward)
835 
836  if (GNUNET_YES == collect)
837  {
838  if (NULL == issuer_key)
839  {
840  fprintf (stderr, _ ("Issuer public key not well-formed\n"));
842  return;
843  }
844 
846 
847  if (NULL == abd)
848  {
849  fprintf (stderr, _ ("Failed to connect to ABD\n"));
851  return;
852  }
853  if (NULL == issuer_attr)
854  {
855  fprintf (stderr, _ ("You must provide issuer the attribute\n"));
857  return;
858  }
859 
860  if (NULL == ego_name)
861  {
862  fprintf (stderr, _ ("ego required\n"));
864  return;
865  }
867  return;
868  }
869 
870  if (NULL == subject)
871  {
872  fprintf (stderr, _ ("Subject public key needed\n"));
874  return;
875  }
877  strlen (subject),
878  &subject_pkey))
879  {
880  fprintf (stderr,
881  _ ("Subject public key `%s' is not well-formed\n"),
882  subject);
884  return;
885  }
886 
887  if (GNUNET_YES == verify)
888  {
889  if (NULL == issuer_key)
890  {
891  fprintf (stderr, _ ("Issuer public key not well-formed\n"));
893  return;
894  }
895  if (GNUNET_OK !=
897  strlen (issuer_key),
898  &issuer_pkey))
899  {
900  fprintf (stderr,
901  _ ("Issuer public key `%s' is not well-formed\n"),
902  issuer_key);
904  return;
905  }
907 
908  if (NULL == abd)
909  {
910  fprintf (stderr, _ ("Failed to connect to ABD\n"));
912  return;
913  }
914  if ((NULL == issuer_attr) || (NULL == subject_delegate))
915  {
916  fprintf (stderr, _ ("You must provide issuer and subject attributes\n"));
918  return;
919  }
920 
921  // Subject credentials are comma separated
922  char *tmp = GNUNET_strdup (subject_delegate);
923  char *tok = strtok (tmp, ",");
924  if (NULL == tok)
925  {
926  fprintf (stderr, "Invalid subject credentials\n");
927  GNUNET_free (tmp);
929  return;
930  }
931  int count = 1;
932  int i;
933  while (NULL != (tok = strtok (NULL, ",")))
934  count++;
935  struct GNUNET_ABD_Delegate*delegates =
936  GNUNET_malloc (sizeof(*delegates) * count);
937  struct GNUNET_ABD_Delegate *dele;
938  GNUNET_free (tmp);
940  tok = strtok (tmp, ",");
941  for (i = 0; i < count; i++)
942  {
943  dele = GNUNET_ABD_delegate_from_string (tok);
944  GNUNET_memcpy (&delegates[i],
945  dele,
946  sizeof (struct GNUNET_ABD_Delegate));
947  delegates[i].issuer_attribute = GNUNET_strdup (dele->issuer_attribute);
948  tok = strtok (NULL, ",");
949  GNUNET_free (dele);
950  }
951 
953  &issuer_pkey,
954  issuer_attr,
955  &subject_pkey,
956  count,
957  delegates,
958  direction,
960  NULL,
962  NULL);
963  for (i = 0; i < count; i++)
964  {
965  GNUNET_free_nz ((char *) delegates[i].issuer_attribute);
966  delegates[i].issuer_attribute = NULL;
967  }
968  GNUNET_free (tmp);
969  GNUNET_free (delegates);
970  }
971  else
972  {
973  fprintf (stderr,
974  _ (
975  "Please specify name to lookup, subject key and issuer key!\n"));
977  }
978  return;
979 }
#define GNUNET_GNSRECORD_TYPE_ATTRIBUTE
For ABD reverse lookups.
static void handle_verify_result(void *cls, unsigned int d_count, struct GNUNET_ABD_Delegation *dc, unsigned int c_count, struct GNUNET_ABD_Delegate *dele)
Definition: gnunet-abd.c:322
static int create_ss
Create mode.
Definition: gnunet-abd.c:142
static int create_is
Create mode.
Definition: gnunet-abd.c:137
static void identity_cb(void *cls, struct GNUNET_IDENTITY_Ego *ego)
Callback invoked from identity service with ego information.
Definition: gnunet-abd.c:387
static char * subject_delegate
Subject delegate string.
Definition: gnunet-abd.c:91
static void do_timeout(void *cls)
Task run on timeout.
Definition: gnunet-abd.c:265
static void sign_cb(void *cls, struct GNUNET_IDENTITY_Ego *ego)
Definition: gnunet-abd.c:656
static int sign_ss
Create mode.
Definition: gnunet-abd.c:147
static void store_cb(void *cls, struct GNUNET_IDENTITY_Ego *ego)
Definition: gnunet-abd.c:550
static void do_shutdown(void *cls)
Task run on shutdown.
Definition: gnunet-abd.c:224
static int backward
Search direction: backward.
Definition: gnunet-abd.c:167
static int verify
Verify mode.
Definition: gnunet-abd.c:127
static int forward
Search direction: forward.
Definition: gnunet-abd.c:162
static struct GNUNET_TIME_Relative timeout
Desired timeout for the lookup (default is no timeout).
Definition: gnunet-abd.c:61
struct GNUNET_ABD_Handle * GNUNET_ABD_connect(const struct GNUNET_CONFIGURATION_Handle *cfg)
Initialize the connection with the ABD service.
Definition: abd_api.c:355
struct GNUNET_ABD_Request * GNUNET_ABD_verify(struct GNUNET_ABD_Handle *handle, const struct GNUNET_CRYPTO_EcdsaPublicKey *issuer_key, const char *issuer_attribute, const struct GNUNET_CRYPTO_EcdsaPublicKey *subject_key, uint32_t delegate_count, const struct GNUNET_ABD_Delegate *delegates, enum GNUNET_ABD_AlgoDirectionFlags direction, GNUNET_ABD_CredentialResultProcessor proc, void *proc_cls, GNUNET_ABD_IntermediateResultProcessor proc2, void *proc2_cls)
Performs attribute verification.
Definition: abd_api.c:498
@ GNUNET_ABD_FLAG_BACKWARD
@ GNUNET_ABD_FLAG_FORWARD
#define GNUNET_GNS_EMPTY_LABEL_AT
String we use to indicate an empty label (top-level entry in the zone).
struct GNUNET_IDENTITY_EgoLookup * GNUNET_IDENTITY_ego_lookup(const struct GNUNET_CONFIGURATION_Handle *cfg, const char *name, GNUNET_IDENTITY_EgoCallback cb, void *cb_cls)
Lookup an ego by name.
#define GNUNET_strdup(a)
Wrapper around GNUNET_xstrdup_.
#define GNUNET_free_nz(ptr)
Wrapper around free.
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_shutdown(GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run on shutdown, that is when a CTRL-C signal is received,...
Definition: scheduler.c:1331
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_delayed(struct GNUNET_TIME_Relative delay, GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run with a specified delay.
Definition: scheduler.c:1269
const char * issuer_attribute
The issuer attribute.

References _, abd, backward, cfg, collect, create_is, create_ss, direction, do_shutdown(), do_timeout(), ego_name, el, forward, GNUNET_ABD_connect(), GNUNET_ABD_delegate_from_string(), GNUNET_ABD_FLAG_BACKWARD, GNUNET_ABD_FLAG_FORWARD, GNUNET_ABD_verify(), GNUNET_CRYPTO_ecdsa_public_key_from_string(), GNUNET_free, GNUNET_free_nz, GNUNET_GNS_EMPTY_LABEL_AT, GNUNET_GNSRECORD_TYPE_ATTRIBUTE, GNUNET_GNSRECORD_TYPE_DELEGATE, GNUNET_IDENTITY_ego_lookup(), GNUNET_malloc, GNUNET_memcpy, GNUNET_NO, GNUNET_OK, GNUNET_SCHEDULER_add_delayed(), GNUNET_SCHEDULER_add_shutdown(), GNUNET_SCHEDULER_shutdown(), GNUNET_strdup, GNUNET_YES, handle_intermediate_result(), handle_verify_result(), identity_cb(), issuer_attr, GNUNET_ABD_Delegate::issuer_attribute, issuer_key, issuer_pkey, record_label, sign_cb(), sign_ss, store_cb(), subject, subject_delegate, subject_pkey, timeout, tt, type, verify, and verify_request.

Referenced by adjust_running_peers(), and main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ main()

int main ( int  argc,
char *const *  argv 
)

The main function for gnunet-gns.

Parameters
argcnumber of arguments from the command line
argvcommand line arguments
Returns
0 ok, 1 on error

Definition at line 990 of file gnunet-abd.c.

991 {
994  "verify",
995  gettext_noop (
996  "verify credential against attribute"),
997  &verify),
999  's',
1000  "subject",
1001  "PKEY",
1002  gettext_noop (
1003  "The public key of the subject to lookup the"
1004  "credential for, or for issuer side storage: subject and its attributes"),
1005  &subject),
1007  'd',
1008  "delegate",
1009  "DELE",
1010  gettext_noop ("The private, signed delegate presented by the subject"),
1011  &subject_delegate),
1013  'i',
1014  "issuer",
1015  "PKEY",
1016  gettext_noop (
1017  "The public key of the authority to verify the credential against"),
1018  &issuer_key),
1020  "ego",
1021  "EGO",
1022  gettext_noop ("The ego/zone name to use"),
1023  &ego_name),
1025  'a',
1026  "attribute",
1027  "ATTR",
1028  gettext_noop ("The issuer attribute to verify against or to issue"),
1029  &issuer_attr),
1031  "ttl",
1032  "EXP",
1033  gettext_noop (
1034  "The time to live for the credential."
1035  "e.g. 5m, 6h, \"1990-12-30 12:00:00\""),
1036  &expiration),
1038  "collect",
1039  gettext_noop ("collect credentials"),
1040  &collect),
1042  "createIssuerSide",
1043  gettext_noop (
1044  "Create and issue a credential issuer side."),
1045  &create_is),
1047  "createSubjectSide",
1048  gettext_noop (
1049  "Issue a credential subject side."),
1050  &create_ss),
1052  'S',
1053  "signSubjectSide",
1054  gettext_noop ("Create, sign and return a credential subject side."),
1055  &sign_ss),
1057  'x',
1058  "import",
1059  "IMP",
1060  gettext_noop (
1061  "Import signed credentials that should be issued to a zone/ego"),
1062  &import),
1064  "private",
1065  gettext_noop ("Create private record entry."),
1066  &is_private),
1068  'F',
1069  "forward",
1070  gettext_noop (
1071  "Indicates that the collect/verify process is done via forward search."),
1072  &forward),
1074  'B',
1075  "backward",
1076  gettext_noop (
1077  "Indicates that the collect/verify process is done via forward search."),
1078  &backward),
1080 
1081 
1083  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
1084  return 2;
1085 
1086  GNUNET_log_setup ("gnunet-abd", "WARNING", NULL);
1087  if (GNUNET_OK != GNUNET_PROGRAM_run (argc,
1088  argv,
1089  "gnunet-abd",
1090  _ ("GNUnet abd resolver tool"),
1091  options,
1092  &run,
1093  NULL))
1094  ret = 1;
1095  GNUNET_free_nz ((void *) argv);
1096  return ret;
1097 }
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_OPTION_END
Definition: 002.c:13
struct GNUNET_GETOPT_CommandLineOption options[]
Definition: 002.c:5
#define gettext_noop(String)
Definition: gettext.h:69
static void run(void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *c)
Main function that will be run.
Definition: gnunet-abd.c:747
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_option_flag(char shortName, const char *name, const char *description, int *val)
Allow user to specify a flag (which internally means setting an integer to 1/GNUNET_YES/GNUNET_OK.
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_option_string(char shortName, const char *name, const char *argumentHelp, const char *description, char **str)
Allow user to specify a string.
int GNUNET_log_setup(const char *comp, const char *loglevel, const char *logfile)
Setup logging.
enum GNUNET_GenericReturnValue GNUNET_PROGRAM_run(int argc, char *const *argv, const char *binaryName, const char *binaryHelp, const struct GNUNET_GETOPT_CommandLineOption *options, GNUNET_PROGRAM_Main task, void *task_cls)
Run a standard GNUnet command startup sequence (initialize loggers and configuration,...
Definition: program.c:364
enum GNUNET_GenericReturnValue GNUNET_STRINGS_get_utf8_args(int argc, char *const *argv, int *u8argc, char *const **u8argv)
Returns utf-8 encoded arguments.
Definition: strings.c:1209
#define GNUNET_TIME_UNIT_FOREVER_REL
Constant used to specify "forever".
Definition of a command line option.

References _, backward, collect, create_is, create_ss, ego_name, expiration, forward, gettext_noop, GNUNET_free_nz, GNUNET_GETOPT_OPTION_END, GNUNET_GETOPT_option_flag(), GNUNET_GETOPT_option_string(), GNUNET_log_setup(), GNUNET_OK, GNUNET_PROGRAM_run(), GNUNET_STRINGS_get_utf8_args(), GNUNET_TIME_UNIT_FOREVER_REL, is_private, issuer_attr, issuer_key, options, ret, run(), sign_ss, subject, subject_delegate, timeout, and verify.

Here is the call graph for this function:

Variable Documentation

◆ cfg

const struct GNUNET_CONFIGURATION_Handle* cfg
static

Configuration we are using.

Definition at line 36 of file gnunet-abd.c.

Referenced by associate_shared_service(), cadet_connect_adapter(), callback_scan_for_rooms(), connect_adapter(), connect_check_run(), controller_status_cb(), create_handle(), create_internal(), database_setup(), decrypt_connect_adapter(), default_ego_cb(), dht_ca(), dht_connect_adapter(), download_connect_adapter(), expand_dollar(), find_entry(), find_section(), GAS_plugin_init(), GCP_set_hello(), get_my_cnf_path(), get_server_addresses(), GN_start_gnunet_nat_server_(), GNUNET_ABD_connect(), GNUNET_ARM_connect(), GNUNET_ARM_monitor_start(), GNUNET_ATS_connectivity_init(), GNUNET_ATS_performance_init(), GNUNET_ATS_scheduling_init(), GNUNET_ATS_solvers_experimentation_load(), GNUNET_ATS_solvers_load_quotas(), GNUNET_BLOCK_context_create(), GNUNET_CADET_connect(), GNUNET_CADET_get_channel(), GNUNET_CADET_get_path(), GNUNET_CADET_list_peers(), GNUNET_CADET_list_tunnels(), GNUNET_CLIENT_connect(), GNUNET_CLIENT_test(), GNUNET_CONFIGURATION_config_tool_run(), GNUNET_CONFIGURATION_create(), GNUNET_CONFIGURATION_default(), GNUNET_CONFIGURATION_deserialize(), GNUNET_CONFIGURATION_destroy(), GNUNET_CONFIGURATION_dup(), GNUNET_CONFIGURATION_enable_diagnostics(), GNUNET_CONFIGURATION_expand_dollar(), GNUNET_CONFIGURATION_get_data(), GNUNET_CONFIGURATION_iterate(), GNUNET_CONFIGURATION_iterate_section_values(), GNUNET_CONFIGURATION_iterate_sections(), GNUNET_CONFIGURATION_iterate_value_filenames(), GNUNET_CONFIGURATION_load(), GNUNET_CONFIGURATION_remove_section(), GNUNET_CONFIGURATION_serialize(), GNUNET_CONFIGURATION_serialize_diagnostics(), GNUNET_CONFIGURATION_set_value_string(), GNUNET_CONNECTION_create_from_connect(), GNUNET_CONNECTION_create_from_connect_to_unixpath(), GNUNET_CONSENSUS_create(), GNUNET_CONVERSATION_call_start(), GNUNET_CONVERSATION_phone_create(), GNUNET_CORE_connect(), GNUNET_CORE_monitor_start(), GNUNET_CRYPTO_eddsa_key_create_from_configuration(), GNUNET_CRYPTO_eddsa_setup_key(), GNUNET_DATACACHE_create(), GNUNET_DATASTORE_connect(), GNUNET_DHT_connect(), GNUNET_DNS_connect(), GNUNET_FRIENDS_parse(), GNUNET_FRIENDS_write_start(), GNUNET_FS_start(), GNUNET_GNS_connect(), GNUNET_IDENTITY_connect(), GNUNET_IDENTITY_ego_lookup(), GNUNET_IDENTITY_ego_lookup_by_suffix(), GNUNET_MESSENGER_connect(), GNUNET_MICROPHONE_create_from_hardware(), GNUNET_MYSQL_context_create(), GNUNET_NAMECACHE_connect(), GNUNET_NAMESTORE_connect(), GNUNET_NAMESTORE_zone_monitor_start(), GNUNET_NAT_AUTO_autoconfig_start(), GNUNET_NAT_AUTO_test_start(), GNUNET_NAT_autoconfig_start(), GNUNET_NAT_register(), GNUNET_NAT_test_start(), GNUNET_NSE_connect(), GNUNET_OS_get_suid_binary_path(), GNUNET_PEERINFO_connect(), GNUNET_PEERINFO_notify(), GNUNET_PEERSTORE_connect(), GNUNET_PQ_connect_with_cfg(), GNUNET_PQ_connect_with_cfg2(), GNUNET_RECLAIM_connect(), GNUNET_REGEX_announce(), GNUNET_REGEX_search(), GNUNET_RESOLVER_connect(), GNUNET_REVOCATION_query(), GNUNET_REVOCATION_revoke(), GNUNET_RPS_connect(), GNUNET_run_messenger_setup(), GNUNET_SCALARPRODUCT_accept_computation(), GNUNET_SCALARPRODUCT_start_computation(), GNUNET_SECRETSHARING_create_session(), GNUNET_SECRETSHARING_decrypt(), GNUNET_SERVICE_run_(), GNUNET_SERVICE_start(), GNUNET_SET_create(), GNUNET_SET_listen(), GNUNET_SETI_create(), GNUNET_SETI_listen(), GNUNET_SETU_create(), GNUNET_SETU_listen(), GNUNET_SOCKS_check_service(), GNUNET_SOCKS_do_connect(), GNUNET_SPEAKER_create_from_hardware(), GNUNET_SPEEDUP_start_(), GNUNET_STATISTICS_create(), GNUNET_TESTBED_compress_cfg_(), GNUNET_TESTBED_controller_connect(), GNUNET_TESTBED_controller_start(), GNUNET_TESTBED_create_helper_init_msg_(), GNUNET_TESTBED_extract_config_(), GNUNET_TESTBED_host_create(), GNUNET_TESTBED_host_create_by_id_(), GNUNET_TESTBED_host_create_with_id(), GNUNET_TESTBED_hosts_load_from_file(), GNUNET_TESTBED_hosts_load_from_loadleveler(), GNUNET_TESTBED_LOGGER_connect(), GNUNET_TESTBED_peer_create(), GNUNET_TESTBED_peer_update_configuration(), GNUNET_TESTBED_run(), GNUNET_TESTING_configuration_create(), GNUNET_TESTING_configuration_create_(), GNUNET_TESTING_peer_configure(), GNUNET_TESTING_service_run(), GNUNET_TRANSPORT_address_to_string(), GNUNET_TRANSPORT_application_init(), GNUNET_TRANSPORT_blacklist(), GNUNET_TRANSPORT_communicator_connect(), GNUNET_TRANSPORT_core_connect(), GNUNET_TRANSPORT_hello_get(), GNUNET_TRANSPORT_manipulation_connect(), GNUNET_TRANSPORT_monitor(), GNUNET_TRANSPORT_monitor_peers(), GNUNET_TRANSPORT_monitor_plugins(), GNUNET_TRANSPORT_offer_hello(), gnunet_uri(), GNUNET_VPN_connect(), GPI_plugins_load(), GST_barriers_init(), GST_connection_pool_get_handle(), GST_stats_init(), handle_auto_result(), handle_link_controllers_result(), handle_peer_create(), handle_peer_reconfigure(), handle_slave_get_config(), id_connect_cb(), identity_cb(), init_cb(), iterate_save_rooms(), LEGACY_SERVICE_get_server_addresses(), LEGACY_SERVICE_run(), LEGACY_SERVICE_start(), libgnunet_plugin_block_revocation_init(), libgnunet_plugin_namecache_flat_init(), libgnunet_plugin_namecache_postgres_init(), libgnunet_plugin_namecache_sqlite_init(), libgnunet_plugin_namestore_flat_init(), libgnunet_plugin_namestore_postgres_init(), libgnunet_plugin_namestore_sqlite_init(), libgnunet_plugin_peerstore_flat_init(), libgnunet_plugin_peerstore_sqlite_init(), load_episode(), load_episodes(), load_member(), load_member_session(), load_member_session_next(), load_op_add_address(), load_op_del_address(), load_op_start_request(), load_op_start_set_preference(), load_op_start_set_property(), load_op_stop_request(), load_op_stop_set_preference(), load_op_stop_set_property(), load_operation(), load_quota(), load_quotas(), logger_run(), main_task(), nse_connect_adapter(), p1_transport_connect_cache_callback(), p2_transport_connect_cache_callback(), parse_shared_services(), print_filename_option(), publish_connect_adapter(), read_blacklist_configuration(), rocc_cache_get_handle_transport_cb(), rps_connect_adapter(), run(), run_service(), run_with_zone_pkey(), save_member(), save_operation(), send_controller_link_response(), send_create(), server_get_addresses(), session_connect_adapter(), setup_ac(), slave_status_cb(), stat_connect_adapter(), statistics_ca(), store_cb(), test_service_configuration(), testbed_run(), testing_main(), tokenizer_cb(), try_unixpath(), and update_peer_config().

◆ ns

struct GNUNET_NAMESTORE_Handle* ns
static

◆ zone_pkey

struct GNUNET_CRYPTO_EcdsaPrivateKey zone_pkey
static

Private key for the our zone.

Definition at line 41 of file gnunet-abd.c.

Referenced by get_existing_record(), and store_cb().

◆ el

struct GNUNET_IDENTITY_EgoLookup* el
static

◆ abd

struct GNUNET_ABD_Handle* abd
static

Handle to Credential service.

Definition at line 56 of file gnunet-abd.c.

Referenced by do_shutdown(), identity_cb(), and run().

◆ timeout

struct GNUNET_TIME_Relative timeout
static

◆ verify_request

struct GNUNET_ABD_Request* verify_request
static

Handle to verify request.

Definition at line 66 of file gnunet-abd.c.

Referenced by do_shutdown(), handle_collect_result(), handle_verify_result(), and run().

◆ collect_request

struct GNUNET_ABD_Request* collect_request
static

Handle to collect request.

Definition at line 71 of file gnunet-abd.c.

Referenced by identity_cb().

◆ tt

struct GNUNET_SCHEDULER_Task* tt
static

Task scheduled to handle timeout.

Definition at line 76 of file gnunet-abd.c.

Referenced by do_shutdown(), do_timeout(), GNUNET_STRINGS_absolute_time_to_string(), and run().

◆ ret

int ret = 0
static

Return value of the commandline.

Definition at line 81 of file gnunet-abd.c.

Referenced by __attribute__(), access_handler_callback(), add_address_to_hello(), add_address_to_uri(), add_record(), add_services(), add_to_buf(), add_valid_peer(), address_generator(), address_to_regex(), append_port(), attr_in_claims_request(), batch_traits(), block_until_all_peers_started_finish(), bound_priority(), build_dns_query(), check_access(), check_vectors(), child_death_task(), cleanup_expired_records(), client_message_tokenizer_callback(), close_all_files(), cmd_read(), compute_chk_offset(), compute_policy(), connect_peers_finish(), conversation_value_to_string(), convert_with_table(), copy_from_reader(), create_meter(), create_peer_ctx(), create_response(), CustomPeerMap_remove_peer(), db_read_whitelist(), decide_capacity(), delta_match(), demultiplex_with_cmc(), deserialize_fi_node(), deserialize_file_information(), do_delete_entry(), do_send(), do_transmit(), download_hostlist(), execute_get(), execute_select(), extract_fixed_blob(), extract_rsa_pub(), extract_rsa_sig(), extract_var_blob(), fh_reader(), fork_and_exec(), GCP_2s(), GCP_iterate_indirect_paths(), GCP_iterate_paths(), GCP_iterate_paths_at(), GCT_add_channel(), GCT_handle_kx(), get_bootstrap_server(), get_cb(), get_first_string_value(), get_first_value(), get_key(), get_latest(), get_peer_ctx(), get_random_peer_from_peermap(), get_read_handle(), get_records_and_call_iterator(), get_second_value(), get_serialization_file_name(), get_serialization_file_name_in_dir(), get_server_addresses(), get_target_peers(), get_update_information_directory(), get_valid_peers(), get_value(), get_write_handle(), get_write_handle_in_dir(), getPRK(), gns_resolve_name(), GNUNET_ABD_delegates_get_size(), GNUNET_ABD_delegation_chain_get_size(), GNUNET_ABD_delegation_set_get_size(), GNUNET_ARM_request_service_start(), GNUNET_asprintf(), GNUNET_BIO_flush(), GNUNET_BIO_get_buffer_contents(), GNUNET_BIO_read_spec_commit(), GNUNET_BLOCK_group_merge(), GNUNET_CADET_get_channel_cancel(), GNUNET_CADET_get_path_cancel(), GNUNET_CADET_list_peers_cancel(), GNUNET_CADET_list_tunnels_cancel(), GNUNET_CLIENT_test(), GNUNET_CONFIGURATION_dup(), GNUNET_CONFIGURATION_iterate_value_filenames(), GNUNET_CONTAINER_heap_remove_node(), GNUNET_CONTAINER_heap_remove_root(), GNUNET_CONTAINER_meta_data_duplicate(), GNUNET_CONTAINER_meta_data_get_first_by_types(), GNUNET_CONTAINER_meta_data_get_serialized_size(), GNUNET_CONTAINER_multihashmap32_create(), GNUNET_CONTAINER_multihashmap32_remove_all(), GNUNET_CONTAINER_multihashmap_clear(), GNUNET_CONTAINER_multihashmap_remove_all(), GNUNET_CONTAINER_multipeermap_remove_all(), GNUNET_CONTAINER_multishortmap_remove_all(), GNUNET_CONTAINER_multiuuidmap_remove_all(), GNUNET_copy_message(), GNUNET_CRYPTO_ecdsa_private_key_derive(), GNUNET_CRYPTO_hash(), GNUNET_CRYPTO_hkdf(), GNUNET_CRYPTO_hkdf_v(), GNUNET_CRYPTO_kdf(), GNUNET_CRYPTO_random_permute(), GNUNET_CRYPTO_random_u32(), GNUNET_CRYPTO_random_u64(), GNUNET_CRYPTO_rsa_private_key_cmp(), GNUNET_CRYPTO_rsa_private_key_create(), GNUNET_CRYPTO_rsa_public_key_cmp(), GNUNET_CRYPTO_rsa_public_key_encode(), GNUNET_CRYPTO_rsa_signature_cmp(), GNUNET_CRYPTO_rsa_signature_dup(), GNUNET_CRYPTO_rsa_signature_encode(), GNUNET_CRYPTO_rsa_unblind(), GNUNET_DATACACHE_create(), GNUNET_DISK_directory_remove(), GNUNET_DISK_directory_scan(), GNUNET_DISK_file_close(), GNUNET_DISK_file_read_non_blocking(), GNUNET_DISK_file_write_blocking(), GNUNET_DISK_fn_read(), GNUNET_DISK_pipe_close(), GNUNET_DISK_pipe_close_end(), GNUNET_DNSPARSER_bin_to_hex(), GNUNET_DNSPARSER_builder_add_query(), GNUNET_DNSPARSER_builder_add_soa(), GNUNET_DNSPARSER_builder_add_srv(), GNUNET_DNSPARSER_pack(), GNUNET_e2s(), GNUNET_e2s2(), GNUNET_FRIENDS_write(), GNUNET_FRIENDS_write_stop(), GNUNET_FS_data_reader_file_(), GNUNET_FS_directory_builder_add(), GNUNET_FS_directory_builder_create(), GNUNET_FS_directory_builder_finish(), GNUNET_FS_file_information_create_empty_directory(), GNUNET_FS_file_information_create_from_file(), GNUNET_FS_file_information_create_from_reader(), GNUNET_FS_make_top(), GNUNET_FS_meta_data_suggest_filename(), GNUNET_FS_meta_data_test_for_directory(), GNUNET_FS_publish_start(), GNUNET_FS_search_make_status_(), GNUNET_FS_search_start(), GNUNET_FS_start(), GNUNET_FS_tree_calculate_block_size(), GNUNET_FS_tree_compute_iblock_size(), GNUNET_FS_uri_dup(), GNUNET_FS_uri_ksk_create_from_meta_data(), GNUNET_FS_uri_ksk_merge(), GNUNET_FS_uri_ksk_to_string_fancy(), GNUNET_FS_uri_loc_get_uri(), GNUNET_FS_uri_parse(), GNUNET_FS_uri_test_equal(), GNUNET_GNS_lookup_cancel(), GNUNET_GNS_lookup_with_tld_cancel(), GNUNET_GNSRECORD_number_to_typename(), GNUNET_GNSRECORD_pkey_to_zkey(), GNUNET_GNSRECORD_records_get_size(), GNUNET_GNSRECORD_typename_to_number(), GNUNET_GNSRECORD_value_to_string(), GNUNET_h2s(), GNUNET_h2s2(), GNUNET_h2s_full(), GNUNET_HELLO_address_cmp(), GNUNET_HELLO_create(), GNUNET_HELLO_get_header(), GNUNET_HELLO_get_id(), GNUNET_HELLO_iterate_addresses(), GNUNET_HELLO_size(), GNUNET_HELPER_kill(), GNUNET_HELPER_wait(), GNUNET_i2s(), GNUNET_i2s2(), GNUNET_i2s_full(), GNUNET_JSON_from_rsa_public_key(), GNUNET_JSON_from_rsa_signature(), GNUNET_JSON_pack_(), GNUNET_JSON_spec_end(), GNUNET_LOAD_value_init(), GNUNET_MQ_inject_message(), GNUNET_MST_create(), GNUNET_MST_from_buffer(), GNUNET_MST_read(), GNUNET_MY_extract_result(), GNUNET_NAT_mini_map_start(), GNUNET_NAT_stun_handle_packet_(), GNUNET_NETWORK_socket_accept(), GNUNET_NETWORK_socket_bind(), GNUNET_NETWORK_socket_box_native(), GNUNET_NETWORK_socket_close(), GNUNET_NETWORK_socket_connect(), GNUNET_NETWORK_socket_create(), GNUNET_NETWORK_socket_disable_corking(), GNUNET_NETWORK_socket_getsockopt(), GNUNET_NETWORK_socket_listen(), GNUNET_NETWORK_socket_recv(), GNUNET_NETWORK_socket_send(), GNUNET_NETWORK_socket_shutdown(), GNUNET_NETWORK_test_pf(), GNUNET_NETWORK_test_port_free(), GNUNET_NETWORK_unix_precheck(), GNUNET_OS_process_kill(), GNUNET_OS_process_wait(), GNUNET_OS_start_process(), GNUNET_OS_start_process_va(), GNUNET_p2s(), GNUNET_p2s2(), GNUNET_PEER_intern(), GNUNET_PLUGIN_load(), GNUNET_PLUGIN_unload(), GNUNET_PQ_exec_prepared(), GNUNET_PQ_prepare_statements(), GNUNET_PQ_reconnect(), gnunet_read(), GNUNET_RECLAIM_attribute_number_to_typename(), GNUNET_RECLAIM_attribute_typename_to_number(), GNUNET_RECLAIM_attribute_value_to_string(), GNUNET_RECLAIM_credential_get_attributes(), GNUNET_RECLAIM_credential_get_issuer(), GNUNET_RECLAIM_credential_number_to_typename(), GNUNET_RECLAIM_credential_typename_to_number(), GNUNET_RECLAIM_credential_value_to_string(), GNUNET_RECLAIM_presentation_get_attributes(), GNUNET_RECLAIM_presentation_get_issuer(), GNUNET_RECLAIM_presentation_number_to_typename(), GNUNET_RECLAIM_presentation_typename_to_number(), GNUNET_RECLAIM_presentation_value_to_string(), GNUNET_RESOLVER_local_fqdn_get(), GNUNET_SCHEDULER_add_now_with_lifeness(), GNUNET_SCHEDULER_cancel(), GNUNET_SCHEDULER_get_load(), GNUNET_SERVER_mst_create(), GNUNET_SERVER_mst_receive(), GNUNET_SERVICE_run_(), GNUNET_SIGNAL_handler_install(), GNUNET_snprintf(), GNUNET_SQ_prepare(), GNUNET_STRINGS_base64_decode(), GNUNET_STRINGS_base64_encode(), GNUNET_STRINGS_base64url_decode(), GNUNET_STRINGS_byte_size_fancy(), GNUNET_STRINGS_conv(), GNUNET_STRINGS_fancy_time_to_relative(), GNUNET_STRINGS_parse_ipv6_policy(), GNUNET_TESTBED_extract_config_(), GNUNET_TESTBED_test_run(), GNUNET_TESTBED_underlay_construct_(), GNUNET_TESTING_get_testname_from_underscore(), GNUNET_TESTING_get_topo_from_file(), GNUNET_TESTING_get_trait(), GNUNET_TESTING_peer_wait(), GNUNET_TESTING_reserve_port(), GNUNET_TRANSPORT_TESTING_get_config_name(), GNUNET_TRANSPORT_TESTING_get_test_name(), GNUNET_TRANSPORT_TESTING_get_test_plugin_name(), GNUNET_TRANSPORT_TESTING_main_(), GNUNET_xmalloc_(), GNUNET_xmemdup_(), GNUNET_xnew_array_2d_(), GNUNET_xnew_array_3d_(), GSC_TYPEMAP_extend(), GSC_TYPEMAP_get_from_message(), GST_validation_handle_ping(), habitability_check(), handle_lookup_block(), handle_request_connection_reversal(), handle_revoke_message(), handle_verify_result(), hello_world_birth_traits(), http_common_plugin_address_pretty_printer(), insert_in_view(), ipv4_to_regex(), ipv6_to_regex(), iterator_cb(), kwait(), LEGACY_SERVICE_get_server_addresses(), LEGACY_SERVICE_run(), libgnunet_plugin_transport_tcp_init(), load_cert_from_file(), load_key_from_file(), load_plugin(), load_quota(), main(), maint_child_death(), make_peer(), make_serialization_file_name(), make_serialization_file_name_in_dir(), make_udp_socket(), monitor_iteration_next(), mst_create(), mst_receive(), my_timegm(), mysql_plugin_estimate_size(), mysql_plugin_get_keys(), namecache_sqlite_lookup_block(), namestore_postgres_store_records(), namestore_sqlite_store_records(), netjail_exec_traits(), netjail_start_finish(), nfa_closure_set_create(), nibble_to_regex(), notify_connect(), notify_send_probe(), num_to_regex(), ogg_demux_and_decode(), op_get_element(), open_socket(), os_get_exec_path(), os_get_gnunet_path(), parent_control_handler(), parse_hello_uri(), parse_name(), parse_quota(), pass_plaintext_to_core(), PEERSTORE_hash_key(), peerstore_sqlite_delete_records(), percent_decode_keyword(), perform_dht_put(), port_to_regex(), postgres_plugin_estimate_size(), postgres_plugin_put(), postgres_plugin_remove_key(), prepare_daemon(), process_acl4(), process_acl6(), process_data(), process_incoming(), process_mst(), process_status(), queue(), quit(), read_cb(), read_external_ipv4(), read_from_file(), receive_ready(), recursive_dns_resolution(), remove_epsilon(), repl_proc(), reply_to_dns(), reservations_reserve(), resolver_lookup_get_next_label(), result_callback(), resume_client_receive(), rfn_noncontested(), run(), run_zbar(), s2i_full(), sb_append(), sb_append_cstr(), sb_printf1(), sb_printf2(), sb_printf3(), sb_realloc(), sb_wrap(), secret_ready_cb(), select_del(), select_read_cb(), send_client_element(), server_get_addresses(), server_schedule(), service_client_recv(), service_manage_result_cb(), set_external_ipv4(), setup_db(), setup_service(), sigchld_handler(), sockaddr_to_udpaddr_string(), sqlite_plugin_get_keys(), sqlite_plugin_put(), start_peer_traits(), start_process(), store_and_free_entries(), store_peer_presistently_iterator(), store_valid_peers(), stun_read_task(), system_create_traits(), test_service_configuration(), test_wlan_interface(), tokenizer_cb(), translate_dot_plus(), transmit_content(), transmit_ping_if_allowed(), transmit_ready(), unix_plugin_address_pretty_printer(), unix_plugin_do_read(), updateUsage(), uri_chk_parse(), uri_chk_to_string(), uri_ksk_parse(), uri_ksk_to_string(), uri_loc_to_string(), uri_sks_parse(), uri_sks_to_string(), wlan_plugin_address_pretty_printer(), write_data(), and write_wav_header().

◆ subject

char* subject
static

◆ subject_delegate

char* subject_delegate
static

Subject delegate string.

Definition at line 91 of file gnunet-abd.c.

Referenced by main(), and run().

◆ expiration

char* expiration
static

◆ subject_pkey

struct GNUNET_CRYPTO_EcdsaPublicKey subject_pkey

◆ issuer_pkey

struct GNUNET_CRYPTO_EcdsaPublicKey issuer_pkey

Issuer key.

Definition at line 96 of file gnunet-abd.c.

Referenced by GNUNET_ABD_delegate_from_string(), GNUNET_ABD_delegate_to_string(), identity_cb(), and run().

◆ issuer_key

char* issuer_key
static

Issuer pubkey string.

Definition at line 112 of file gnunet-abd.c.

Referenced by GNUNET_ABD_collect(), GNUNET_ABD_verify(), handle_verify_result(), identity_cb(), main(), and run().

◆ ego_name

char* ego_name
static

ego

Definition at line 117 of file gnunet-abd.c.

Referenced by identity_cb(), main(), run(), and sign_cb().

◆ issuer_attr

char* issuer_attr
static

Issuer attribute.

Definition at line 122 of file gnunet-abd.c.

Referenced by identity_cb(), main(), run(), and sign_cb().

◆ verify

int verify
static

Verify mode.

Definition at line 127 of file gnunet-abd.c.

Referenced by check_ssl_certificate(), main(), and run().

◆ collect

int collect
static

Collect mode.

Definition at line 132 of file gnunet-abd.c.

Referenced by identity_cb(), main(), and run().

◆ create_is

int create_is
static

Create mode.

Definition at line 137 of file gnunet-abd.c.

Referenced by main(), and run().

◆ create_ss

int create_ss
static

Create mode.

Definition at line 142 of file gnunet-abd.c.

Referenced by main(), and run().

◆ sign_ss

int sign_ss
static

Create mode.

Definition at line 147 of file gnunet-abd.c.

Referenced by main(), and run().

◆ import

char* import
static

Signed issue credentials.

Definition at line 152 of file gnunet-abd.c.

◆ is_private

int is_private
static

Is record private.

Definition at line 157 of file gnunet-abd.c.

Referenced by get_existing_record(), and main().

◆ forward

int forward
static

Search direction: forward.

Definition at line 162 of file gnunet-abd.c.

Referenced by forward_overlay_connect(), main(), request_room_message_step(), and run().

◆ backward

int backward
static

Search direction: backward.

Definition at line 167 of file gnunet-abd.c.

Referenced by main(), and run().

◆ direction

enum GNUNET_ABD_AlgoDirectionFlags direction = 0

API enum, filled and passed for collect/verify.

Definition at line 167 of file gnunet-abd.c.

Referenced by check_get(), GNUNET_ABD_collect(), GNUNET_ABD_verify(), handle_get(), identity_cb(), load_quota(), parse_quota(), run(), and server_lookup_connection().

◆ add_qe

struct GNUNET_NAMESTORE_QueueEntry* add_qe
static

Queue entry for the 'add' operation.

Definition at line 177 of file gnunet-abd.c.

Referenced by do_shutdown(), get_existing_record(), and store_cb().

◆ data

void* data
static

Value in binary format.

Definition at line 182 of file gnunet-abd.c.

Referenced by get_existing_record(), and store_cb().

◆ data_size

size_t data_size
static

Number of bytes in data.

Definition at line 187 of file gnunet-abd.c.

Referenced by abd_string_to_value(), abd_value_to_string(), add_dns_result(), add_host(), basic_string_to_value(), basic_value_to_string(), buffer_append(), buffer_init(), cadet_reply_proc(), check_pkey(), consistency_iter(), consume_ticket(), conversation_string_to_value(), conversation_value_to_string(), count_and_separate_strings(), create_string_array(), datacache_get_iterator(), display_records_from_block(), dns_string_to_value(), dns_value_to_string(), dv_hmac(), extract_result_cb(), filter_tickets_cb(), forward_resolution(), GDS_CLIENTS_handle_reply(), GDS_DATACACHE_handle_put(), GDS_NEIGHBOURS_handle_put(), GDS_NEIGHBOURS_handle_reply(), GDS_ROUTING_process(), get_existing_record(), get_records_and_call_iterator(), gns_string_to_value(), gns_value_to_string(), GNUNET_ABD_delegate_deserialize(), GNUNET_CONTAINER_meta_data_delete(), GNUNET_CONTAINER_meta_data_insert(), GNUNET_DATACACHE_put(), GNUNET_DNSPARSER_bin_to_hex(), GNUNET_DNSPARSER_hex_to_bin(), GNUNET_GNSRECORD_JSON_from_gnsrecord(), GNUNET_GNSRECORD_records_deserialize(), GNUNET_GNSRECORD_records_get_size(), GNUNET_GNSRECORD_records_serialize(), GNUNET_GNSRECORD_string_to_value(), GNUNET_GNSRECORD_value_to_string(), GNUNET_NAT_stun_handle_packet(), GNUNET_OP_result(), GNUNET_RECLAIM_attribute_deserialize(), GNUNET_RECLAIM_attribute_list_add(), GNUNET_RECLAIM_attribute_list_deserialize(), GNUNET_RECLAIM_attribute_new(), GNUNET_RECLAIM_attribute_serialize(), GNUNET_RECLAIM_attribute_serialize_get_size(), GNUNET_RECLAIM_attribute_string_to_value(), GNUNET_RECLAIM_attribute_value_to_string(), GNUNET_RECLAIM_credential_deserialize(), GNUNET_RECLAIM_credential_list_deserialize(), GNUNET_RECLAIM_credential_new(), GNUNET_RECLAIM_credential_serialize(), GNUNET_RECLAIM_credential_serialize_get_size(), GNUNET_RECLAIM_credential_string_to_value(), GNUNET_RECLAIM_credential_value_to_string(), GNUNET_RECLAIM_presentation_deserialize(), GNUNET_RECLAIM_presentation_list_deserialize(), GNUNET_RECLAIM_presentation_new(), GNUNET_RECLAIM_presentation_serialize(), GNUNET_RECLAIM_presentation_serialize_get_size(), GNUNET_RECLAIM_presentation_string_to_value(), GNUNET_RECLAIM_presentation_value_to_string(), handle_delegate_collection_cb(), handle_dht_p2p_result(), handle_gns2dns_result(), handle_gns_resolution_result(), handle_gns_response(), handle_local_result(), handle_results(), issue_ticket(), item_printer(), iter_finished(), jwt_get_issuer(), jwt_parse_attributes(), jwt_string_to_value(), jwt_value_to_string(), lookup_authz_cb(), lookup_nick_it(), lookup_redirect_uri_result(), merge_helper(), merge_with_nick_records(), namestore_flat_store_records(), namestore_postgres_store_records(), namestore_sqlite_store_records(), op_result(), pabc_string_to_value(), pabc_value_to_string(), parse_attr(), parse_credential(), parse_jwt(), parse_result_call_iterator(), play(), postgres_plugin_get_random(), postgres_plugin_put(), process_lookup_result(), process_parallel_lookup_result(), process_reply_with_path(), read_stdio(), record(), recursive_gns2dns_resolution(), reply_to_dns(), result_processor(), run_edkey(), run_pkey(), rvk_move_attr_cb(), store_and_free_entries(), store_cb(), string_to_value(), transmit_call_audio(), transmit_phone_audio(), update_tickets(), and value_to_string().

◆ type

uint32_t type
static

Type string converted to DNS type value.

Definition at line 192 of file gnunet-abd.c.

Referenced by get_existing_record(), run(), and store_cb().

◆ typestring

char* typestring
static

Type of the record to add/remove, NULL to remove all.

Definition at line 197 of file gnunet-abd.c.

Referenced by display_records_from_block(), and store_cb().

◆ etime

uint64_t etime
static

Expiration string converted to numeric value.

Definition at line 201 of file gnunet-abd.c.

Referenced by generate_gns_certificate(), get_existing_record(), parse_expiration(), run(), and store_cb().

◆ etime_is_rel

int etime_is_rel = GNUNET_SYSERR
static

Is expiration time relative or absolute time?

Definition at line 206 of file gnunet-abd.c.

Referenced by get_existing_record(), parse_expiration(), and store_cb().

◆ key_length

const int key_length = 52
static

Fixed size of the public/private keys.

Definition at line 211 of file gnunet-abd.c.

Referenced by check_send_message(), GNUNET_MESSENGER_send_message(), handle_send_message(), and sign_cb().

◆ record_label

char* record_label
static

Record label for storing delegations.

Definition at line 216 of file gnunet-abd.c.

Referenced by run(), and store_cb().