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

IDENTITY management command line tool. More...

#include "platform.h"
#include "gnunet_util_lib.h"
#include "gnunet_identity_service.h"
Include dependency graph for gnunet-identity.c:

Go to the source code of this file.

Macros

#define TIMEOUT_STATUS_CODE   40
 Return value from main on timeout. More...
 

Functions

static void shutdown_task (void *cls)
 Task run on shutdown. More...
 
static void test_finished ()
 Test if we are finished yet. More...
 
static void delete_finished (void *cls, const char *emsg)
 Deletion operation finished. More...
 
static void create_finished (void *cls, const struct GNUNET_CRYPTO_EcdsaPrivateKey *pk, const char *emsg)
 Creation operation finished. More...
 
static void set_done (void *cls, const char *emsg)
 Function called by GNUNET_IDENTITY_set up on completion. More...
 
static void print_ego (void *cls, struct GNUNET_IDENTITY_Ego *ego, void **ctx, const char *identifier)
 If listing is enabled, prints information about the egos. More...
 
static void run (void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg)
 Main function that will be run by the scheduler. More...
 
int main (int argc, char *const *argv)
 The main function. More...
 

Variables

static struct GNUNET_IDENTITY_Handlesh
 Handle to IDENTITY service. More...
 
static int list
 Was "list" specified? More...
 
static int monitor
 Was "monitor" specified? More...
 
static int private_keys
 Was "private" specified? More...
 
static unsigned int verbose
 Was "verbose" specified? More...
 
static int quiet
 Was "quiet" specified? More...
 
static char * create_ego
 -C option More...
 
static char * delete_ego
 -D option More...
 
static char * set_ego
 -s option. More...
 
static char * set_subsystem
 -S option. More...
 
static struct GNUNET_IDENTITY_Operationset_op
 Operation handle for set operation. More...
 
static struct GNUNET_IDENTITY_Operationcreate_op
 Handle for create operation. More...
 
static struct GNUNET_IDENTITY_Operationdelete_op
 Handle for delete operation. More...
 
static int global_ret
 Value to return from main(). More...
 

Detailed Description

IDENTITY management command line tool.

Author
Christian Grothoff

Todo:

Definition in file gnunet-identity.c.

Macro Definition Documentation

◆ TIMEOUT_STATUS_CODE

#define TIMEOUT_STATUS_CODE   40

Return value from main on timeout.

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

Referenced by main(), and test_finished().

Function Documentation

◆ shutdown_task()

static void shutdown_task ( void *  cls)
static

Task run on shutdown.

Parameters
clsNULL

Definition at line 115 of file gnunet-identity.c.

References GNUNET_free, GNUNET_IDENTITY_cancel(), GNUNET_IDENTITY_disconnect(), and set_ego.

Referenced by run().

116 {
117  if (NULL != set_op)
118  {
120  set_op = NULL;
121  }
122  if (NULL != create_op)
123  {
125  create_op = NULL;
126  }
127  if (NULL != delete_op)
128  {
130  delete_op = NULL;
131  }
132  if (NULL != set_ego)
133  {
135  set_ego = NULL;
136  }
138  sh = NULL;
139 }
void GNUNET_IDENTITY_cancel(struct GNUNET_IDENTITY_Operation *op)
Cancel an identity operation.
Definition: identity_api.c:818
static char * set_ego
-s option.
static struct GNUNET_IDENTITY_Operation * set_op
Operation handle for set operation.
void GNUNET_IDENTITY_disconnect(struct GNUNET_IDENTITY_Handle *h)
Disconnect from identity service.
Definition: identity_api.c:837
static struct GNUNET_IDENTITY_Handle * sh
Handle to IDENTITY service.
static struct GNUNET_IDENTITY_Operation * create_op
Handle for create operation.
static struct GNUNET_IDENTITY_Operation * delete_op
Handle for delete operation.
#define GNUNET_free(ptr)
Wrapper around free.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ test_finished()

static void test_finished ( )
static

Test if we are finished yet.

Definition at line 146 of file gnunet-identity.c.

References global_ret, GNUNET_SCHEDULER_shutdown(), list, monitor, set_subsystem, and TIMEOUT_STATUS_CODE.

Referenced by create_finished(), delete_finished(), print_ego(), run(), and set_done().

