GNUnet  0.17.6
Data Structures | Macros | Typedefs | Functions | Variables
gnunet-did.c File Reference
#include "platform.h"
#include "gnunet_util_lib.h"
#include "gnunet_namestore_service.h"
#include "gnunet_identity_service.h"
#include "gnunet_gns_service.h"
#include "gnunet_gnsrecord_lib.h"
#include "did_helper.h"
#include "did_core.h"
#include "jansson.h"
Include dependency graph for gnunet-did.c:

Go to the source code of this file.

Data Structures

struct  Event
 A Structure containing a cont and cls. More...
 

Macros

#define GNUNET_DID_DEFAULT_DID_DOCUMENT_EXPIRATION_TIME   "1d"
 

Typedefs

typedef void(* remove_did_document_callback) (void *cls)
 Signature of a callback function that is called after a did has been removed. More...
 

Functions

static void cleanup (void *cls)
 Disconnect and shutdown. More...
 
static void print_did_document (enum GNUNET_GenericReturnValue status, char *did_document, void *cls)
 GNS lookup callback. More...
 
static void resolve_did ()
 Resolve a DID given by the user. More...
 
static void remove_did_document_namestore_cb (void *cls, int32_t success, const char *emgs)
 Implements the GNUNET_NAMESTORE_ContinuationWithStatus Calls the callback function and cls in the event struct. More...
 
static void remove_did_document_ego_lookup_cb (void *cls, struct GNUNET_IDENTITY_Ego *ego)
 Callback called after the ego has been locked up. More...
 
static void remove_did_document (remove_did_document_callback cont, void *cls)
 Remove a DID Document. More...
 
static void create_did_ego_lockup_cb ()
 
static void create_did_cb (enum GNUNET_GenericReturnValue status, void *cls)
 Create a DID(-Document). More...
 
static void create_did_ego_create_cb (void *cls, const struct GNUNET_IDENTITY_PrivateKey *pk, const char *emsg)
 Create a DID(-Document) - Called after a new Identity has been created. More...
 
static void create_did_ego_lockup_cb (void *cls, struct GNUNET_IDENTITY_Ego *ego)
 Create a DID(-Document). More...
 
static void create_did ()
 Create a DID(-Document). More...
 
static void replace_did_document_ego_lookup_cb (void *cls, struct GNUNET_IDENTITY_Ego *ego)
 Replace a DID Docuemnt. More...
 
static void replace_did_document_remove_cb (void *cls)
 Replace a DID Document. More...
 
static void replace_did_document ()
 Replace a DID Docuemnt. More...
 
static void post_ego_iteration (void *cls)
 
static void process_dids (void *cls, struct GNUNET_IDENTITY_Ego *ego, void **ctx, const char *name)
 
static void run (void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *c)
 
int main (int argc, char *const argv[])
 

Variables

static int ret
 return value More...
 
static int replace
 Replace DID Document Flag. More...
 
static int remove_did
 Remove DID Document Flag. More...
 
static int get
 Get DID Documement for DID Flag. More...
 
static int create
 Create DID Document Flag. More...
 
static int show
 Show DID for Ego Flag. More...
 
static int show_all
 Show DID for Ego Flag. More...
 
static char * did
 DID Attribut String. More...
 
static char * didd
 DID Document Attribut String. More...
 
static char * egoname
 Ego Attribut String. More...
 
static char * expire
 DID Document expiration Date Attribut String. More...
 
static struct GNUNET_GNS_Handlegns_handle
 
static struct GNUNET_NAMESTORE_Handlenamestore_handle
 
static struct GNUNET_IDENTITY_Handleidentity_handle
 
static const struct GNUNET_CONFIGURATION_Handlemy_cfg
 
static int ego_exists = 0
 Give ego exists. More...
 

Macro Definition Documentation

◆ GNUNET_DID_DEFAULT_DID_DOCUMENT_EXPIRATION_TIME

#define GNUNET_DID_DEFAULT_DID_DOCUMENT_EXPIRATION_TIME   "1d"

