GNUnet 0.25.2-10-g5b94a194f
 
Loading...
Searching...
No Matches
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.
 

Functions

static void shutdown_task (void *cls)
 Task run on shutdown.
 
static void test_finished (void)
 Test if we are finished yet.
 
static void delete_finished (void *cls, enum GNUNET_ErrorCode ec)
 Deletion operation finished.
 
static void create_finished (void *cls, const struct GNUNET_CRYPTO_BlindablePrivateKey *pk_created, enum GNUNET_ErrorCode ec)
 Creation operation finished.
 
static void write_encrypted_message (void)
 Encrypt a message given with -W, encrypted using public key of an identity given with -k.
 
static void read_encrypted_message (struct GNUNET_IDENTITY_Ego *ego)
 Decrypt a message given with -R, encrypted using public key of ego and ephemeral key given with -k.
 
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.
 
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.
 
int main (int argc, char *const *argv)
 The main function.
 

Variables

static struct GNUNET_IDENTITY_Handlesh
 Handle to IDENTITY service.
 
static int list
 Was "list" specified?
 
static int monitor
 Was "monitor" specified?
 
static int private_keys
 Was "private" specified?
 
static unsigned int verbose
 Was "verbose" specified?
 
static int quiet
 Was "quiet" specified?
 
static int type_eddsa
 Was "eddsa" specified?
 
static char * write_msg
 -W option
 
static char * read_msg
 -R option
 
static char * create_ego
 -C option
 
static char * delete_ego
 -D option
 
static char * privkey_ego
 -P option
 
static char * pubkey_msg
 -k option
 
static char * set_ego
 -s option.
 
static struct GNUNET_IDENTITY_Operationset_op
 Operation handle for set operation.
 
static struct GNUNET_IDENTITY_Operationcreate_op
 Handle for create operation.
 
static struct GNUNET_IDENTITY_Operationdelete_op
 Handle for delete operation.
 
struct GNUNET_CRYPTO_BlindablePrivateKey pk
 Private key from command line option, or NULL.
 
static int global_ret
 Value to return from main().
 

Detailed Description

IDENTITY management command line tool.

Author
Christian Grothoff

Todo:

  • add options to get default egos

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.

Function Documentation

◆ shutdown_task()

static void shutdown_task ( void *  cls)
static

Task run on shutdown.

Parameters
clsNULL

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

141{
142 if (NULL != set_op)
143 {
145 set_op = NULL;
146 }
147 if (NULL != create_op)
148 {
150 create_op = NULL;
151 }
152 if (NULL != delete_op)
153 {
155 delete_op = NULL;
156 }
157 if (NULL != set_ego)
158 {
160 set_ego = NULL;
161 }
163 sh = NULL;
164}
static struct GNUNET_IDENTITY_Operation * set_op
Operation handle for set operation.
static struct GNUNET_IDENTITY_Operation * create_op
Handle for create operation.
static struct GNUNET_IDENTITY_Handle * sh
Handle to IDENTITY service.
static struct GNUNET_IDENTITY_Operation * delete_op
Handle for delete operation.
static char * set_ego
-s option.
void GNUNET_IDENTITY_cancel(struct GNUNET_IDENTITY_Operation *op)
Cancel an identity operation.
void GNUNET_IDENTITY_disconnect(struct GNUNET_IDENTITY_Handle *h)
Disconnect from identity service.
#define GNUNET_free(ptr)
Wrapper around free.

References create_op, delete_op, GNUNET_free, GNUNET_IDENTITY_cancel(), GNUNET_IDENTITY_disconnect(), set_ego, set_op, and sh.

Here is the call graph for this function:

◆ test_finished()

static void test_finished ( void  )
static

Test if we are finished yet.

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