147 {
148  if ((NULL == create_op) && (NULL == delete_op) && (NULL == set_op) &&
149  (NULL == set_subsystem) && (! list) && (! monitor))
150  {
152  global_ret = 0;
154  }
155 }
static int global_ret
Value to return from main().
static int monitor
Was "monitor" specified?
static struct GNUNET_IDENTITY_Operation * set_op
Operation handle for set operation.
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
Definition: scheduler.c:526
#define TIMEOUT_STATUS_CODE
Return value from main on timeout.
static char * set_subsystem
-S option.
static struct GNUNET_IDENTITY_Operation * create_op
Handle for create operation.
static struct GNUNET_IDENTITY_Operation * delete_op
Handle for delete operation.
static int list
Was "list" specified?
Here is the call graph for this function:
Here is the caller graph for this function:

◆ delete_finished()

static void delete_finished ( void *  cls,
const char *  emsg 
)
static

Deletion operation finished.

Parameters
clspointer to operation handle
emsgNULL on success, otherwise an error message

Definition at line 165 of file gnunet-identity.c.

References GNUNET_IDENTITY_Operation::cls, gettext, op, and test_finished().

Referenced by run().

166 {
167  struct GNUNET_IDENTITY_Operation **op = cls;
168 
169  *op = NULL;
170  if (NULL != emsg)
171  fprintf (stderr, "%s\n", gettext (emsg));
172  test_finished ();
173 }
#define gettext(Msgid)
Definition: gettext.h:45
Handle for an operation with the identity service.
Definition: identity_api.c:39
static void test_finished()
Test if we are finished yet.
void * cls
Closure for cont or cb.
Definition: identity_api.c:88
static struct GNUNET_ARM_Operation * op
Current operation.
Definition: gnunet-arm.c:144
Here is the call graph for this function:
Here is the caller graph for this function:

◆ create_finished()

static void create_finished ( void *  cls,
const struct GNUNET_CRYPTO_EcdsaPrivateKey pk,
const char *  emsg 
)
static

Creation operation finished.

Parameters
clspointer to operation handle
pkprivate key of the ego, or NULL on error
emsgerror message, NULL on success

Definition at line 184 of file gnunet-identity.c.

References _, GNUNET_IDENTITY_Operation::cls, global_ret, GNUNET_CRYPTO_ecdsa_key_get_public(), GNUNET_CRYPTO_ecdsa_private_key_to_string(), GNUNET_CRYPTO_ecdsa_public_key_to_string(), GNUNET_free, op, private_keys, test_finished(), and verbose.

Referenced by run().

187 {
188  struct GNUNET_IDENTITY_Operation **op = cls;
189 
190  *op = NULL;
191  if (NULL == pk)
192  {
193  fprintf (stderr, _ ("Failed to create ego: %s\n"), emsg);
194  global_ret = 1;
195  }
196  else if (verbose)
197  {
199  char *pubs;
200 
203  if (private_keys)
204  {
205  char *privs;
206 
208  fprintf (stdout, "%s - %s\n", pubs, privs);
209  GNUNET_free (privs);
210  }
211  else
212  {
213  fprintf (stdout, "%s\n", pubs);
214  }
215  GNUNET_free (pubs);
216  }
217  test_finished ();
218 }
static int global_ret
Value to return from main().
static int private_keys
Was "private" specified?
Handle for an operation with the identity service.
Definition: identity_api.c:39
#define _(String)
GNU gettext support macro.
Definition: platform.h:181
char * GNUNET_CRYPTO_ecdsa_private_key_to_string(const struct GNUNET_CRYPTO_EcdsaPrivateKey *priv)
Convert a private key to a string.
Definition: crypto_ecc.c:431
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:332
void GNUNET_CRYPTO_ecdsa_key_get_public(const struct GNUNET_CRYPTO_EcdsaPrivateKey *priv, struct GNUNET_CRYPTO_EcdsaPublicKey *pub)
Extract the public key for the given private key.
Definition: crypto_ecc.c:239
static void test_finished()
Test if we are finished yet.
static unsigned int verbose
Was "verbose" specified?
static struct GNUNET_CRYPTO_EddsaPublicKey pub
Definition: gnunet-scrypt.c:39
Public ECC key (always for Curve25519) encoded in a format suitable for network transmission and ECDS...
void * cls
Closure for cont or cb.
Definition: identity_api.c:88
static struct GNUNET_ARM_Operation * op
Current operation.
Definition: gnunet-arm.c:144
#define GNUNET_free(ptr)
Wrapper around free.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_done()

static void set_done ( void *  cls,
const char *  emsg 
)
static

Function called by GNUNET_IDENTITY_set up on completion.

Parameters
clsNULL
emsgerror message (NULL on success)