Definition at line 46 of file gnunet-did.c.

Typedef Documentation

◆ remove_did_document_callback

typedef void(* remove_did_document_callback) (void *cls)

Signature of a callback function that is called after a did has been removed.

Definition at line 205 of file gnunet-did.c.

Function Documentation

◆ cleanup()

static void cleanup ( void *  cls)
static

Disconnect and shutdown.

Parameters
clsclosure

Definition at line 134 of file gnunet-did.c.

135 {
136  if (NULL != gns_handle)
138  if (NULL != namestore_handle)
140  if (NULL != identity_handle)
142 
143  GNUNET_free (did);
144  GNUNET_free (didd);
147 
149 }
static struct GNUNET_GNS_Handle * gns_handle
Definition: gnunet-did.c:106
static char * egoname
Ego Attribut String.
Definition: gnunet-did.c:96
static char * didd
DID Document Attribut String.
Definition: gnunet-did.c:91
static char * expire
DID Document expiration Date Attribut String.
Definition: gnunet-did.c:101
static struct GNUNET_NAMESTORE_Handle * namestore_handle
Definition: gnunet-did.c:111
static struct GNUNET_IDENTITY_Handle * identity_handle
Definition: gnunet-did.c:116
static char * did
DID Attribut String.
Definition: gnunet-did.c:86
void GNUNET_GNS_disconnect(struct GNUNET_GNS_Handle *handle)
Shutdown connection with the GNS service.
Definition: gns_api.c:290
void GNUNET_IDENTITY_disconnect(struct GNUNET_IDENTITY_Handle *h)
Disconnect from identity service.
Definition: identity_api.c:921
#define GNUNET_free(ptr)
Wrapper around free.
void GNUNET_NAMESTORE_disconnect(struct GNUNET_NAMESTORE_Handle *h)
Disconnect from the namestore service (and free associated resources).
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
Definition: scheduler.c:533

References did, didd, egoname, expire, gns_handle, GNUNET_free, GNUNET_GNS_disconnect(), GNUNET_IDENTITY_disconnect(), GNUNET_NAMESTORE_disconnect(), GNUNET_SCHEDULER_shutdown(), identity_handle, and namestore_handle.

Referenced by create_did(), create_did_cb(), create_did_ego_create_cb(), create_did_ego_lockup_cb(), post_ego_iteration(), print_did_document(), process_dids(), remove_did_document(), remove_did_document_namestore_cb(), replace_did_document(), resolve_did(), and run().

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

◆ print_did_document()

static void print_did_document ( enum GNUNET_GenericReturnValue  status,
char *  did_document,
void *  cls 
)
static

GNS lookup callback.

Prints the DID Document to standard out. Fails if there is more than one DID record.

Parameters
clsclosure
rd_countnumber of records in rd
rdthe records in the reply

Definition at line 160 of file gnunet-did.c.

