GNUnet 0.22.2
gnunet-did.c File Reference
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, const 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, enum GNUNET_ErrorCode ec)
 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 (void *cls, struct GNUNET_IDENTITY_Ego *ego)
 Create a DID(-Document). More...
 
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_CRYPTO_PrivateKey *pk, enum GNUNET_ErrorCode ec)
 Create a DID(-Document) - Called after a new Identity has been created. 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 Document. More...
 
static void replace_did_document_remove_cb (void *cls)
 Replace a DID Document. More...
 
static void replace_did_document ()
 Replace a DID Document. 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 Attribute String. More...
 
static char * didd
 DID Document Attribute String. More...
 
static char * egoname
 Ego Attribute String. More...
 
static char * expire
 DID Document expiration Date Attribute 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 43 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 203 of file gnunet-did.c.

Function Documentation

◆ cleanup()

static void cleanup ( void *  cls)
static

Disconnect and shutdown.

Parameters
clsclosure

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

132{
133 if (NULL != gns_handle)
135 if (NULL != namestore_handle)
137 if (NULL != identity_handle)
139
144
146}
static struct GNUNET_GNS_Handle * gns_handle
Definition: gnunet-did.c:103
static char * egoname
Ego Attribute String.
Definition: gnunet-did.c:93
static char * didd
DID Document Attribute String.
Definition: gnunet-did.c:88
static char * expire
DID Document expiration Date Attribute String.
Definition: gnunet-did.c:98
static struct GNUNET_NAMESTORE_Handle * namestore_handle
Definition: gnunet-did.c:108
static struct GNUNET_IDENTITY_Handle * identity_handle
Definition: gnunet-did.c:113
static char * did
DID Attribute String.
Definition: gnunet-did.c:83
void GNUNET_GNS_disconnect(struct GNUNET_GNS_Handle *handle)
Shutdown connection with the GNS service.
Definition: gns_api.c:289
void GNUNET_IDENTITY_disconnect(struct GNUNET_IDENTITY_Handle *h)
Disconnect from identity service.
Definition: identity_api.c:732
#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:567

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 cleanup_store_discourse_messages_before(), create_did(), create_did_cb(), create_did_ego_create_cb(), create_did_ego_lockup_cb(), curl_check_hdr(), decrypt_message(), decrypt_new_element(), deserialize_download(), deserialize_fi_node(), deserialize_publish_file(), deserialize_search(), deserialize_search_result(), deserialize_unindex_file(), encrypt_message(), GNUNET_CONFIGURATION_load_from(), GNUNET_FS_download_sync_(), GNUNET_FS_file_information_sync_(), GNUNET_FS_publish_sync_(), GNUNET_FS_search_result_sync_(), GNUNET_FS_search_sync_(), GNUNET_FS_unindex_sync_(), GNUNET_PQ_extract_result(), GNUNET_PROGRAM_run2(), GNUNET_TESTING_command_new_ac(), handle_inline(), iterate_flag_for_cleanup_discourse_message(), main(), post_ego_iteration(), print_did_document(), process_dids(), read_download_request(), remove_did_document(), remove_did_document_namestore_cb(), replace_did_document(), resolve_did(), run(), and verify_fair().

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,
const 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 158 of file gnunet-did.c.

163{
164 if (GNUNET_OK == status)
165 printf ("%s\n", did_document);
166 else
167 printf ("An error occurred: %s\n", did_document);
168
170 ret = 0;
171 return;
172}
static void cleanup(void *cls)
Disconnect and shutdown.
Definition: gnunet-did.c:131
static int ret
return value
Definition: gnunet-did.c:48
static int status
The program status; 0 for success.
Definition: gnunet-nse.c:39
@ GNUNET_OK
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:1304

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 179 of file gnunet-did.c.

180{
181
182 if (did == NULL)
183 {
184 printf ("Set DID option to resolve DID\n");
186 ret = 1;
187 return;
188 }
189
191 {
192 printf ("An error occurred while resoling the DID\n");
194 ret = 0;
195 return;
196 }
197}
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:89
static void print_did_document(enum GNUNET_GenericReturnValue status, const char *did_document, void *cls)
GNS lookup callback.
Definition: gnunet-did.c:158

References cleanup(), did, DID_resolve(), gns_handle, GNUNET_OK, GNUNET_SCHEDULER_add_now(), 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,
enum GNUNET_ErrorCode  ec 
)
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 225 of file gnunet-did.c.