Definition at line 228 of file gnunet-identity.c.

References _, global_ret, and test_finished().

Referenced by print_ego().

229 {
230  set_op = NULL;
231  if (NULL != emsg)
232  {
233  fprintf (stderr, _ ("Failed to set default ego: %s\n"), emsg);
234  global_ret = 1;
235  }
236  test_finished ();
237 }
static int global_ret
Value to return from main().
static struct GNUNET_IDENTITY_Operation * set_op
Operation handle for set operation.
#define _(String)
GNU gettext support macro.
Definition: platform.h:181
static void test_finished()
Test if we are finished yet.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ print_ego()

static void print_ego ( void *  cls,
struct GNUNET_IDENTITY_Ego ego,
void **  ctx,
const char *  identifier 
)
static

If listing is enabled, prints information about the egos.

This function is initially called for all egos and then again whenever a ego's identifier changes or if it is deleted. At the end of the initial pass over all egos, the function is once called with 'NULL' for 'ego'. That does NOT mean that the callback won't be invoked in the future or that there was an error.

When used with 'GNUNET_IDENTITY_create' or 'GNUNET_IDENTITY_get', this function is only called ONCE, and 'NULL' being passed in 'ego' does indicate an error (i.e. name is taken or no default value is known). If 'ego' is non-NULL and if '*ctx' is set in those callbacks, the value WILL be passed to a subsequent call to the identity callback of 'GNUNET_IDENTITY_connect' (if that one was not NULL).

When an identity is renamed, this function is called with the (known) ego but the NEW identifier.

When an identity is deleted, this function is called with the (known) ego and "NULL" for the 'identifier'. In this case, the 'ego' is henceforth invalid (and the 'ctx' should also be cleaned up).

Parameters
clsclosure
egoego handle
ctxcontext for application to store data for this ego (during the lifetime of this process, initially NULL)
identifieridentifier assigned by the user for this ego, NULL if the user just deleted the ego and it must thus no longer be used

Definition at line 274 of file gnunet-identity.c.

References GNUNET_CRYPTO_ecdsa_private_key_to_string(), GNUNET_CRYPTO_ecdsa_public_key_to_string(), GNUNET_free, GNUNET_IDENTITY_ego_get_private_key(), GNUNET_IDENTITY_ego_get_public_key(), GNUNET_IDENTITY_set(), list, monitor, private_keys, quiet, set_done(), set_ego, set_subsystem, and test_finished().

Referenced by run().

278 {
280  char *s;
281  char *privs;
282 
283  if ((NULL != set_ego) && (NULL != set_subsystem) && (NULL != ego) &&
284  (NULL != identifier) && (0 == strcmp (identifier, set_ego)))
285  {
288  set_subsystem = NULL;
290  set_ego = NULL;
291  }
292  if ((NULL == ego) && (NULL != set_ego) && (NULL != set_subsystem))
293  {
294  fprintf (stderr,
295  "Could not set ego to `%s' for subsystem `%s', ego not known\n",
296  set_ego,
297  set_subsystem);
299  set_subsystem = NULL;
301  set_ego = NULL;
302  }
303  if ((NULL == ego) && (! monitor))
304  {
305  list = 0;
306  test_finished ();
307  return;
308  }
309  if (! (list | monitor))
310  return;
311  if ((NULL == ego) || (NULL == identifier))
312  return;
313  if ((NULL != set_ego) && (0 != strcmp (identifier, set_ego)))
314  return;
319  if ((monitor) || (NULL != identifier))
320  {
321  if (quiet)
322  {
323  if (private_keys)
324  fprintf (stdout, "%s - %s\n", s, privs);
325  else
326  fprintf (stdout, "%s\n", s);
327  }
328  else
329  {
330  if (private_keys)
331  fprintf (stdout, "%s - %s - %s\n", identifier, s, privs);
332  else
333  fprintf (stdout, "%s - %s\n", identifier, s);
334  }
335  }
336  GNUNET_free (privs);
337  GNUNET_free (s);
338 }
static char * set_ego
-s option.
static struct GNUNET_CRYPTO_EddsaPrivateKey * pk
Private key of this peer.
static int private_keys
Was "private" specified?
struct GNUNET_IDENTITY_Operation * GNUNET_IDENTITY_set(struct GNUNET_IDENTITY_Handle *h, const char *service_name, struct GNUNET_IDENTITY_Ego *ego, GNUNET_IDENTITY_Continuation cont, void *cont_cls)
Set the preferred/default identity for a service.
Definition: identity_api.c:631
const struct GNUNET_CRYPTO_EcdsaPrivateKey * GNUNET_IDENTITY_ego_get_private_key(const struct GNUNET_IDENTITY_Ego *ego)
Obtain the ECC key associated with a ego.
Definition: identity_api.c:555
static int monitor
Was "monitor" specified?
static struct GNUNET_IDENTITY_Operation * set_op
Operation handle for set operation.
static struct GNUNET_IDENTITY_Handle * sh
Handle to IDENTITY service.
static void set_done(void *cls, const char *emsg)
Function called by GNUNET_IDENTITY_set up on completion.
char * GNUNET_CRYPTO_ecdsa_private_key_to_string(const struct GNUNET_CRYPTO_EcdsaPrivateKey *priv)
Convert a private key to a string.
Definition: crypto_ecc.c:431
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:332
static char * set_subsystem
-S option.
static void test_finished()
Test if we are finished yet.
void GNUNET_IDENTITY_ego_get_public_key(const struct GNUNET_IDENTITY_Ego *ego, struct GNUNET_CRYPTO_EcdsaPublicKey *pk)
Get the identifier (public key) of an ego.
Definition: identity_api.c:568
static int quiet
Was "quiet" specified?
Public ECC key (always for Curve25519) encoded in a format suitable for network transmission and ECDS...
static int list
Was "list" specified?
#define GNUNET_free(ptr)
Wrapper around free.
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 cfg 
)
static

