diff options
author | TheJackiMonster <thejackimonster@gmail.com> | 2024-05-26 15:30:02 +0200 |
---|---|---|
committer | TheJackiMonster <thejackimonster@gmail.com> | 2024-05-26 15:30:02 +0200 |
commit | 81d8f82554260424ea568546ba098ea5cee3ef4b (patch) | |
tree | a8827a7967770596293366ec8d9bd1c719293977 /src/service/rest/reclaim_plugin.c | |
parent | 48dfc68132cd19013b5a3ce6b170099b988de96e (diff) | |
parent | af21c76e87e701fb88f7b0d535e9758ef832ec39 (diff) | |
download | gnunet-master.tar.gz gnunet-master.zip |
Merge branch 'master' into dev/thejackimonster/messengerHEADmasterdev/thejackimonster/messenger
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
Diffstat (limited to 'src/service/rest/reclaim_plugin.c')
-rw-r--r-- | src/service/rest/reclaim_plugin.c | 63 |
1 files changed, 17 insertions, 46 deletions
diff --git a/src/service/rest/reclaim_plugin.c b/src/service/rest/reclaim_plugin.c index e1afce00b..10b6b7bdc 100644 --- a/src/service/rest/reclaim_plugin.c +++ b/src/service/rest/reclaim_plugin.c | |||
@@ -25,6 +25,7 @@ | |||
25 | * | 25 | * |
26 | */ | 26 | */ |
27 | #include "platform.h" | 27 | #include "platform.h" |
28 | #include "gnunet_json_lib.h" | ||
28 | #include "microhttpd.h" | 29 | #include "microhttpd.h" |
29 | #include <inttypes.h> | 30 | #include <inttypes.h> |
30 | #include <jansson.h> | 31 | #include <jansson.h> |
@@ -434,37 +435,19 @@ collect_finished_cb (void *cls) | |||
434 | * | 435 | * |
435 | */ | 436 | */ |
436 | static void | 437 | static void |
437 | ticket_collect (void *cls, const struct GNUNET_RECLAIM_Ticket *ticket) | 438 | ticket_collect (void *cls, const struct GNUNET_RECLAIM_Ticket *ticket, |
439 | const char *rp_uri) | ||
438 | { | 440 | { |
439 | json_t *json_resource; | 441 | json_t *json_resource; |
440 | struct RequestHandle *handle = cls; | 442 | struct RequestHandle *handle = cls; |
441 | json_t *value; | ||
442 | char *tmp; | ||
443 | 443 | ||
444 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding ticket\n"); | 444 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding ticket\n"); |
445 | tmp = GNUNET_STRINGS_data_to_string_alloc (&ticket->rnd, sizeof(ticket->rnd)); | ||
446 | json_resource = json_object (); | 445 | json_resource = json_object (); |
447 | GNUNET_free (tmp); | ||
448 | json_array_append (handle->resp_object, json_resource); | 446 | json_array_append (handle->resp_object, json_resource); |
449 | 447 | ||
450 | tmp = | 448 | json_object_set_new (json_resource, "gns_name", json_string (ticket->gns_name) |
451 | GNUNET_STRINGS_data_to_string_alloc (&ticket->identity, | 449 | ); |
452 | sizeof(struct | 450 | json_object_set_new (json_resource, "rp_uri", json_string (rp_uri)); |
453 | GNUNET_CRYPTO_PublicKey)); | ||
454 | value = json_string (tmp); | ||
455 | json_object_set_new (json_resource, "issuer", value); | ||
456 | GNUNET_free (tmp); | ||
457 | tmp = | ||
458 | GNUNET_STRINGS_data_to_string_alloc (&ticket->audience, | ||
459 | sizeof(struct | ||
460 | GNUNET_CRYPTO_PublicKey)); | ||
461 | value = json_string (tmp); | ||
462 | json_object_set_new (json_resource, "audience", value); | ||
463 | GNUNET_free (tmp); | ||
464 | tmp = GNUNET_STRINGS_data_to_string_alloc (&ticket->rnd, sizeof(ticket->rnd)); | ||
465 | value = json_string (tmp); | ||
466 | json_object_set_new (json_resource, "rnd", value); | ||
467 | GNUNET_free (tmp); | ||
468 | GNUNET_RECLAIM_ticket_iteration_next (handle->ticket_it); | 451 | GNUNET_RECLAIM_ticket_iteration_next (handle->ticket_it); |
469 | } | 452 | } |
470 | 453 | ||
@@ -937,7 +920,8 @@ parse_jwt (const struct GNUNET_RECLAIM_Credential *cred, | |||
937 | type_str = "String"; | 920 | type_str = "String"; |
938 | type = GNUNET_RECLAIM_attribute_typename_to_number (type_str); | 921 | type = GNUNET_RECLAIM_attribute_typename_to_number (type_str); |
939 | if (GNUNET_SYSERR == GNUNET_RECLAIM_attribute_string_to_value (type,val_str, | 922 | if (GNUNET_SYSERR == GNUNET_RECLAIM_attribute_string_to_value (type,val_str, |
940 | (void **) &data, | 923 | (void **) &data |
924 | , | ||
941 | &data_size)) | 925 | &data_size)) |
942 | { | 926 | { |
943 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 927 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
@@ -1133,6 +1117,7 @@ revoke_ticket_cont (struct GNUNET_REST_RequestHandle *con_handle, | |||
1133 | struct RequestHandle *handle = cls; | 1117 | struct RequestHandle *handle = cls; |
1134 | struct EgoEntry *ego_entry; | 1118 | struct EgoEntry *ego_entry; |
1135 | struct GNUNET_RECLAIM_Ticket *ticket = NULL; | 1119 | struct GNUNET_RECLAIM_Ticket *ticket = NULL; |
1120 | struct GNUNET_CRYPTO_PublicKey iss; | ||
1136 | struct GNUNET_CRYPTO_PublicKey tmp_pk; | 1121 | struct GNUNET_CRYPTO_PublicKey tmp_pk; |
1137 | char term_data[handle->rest_handle->data_size + 1]; | 1122 | char term_data[handle->rest_handle->data_size + 1]; |
1138 | json_t *data_json; | 1123 | json_t *data_json; |
@@ -1171,11 +1156,13 @@ revoke_ticket_cont (struct GNUNET_REST_RequestHandle *con_handle, | |||
1171 | return; | 1156 | return; |
1172 | } | 1157 | } |
1173 | 1158 | ||
1159 | GNUNET_assert (GNUNET_OK == GNUNET_GNS_parse_ztld (ticket->gns_name, &iss)); | ||
1160 | |||
1174 | for (ego_entry = ego_head; NULL != ego_entry; | 1161 | for (ego_entry = ego_head; NULL != ego_entry; |
1175 | ego_entry = ego_entry->next) | 1162 | ego_entry = ego_entry->next) |
1176 | { | 1163 | { |
1177 | GNUNET_IDENTITY_ego_get_public_key (ego_entry->ego, &tmp_pk); | 1164 | GNUNET_IDENTITY_ego_get_public_key (ego_entry->ego, &tmp_pk); |
1178 | if (0 == memcmp (&ticket->identity, | 1165 | if (0 == memcmp (&iss, |
1179 | &tmp_pk, | 1166 | &tmp_pk, |
1180 | sizeof(struct GNUNET_CRYPTO_PublicKey))) | 1167 | sizeof(struct GNUNET_CRYPTO_PublicKey))) |
1181 | break; | 1168 | break; |
@@ -1236,16 +1223,16 @@ consume_ticket_cont (struct GNUNET_REST_RequestHandle *con_handle, | |||
1236 | const char *url, | 1223 | const char *url, |
1237 | void *cls) | 1224 | void *cls) |
1238 | { | 1225 | { |
1239 | const struct GNUNET_CRYPTO_PrivateKey *identity_priv; | ||
1240 | struct RequestHandle *handle = cls; | 1226 | struct RequestHandle *handle = cls; |
1241 | struct EgoEntry *ego_entry; | ||
1242 | struct GNUNET_RECLAIM_Ticket *ticket; | 1227 | struct GNUNET_RECLAIM_Ticket *ticket; |
1243 | struct GNUNET_CRYPTO_PublicKey tmp_pk; | ||
1244 | char term_data[handle->rest_handle->data_size + 1]; | 1228 | char term_data[handle->rest_handle->data_size + 1]; |
1229 | const char *rp_uri; | ||
1245 | json_t *data_json; | 1230 | json_t *data_json; |
1246 | json_error_t err; | 1231 | json_error_t err; |
1247 | struct GNUNET_JSON_Specification tktspec[] = | 1232 | struct GNUNET_JSON_Specification tktspec[] = |
1248 | { GNUNET_RECLAIM_JSON_spec_ticket (&ticket), GNUNET_JSON_spec_end () }; | 1233 | { GNUNET_RECLAIM_JSON_spec_ticket (&ticket), |
1234 | GNUNET_JSON_spec_string ("rp_uri", &rp_uri), | ||
1235 | GNUNET_JSON_spec_end () }; | ||
1249 | 1236 | ||
1250 | if (0 >= handle->rest_handle->data_size) | 1237 | if (0 >= handle->rest_handle->data_size) |
1251 | { | 1238 | { |
@@ -1274,26 +1261,10 @@ consume_ticket_cont (struct GNUNET_REST_RequestHandle *con_handle, | |||
1274 | json_decref (data_json); | 1261 | json_decref (data_json); |
1275 | return; | 1262 | return; |
1276 | } | 1263 | } |
1277 | for (ego_entry = ego_head; NULL != ego_entry; | ||
1278 | ego_entry = ego_entry->next) | ||
1279 | { | ||
1280 | GNUNET_IDENTITY_ego_get_public_key (ego_entry->ego, &tmp_pk); | ||
1281 | if (0 == memcmp (&ticket->audience, | ||
1282 | &tmp_pk, | ||
1283 | sizeof(struct GNUNET_CRYPTO_PublicKey))) | ||
1284 | break; | ||
1285 | } | ||
1286 | if (NULL == ego_entry) | ||
1287 | { | ||
1288 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Identity unknown\n"); | ||
1289 | GNUNET_JSON_parse_free (tktspec); | ||
1290 | return; | ||
1291 | } | ||
1292 | identity_priv = GNUNET_IDENTITY_ego_get_private_key (ego_entry->ego); | ||
1293 | handle->resp_object = json_object (); | 1264 | handle->resp_object = json_object (); |
1294 | handle->idp_op = GNUNET_RECLAIM_ticket_consume (idp, | 1265 | handle->idp_op = GNUNET_RECLAIM_ticket_consume (idp, |
1295 | identity_priv, | ||
1296 | ticket, | 1266 | ticket, |
1267 | rp_uri, | ||
1297 | &consume_cont, | 1268 | &consume_cont, |
1298 | handle); | 1269 | handle); |
1299 | GNUNET_JSON_parse_free (tktspec); | 1270 | GNUNET_JSON_parse_free (tktspec); |