172{
173 if ( (NULL == create_op) &&
174 (NULL == delete_op) &&
175 (NULL == set_op) &&
176 (NULL == write_msg) &&
177 (NULL == read_msg) &&
178 (! list) &&
179 (! monitor))
180 {
182 global_ret = 0;
184 }
185}
#define TIMEOUT_STATUS_CODE
Return value from main on timeout.
static int global_ret
Value to return from main().
static int monitor
Was "monitor" specified?
static int list
Was "list" specified?
static char * read_msg
-R option
static char * write_msg
-W option
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
Definition scheduler.c:567

References create_op, delete_op, global_ret, GNUNET_SCHEDULER_shutdown(), list, monitor, read_msg, set_op, TIMEOUT_STATUS_CODE, and write_msg.

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

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

◆ delete_finished()

static void delete_finished ( void *  cls,
enum GNUNET_ErrorCode  ec 
)
static

Deletion operation finished.

Parameters
clspointer to operation handle
ecthe error code

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

197{
199
200 *op = NULL;
201 if (GNUNET_EC_NONE != ec)
202 fprintf (stderr, "%s\n", GNUNET_ErrorCode_get_hint (ec));
203 test_finished ();
204}
static struct GNUNET_ARM_Operation * op
Current operation.
Definition gnunet-arm.c:143
static void test_finished(void)
Test if we are finished yet.
const char * GNUNET_ErrorCode_get_hint(enum GNUNET_ErrorCode ec)
Returns a hint for a given error code.
@ GNUNET_EC_NONE
No error (success).
Handle for an operation with the identity service.
void * cls
Closure for cont or cb.

References GNUNET_IDENTITY_Operation::cls, GNUNET_EC_NONE, GNUNET_ErrorCode_get_hint(), op, and test_finished().

Referenced by run().

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_BlindablePrivateKey pk_created,
enum GNUNET_ErrorCode  ec 
)
static

Creation operation finished.

Parameters
clspointer to operation handle
pkprivate key of the ego, or NULL on error
ecthe error code

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