165 {
166  if (GNUNET_OK == status)
167  printf ("%s\n", did_document);
168  else
169  printf ("An error occured: %s\n", did_document);
170 
172  ret = 0;
173  return;
174 }
static void cleanup(void *cls)
Disconnect and shutdown.
Definition: gnunet-did.c:134
static int ret
return value
Definition: gnunet-did.c:51
uint16_t status
See PRISM_STATUS_*-constants.
@ GNUNET_OK
Definition: gnunet_common.h:99
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_now(GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run as soon as possible.
Definition: scheduler.c:1281

References cleanup(), GNUNET_OK, GNUNET_SCHEDULER_add_now(), ret, and status.

Referenced by resolve_did().

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

◆ resolve_did()

static void resolve_did ( )
static

Resolve a DID given by the user.

Definition at line 180 of file gnunet-did.c.

181 {
183 
184  if (did == NULL)
185  {
186  printf ("Set DID option to resolve DID\n");
188  ret = 1;
189  return;
190  }
191 
193  {
194  printf ("An error occured while resoling the DID\n");
196  ret = 0;
197  return;
198  }
199 }
enum GNUNET_GenericReturnValue DID_resolve(const char *did, struct GNUNET_GNS_Handle *gns_handle, DID_resolve_callback *cont, void *cls)
Resolve a DID.
Definition: did_core.c:87
static void print_did_document(enum GNUNET_GenericReturnValue status, char *did_document, void *cls)
GNS lookup callback.
Definition: gnunet-did.c:160
static char * pkey
Public key of the zone to look in, in ASCII.
An identity key as per LSD0001.

References cleanup(), did, DID_resolve(), gns_handle, GNUNET_OK, GNUNET_SCHEDULER_add_now(), pkey, print_did_document(), and ret.

Referenced by post_ego_iteration().

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

◆ remove_did_document_namestore_cb()

static void remove_did_document_namestore_cb ( void *  cls,
int32_t  success,
const char *  emgs 
)
static

Implements the GNUNET_NAMESTORE_ContinuationWithStatus Calls the callback function and cls in the event struct.

Parameters
clsclosure containing the event struct
success
emgs

Definition at line 227 of file gnunet-did.c.

228 {
229  struct Event *event;
230 
231  if (success != GNUNET_SYSERR)
232  {
233  event = (struct Event *) cls;
234 
235  if (event->cont != NULL)
236  {
237  event->cont (event->cls);
238  free (event);
239  }
240  else {
241  free (event);
243  ret = 0;
244  return;
245  }
246  }
247  else {
248  printf ("Something went wrong when deleting the DID Document\n");
249 
250  if (emgs != NULL)
251  {
252  printf ("%s\n", emgs);
253  }
254 
256  ret = 0;
257  return;
258  }
259 }
@ GNUNET_SYSERR
Definition: gnunet_common.h:97
A Structure containing a cont and cls.
Definition: gnunet-did.c:213
remove_did_document_callback cont
Definition: gnunet-did.c:214
void * cls
Definition: gnunet-did.c:215

References cleanup(), Event::cls, Event::cont, GNUNET_SCHEDULER_add_now(), GNUNET_SYSERR, and ret.

Referenced by remove_did_document_ego_lookup_cb().

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

◆ remove_did_document_ego_lookup_cb()

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

Callback called after the ego has been locked up.

Parameters
clsclosure
egothe ego returned by the identity service

Definition at line 268 of file gnunet-did.c.

269 {
270  const struct GNUNET_IDENTITY_PrivateKey *skey =
272 
274  skey,
276  0,
277  NULL,
279  cls);
280 }
static void remove_did_document_namestore_cb(void *cls, int32_t success, const char *emgs)
Implements the GNUNET_NAMESTORE_ContinuationWithStatus Calls the callback function and cls in the eve...
Definition: gnunet-did.c:227
#define GNUNET_GNS_EMPTY_LABEL_AT
String we use to indicate an empty label (top-level entry in the zone).
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
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.
A private key for an identity as per LSD0001.

References GNUNET_GNS_EMPTY_LABEL_AT, GNUNET_IDENTITY_ego_get_private_key(), GNUNET_NAMESTORE_records_store(), namestore_handle, and remove_did_document_namestore_cb().

Referenced by remove_did_document().

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

◆ remove_did_document()

static void remove_did_document ( remove_did_document_callback  cont,
void *  cls 
)
static

Remove a DID Document.

Definition at line 286 of file gnunet-did.c.

287 {
288  struct Event *event;
289 
290  if (egoname == NULL)
291  {
292  printf ("Remove requieres an ego option\n");
294  ret = 1;
295  return;
296  }
297  else {
298  event = malloc (sizeof(*event));
299  event->cont = cont;
300  event->cls = cls;
301 
303  egoname,
305  (void *) event);
306  }
307 }
static void remove_did_document_ego_lookup_cb(void *cls, struct GNUNET_IDENTITY_Ego *ego)
Callback called after the ego has been locked up.
Definition: gnunet-did.c:268
static const struct GNUNET_CONFIGURATION_Handle * my_cfg
Definition: gnunet-did.c:122
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.