Main function that will be run by the scheduler.

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

Definition at line 350 of file gnunet-identity.c.

References create_ego, create_finished(), delete_ego, delete_finished(), GNUNET_IDENTITY_connect(), GNUNET_IDENTITY_create(), GNUNET_IDENTITY_delete(), GNUNET_SCHEDULER_add_shutdown(), list, monitor, print_ego(), set_ego, set_subsystem, shutdown_task(), and test_finished().

Referenced by main().

354 {
355  if ((NULL != set_subsystem) && (NULL == set_ego))
356  {
357  fprintf (stderr, "Option -s requires option -e to be specified as well.\n");
358  return;
359  }
361  (monitor | list) || (NULL != set_ego) ||
362  (NULL != set_subsystem)
363  ? &print_ego
364  : NULL,
365  NULL);
366  if (NULL != delete_ego)
367  delete_op =
369  if (NULL != create_ego)
370  create_op =
373  test_finished ();
374 }
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:527
static char * set_ego
-s option.
static void shutdown_task(void *cls)
Task run on shutdown.
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, or when GNUNET_SCHEDULER_shutdown() is being invoked.
Definition: scheduler.c:1300
struct GNUNET_IDENTITY_Operation * GNUNET_IDENTITY_delete(struct GNUNET_IDENTITY_Handle *h, const char *name, GNUNET_IDENTITY_Continuation cb, void *cb_cls)
Delete an existing identity.
Definition: identity_api.c:777
struct GNUNET_IDENTITY_Operation * GNUNET_IDENTITY_create(struct GNUNET_IDENTITY_Handle *h, const char *name, GNUNET_IDENTITY_CreateContinuation cont, void *cont_cls)
Create a new identity with the given name.
Definition: identity_api.c:677
static void delete_finished(void *cls, const char *emsg)
Deletion operation finished.
static int monitor
Was "monitor" specified?
static struct GNUNET_IDENTITY_Handle * sh
Handle to IDENTITY service.
static char * set_subsystem
-S option.
static void test_finished()
Test if we are finished yet.
static struct GNUNET_IDENTITY_Operation * create_op
Handle for create operation.
static char * create_ego
-C option
static void create_finished(void *cls, const struct GNUNET_CRYPTO_EcdsaPrivateKey *pk, const char *emsg)
Creation operation finished.
static struct GNUNET_IDENTITY_Operation * delete_op
Handle for delete operation.
static char * delete_ego
-D option
static int list
Was "list" specified?
static void print_ego(void *cls, struct GNUNET_IDENTITY_Ego *ego, void **ctx, const char *identifier)
If listing is enabled, prints information about the egos.
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.

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

Definition at line 385 of file gnunet-identity.c.

References create_ego, delete_ego, gettext_noop, global_ret, GNUNET_free, GNUNET_GETOPT_OPTION_END, GNUNET_GETOPT_option_flag(), GNUNET_GETOPT_option_string(), GNUNET_GETOPT_option_verbose(), GNUNET_OK, GNUNET_PROGRAM_run(), GNUNET_STRINGS_get_utf8_args(), list, monitor, private_keys, quiet, res, run(), set_ego, set_subsystem, TIMEOUT_STATUS_CODE, and verbose.