218{
220
221 *op = NULL;
222 if (NULL == pk_created)
223 {
224 fprintf (stderr,
225 _ ("Failed to create ego: %s\n"),
227 global_ret = ec;
228 }
229 else if (verbose)
230 {
232 char *pubs;
233
236 if (private_keys)
237 {
238 char *privs;
239
241 fprintf (stdout, "%s - %s\n", pubs, privs);
242 GNUNET_free (privs);
243 }
244 else
245 {
246 fprintf (stdout, "%s\n", pubs);
247 }
248 GNUNET_free (pubs);
249 }
250 test_finished ();
251}
static unsigned int verbose
Was "verbose" specified?
static int private_keys
Was "private" specified?
static struct GNUNET_CRYPTO_EddsaPublicKey pub
enum GNUNET_GenericReturnValue GNUNET_CRYPTO_blindable_key_get_public(const struct GNUNET_CRYPTO_BlindablePrivateKey *privkey, struct GNUNET_CRYPTO_BlindablePublicKey *key)
Retrieves the public key representation of a private key.
char * GNUNET_CRYPTO_blindable_public_key_to_string(const struct GNUNET_CRYPTO_BlindablePublicKey *key)
Creates a (Base32) string representation of the public key.
char * GNUNET_CRYPTO_blindable_private_key_to_string(const struct GNUNET_CRYPTO_BlindablePrivateKey *key)
Creates a (Base32) string representation of the private key.
#define _(String)
GNU gettext support macro.
Definition platform.h:179
An identity key as per LSD0001.

References _, GNUNET_IDENTITY_Operation::cls, global_ret, GNUNET_CRYPTO_blindable_key_get_public(), GNUNET_CRYPTO_blindable_private_key_to_string(), GNUNET_CRYPTO_blindable_public_key_to_string(), GNUNET_ErrorCode_get_hint(), GNUNET_free, op, private_keys, pub, test_finished(), and verbose.

Referenced by run().

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

◆ write_encrypted_message()

static void write_encrypted_message ( void  )
static

Encrypt a message given with -W, encrypted using public key of an identity given with -k.

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

260{
261 struct GNUNET_CRYPTO_BlindablePublicKey recipient;
262 struct GNUNET_CRYPTO_HpkePublicKey hpke_key = {0};
263 size_t msg_len = strlen (write_msg) + 1;
264 size_t ct_len = strlen (write_msg) + 1
266 unsigned char ct[ct_len];
269 {
272 &hpke_key));
274 NULL, 0, // FIXME provide?
275 NULL, 0,
276 (uint8_t*) write_msg,
277 msg_len,
278 ct, NULL))
279 {
280 char *serialized_msg;
281 serialized_msg = GNUNET_STRINGS_data_to_string_alloc (ct, ct_len);
282 fprintf (stdout,
283 "%s\n",
284 serialized_msg);
285 GNUNET_free (serialized_msg);
286 }
287 else
288 {
289 fprintf (stderr, "Error during encryption.\n");
290 global_ret = 1;
291 }
292 }
293 else
294 {
295 fprintf (stderr, "Invalid recipient public key.\n");
296 global_ret = 1;
297 }
298}
static char * pubkey_msg
-k option
enum GNUNET_GenericReturnValue GNUNET_CRYPTO_blindable_public_key_from_string(const char *str, struct GNUNET_CRYPTO_BlindablePublicKey *key)
Parses a (Base32) string representation of the public key.
enum GNUNET_GenericReturnValue GNUNET_CRYPTO_hpke_seal_oneshot(const struct GNUNET_CRYPTO_HpkePublicKey *pkR, const uint8_t *info, size_t info_len, const uint8_t *aad, size_t aad_len, const uint8_t *pt, size_t pt_len, uint8_t *ct, unsigned long long *ct_len)
RFC9180 HPKE encryption.
enum GNUNET_GenericReturnValue GNUNET_CRYPTO_hpke_pk_to_x25519(const struct GNUNET_CRYPTO_BlindablePublicKey *pk, struct GNUNET_CRYPTO_HpkePublicKey *pk_enc)
Convert a GNUnet identity key to a key sutiable for HPKE (X25519)
#define GNUNET_CRYPTO_HPKE_SEAL_ONESHOT_OVERHEAD_BYTES
@ GNUNET_OK
@ GNUNET_SYSERR
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
char * GNUNET_STRINGS_data_to_string_alloc(const void *buf, size_t size)
Return the base32crockford encoding of the given buffer.
Definition strings.c:807
A public key used for encryption.

References global_ret, GNUNET_assert, GNUNET_CRYPTO_blindable_public_key_from_string(), GNUNET_CRYPTO_hpke_pk_to_x25519(), GNUNET_CRYPTO_hpke_seal_oneshot(), GNUNET_CRYPTO_HPKE_SEAL_ONESHOT_OVERHEAD_BYTES, GNUNET_free, GNUNET_OK, GNUNET_STRINGS_data_to_string_alloc(), GNUNET_SYSERR, pubkey_msg, and write_msg.

Referenced by run().

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

◆ read_encrypted_message()

static void read_encrypted_message ( struct GNUNET_IDENTITY_Ego ego)
static

Decrypt a message given with -R, encrypted using public key of ego and ephemeral key given with -k.

Parameters
egoego whose private key is used for decryption

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

