summaryrefslogtreecommitdiff
path: root/src/identity-provider/gnunet-service-identity-provider.c
diff options
context:
space:
mode:
authorMartin Schanzenbach <mschanzenbach@posteo.de>2016-01-11 16:36:26 +0000
committerMartin Schanzenbach <mschanzenbach@posteo.de>2016-01-11 16:36:26 +0000
commita393dbd7b27c62ebd101113b361560a477404bf5 (patch)
tree5dd7983acf8538ffe16bd128fe5a7416f6462a62 /src/identity-provider/gnunet-service-identity-provider.c
parent55bc55b5f2046c96e1ae5a1d774c14300cc4b890 (diff)
downloadgnunet-a393dbd7b27c62ebd101113b361560a477404bf5.tar.gz
gnunet-a393dbd7b27c62ebd101113b361560a477404bf5.zip
- fixes, modify api
Diffstat (limited to 'src/identity-provider/gnunet-service-identity-provider.c')
-rw-r--r--src/identity-provider/gnunet-service-identity-provider.c46
1 files changed, 35 insertions, 11 deletions
diff --git a/src/identity-provider/gnunet-service-identity-provider.c b/src/identity-provider/gnunet-service-identity-provider.c
index a8a8b7f16..db23c179b 100644
--- a/src/identity-provider/gnunet-service-identity-provider.c
+++ b/src/identity-provider/gnunet-service-identity-provider.c
@@ -891,14 +891,25 @@ create_exchange_result_message (const char* token,
891 891
892 892
893static struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage* 893static struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage*
894create_issue_result_message (const char* ticket) 894create_issue_result_message (const char* label,
895 const char* ticket,
896 const char* token)
895{ 897{
896 struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage *irm; 898 struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage *irm;
899 char *tmp_str;
897 900
898 irm = GNUNET_malloc (sizeof (struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage) + strlen(ticket) + 1); 901 irm = GNUNET_malloc (sizeof (struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage)
902 + strlen (label) + 1
903 + strlen (ticket) + 1
904 + strlen (token) + 1);
899 irm->header.type = htons (GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_ISSUE_RESULT); 905 irm->header.type = htons (GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_ISSUE_RESULT);
900 irm->header.size = htons (sizeof (struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage) + strlen (ticket) + 1); 906 irm->header.size = htons (sizeof (struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage)
901 memcpy (&irm[1], ticket, strlen (ticket) + 1); 907 + strlen (label) + 1
908 + strlen (ticket) + 1
909 + strlen (token) + 1);
910 GNUNET_asprintf (&tmp_str, "%s,%s,%s", label, ticket, token);
911 memcpy (&irm[1], tmp_str, strlen (tmp_str) + 1);
912 GNUNET_free (tmp_str);
902 return irm; 913 return irm;
903} 914}
904 915
@@ -925,7 +936,8 @@ store_token_issue_cont (void *cls,
925{ 936{
926 struct IssueHandle *handle = cls; 937 struct IssueHandle *handle = cls;
927 struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage *irm; 938 struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage *irm;
928 char* token_ticket_str; 939 char *ticket_str;
940 char *token_str;
929 handle->ns_qe = NULL; 941 handle->ns_qe = NULL;
930 if (GNUNET_SYSERR == success) 942 if (GNUNET_SYSERR == success)
931 { 943 {
@@ -937,7 +949,7 @@ store_token_issue_cont (void *cls,
937 } 949 }
938 if (GNUNET_OK != ticket_serialize (handle->ticket, 950 if (GNUNET_OK != ticket_serialize (handle->ticket,
939 &handle->iss_key, 951 &handle->iss_key,
940 &token_ticket_str)) 952 &ticket_str))
941 { 953 {
942 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "%s\n", 954 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "%s\n",
943 "Error serializing ticket\n"); 955 "Error serializing ticket\n");
@@ -945,7 +957,18 @@ store_token_issue_cont (void *cls,
945 GNUNET_SCHEDULER_add_now (&do_shutdown, NULL); 957 GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
946 return; 958 return;
947 } 959 }
948 irm = create_issue_result_message (token_ticket_str); 960 if (GNUNET_OK != token_to_string (handle->token,
961 &handle->iss_key,
962 &token_str))
963 {
964 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "%s\n",
965 "Error serializing token\n");
966 GNUNET_free (ticket_str);
967 cleanup_issue_handle (handle);
968 GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
969 return;
970 }
971 irm = create_issue_result_message (handle->label, ticket_str, token_str);
949 GNUNET_SERVER_notification_context_unicast (nc, 972 GNUNET_SERVER_notification_context_unicast (nc,
950 handle->client, 973 handle->client,
951 &irm->header, 974 &irm->header,
@@ -953,7 +976,8 @@ store_token_issue_cont (void *cls,
953 GNUNET_SERVER_client_set_user_context (handle->client, NULL); 976 GNUNET_SERVER_client_set_user_context (handle->client, NULL);
954 cleanup_issue_handle (handle); 977 cleanup_issue_handle (handle);
955 GNUNET_free (irm); 978 GNUNET_free (irm);
956 GNUNET_free (token_ticket_str); 979 GNUNET_free (ticket_str);
980 GNUNET_free (token_str);
957} 981}
958 982
959/** 983/**
@@ -1320,11 +1344,11 @@ find_existing_token (void *cls,
1320 sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey))) 1344 sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey)))
1321 { 1345 {
1322 char *tmp2 = GNUNET_STRINGS_data_to_string_alloc (aud_key, 1346 char *tmp2 = GNUNET_STRINGS_data_to_string_alloc (aud_key,
1323 sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey)); 1347 sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey));
1324 //Audience does not match! 1348 //Audience does not match!
1325 char *tmp = GNUNET_GNSRECORD_value_to_string (GNUNET_GNSRECORD_TYPE_ID_TOKEN_METADATA, 1349 char *tmp = GNUNET_GNSRECORD_value_to_string (GNUNET_GNSRECORD_TYPE_ID_TOKEN_METADATA,
1326 token_metadata_record->data, 1350 token_metadata_record->data,
1327 token_metadata_record->data_size); 1351 token_metadata_record->data_size);
1328 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 1352 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1329 "Token does not match audience %s vs %s. Moving on\n", 1353 "Token does not match audience %s vs %s. Moving on\n",
1330 tmp2, 1354 tmp2,