[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet] 25/25: JWT Parsing API
From: |
gnunet |
Subject: |
[gnunet] 25/25: JWT Parsing API |
Date: |
Mon, 13 Jan 2020 13:47:10 +0100 |
This is an automated email from the git hooks/post-receive script.
martin-schanzenbach pushed a commit to branch master
in repository gnunet.
commit e5252075686cc57d946dc3feb141fb4d44e32054
Author: Markus Voggenreiter <address@hidden>
AuthorDate: Sat Dec 7 18:37:43 2019 +0100
JWT Parsing API
---
src/reclaim/json_reclaim.c | 2 +-
src/reclaim/plugin_rest_reclaim.c | 76 +++++++++++++++++++++++++++++++++++++++
2 files changed, 77 insertions(+), 1 deletion(-)
diff --git a/src/reclaim/json_reclaim.c b/src/reclaim/json_reclaim.c
index 775ab58d6..a464a9088 100644
--- a/src/reclaim/json_reclaim.c
+++ b/src/reclaim/json_reclaim.c
@@ -322,7 +322,7 @@ parse_attest (void *cls, json_t *root, struct
GNUNET_JSON_Specification *spec)
(void **) &data,
&data_size)))
{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Attribute value invalid!\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Attestation value invalid!\n");
return GNUNET_SYSERR;
}
attr = GNUNET_RECLAIM_ATTESTATION_claim_new (name_str, type, data,
data_size);
diff --git a/src/reclaim/plugin_rest_reclaim.c
b/src/reclaim/plugin_rest_reclaim.c
index a495c5e85..dcda75b65 100644
--- a/src/reclaim/plugin_rest_reclaim.c
+++ b/src/reclaim/plugin_rest_reclaim.c
@@ -534,6 +534,69 @@ add_attestation_ref_cont (struct GNUNET_REST_RequestHandle
*con_handle,
GNUNET_JSON_parse_free (attrspec);
}
+static void
+parse_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
+ const char *url,
+ void *cls)
+{
+ struct RequestHandle *handle = cls;
+
+ char term_data[handle->rest_handle->data_size + 1];
+ json_t *data_json;
+ json_error_t err;
+ int unpack_state;
+ struct MHD_Response *resp;
+ char *val_str = NULL;
+ const char *type_str = NULL;
+ term_data[handle->rest_handle->data_size] = '\0';
+ GNUNET_memcpy (term_data,
+ handle->rest_handle->data,
+ handle->rest_handle->data_size);
+ data_json = json_loads (term_data, JSON_DECODE_ANY, &err);
+ GNUNET_assert (NULL != data_json);
+ if (! json_is_object (data_json))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Error json is not array nor object!\n");
+ GNUNET_SCHEDULER_add_now (&do_error, handle);
+ return;
+ }
+ unpack_state = json_unpack (data_json,
+ "{s:s, s:s!}",
+ "value",
+ &val_str,
+ "type",
+ &type_str);
+ if ((0 != unpack_state) || (NULL == val_str) || (NULL == type_str))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Error json object has a wrong format!\n");
+ GNUNET_SCHEDULER_add_now (&do_error, handle);
+ return;
+ }
+ if (0 == strcmp (type_str, "JWT"))
+ {
+ // The value is a JWT
+ char *decoded_jwt;
+ char delim[] = ".";
+ char *jwt_body = strtok (val_str, delim);
+ jwt_body = strtok (NULL, delim);
+ GNUNET_STRINGS_base64_decode (jwt_body, strlen (jwt_body),
+ (void **) &decoded_jwt);
+ resp = GNUNET_REST_create_response (decoded_jwt);
+ handle->proc (handle->proc_cls, resp, MHD_HTTP_OK);
+ GNUNET_free (decoded_jwt);
+ }
+ else
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Error requested parsing type not supported!\n");
+ GNUNET_SCHEDULER_add_now (&do_error, handle);
+ return;
+ }
+ cleanup_handle (handle);
+ json_decref (data_json);
+}
static void
add_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
@@ -554,6 +617,19 @@ add_attestation_cont (struct GNUNET_REST_RequestHandle
*con_handle,
return;
}
}
+ /* Check for substring "parse" */
+ if (strlen (GNUNET_REST_API_NS_RECLAIM_ATTESTATION_REFERENCE) < strlen (
+ handle->url))
+ {
+ if ( strncmp ("parse", (handle->url + strlen (
+ GNUNET_REST_API_NS_RECLAIM_ATTESTATION_REFERENCE)
+ + 1), strlen (
+ "parse")) == 0)
+ {
+ parse_attestation_cont (con_handle,url,cls);
+ return;
+ }
+ }
const struct GNUNET_CRYPTO_EcdsaPrivateKey *identity_priv;
const char *identity;
struct EgoEntry *ego_entry;
--
To stop receiving notification emails like this one, please contact
address@hidden.
- [gnunet] 16/25: Listing of References with Attributes, (continued)
- [gnunet] 16/25: Listing of References with Attributes, gnunet, 2020/01/13
- [gnunet] 17/25: Pure Listing of References, gnunet, 2020/01/13
- [gnunet] 15/25: Prepared Listing of References, gnunet, 2020/01/13
- [gnunet] 18/25: Prepared JWT Plugin, gnunet, 2020/01/13
- [gnunet] 20/25: JWT Plugin, Prepared Ticketing, gnunet, 2020/01/13
- [gnunet] 22/25: JWT Parser Implemented, gnunet, 2020/01/13
- [gnunet] 19/25: Fixed Open Issues with Listing, gnunet, 2020/01/13
- [gnunet] 23/25: Fixed Adding Attestations, gnunet, 2020/01/13
- [gnunet] 24/25: Fixed Ticket Management, gnunet, 2020/01/13
- [gnunet] 21/25: Basic Functionality Implemented, gnunet, 2020/01/13
- [gnunet] 25/25: JWT Parsing API,
gnunet <=