309{
310 struct GNUNET_CRYPTO_HpkePrivateKey hpke_key;
311 char *deserialized_msg;
312 size_t msg_len;
314 strlen (read_msg),
315 (void **) &
316 deserialized_msg,
317 &msg_len))
318 {
322 &hpke_key));
324 NULL, 0,
325 NULL, 0,
326 (uint8_t*)
327 deserialized_msg,
328 msg_len,
329 (uint8_t*)
330 deserialized_msg,
331 NULL))
332 {
333 deserialized_msg[msg_len - 1] = '\0';
334 fprintf (stdout,
335 "%s\n",
336 deserialized_msg);
337 }
338 else
339 {
340 fprintf (stderr, "Failed to decrypt message.\n");
341 global_ret = 1;
342 }
343 GNUNET_free (deserialized_msg);
344 }
345 else
346 {
347 fprintf (stderr, "Invalid message format.\n");
348 global_ret = 1;
349 }
350}
const struct GNUNET_CRYPTO_BlindablePrivateKey * GNUNET_IDENTITY_ego_get_private_key(const struct GNUNET_IDENTITY_Ego *ego)
Obtain the ECC key associated with a ego.
enum GNUNET_GenericReturnValue GNUNET_CRYPTO_hpke_sk_to_x25519(const struct GNUNET_CRYPTO_BlindablePrivateKey *sk, struct GNUNET_CRYPTO_HpkePrivateKey *sk_enc)
Convert a GNUnet identity key to a key sutiable for HPKE (X25519)
enum GNUNET_GenericReturnValue GNUNET_CRYPTO_hpke_open_oneshot(const struct GNUNET_CRYPTO_HpkePrivateKey *skR, const uint8_t *info, size_t info_len, const uint8_t *aad, size_t aad_len, const uint8_t *ct, size_t ct_len, uint8_t *pt, unsigned long long *pt_len)
RFC9180 HPKE encryption.
enum GNUNET_GenericReturnValue GNUNET_STRINGS_string_to_data_alloc(const char *enc, size_t enclen, void **out, size_t *out_size)
Convert CrockfordBase32 encoding back to data.
Definition strings.c:898
A public key used for decryption.

References global_ret, GNUNET_assert, GNUNET_CRYPTO_hpke_open_oneshot(), GNUNET_CRYPTO_hpke_sk_to_x25519(), GNUNET_free, GNUNET_IDENTITY_ego_get_private_key(), GNUNET_OK, GNUNET_STRINGS_string_to_data_alloc(), and read_msg.

Referenced by print_ego().

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', this function is only called ONCE, and 'NULL' being passed in 'ego' does indicate an error (for example because 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 386 of file gnunet-identity.c.

390{
392 char *s;
393 char *privs;
394
395 if ( (NULL == ego) &&
396 (NULL != set_ego) &&
397 (NULL != read_msg) )
398 {
399 fprintf (stderr,
400 "Ego `%s' is not known, cannot decrypt message.\n",
401 set_ego);
403 read_msg = NULL;
405 set_ego = NULL;
406 }
407 if ((NULL == ego) && (! monitor))
408 {
409 list = 0;
410 test_finished ();
411 return;
412 }
413 if (! (list | monitor) && (NULL == read_msg))
414 return;
415 if ( (NULL == ego) ||
416 (NULL == identifier) )
417 return;
418 if ( (NULL != set_ego) &&
419 (0 != strcmp (identifier,
420 set_ego)) )
421 return;
426 if ((NULL != read_msg) && (NULL != set_ego))
427 {
428 // due to the check above, set_ego and the identifier are equal
431 read_msg = NULL;
432 }
433 else if ((monitor) || (NULL != identifier))
434 {
435 if (quiet)
436 {
437 if (private_keys)
438 fprintf (stdout, "%s - %s\n", s, privs);
439 else
440 fprintf (stdout, "%s\n", s);
441 }
442 else
443 {
444 if (private_keys)
445 fprintf (stdout, "%s - %s - %s - %s\n",
446 identifier, s, privs,
447 (ntohl (pk_tmp.type) == GNUNET_PUBLIC_KEY_TYPE_ECDSA) ?
448 "ECDSA" : "EdDSA");
449 else
450 fprintf (stdout, "%s - %s - %s\n",
451 identifier, s,
452 (ntohl (pk_tmp.type) == GNUNET_PUBLIC_KEY_TYPE_ECDSA) ?
453 "ECDSA" : "EdDSA");
454
455 }
456 }
457 GNUNET_free (privs);
458 GNUNET_free (s);
459}
static int quiet
Was "quiet" specified?
static void read_encrypted_message(struct GNUNET_IDENTITY_Ego *ego)
Decrypt a message given with -R, encrypted using public key of ego and ephemeral key given with -k.
void GNUNET_IDENTITY_ego_get_public_key(struct GNUNET_IDENTITY_Ego *ego, struct GNUNET_CRYPTO_BlindablePublicKey *pk)
Get the identifier (public key) of an ego.
@ GNUNET_PUBLIC_KEY_TYPE_ECDSA
The identity type.

