diff options
author | Martin Schanzenbach <mschanzenbach@posteo.de> | 2016-01-11 16:36:26 +0000 |
---|---|---|
committer | Martin Schanzenbach <mschanzenbach@posteo.de> | 2016-01-11 16:36:26 +0000 |
commit | a393dbd7b27c62ebd101113b361560a477404bf5 (patch) | |
tree | 5dd7983acf8538ffe16bd128fe5a7416f6462a62 /src/identity-provider/gnunet-service-identity-provider.c | |
parent | 55bc55b5f2046c96e1ae5a1d774c14300cc4b890 (diff) | |
download | gnunet-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.c | 46 |
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 | ||
893 | static struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage* | 893 | static struct GNUNET_IDENTITY_PROVIDER_IssueResultMessage* |
894 | create_issue_result_message (const char* ticket) | 894 | create_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, |