diff options
author | Schanzenbach, Martin <martin.schanzenbach@aisec.fraunhofer.de> | 2018-05-04 10:26:19 +0200 |
---|---|---|
committer | Schanzenbach, Martin <martin.schanzenbach@aisec.fraunhofer.de> | 2018-05-04 10:26:19 +0200 |
commit | d83553b169ab9221c9daaa010e2aad2b92583fd8 (patch) | |
tree | 810fe5d66bba5ebc0d540097bb7913d8b540b258 /src | |
parent | e4ba4feedbe6e8f435f44eea89fcb080ddcc734d (diff) | |
download | gnunet-d83553b169ab9221c9daaa010e2aad2b92583fd8.tar.gz gnunet-d83553b169ab9221c9daaa010e2aad2b92583fd8.zip |
fix idp cli
Diffstat (limited to 'src')
-rw-r--r-- | src/identity-provider/gnunet-idp.c | 96 |
1 files changed, 64 insertions, 32 deletions
diff --git a/src/identity-provider/gnunet-idp.c b/src/identity-provider/gnunet-idp.c index 4f17919b9..cb82f42b8 100644 --- a/src/identity-provider/gnunet-idp.c +++ b/src/identity-provider/gnunet-idp.c | |||
@@ -287,27 +287,30 @@ iter_finished (void *cls) | |||
287 | NULL); | 287 | NULL); |
288 | return; | 288 | return; |
289 | } | 289 | } |
290 | if (NULL == type_str) | 290 | if (attr_name) |
291 | type = GNUNET_IDENTITY_ATTRIBUTE_TYPE_STRING; | 291 | { |
292 | else | 292 | if (NULL == type_str) |
293 | type = GNUNET_IDENTITY_ATTRIBUTE_typename_to_number (type_str); | 293 | type = GNUNET_IDENTITY_ATTRIBUTE_TYPE_STRING; |
294 | 294 | else | |
295 | GNUNET_assert (GNUNET_SYSERR != GNUNET_IDENTITY_ATTRIBUTE_string_to_value (type, | 295 | type = GNUNET_IDENTITY_ATTRIBUTE_typename_to_number (type_str); |
296 | attr_value, | 296 | |
297 | (void**)&data, | 297 | GNUNET_assert (GNUNET_SYSERR != GNUNET_IDENTITY_ATTRIBUTE_string_to_value (type, |
298 | &data_size)); | 298 | attr_value, |
299 | claim = GNUNET_IDENTITY_ATTRIBUTE_claim_new (attr_name, | 299 | (void**)&data, |
300 | type, | 300 | &data_size)); |
301 | data, | 301 | claim = GNUNET_IDENTITY_ATTRIBUTE_claim_new (attr_name, |
302 | data_size); | 302 | type, |
303 | idp_op = GNUNET_IDENTITY_PROVIDER_attribute_store (idp_handle, | 303 | data, |
304 | pkey, | 304 | data_size); |
305 | claim, | 305 | idp_op = GNUNET_IDENTITY_PROVIDER_attribute_store (idp_handle, |
306 | &exp_interval, | 306 | pkey, |
307 | &store_attr_cont, | 307 | claim, |
308 | NULL); | 308 | &exp_interval, |
309 | 309 | &store_attr_cont, | |
310 | 310 | NULL); | |
311 | return; | ||
312 | } | ||
313 | GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); | ||
311 | } | 314 | } |
312 | 315 | ||
313 | static void | 316 | static void |
@@ -347,16 +350,14 @@ iter_cb (void *cls, | |||
347 | } | 350 | } |
348 | 351 | ||
349 | static void | 352 | static void |
350 | ego_cb (void *cls, | 353 | ego_iter_finished (void *cls) |
351 | struct GNUNET_IDENTITY_Ego *ego, | ||
352 | void **ctx, | ||
353 | const char *name) | ||
354 | { | 354 | { |
355 | if (NULL == name) | 355 | if (NULL == pkey) |
356 | return; | 356 | { |
357 | if (0 != strcmp (name, ego_name)) | 357 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
358 | "Ego %s not found\n", ego_name); | ||
358 | return; | 359 | return; |
359 | pkey = GNUNET_IDENTITY_ego_get_private_key (ego); | 360 | } |
360 | 361 | ||
361 | if (NULL != rp) | 362 | if (NULL != rp) |
362 | GNUNET_CRYPTO_ecdsa_public_key_from_string (rp, | 363 | GNUNET_CRYPTO_ecdsa_public_key_from_string (rp, |
@@ -388,6 +389,23 @@ ego_cb (void *cls, | |||
388 | 389 | ||
389 | } | 390 | } |
390 | 391 | ||
392 | |||
393 | static void | ||
394 | ego_cb (void *cls, | ||
395 | struct GNUNET_IDENTITY_Ego *ego, | ||
396 | void **ctx, | ||
397 | const char *name) | ||
398 | { | ||
399 | if (NULL == name) { | ||
400 | GNUNET_SCHEDULER_add_now (&ego_iter_finished, NULL); | ||
401 | return; | ||
402 | } | ||
403 | if (0 != strcmp (name, ego_name)) | ||
404 | return; | ||
405 | pkey = GNUNET_IDENTITY_ego_get_private_key (ego); | ||
406 | } | ||
407 | |||
408 | |||
391 | static void | 409 | static void |
392 | run (void *cls, | 410 | run (void *cls, |
393 | char *const *args, | 411 | char *const *args, |
@@ -400,7 +418,21 @@ run (void *cls, | |||
400 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | 418 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
401 | _("Ego is required\n")); | 419 | _("Ego is required\n")); |
402 | return; | 420 | return; |
403 | } | 421 | } |
422 | |||
423 | if ( (NULL == attr_value) && (NULL != attr_name) ) | ||
424 | { | ||
425 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | ||
426 | _("Attribute value missing!\n")); | ||
427 | return; | ||
428 | } | ||
429 | |||
430 | if ( (NULL == rp) && (NULL != issue_attrs) ) | ||
431 | { | ||
432 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | ||
433 | _("Requesting party key is required!\n")); | ||
434 | return; | ||
435 | } | ||
404 | 436 | ||
405 | idp_handle = GNUNET_IDENTITY_PROVIDER_connect (c); | 437 | idp_handle = GNUNET_IDENTITY_PROVIDER_connect (c); |
406 | //Get Ego | 438 | //Get Ego |
@@ -472,8 +504,8 @@ main(int argc, char *const argv[]) | |||
472 | GNUNET_GETOPT_OPTION_END | 504 | GNUNET_GETOPT_OPTION_END |
473 | }; | 505 | }; |
474 | if (GNUNET_OK != GNUNET_PROGRAM_run (argc, argv, "ct", | 506 | if (GNUNET_OK != GNUNET_PROGRAM_run (argc, argv, "ct", |
475 | "ct", options, | 507 | "ct", options, |
476 | &run, NULL)) | 508 | &run, NULL)) |
477 | return 1; | 509 | return 1; |
478 | else | 510 | else |
479 | return ret; | 511 | return ret; |