References GNUNET_CRYPTO_blindable_private_key_to_string(), GNUNET_CRYPTO_blindable_public_key_to_string(), GNUNET_free, GNUNET_IDENTITY_ego_get_private_key(), GNUNET_IDENTITY_ego_get_public_key(), GNUNET_PUBLIC_KEY_TYPE_ECDSA, list, monitor, private_keys, quiet, read_encrypted_message(), read_msg, set_ego, test_finished(), and GNUNET_CRYPTO_BlindablePublicKey::type.

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 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 471 of file gnunet-identity.c.

475{
476 if ((NULL != read_msg) && (NULL == set_ego))
477 {
478 fprintf (stderr,
479 "Option -R requires options -e to be specified as well.\n");
480 return;
481 }
482
483 if ((NULL != write_msg) && (NULL == pubkey_msg))
484 {
485 fprintf (stderr, "Option -W requires option -k to be specified as well.\n");
486 return;
487 }
489 (monitor | list) ||
490 (NULL != set_ego)
491 ? &print_ego
492 : NULL,
493 NULL);
494 if (NULL != write_msg)
495 {
498 write_msg = NULL;
499 }
500 // read message is handled in ego callback (print_ego)
501 if (NULL != delete_ego)
502 delete_op =
506 &delete_op);
507 if (NULL != create_ego)
508 {
509 if (NULL != privkey_ego)
510 {
512 strlen (privkey_ego),
513 &pk,
514 sizeof(struct
516 create_op =
519 &pk,
520 0, // Ignored
522 &create_op);
523 }
524 else
525 create_op =
528 NULL,
529 (type_eddsa) ?
533 &create_op);
534 }
536 NULL);
537 test_finished ();
538}
static struct GNUNET_CONFIGURATION_Handle * cfg
Our configuration.
Definition gnunet-arm.c:108
static void write_encrypted_message(void)
Encrypt a message given with -W, encrypted using public key of an identity given with -k.
static char * privkey_ego
-P option
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.
struct GNUNET_CRYPTO_BlindablePrivateKey pk
Private key from command line option, or NULL.
static char * delete_ego
-D option
static char * create_ego
-C option
static void create_finished(void *cls, const struct GNUNET_CRYPTO_BlindablePrivateKey *pk_created, enum GNUNET_ErrorCode ec)
Creation operation finished.
static int type_eddsa
Was "eddsa" specified?
static void delete_finished(void *cls, enum GNUNET_ErrorCode ec)
Deletion operation finished.
struct GNUNET_SCHEDULER_Task * shutdown_task
struct GNUNET_IDENTITY_Operation * GNUNET_IDENTITY_create(struct GNUNET_IDENTITY_Handle *id, const char *name, const struct GNUNET_CRYPTO_BlindablePrivateKey *privkey, enum GNUNET_CRYPTO_KeyType ktype, GNUNET_IDENTITY_CreateContinuation cont, void *cont_cls)
Create a new ego with the given name.
struct GNUNET_IDENTITY_Operation * GNUNET_IDENTITY_delete(struct GNUNET_IDENTITY_Handle *id, const char *name, GNUNET_IDENTITY_Continuation cb, void *cb_cls)
Delete an existing ego.
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.
@ GNUNET_PUBLIC_KEY_TYPE_EDDSA
EDDSA identity.
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:1339
enum GNUNET_GenericReturnValue GNUNET_STRINGS_string_to_data(const char *enc, size_t enclen, void *out, size_t out_size)
Convert CrockfordBase32 encoding back to data.
Definition strings.c:832
A private key for an identity as per LSD0001.

