*/
/**
* @author Martin Schanzenbach
- * @file gns/plugin_rest_credential.c
+ * @file credential/plugin_rest_credential.c
* @brief GNUnet CREDENTIAL REST plugin
*
*/
if (NULL != handle->subject_attr)
GNUNET_free (handle->subject_attr);
if (NULL != handle->verify_request)
- GNUNET_CREDENTIAL_verify_cancel (handle->verify_request);
+ GNUNET_CREDENTIAL_request_cancel (handle->verify_request);
if (NULL != handle->credential)
GNUNET_CREDENTIAL_disconnect (handle->credential);
if (NULL != handle->id_op)
}
-/**
- * Task run on shutdown. Cleans up everything.
- *
- * @param cls unused
- * @param tc scheduler context
- */
static void
do_error (void *cls)
{
/**
* Attribute delegation to JSON
- * @param attr the attribute
+ *
+ * @param delegation_chain_entry the DSE
* @return JSON, NULL if failed
*/
static json_t*
/**
* JSONAPI resource to Credential
+ *
* @param res the JSONAPI resource
* @return the resulting credential, NULL if failed
*/
sig,
sizeof (struct GNUNET_CRYPTO_EcdsaSignature));
GNUNET_free (sig);
-
+
tmp = json_object_get (res, "expiration");
if (0 == json_is_integer (tmp))
{
GNUNET_free (cred);
return NULL;
}
- cred->expiration.abs_value_us = json_integer_value (tmp);
+ cred->expiration.abs_value_us = json_integer_value (tmp);
return cred;
}
/**
* Credential to JSON
+ *
* @param cred the credential
* @return the resulting json, NULL if failed
*/
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Issuer in credential malformed\n");
return NULL;
- }
+ }
subject = GNUNET_CRYPTO_ecdsa_public_key_to_string (&cred->subject_key);
if (NULL == subject)
{
GNUNET_STRINGS_base64_encode ((char*)&cred->signature,
sizeof (struct GNUNET_CRYPTO_EcdsaSignature),
&signature);
- memcpy (attribute,
- cred->issuer_attribute,
- cred->issuer_attribute_len);
+ GNUNET_memcpy (attribute,
+ cred->issuer_attribute,
+ cred->issuer_attribute_len);
attribute[cred->issuer_attribute_len] = '\0';
cred_obj = json_object ();
json_object_set_new (cred_obj, "issuer", json_string (issuer));
return cred_obj;
}
-/**
- * Function called with the result of a Credential lookup.
- *
- * @param cls the 'const char *' name that was resolved
- * @param cd_count number of records returned
- * @param cd array of @a cd_count records with the results
- */
static void
handle_collect_response (void *cls,
unsigned int d_count,
-/**
- * Function called with the result of a Credential lookup.
- *
- * @param cls the 'const char *' name that was resolved
- * @param cd_count number of records returned
- * @param cd array of @a cd_count records with the results
- */
static void
handle_verify_response (void *cls,
unsigned int d_count,
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Missing issuer attribute\n");
- GNUNET_SCHEDULER_add_now (&do_error, handle);
+ GNUNET_SCHEDULER_add_now (&do_error, handle);
return;
}
tmp = GNUNET_CONTAINER_multihashmap_get (conndata_handle->url_param_map,
GNUNET_SCHEDULER_add_now (&do_error, handle);
return;
}
- if (GNUNET_OK !=
+ if (GNUNET_OK !=
GNUNET_CRYPTO_ecdsa_public_key_from_string (tmp,
strlen (tmp),
&handle->issuer_key))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Missing subject\n");
- GNUNET_free (entity_attr);
GNUNET_SCHEDULER_add_now (&do_error, handle);
return;
}
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Malformed subject\n");
- GNUNET_free (entity_attr);
- GNUNET_SCHEDULER_add_now (&do_error, handle);
+ GNUNET_SCHEDULER_add_now (&do_error, handle);
return;
}
handle->ego_lookup = GNUNET_IDENTITY_ego_lookup (cfg,
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Missing issuer attribute\n");
- GNUNET_SCHEDULER_add_now (&do_error, handle);
+ GNUNET_SCHEDULER_add_now (&do_error, handle);
return;
}
tmp = GNUNET_CONTAINER_multihashmap_get (conndata_handle->url_param_map,
GNUNET_SCHEDULER_add_now (&do_error, handle);
return;
}
- if (GNUNET_OK !=
+ if (GNUNET_OK !=
GNUNET_CRYPTO_ecdsa_public_key_from_string (tmp,
strlen (tmp),
&handle->issuer_key))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Missing subject key\n");
- GNUNET_free (entity_attr);
GNUNET_SCHEDULER_add_now (&do_error, handle);
return;
}
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Malformed subject\n");
- GNUNET_free (entity_attr);
- GNUNET_SCHEDULER_add_now (&do_error, handle);
+ GNUNET_SCHEDULER_add_now (&do_error, handle);
return;
}
if (GNUNET_OK !=
&handle->subject_key)) {
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Malformed subject key\n");
- GNUNET_free (entity_attr);
GNUNET_SCHEDULER_add_now (&do_error, handle);
return;
}
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Subject malformed\n");
+ GNUNET_free (issuer);
return;
}
GNUNET_asprintf (&id,
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Subject malformed\n");
+ GNUNET_free (id);
+ GNUNET_free (issuer);
return;
}
GNUNET_STRINGS_base64_encode ((char*)&cred->signature,
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Missing expiration\n");
- GNUNET_SCHEDULER_add_now (&do_error, handle);
+ GNUNET_SCHEDULER_add_now (&do_error, handle);
return;
}
expiration_str = GNUNET_CONTAINER_multihashmap_get (handle->rest_handle->url_param_map,
&key);
+ if ( NULL == expiration_str )
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Expiration malformed\n");
+ GNUNET_SCHEDULER_add_now (&do_error, handle);
+ return;
+ }
+
if (GNUNET_OK == GNUNET_STRINGS_fancy_time_to_relative (expiration_str,
&etime_rel))
{
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Malformed expiration: %s\n", expiration_str);
- GNUNET_SCHEDULER_add_now (&do_error, handle);
+ GNUNET_SCHEDULER_add_now (&do_error, handle);
return;
}
GNUNET_CRYPTO_hash (GNUNET_REST_JSONAPI_CREDENTIAL_ISSUER_ATTR,
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Missing issuer attribute\n");
- GNUNET_SCHEDULER_add_now (&do_error, handle);
+ GNUNET_SCHEDULER_add_now (&do_error, handle);
return;
}
- handle->issuer_attr = GNUNET_strdup(GNUNET_CONTAINER_multihashmap_get
+ handle->issuer_attr = GNUNET_strdup(GNUNET_CONTAINER_multihashmap_get
(handle->rest_handle->url_param_map,
&key));
GNUNET_CRYPTO_hash (GNUNET_REST_JSONAPI_CREDENTIAL_SUBJECT_KEY,
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Malformed subject\n");
- GNUNET_SCHEDULER_add_now (&do_error, handle);
+ GNUNET_SCHEDULER_add_now (&do_error, handle);
return;
}
if (GNUNET_OK !=
handle);
}
-/**
- * Handle rest request
- *
- * @param handle the lookup handle
- */
static void
options_cont (struct GNUNET_REST_RequestHandle *con_handle,
const char* url,
}
-/**
- * Function processing the REST call
- *
- * @param method HTTP method
- * @param url URL of the HTTP request
- * @param data body of the HTTP request (optional)
- * @param data_size length of the body
- * @param proc callback function for the result
- * @param proc_cls closure for callback function
- * @return GNUNET_OK if request accepted
- */
static void
rest_credential_process_request(struct GNUNET_REST_RequestHandle *conndata_handle,
GNUNET_REST_ResultProcessor proc,