226{
227 struct Event *event;
228
229 if (GNUNET_EC_NONE == ec)
230 {
231 event = (struct Event *) cls;
232
233 if (event->cont != NULL)
234 {
235 event->cont (event->cls);
236 free (event);
237 }
238 else
239 {
240 free (event);
242 ret = 0;
243 return;
244 }
245 }
246 else
247 {
248 printf ("Something went wrong when deleting the DID Document\n");
249
250 printf ("%s\n", GNUNET_ErrorCode_get_hint (ec));
251
253 ret = 0;
254 return;
255 }
256}
const char * GNUNET_ErrorCode_get_hint(enum GNUNET_ErrorCode ec)
Returns a hint for a given error code.
@ GNUNET_EC_NONE
No error (success).
A Structure containing a cont and cls.
Definition: gnunet-did.c:211
remove_did_document_callback cont
Definition: gnunet-did.c:212
void * cls
Definition: gnunet-did.c:213

References cleanup(), Event::cls, Event::cont, GNUNET_EC_NONE, GNUNET_ErrorCode_get_hint(), GNUNET_SCHEDULER_add_now(), 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 266 of file gnunet-did.c.

267{
268 const struct GNUNET_CRYPTO_PrivateKey *skey =
270
272 skey,
274 0,
275 NULL,
277 cls);
278}
static void remove_did_document_namestore_cb(void *cls, enum GNUNET_ErrorCode ec)
Implements the GNUNET_NAMESTORE_ContinuationWithStatus Calls the callback function and cls in the eve...
Definition: gnunet-did.c:225
#define GNUNET_GNS_EMPTY_LABEL_AT
String we use to indicate an empty label (top-level entry in the zone).
const struct GNUNET_CRYPTO_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:517
struct GNUNET_NAMESTORE_QueueEntry * GNUNET_NAMESTORE_record_set_store(struct GNUNET_NAMESTORE_Handle *h, const struct GNUNET_CRYPTO_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_record_set_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 285 of file gnunet-did.c.

286{
287 struct Event *event;
288
289 if (egoname == NULL)
290 {
291 printf ("Remove requires an ego option\n");
293 ret = 1;
294 return;
295 }
296 else
297 {
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:266
static const struct GNUNET_CONFIGURATION_Handle * my_cfg
Definition: gnunet-did.c:119
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()

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 368 of file gnunet-did.c.

369{
370 if (ego == NULL)
371 {
372 // If Ego was not found. Create new one first
373 printf ("Ego was not found. Creating new one.\n");
375 egoname,
376 NULL,
379 egoname);
380 }
381 else
382 {
383 char *did_tmp = DID_identity_to_did (ego);
384 void *cls_tmp = GNUNET_malloc (strlen (did_tmp) + 1);
385 struct GNUNET_TIME_Relative expire_relative;
386
387 if (expire == NULL)
388 {
392 &expire_relative));
393 }
395 &
396 expire_relative))
397 {
398 printf ("Failed to read given expiration time\n");
400 ret = 1;
401 GNUNET_free (cls_tmp);
402 return;
403 }
404
405 strcpy (cls_tmp, did_tmp);
406 // TODO: Add DID_document argument
407 if (GNUNET_OK != DID_create (ego,
408 NULL,
409 &expire_relative,
412 cls_tmp))
413 {
414 printf ("An error occurred while creating the DID.\n");
415 ret = 1;
417 GNUNET_free (cls_tmp);
418 return;
419 }
420 GNUNET_free (cls_tmp);
421 }
422}
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:226
#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:321
static void create_did_ego_create_cb(void *cls, const struct GNUNET_CRYPTO_PrivateKey *pk, enum GNUNET_ErrorCode ec)
Create a DID(-Document) - Called after a new Identity has been created.
Definition: gnunet-did.c:344
struct GNUNET_IDENTITY_Operation * GNUNET_IDENTITY_create(struct GNUNET_IDENTITY_Handle *id, const char *name, const struct GNUNET_CRYPTO_PrivateKey *privkey, enum GNUNET_CRYPTO_KeyType ktype, GNUNET_IDENTITY_CreateContinuation cont, void *cont_cls)
Create a new ego with the given name.
Definition: identity_api.c:561
@ GNUNET_PUBLIC_KEY_TYPE_EDDSA
EDDSA identity.
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
#define GNUNET_malloc(size)
Wrapper around malloc.
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:259
Time for relative time used by GNUnet, in microseconds.