References cfg, create_ego, create_finished(), create_op, delete_ego, delete_finished(), delete_op, GNUNET_free, GNUNET_IDENTITY_connect(), GNUNET_IDENTITY_create(), GNUNET_IDENTITY_delete(), GNUNET_PUBLIC_KEY_TYPE_ECDSA, GNUNET_PUBLIC_KEY_TYPE_EDDSA, GNUNET_SCHEDULER_add_shutdown(), GNUNET_STRINGS_string_to_data(), list, monitor, pk, print_ego(), privkey_ego, pubkey_msg, read_msg, set_ego, sh, shutdown_task, test_finished(), type_eddsa, write_encrypted_message(), and write_msg.

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 
)

The main function.

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

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

550{
553 "create",
554 "NAME",
555 gettext_noop ("create ego NAME"),
556 &create_ego),
558 "delete",
559 "NAME",
560 gettext_noop ("delete ego NAME "),
561 &delete_ego),
563 "privkey",
564 "PRIVATE_KEY",
566 "set the private key for the identity to PRIVATE_KEY (use together with -C)"),
567 &privkey_ego),
569 "read",
570 "MESSAGE",
572 "Read and decrypt message encrypted for the given ego (use together with -e EGO)"),
573 &read_msg),
575 "write",
576 "MESSAGE",
578 "Encrypt and write message for recipient identity PULBIC_KEY, (use together with -k RECIPIENT_PUBLIC_KEY)"),
579 &write_msg),
581 "eddsa",
583 "generate an EdDSA identity. (use together with -C) EXPERIMENTAL"),
584 &type_eddsa),
586 "display",
587 gettext_noop ("display all egos"),
588 &list),
590 "quiet",
591 gettext_noop ("reduce output"),
592 &quiet),
594 'e',
595 "ego",
596 "NAME",
598 "restrict results to NAME (use together with -d) or read and decrypt a message for NAME (use together with -R)"),
599 &set_ego),
601 "key",
602 "PUBLIC_KEY",
604 "The public key of the recipient (with -W)"),
605 &pubkey_msg),
607 "monitor",
608 gettext_noop ("run in monitor mode egos"),
609 &monitor),
611 "private-keys",
612 gettext_noop ("display private keys as well"),
613 &private_keys),
616 };
617 int res;
618
619 global_ret = TIMEOUT_STATUS_CODE; /* timeout */
621 argc,
622 argv,
623 "gnunet-identity",
624 gettext_noop ("Maintain egos"),
625 options,
626 &run,
627 NULL);
628
629 if (GNUNET_OK != res)
630 return 3;
631 return global_ret;
632}
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 *cfg)
Main function that will be run by the scheduler.
static char * res
Currently read line or NULL on EOF.
#define GNUNET_GETOPT_OPTION_END
Marker for the end of the list of options.
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_option_verbose(unsigned int *level)
Define the '-V' verbosity option.
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_ego, delete_ego, gettext_noop, global_ret, GNUNET_GETOPT_OPTION_END, GNUNET_GETOPT_option_flag(), GNUNET_GETOPT_option_string(), GNUNET_GETOPT_option_verbose(), GNUNET_OK, GNUNET_OS_project_data_gnunet(), GNUNET_PROGRAM_run(), list, monitor, options, private_keys, privkey_ego, pubkey_msg, quiet, read_msg, res, run(), set_ego, TIMEOUT_STATUS_CODE, type_eddsa, verbose, and write_msg.

Here is the call graph for this function:

Variable Documentation

◆ sh

◆ 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().

◆ type_eddsa

int type_eddsa
static