386 {
389  "create",
390  "NAME",
391  gettext_noop ("create ego NAME"),
392  &create_ego),
394  "delete",
395  "NAME",
396  gettext_noop ("delete ego NAME "),
397  &delete_ego),
399  "display",
400  gettext_noop ("display all egos"),
401  &list),
403  "quiet",
404  gettext_noop ("reduce output"),
405  &quiet),
407  'e',
408  "ego",
409  "NAME",
410  gettext_noop (
411  "set default identity to NAME for a subsystem SUBSYSTEM (use together with -s) or restrict results to NAME (use together with -d)"),
412  &set_ego),
414  "monitor",
415  gettext_noop ("run in monitor mode egos"),
416  &monitor),
418  "private-keys",
419  gettext_noop ("display private keys as well"),
420  &private_keys),
422  's',
423  "set",
424  "SUBSYSTEM",
425  gettext_noop (
426  "set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"),
427  &set_subsystem),
430  int res;
431 
432  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
433  return 4;
434  global_ret = TIMEOUT_STATUS_CODE; /* timeout */
435  res = GNUNET_PROGRAM_run (argc,
436  argv,
437  "gnunet-identity",
438  gettext_noop ("Maintain egos"),
439  options,
440  &run,
441  NULL);
442  GNUNET_free ((void *) argv);
443 
444  if (GNUNET_OK != res)
445  return 3;
446  return global_ret;
447 }
static int global_ret
Value to return from main().
static char * set_ego
-s option.
struct GNUNET_GETOPT_CommandLineOption options[]
Definition: 002.c:5
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_option_verbose(unsigned int *level)
Define the '-V' verbosity option.
int GNUNET_STRINGS_get_utf8_args(int argc, char *const *argv, int *u8argc, char *const **u8argv)
Returns utf-8 encoded arguments.
Definition: strings.c:1438
static int private_keys
Was "private" specified?
static int monitor
Was "monitor" specified?
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
Definition of a command line option.
static void run(void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg)
Main function that will be run by the scheduler.
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_OPTION_END
Definition: 002.c:13
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.
#define TIMEOUT_STATUS_CODE
Return value from main on timeout.
static int res
static char * set_subsystem
-S option.
static int quiet
Was "quiet" specified?
static unsigned int verbose
Was "verbose" specified?
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.
int 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, parse options).
Definition: program.c:367
static char * create_ego
-C option
static char * delete_ego
-D option
static int list
Was "list" specified?
#define GNUNET_free(ptr)
Wrapper around free.
#define gettext_noop(String)
Definition: gettext.h:69
Here is the call graph for this function:

Variable Documentation

◆ sh

struct GNUNET_IDENTITY_Handle* sh
static

Handle to IDENTITY service.

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

◆ list

int list
static

Was "list" specified?

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

Referenced by main(), print_ego(), run(), and test_finished().

◆ monitor

int monitor
static

Was "monitor" specified?

Definition at line 51 of file gnunet-identity.c.

Referenced by main(), print_ego(), run(), and test_finished().

◆ private_keys

int private_keys
static

Was "private" specified?

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

Referenced by create_finished(), main(), and print_ego().

◆ verbose

unsigned int verbose
static

Was "verbose" specified?

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

Referenced by create_finished(), and main().

◆ quiet

int quiet
static

Was "quiet" specified?

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

Referenced by main(), and print_ego().

◆ create_ego

char* create_ego
static

-C option

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

Referenced by main(), and run().

◆ delete_ego

char* delete_ego
static

-D option

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

Referenced by main(), and run().

◆ set_ego

char* set_ego
static

-s option.

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

Referenced by main(), print_ego(), run(), and shutdown_task().

◆ set_subsystem

char* set_subsystem
static

-S option.

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

Referenced by main(), print_ego(), run(), and test_finished().

◆ set_op

struct GNUNET_IDENTITY_Operation* set_op
static

Operation handle for set operation.

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

◆ create_op

struct GNUNET_IDENTITY_Operation* create_op
static

Handle for create operation.

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

◆ delete_op

struct GNUNET_IDENTITY_Operation* delete_op
static

Handle for delete operation.

Definition at line 101 of file gnunet-identity.c.

◆ global_ret

int global_ret
static

Value to return from main().

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

Referenced by create_finished(), main(), set_done(), and test_finished().