References cleanup(), create_did_cb(), create_did_ego_create_cb(), DID_create(), DID_DOCUMENT_DEFAULT_EXPIRATION_TIME, DID_identity_to_did(), egoname, expire, GNUNET_assert, GNUNET_free, GNUNET_IDENTITY_create(), GNUNET_malloc, GNUNET_OK, GNUNET_PUBLIC_KEY_TYPE_EDDSA, GNUNET_SCHEDULER_add_now(), GNUNET_STRINGS_fancy_time_to_relative(), identity_handle, namestore_handle, and ret.

Referenced by create_did(), and create_did_ego_create_cb().

Here is the call graph for this function:
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 321 of file gnunet-did.c.

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

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_CRYPTO_PrivateKey pk,
enum GNUNET_ErrorCode  ec 
)
static

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

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

347{
348 if (GNUNET_EC_NONE != ec)
349 {
350 printf ("%s\n", GNUNET_ErrorCode_get_hint (ec));
352 ret = 1;
353 return;
354 }
355
357 egoname,
359 NULL);
360}
static void create_did_ego_lockup_cb(void *cls, struct GNUNET_IDENTITY_Ego *ego)
Create a DID(-Document).
Definition: gnunet-did.c:368

References cleanup(), create_did_ego_lockup_cb(), egoname, GNUNET_EC_NONE, GNUNET_ErrorCode_get_hint(), 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()

static void create_did ( )
static

Create a DID(-Document).

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

431{
432 // Ego name to be set
433 if (egoname == NULL)
434 {
435 printf ("Set the Ego argument to create a new DID(-Document)\n");
437 ret = 1;
438 return;
439 }
440
442 egoname,
444 NULL);
445}

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 Document.

Callback function after ego lockup

Parameters
cls
ego

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

456{
457 // create_did_store (didd, ego);
458}

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 467 of file gnunet-did.c.

468{
470 egoname,
472 NULL);
473}
static void replace_did_document_ego_lookup_cb(void *cls, struct GNUNET_IDENTITY_Ego *ego)
Replace a DID Document.
Definition: gnunet-did.c:455

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 Document.

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

482{
483 if ((didd != NULL) && (expire != NULL))
484 {
486 }
487 else
488 {
489 printf (
490 "Set the DID Document and expiration time argument to replace the DID Document\n");
492 ret = 1;
493 return;
494 }
495}
static void replace_did_document_remove_cb(void *cls)
Replace a DID Document.
Definition: gnunet-did.c:467
static void remove_did_document(remove_did_document_callback cont, void *cls)
Remove a DID Document.
Definition: gnunet-did.c:285

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 499 of file gnunet-did.c.

500{
501 // TODO: Check that only one argument is set
502
503 if (1 == replace)
504 {
506 }
507 else if (1 == get)
508 {
509 resolve_did ();
510 }
511 else if (1 == remove_did)
512 {
513 remove_did_document (NULL, NULL);
514 }
515 else if (1 == create)
516 {
517 create_did ();
518 }
519 else
520 {
521 // No Argument found
523 return;
524 }
525}
static int replace
Replace DID Document Flag.
Definition: gnunet-did.c:53
static int remove_did
Remove DID Document Flag.
Definition: gnunet-did.c:58
static int get
Get DID Documement for DID Flag.
Definition: gnunet-did.c:63
static int create
Create DID Document Flag.
Definition: gnunet-did.c:68
static void resolve_did()
Resolve a DID given by the user.
Definition: gnunet-did.c:179
static void replace_did_document()
Replace a DID Document.
Definition: gnunet-did.c:481
static void create_did()
Create a DID(-Document).
Definition: gnunet-did.c:430

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 529 of file gnunet-did.c.