References cleanup(), Event::cls, Event::cont, egoname, GNUNET_IDENTITY_ego_lookup(), GNUNET_SCHEDULER_add_now(), my_cfg, remove_did_document_ego_lookup_cb(), and ret.

Referenced by post_ego_iteration(), and replace_did_document().

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

◆ create_did_ego_lockup_cb() [1/2]

static void create_did_ego_lockup_cb ( )
static

Referenced by create_did(), and create_did_ego_create_cb().

Here is the caller graph for this function:

◆ create_did_cb()

static void create_did_cb ( enum GNUNET_GenericReturnValue  status,
void *  cls 
)
static

Create a DID(-Document).

Called after DID has been created Prints status and the DID.

Definition at line 319 of file gnunet-did.c.

320 {
321  if (GNUNET_OK == status)
322  {
323  printf ("DID has been created.\n%s\n", (char *) cls);
324  free (cls);
325  ret = 0;
326  }
327  else
328  {
329  printf ("An error occured while creating the DID.\n");
330  ret = 1;
331  }
332 
334  return;
335 }

References cleanup(), Event::cls, GNUNET_OK, GNUNET_SCHEDULER_add_now(), ret, and status.

Referenced by create_did_ego_lockup_cb().

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

◆ create_did_ego_create_cb()

static void create_did_ego_create_cb ( void *  cls,
const struct GNUNET_IDENTITY_PrivateKey pk,
const char *  emsg 
)
static

Create a DID(-Document) - Called after a new Identity has been created.

Definition at line 341 of file gnunet-did.c.

344 {
345  if (emsg != NULL)
346  {
347  printf ("%s\n", emsg);
349  ret = 1;
350  return;
351  }
352 
354  egoname,
356  NULL);
357 }
static void create_did_ego_lockup_cb()

References cleanup(), create_did_ego_lockup_cb(), egoname, GNUNET_IDENTITY_ego_lookup(), GNUNET_SCHEDULER_add_now(), my_cfg, and ret.

Referenced by create_did_ego_lockup_cb().

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

◆ create_did_ego_lockup_cb() [2/2]

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

Create a DID(-Document).

Called after ego lookup

Definition at line 364 of file gnunet-did.c.

365 {
366  if (ego == NULL)
367  {
368  // If Ego was not found. Create new one first
369  printf ("Ego was not found. Creating new one.\n");
371  egoname,
372  NULL,
375  egoname);
376  }
377  else
378  {
379  char *did = DID_identity_to_did (ego);
380  void *cls = malloc (strlen (did) + 1);
381  struct GNUNET_TIME_Relative expire_relative;
382 
383  if (expire == NULL)
384  {
386  DID_DOCUMENT_DEFAULT_EXPIRATION_TIME, &expire_relative);
387  }
389  &
390  expire_relative))
391  {
392  printf ("Failed to read given expiration time\n");
394  ret = 1;
395  return;
396  }
397 
398  strcpy (cls, did);
399  // TODO: Add DID_document argument
400  if (GNUNET_OK != DID_create (ego,
401  NULL,
402  &expire_relative,
405  cls))
406  {
407  printf ("An error occured while creating the DID.\n");
408  ret = 1;
410  return;
411  }
412  }
413 }
enum GNUNET_GenericReturnValue DID_create(const struct GNUNET_IDENTITY_Ego *ego, const char *did_document, const struct GNUNET_TIME_Relative *expire_time, struct GNUNET_NAMESTORE_Handle *namestore_handle, DID_action_callback *cont, void *cls)
Creates a DID and saves DID Document in Namestore.
Definition: did_core.c:221
#define DID_DOCUMENT_DEFAULT_EXPIRATION_TIME
Definition: did_core.h:38
char * DID_identity_to_did(struct GNUNET_IDENTITY_Ego *ego)
Generate a DID for a given gnunet EGO.
Definition: did_helper.c:67
static void create_did_cb(enum GNUNET_GenericReturnValue status, void *cls)
Create a DID(-Document).
Definition: gnunet-did.c:319
static void create_did_ego_create_cb(void *cls, const struct GNUNET_IDENTITY_PrivateKey *pk, const char *emsg)
Create a DID(-Document) - Called after a new Identity has been created.
Definition: gnunet-did.c:341
struct GNUNET_IDENTITY_Operation * GNUNET_IDENTITY_create(struct GNUNET_IDENTITY_Handle *h, const char *name, const struct GNUNET_IDENTITY_PrivateKey *privkey, enum GNUNET_IDENTITY_KeyType ktype, GNUNET_IDENTITY_CreateContinuation cont, void *cont_cls)
Create a new ego with the given name.
Definition: identity_api.c:757
@ GNUNET_IDENTITY_TYPE_EDDSA
EDDSA identity.
enum GNUNET_GenericReturnValue 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:261
Time for relative time used by GNUnet, in microseconds.

