diff options
author | Martin Schanzenbach <mschanzenbach@posteo.de> | 2016-01-09 17:09:37 +0000 |
---|---|---|
committer | Martin Schanzenbach <mschanzenbach@posteo.de> | 2016-01-09 17:09:37 +0000 |
commit | 3941d4252602eb9e6689897a8264380012fdf7e6 (patch) | |
tree | 1c080b9cefc132bb728a92b4ff02a72c511f9f4c /src/identity-provider/identity_provider_api.c | |
parent | 8feaa39e16ba33a192b32097e8087c9aca2d27d8 (diff) | |
download | gnunet-3941d4252602eb9e6689897a8264380012fdf7e6.tar.gz gnunet-3941d4252602eb9e6689897a8264380012fdf7e6.zip |
- fix build, fix bugs
Diffstat (limited to 'src/identity-provider/identity_provider_api.c')
-rw-r--r-- | src/identity-provider/identity_provider_api.c | 85 |
1 files changed, 82 insertions, 3 deletions
diff --git a/src/identity-provider/identity_provider_api.c b/src/identity-provider/identity_provider_api.c index a1d95c2b8..f0e91a739 100644 --- a/src/identity-provider/identity_provider_api.c +++ b/src/identity-provider/identity_provider_api.c | |||
@@ -192,7 +192,7 @@ message_handler (void *cls, | |||
192 | struct GNUNET_IDENTITY_PROVIDER_Ticket ticket; | 192 | struct GNUNET_IDENTITY_PROVIDER_Ticket ticket; |
193 | const struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage *irm; | 193 | const struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage *irm; |
194 | const struct GNUNET_IDENTITY_PROVIDER_ExchangeResultMessage *erm; | 194 | const struct GNUNET_IDENTITY_PROVIDER_ExchangeResultMessage *erm; |
195 | const char *str; | 195 | char *str; |
196 | uint16_t size; | 196 | uint16_t size; |
197 | 197 | ||
198 | if (NULL == msg) | 198 | if (NULL == msg) |
@@ -214,7 +214,7 @@ message_handler (void *cls, | |||
214 | return; | 214 | return; |
215 | } | 215 | } |
216 | irm = (const struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage *) msg; | 216 | irm = (const struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage *) msg; |
217 | str = (const char *) &irm[1]; | 217 | str = (char *) &irm[1]; |
218 | if ( (size > sizeof (struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage)) && | 218 | if ( (size > sizeof (struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage)) && |
219 | ('\0' != str[size - sizeof (struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage) - 1]) ) | 219 | ('\0' != str[size - sizeof (struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage) - 1]) ) |
220 | { | 220 | { |
@@ -244,7 +244,7 @@ message_handler (void *cls, | |||
244 | return; | 244 | return; |
245 | } | 245 | } |
246 | erm = (const struct GNUNET_IDENTITY_PROVIDER_ExchangeResultMessage *) msg; | 246 | erm = (const struct GNUNET_IDENTITY_PROVIDER_ExchangeResultMessage *) msg; |
247 | str = (const char *) &erm[1]; | 247 | str = (char *) &erm[1]; |
248 | if ( (size > sizeof (struct GNUNET_IDENTITY_PROVIDER_ExchangeResultMessage)) && | 248 | if ( (size > sizeof (struct GNUNET_IDENTITY_PROVIDER_ExchangeResultMessage)) && |
249 | ('\0' != str[size - sizeof (struct GNUNET_IDENTITY_PROVIDER_ExchangeResultMessage) - 1]) ) | 249 | ('\0' != str[size - sizeof (struct GNUNET_IDENTITY_PROVIDER_ExchangeResultMessage) - 1]) ) |
250 | { | 250 | { |
@@ -494,6 +494,7 @@ GNUNET_IDENTITY_PROVIDER_exchange_ticket (struct GNUNET_IDENTITY_PROVIDER_Handle | |||
494 | slen); | 494 | slen); |
495 | em->aud_privkey = *aud_privkey; | 495 | em->aud_privkey = *aud_privkey; |
496 | memcpy (&em[1], ticket_str, slen); | 496 | memcpy (&em[1], ticket_str, slen); |
497 | GNUNET_free (ticket_str); | ||
497 | op->msg = &em->header; | 498 | op->msg = &em->header; |
498 | GNUNET_CONTAINER_DLL_insert_tail (id->op_head, | 499 | GNUNET_CONTAINER_DLL_insert_tail (id->op_head, |
499 | id->op_tail, | 500 | id->op_tail, |
@@ -587,4 +588,82 @@ GNUNET_IDENTITY_PROVIDER_disconnect (struct GNUNET_IDENTITY_PROVIDER_Handle *h) | |||
587 | GNUNET_free (h); | 588 | GNUNET_free (h); |
588 | } | 589 | } |
589 | 590 | ||
591 | /** | ||
592 | * Convenience API | ||
593 | */ | ||
594 | |||
595 | |||
596 | /** | ||
597 | * Destroy token | ||
598 | * | ||
599 | * @param token the token | ||
600 | */ | ||
601 | void | ||
602 | GNUNET_IDENTITY_PROVIDER_token_destroy(struct GNUNET_IDENTITY_PROVIDER_Token *token) | ||
603 | { | ||
604 | GNUNET_assert (NULL != token); | ||
605 | if (NULL != token->data) | ||
606 | GNUNET_free (token->data); | ||
607 | GNUNET_free (token); | ||
608 | } | ||
609 | |||
610 | /** | ||
611 | * Returns string representation of token. A JSON-Web-Token. | ||
612 | * | ||
613 | * @param token the token | ||
614 | * @return The JWT (must be freed) | ||
615 | */ | ||
616 | char * | ||
617 | GNUNET_IDENTITY_PROVIDER_token_to_string (const struct GNUNET_IDENTITY_PROVIDER_Token *token) | ||
618 | { | ||
619 | return GNUNET_strdup (token->data); | ||
620 | } | ||
621 | |||
622 | /** | ||
623 | * Returns string representation of ticket. Base64-Encoded | ||
624 | * | ||
625 | * @param ticket the ticket | ||
626 | * @return the Base64-Encoded ticket | ||
627 | */ | ||
628 | char * | ||
629 | GNUNET_IDENTITY_PROVIDER_ticket_to_string (const struct GNUNET_IDENTITY_PROVIDER_Ticket *ticket) | ||
630 | { | ||
631 | return GNUNET_strdup (ticket->data); | ||
632 | } | ||
633 | |||
634 | /** | ||
635 | * Created a ticket from a string (Base64 encoded ticket) | ||
636 | * | ||
637 | * @param input Base64 encoded ticket | ||
638 | * @param ticket pointer where the ticket is stored | ||
639 | * @return GNUNET_OK | ||
640 | */ | ||
641 | int | ||
642 | GNUNET_IDENTITY_PROVIDER_string_to_ticket (const char* input, | ||
643 | struct GNUNET_IDENTITY_PROVIDER_Ticket **ticket) | ||
644 | { | ||
645 | *ticket = GNUNET_malloc (sizeof (struct GNUNET_IDENTITY_PROVIDER_Ticket)); | ||
646 | (*ticket)->data = GNUNET_strdup (input); | ||
647 | return GNUNET_OK; | ||
648 | } | ||
649 | |||
650 | |||
651 | /** | ||
652 | * Destroys a ticket | ||
653 | * | ||
654 | * @param ticket the ticket to destroy | ||
655 | */ | ||
656 | void | ||
657 | GNUNET_IDENTITY_PROVIDER_ticket_destroy(struct GNUNET_IDENTITY_PROVIDER_Ticket *ticket) | ||
658 | { | ||
659 | GNUNET_assert (NULL != ticket); | ||
660 | if (NULL != ticket->data) | ||
661 | GNUNET_free (ticket->data); | ||
662 | GNUNET_free (ticket); | ||
663 | } | ||
664 | |||
665 | |||
666 | |||
667 | |||
668 | |||
590 | /* end of identity_provider_api.c */ | 669 | /* end of identity_provider_api.c */ |