aboutsummaryrefslogtreecommitdiff
path: root/src/identity-provider/identity_provider_api.c
diff options
context:
space:
mode:
authorMartin Schanzenbach <mschanzenbach@posteo.de>2016-01-09 17:09:37 +0000
committerMartin Schanzenbach <mschanzenbach@posteo.de>2016-01-09 17:09:37 +0000
commit3941d4252602eb9e6689897a8264380012fdf7e6 (patch)
tree1c080b9cefc132bb728a92b4ff02a72c511f9f4c /src/identity-provider/identity_provider_api.c
parent8feaa39e16ba33a192b32097e8087c9aca2d27d8 (diff)
downloadgnunet-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.c85
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 */
601void
602GNUNET_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 */
616char *
617GNUNET_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 */
628char *
629GNUNET_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 */
641int
642GNUNET_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 */
656void
657GNUNET_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 */