Was "eddsa" specified?

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

Referenced by main(), and run().

◆ write_msg

char* write_msg
static

-W option

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

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

◆ read_msg

char* read_msg
static

-R option

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

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

◆ create_ego

char* create_ego
static

-C option

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

Referenced by main(), and run().

◆ delete_ego

char* delete_ego
static

-D option

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

Referenced by main(), and run().

◆ privkey_ego

char* privkey_ego
static

-P option

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

Referenced by main(), and run().

◆ pubkey_msg

char* pubkey_msg
static

-k option

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

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

◆ set_ego

char* set_ego
static

-s option.

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

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

◆ set_op

struct GNUNET_IDENTITY_Operation* set_op
static

Operation handle for set operation.

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

Referenced by shutdown_task(), and test_finished().

◆ create_op

struct GNUNET_IDENTITY_Operation* create_op
static

Handle for create operation.

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

Referenced by run(), shutdown_task(), and test_finished().

◆ delete_op

struct GNUNET_IDENTITY_Operation* delete_op
static

Handle for delete operation.

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

Referenced by run(), shutdown_task(), and test_finished().

◆ pk

Private key from command line option, or NULL.

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

Referenced by block_plugin_revocation_check_block(), block_plugin_revocation_get_key(), check_pkey(), check_signature(), clean_rsa_pub(), clean_rsa_public_key(), clean_rsa_public_key(), create_keys(), create_response(), DID_public_key_from_did(), directory_trim_complete(), do_finished_create(), eddsa_priv_to_hpke_key(), eddsa_priv_to_hpke_key(), eddsa_priv_to_hpke_key(), eddsa_pub_to_hpke_key(), eddsa_pub_to_hpke_key(), eddsa_pub_to_hpke_key(), eddsa_pub_to_hpke_key(), ego_create(), elligator_generate_public_key(), extract_rsa_pub(), extract_rsa_public_key(), get_ego(), GNR_create_signature_message(), gns_string_to_value(), gns_value_to_string(), GNUNET_CRYPTO_ecdh_x25519(), GNUNET_CRYPTO_ecdhe_elligator_key_create(), GNUNET_CRYPTO_ecdhe_elligator_key_get_public(), GNUNET_CRYPTO_ecdhe_elligator_key_get_public_norand(), GNUNET_CRYPTO_ecdhe_key_clear(), GNUNET_CRYPTO_ecdhe_key_create(), GNUNET_CRYPTO_ecdsa_key_clear(), GNUNET_CRYPTO_ecdsa_key_create(), GNUNET_CRYPTO_eddsa_key_clear(), GNUNET_CRYPTO_eddsa_key_create(), GNUNET_CRYPTO_eddsa_key_get_public(), GNUNET_CRYPTO_eddsa_sign_(), GNUNET_CRYPTO_eddsa_sign_raw(), GNUNET_CRYPTO_edx25519_key_clear(), GNUNET_CRYPTO_edx25519_key_create(), GNUNET_CRYPTO_edx25519_key_create_from_seed(), GNUNET_CRYPTO_hpke_pk_to_x25519(), GNUNET_GNSRECORD_check_pow(), GNUNET_GNSRECORD_pow_round(), GNUNET_GNSRECORD_proof_get_size(), GNUNET_IDENTITY_ego_get_public_key(), GNUNET_JSON_from_rsa_public_key(), GNUNET_JSON_pack_rsa_public_key(), GNUNET_JSON_spec_rsa_public_key(), GNUNET_TRANSPORT_application_suggest(), id_connect_cb(), list_ego(), list_ego(), list_ego(), list_ego(), missing_zone_creation_cont(), origin_create_cb(), parse_rsa_public_key(), publicize_rm(), read_service_conf(), run(), run(), run(), run(), run(), run(), sign_pow(), sign_pow_identity(), and uri_ksk_continuation().

◆ global_ret

int global_ret
static