aboutsummaryrefslogtreecommitdiff
path: root/src/service/rest/reclaim_plugin.c
diff options
context:
space:
mode:
authorTheJackiMonster <thejackimonster@gmail.com>2024-05-26 15:30:02 +0200
committerTheJackiMonster <thejackimonster@gmail.com>2024-05-26 15:30:02 +0200
commit81d8f82554260424ea568546ba098ea5cee3ef4b (patch)
treea8827a7967770596293366ec8d9bd1c719293977 /src/service/rest/reclaim_plugin.c
parent48dfc68132cd19013b5a3ce6b170099b988de96e (diff)
parentaf21c76e87e701fb88f7b0d535e9758ef832ec39 (diff)
downloadgnunet-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.c63
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 */
436static void 437static void
437ticket_collect (void *cls, const struct GNUNET_RECLAIM_Ticket *ticket) 438ticket_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);