References cleanup(), Event::cls, create_did_cb(), create_did_ego_create_cb(), did, DID_create(), DID_DOCUMENT_DEFAULT_EXPIRATION_TIME, DID_identity_to_did(), egoname, expire, GNUNET_IDENTITY_create(), GNUNET_IDENTITY_TYPE_EDDSA, GNUNET_OK, GNUNET_SCHEDULER_add_now(), GNUNET_STRINGS_fancy_time_to_relative(), identity_handle, namestore_handle, and ret.

Here is the call graph for this function:

◆ create_did()

static void create_did ( )
static

Create a DID(-Document).

Definition at line 420 of file gnunet-did.c.

421 {
422  // Ego name to be set
423  if (egoname == NULL)
424  {
425  printf ("Set the Ego argument to create a new DID(-Document)\n");
427  ret = 1;
428  return;
429  }
430 
432  egoname,
434  NULL);
435 }

References cleanup(), create_did_ego_lockup_cb(), egoname, GNUNET_IDENTITY_ego_lookup(), GNUNET_SCHEDULER_add_now(), my_cfg, and ret.

Referenced by post_ego_iteration().

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

◆ replace_did_document_ego_lookup_cb()

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

Replace a DID Docuemnt.

Callback function after ego lockup

Parameters
cls
ego

Definition at line 445 of file gnunet-did.c.

446 {
447  // create_did_store (didd, ego);
448 }

Referenced by replace_did_document_remove_cb().

Here is the caller graph for this function:

◆ replace_did_document_remove_cb()

static void replace_did_document_remove_cb ( void *  cls)
static

Replace a DID Document.

Callback functiona after remove

Parameters
cls

Definition at line 456 of file gnunet-did.c.

457 {
459  egoname,
461  NULL);
462 }
static void replace_did_document_ego_lookup_cb(void *cls, struct GNUNET_IDENTITY_Ego *ego)
Replace a DID Docuemnt.
Definition: gnunet-did.c:445

References egoname, GNUNET_IDENTITY_ego_lookup(), my_cfg, and replace_did_document_ego_lookup_cb().

Referenced by replace_did_document().

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

◆ replace_did_document()

static void replace_did_document ( )
static

Replace a DID Docuemnt.

Definition at line 469 of file gnunet-did.c.

470 {
471  if ((didd != NULL) && (expire != NULL))
472  {
474  }
475  else {
476  printf (
477  "Set the DID Document and expiration time argument to replace the DID Document\n");
479  ret = 1;
480  return;
481  }
482 }
static void replace_did_document_remove_cb(void *cls)
Replace a DID Document.
Definition: gnunet-did.c:456
static void remove_did_document(remove_did_document_callback cont, void *cls)
Remove a DID Document.
Definition: gnunet-did.c:286

References cleanup(), didd, expire, GNUNET_SCHEDULER_add_now(), remove_did_document(), replace_did_document_remove_cb(), and ret.

Referenced by post_ego_iteration().

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

◆ post_ego_iteration()

static void post_ego_iteration ( void *  cls)
static

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