531{
532 char *did_str;
533
534 if (ego == NULL)
535 {
536 if (1 == ego_exists)
537 {
539 return;
540 }
542 return;
543 }
544
545 if (1 == show_all)
546 {
547 did_str = DID_identity_to_did (ego);
548 printf ("%s:\n\t%s\n", name, did_str);
549 GNUNET_free (did_str);
550 return;
551 }
552 if (1 == show)
553 {
554 if (0 == strncmp (name, egoname, strlen (egoname)))
555 {
556 did_str = DID_identity_to_did (ego);
557 printf ("%s:\n\t%s\n", name, did_str);
558 GNUNET_free (did_str);
559 return;
560 }
561 }
562}
static int show_all
Show DID for Ego Flag.
Definition: gnunet-did.c:78
static int ego_exists
Give ego exists.
Definition: gnunet-did.c:124
static void post_ego_iteration(void *cls)
Definition: gnunet-did.c:499
static int show
Show DID for Ego Flag.
Definition: gnunet-did.c:73
static char * name
Name (label) of the records to list.

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 566 of file gnunet-did.c.

570{
573 my_cfg = c;
574
575 // check if GNS_handle could connect
576 if (gns_handle == NULL)
577 {
578 ret = 1;
579 return;
580 }
581
582 // check if NAMESTORE_handle could connect
583 if (namestore_handle == NULL)
584 {
586 ret = 1;
587 return;
588 }
589
591 if (identity_handle == NULL)
592 {
594 ret = 1;
595 return;
596 }
597}
static void process_dids(void *cls, struct GNUNET_IDENTITY_Ego *ego, void **ctx, const char *name)
Definition: gnunet-did.c:529
struct GNUNET_GNS_Handle * GNUNET_GNS_connect(const struct GNUNET_CONFIGURATION_Handle *cfg)
Initialize the connection with the GNS service.
Definition: gns_api.c:267
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:487
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 601 of file gnunet-did.c.

602{
605 "create",
607 "Create a DID Document and display its DID"),
608 &create),
610 "get",
612 "Get the DID Document associated with the given DID"),
613 &get),
615 "remove",
617 "Remove the DID"),
618 &remove_did),
620 "replace",
621 gettext_noop ("Replace the DID Document."),
622 &replace),
624 "show",
625 gettext_noop ("Show the DID for a given ego"),
626 &show),
628 "show-all",
629 gettext_noop ("Show egos with DIDs"),
630 &show_all),
632 "did",
633 "DID",
635 "The Decentralized Identity (DID)"),
636 &did),
638 "did-document",
639 "JSON",
641 "The DID Document to store in GNUNET"),
642 &didd),
644 "ego",
645 "EGO",
646 gettext_noop ("The name of the EGO"),
647 &egoname),
649 "expiration-time",
650 "TIME",
652 "The time until the DID Document is going to expire (e.g. 5d)"),
653 &expire),
655 };
656
657 if (GNUNET_OK !=
660 argc,
661 argv,
662 "gnunet-did",
663 "Manage Decentralized Identities (DIDs)",
664 options,
665 &run,
666 NULL))
667 return 1;
668 else
669 return ret;
670}
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:74
static void run(void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *c)
Definition: gnunet-did.c:566
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.
const struct GNUNET_OS_ProjectData * GNUNET_OS_project_data_gnunet(void)
Return default project data used by 'libgnunetutil' for GNUnet.
enum GNUNET_GenericReturnValue GNUNET_PROGRAM_run(const struct GNUNET_OS_ProjectData *pd, 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:407
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_OS_project_data_gnunet(), GNUNET_PROGRAM_run(), options, remove_did, replace, ret, run(), show, and show_all.

Here is the call graph for this function:

Variable Documentation

◆ ret

◆ replace

int replace
static

Replace DID Document Flag.

Definition at line 53 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 58 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 63 of file gnunet-did.c.

Referenced by check_dht_local_get(), check_dht_p2p_get(), check_get(), handle_dht_local_get(), handle_dht_p2p_get(), main(), and post_ego_iteration().

◆ create

int create
static

Create DID Document Flag.

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

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

◆ show

int show
static

Show DID for Ego Flag.

Definition at line 73 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 78 of file gnunet-did.c.

Referenced by main(), and process_dids().

◆ did

char* did
static

DID Attribute String.

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

Referenced by cleanup(), DID_did_to_pkey(), DID_public_key_from_did(), DID_resolve(), main(), and resolve_did().

◆ didd

char* didd
static

DID Document Attribute String.

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

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

◆ egoname

◆ expire

◆ gns_handle

struct GNUNET_GNS_Handle* gns_handle
static

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

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

◆ namestore_handle

◆ identity_handle

struct GNUNET_IDENTITY_Handle* identity_handle
static

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

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

◆ my_cfg

◆ ego_exists

int ego_exists = 0
static

Give ego exists.

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

Referenced by process_dids().