486 {
487  // TODO: Check that only one argument is set
488 
489  if (1 == replace)
490  {
492  }
493  else if (1 == get)
494  {
495  resolve_did ();
496  }
497  else if (1 == remove_did)
498  {
499  remove_did_document (NULL, NULL);
500  }
501  else if (1 == create)
502  {
503  create_did ();
504  }
505  else {
506  // No Argument found
508  return;
509  }
510 }
static int replace
Replace DID Document Flag.
Definition: gnunet-did.c:56
static int remove_did
Remove DID Document Flag.
Definition: gnunet-did.c:61
static int get
Get DID Documement for DID Flag.
Definition: gnunet-did.c:66
static int create
Create DID Document Flag.
Definition: gnunet-did.c:71
static void resolve_did()
Resolve a DID given by the user.
Definition: gnunet-did.c:180
static void replace_did_document()
Replace a DID Docuemnt.
Definition: gnunet-did.c:469
static void create_did()
Create a DID(-Document).
Definition: gnunet-did.c:420

References cleanup(), create, create_did(), get, GNUNET_SCHEDULER_add_now(), remove_did, remove_did_document(), replace, replace_did_document(), and resolve_did().

Referenced by process_dids().

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

◆ process_dids()

static void process_dids ( void *  cls,
struct GNUNET_IDENTITY_Ego ego,
void **  ctx,
const char *  name 
)
static

Definition at line 513 of file gnunet-did.c.

515 {
516  char *did_str;
517 
518  if (ego == NULL)
519  {
520  if (1 == ego_exists)
521  {
523  return;
524  }
526  return;
527  }
528 
529  if (1 == show_all)
530  {
531  did_str = DID_identity_to_did (ego);
532  printf ("%s:\n\t%s\n", name, did_str);
533  GNUNET_free (did_str);
534  return;
535  }
536  if (1 == show)
537  {
538  if (0 == strncmp (name, egoname, strlen (egoname)))
539  {
540  did_str = DID_identity_to_did (ego);
541  printf ("%s:\n\t%s\n", name, did_str);
542  GNUNET_free (did_str);
543  return;
544  }
545  }
546 }
static int show_all
Show DID for Ego Flag.
Definition: gnunet-did.c:81
static int ego_exists
Give ego exists.
Definition: gnunet-did.c:127
static void post_ego_iteration(void *cls)
Definition: gnunet-did.c:485
static int show
Show DID for Ego Flag.
Definition: gnunet-did.c:76
const char * name

References cleanup(), DID_identity_to_did(), ego_exists, egoname, GNUNET_free, GNUNET_SCHEDULER_add_now(), name, post_ego_iteration(), show, and show_all.

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

Definition at line 551 of file gnunet-did.c.

555 {
558  my_cfg = c;
559 
560  // check if GNS_handle could connect
561  if (gns_handle == NULL)
562  {
563  ret = 1;
564  return;
565  }
566 
567  // check if NAMESTORE_handle could connect
568  if (namestore_handle == NULL)
569  {
571  ret = 1;
572  return;
573  }
574 
576  if (identity_handle == NULL)
577  {
579  ret = 1;
580  return;
581  }
582 }
static void process_dids(void *cls, struct GNUNET_IDENTITY_Ego *ego, void **ctx, const char *name)
Definition: gnunet-did.c:513
struct GNUNET_GNS_Handle * GNUNET_GNS_connect(const struct GNUNET_CONFIGURATION_Handle *cfg)
Initialize the connection with the GNS service.
Definition: gns_api.c:268
struct GNUNET_IDENTITY_Handle * GNUNET_IDENTITY_connect(const struct GNUNET_CONFIGURATION_Handle *cfg, GNUNET_IDENTITY_Callback cb, void *cb_cls)
Connect to the identity service.
Definition: identity_api.c:610
struct GNUNET_NAMESTORE_Handle * GNUNET_NAMESTORE_connect(const struct GNUNET_CONFIGURATION_Handle *cfg)
Connect to the namestore service.

References cleanup(), gns_handle, GNUNET_GNS_connect(), GNUNET_IDENTITY_connect(), GNUNET_NAMESTORE_connect(), GNUNET_SCHEDULER_add_now(), identity_handle, my_cfg, namestore_handle, process_dids(), and ret.

Referenced by 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[] 
)

Definition at line 585 of file gnunet-did.c.

586 {
589  "create",
590  gettext_noop (
591  "Create a DID Document and display its DID"),
592  &create),
594  "get",
595  gettext_noop (
596  "Get the DID Document associated with the given DID"),
597  &get),
599  "remove",
600  gettext_noop (
601  "Remove the DID"),
602  &remove_did),
604  "replace",
605  gettext_noop ("Replace the DID Document."),
606  &replace),
608  "show",
609  gettext_noop ("Show the DID for a given ego"),
610  &show),
612  "show-all",
613  gettext_noop ("Show egos with DIDs"),
614  &show_all),
616  "did",
617  "DID",
618  gettext_noop (
619  "The Decentralized Identity (DID)"),
620  &did),
622  "did-document",
623  "JSON",
624  gettext_noop (
625  "The DID Document to store in GNUNET"),
626  &didd),
628  "ego",
629  "EGO",
630  gettext_noop ("The name of the EGO"),
631  &egoname),
633  "expiration-time",
634  "TIME",
635  gettext_noop (
636  "The time until the DID Document is going to expire (e.g. 5d)"),
637  &expire),
639  };
640 
641  if (GNUNET_OK != GNUNET_PROGRAM_run (argc,
642  argv,
643  "gnunet-did",
644  "Manage Decentralized Identities (DIDs)",
645  options,
646  &run,
647  NULL))
648  return 1;
649  else
650  return ret;
651 }
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)
Definition: gnunet-did.c:551
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.
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:399
Definition of a command line option.

References create, did, didd, egoname, expire, get, gettext_noop, GNUNET_GETOPT_OPTION_END, GNUNET_GETOPT_option_flag(), GNUNET_GETOPT_option_string(), GNUNET_OK, GNUNET_PROGRAM_run(), options, remove_did, replace, ret, run(), show, and show_all.

Here is the call graph for this function:

Variable Documentation

◆ ret

int ret
static

◆ replace

int replace
static

Replace DID Document Flag.

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

Referenced by main(), post_ego_iteration(), replace_char(), try_ifconfig(), and try_ip().

◆ remove_did

int remove_did
static

Remove DID Document Flag.

Definition at line 61 of file gnunet-did.c.

Referenced by main(), and post_ego_iteration().

◆ get

int get
static

Get DID Documement for DID Flag.

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

Referenced by check_dht_local_get_result_seen(), check_get(), handle_dht_p2p_get(), main(), and post_ego_iteration().

◆ create

int create
static

Create DID Document Flag.

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

Referenced by GCP_get(), GCP_get_tunnel(), GNUNET_SERVER_set_callbacks(), main(), and post_ego_iteration().

◆ show

int show
static

Show DID for Ego Flag.

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

Referenced by main(), and process_dids().

◆ show_all

int show_all
static

Show DID for Ego Flag.

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

Referenced by main(), and process_dids().

◆ did

char* did
static

DID Attribut String.

Definition at line 86 of file gnunet-did.c.

Referenced by cleanup(), create_did_ego_lockup_cb(), main(), and resolve_did().

◆ didd

char* didd
static

DID Document Attribut String.

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

Referenced by cleanup(), main(), and replace_did_document().

◆ egoname

char* egoname
static

◆ expire

char* expire
static

◆ gns_handle

struct GNUNET_GNS_Handle* gns_handle
static

Definition at line 106 of file gnunet-did.c.

Referenced by cleanup(), resolve_did(), and run().

◆ namestore_handle

struct GNUNET_NAMESTORE_Handle* namestore_handle
static

◆ identity_handle

struct GNUNET_IDENTITY_Handle* identity_handle
static

Definition at line 116 of file gnunet-did.c.

Referenced by cleanup(), create_did_ego_lockup_cb(), and run().

◆ my_cfg

const struct GNUNET_CONFIGURATION_Handle* my_cfg
static

◆ ego_exists

int ego_exists = 0
static

Give ego exists.

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

Referenced by process_dids().