-cleanup age-withdraw_reveal
This commit is contained in:
parent
70645cbb1b
commit
af1001bc42
@ -116,17 +116,17 @@ handle_age_withdraw_reveal_json (
|
|||||||
error = "denoms_h must not be empty";
|
error = "denoms_h must not be empty";
|
||||||
else if (actx->num_coins != json_array_size (j_coin_evs))
|
else if (actx->num_coins != json_array_size (j_coin_evs))
|
||||||
error = "denoms_h and coins_evs must be arrays of the same size";
|
error = "denoms_h and coins_evs must be arrays of the same size";
|
||||||
|
else if (actx->num_coins > TALER_MAX_FRESH_COINS)
|
||||||
|
/**
|
||||||
|
* The wallet had committed to more than the maximum coins allowed, the
|
||||||
|
* reserve has been charged, but now the user can not withdraw any money
|
||||||
|
* from it. Note that the user can't get their money back in this case!
|
||||||
|
**/
|
||||||
|
error = "maximum number of coins that can be withdrawn has been exceeded";
|
||||||
else if (actx->num_coins * (TALER_CNC_KAPPA - 1)
|
else if (actx->num_coins * (TALER_CNC_KAPPA - 1)
|
||||||
!= json_array_size (j_disclosed_coins))
|
!= json_array_size (j_disclosed_coins))
|
||||||
error = "the size of array disclosed_coins must be "
|
error = "the size of array disclosed_coins must be "
|
||||||
TALER_CNC_KAPPA_MINUS_ONE_STR " times of the size of denoms_h";
|
TALER_CNC_KAPPA_MINUS_ONE_STR " times the size of denoms_h";
|
||||||
else if (actx->num_coins > TALER_MAX_FRESH_COINS)
|
|
||||||
/**
|
|
||||||
* FIXME?: If the user had commited to more than the maximum coins allowed,
|
|
||||||
* the reserve has been charged, but now the user can not withdraw any money
|
|
||||||
* from it. How can the user get their money back?
|
|
||||||
**/
|
|
||||||
error = "maximum number of coins that can be withdrawn has been exceeded";
|
|
||||||
|
|
||||||
if (NULL != error)
|
if (NULL != error)
|
||||||
return TALER_MHD_reply_with_error (connection,
|
return TALER_MHD_reply_with_error (connection,
|
||||||
@ -135,22 +135,23 @@ handle_age_withdraw_reveal_json (
|
|||||||
error);
|
error);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Parse denomination keys */
|
/* Continue parsing the parts */
|
||||||
{
|
{
|
||||||
unsigned int idx;
|
unsigned int idx = 0;
|
||||||
json_t *jh;
|
json_t *value = NULL;
|
||||||
|
|
||||||
|
/* Parse denomination keys */
|
||||||
actx->denoms_h = GNUNET_new_array (actx->num_coins,
|
actx->denoms_h = GNUNET_new_array (actx->num_coins,
|
||||||
struct TALER_DenominationHashP);
|
struct TALER_DenominationHashP);
|
||||||
|
|
||||||
json_array_foreach (j_denoms_h, idx, jh) {
|
json_array_foreach (j_denoms_h, idx, value) {
|
||||||
struct GNUNET_JSON_Specification spec[] = {
|
struct GNUNET_JSON_Specification spec[] = {
|
||||||
GNUNET_JSON_spec_fixed_auto (NULL, &actx->denoms_h[idx]),
|
GNUNET_JSON_spec_fixed_auto (NULL, &actx->denoms_h[idx]),
|
||||||
GNUNET_JSON_spec_end ()
|
GNUNET_JSON_spec_end ()
|
||||||
};
|
};
|
||||||
|
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
GNUNET_JSON_parse (jh, spec, NULL, NULL))
|
GNUNET_JSON_parse (value, spec, NULL, NULL))
|
||||||
{
|
{
|
||||||
char msg[256] = {0};
|
char msg[256] = {0};
|
||||||
GNUNET_snprintf (msg,
|
GNUNET_snprintf (msg,
|
||||||
@ -161,28 +162,22 @@ handle_age_withdraw_reveal_json (
|
|||||||
MHD_HTTP_BAD_REQUEST,
|
MHD_HTTP_BAD_REQUEST,
|
||||||
TALER_EC_GENERIC_PARAMETER_MALFORMED,
|
TALER_EC_GENERIC_PARAMETER_MALFORMED,
|
||||||
msg);
|
msg);
|
||||||
goto EXIT;
|
goto CLEANUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
|
||||||
/* Parse blinded envelopes */
|
|
||||||
{
|
|
||||||
unsigned int idx;
|
|
||||||
json_t *ce;
|
|
||||||
|
|
||||||
|
/* Parse blinded envelopes */
|
||||||
actx->coin_evs = GNUNET_new_array (actx->num_coins,
|
actx->coin_evs = GNUNET_new_array (actx->num_coins,
|
||||||
struct TALER_BlindedCoinHashP);
|
struct TALER_BlindedCoinHashP);
|
||||||
|
|
||||||
json_array_foreach (j_coin_evs, idx, ce) {
|
json_array_foreach (j_coin_evs, idx, value) {
|
||||||
struct GNUNET_JSON_Specification spec[] = {
|
struct GNUNET_JSON_Specification spec[] = {
|
||||||
GNUNET_JSON_spec_fixed_auto (NULL, &actx->coin_evs[idx]),
|
GNUNET_JSON_spec_fixed_auto (NULL, &actx->coin_evs[idx]),
|
||||||
GNUNET_JSON_spec_end ()
|
GNUNET_JSON_spec_end ()
|
||||||
};
|
};
|
||||||
|
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
GNUNET_JSON_parse (ce, spec, NULL, NULL))
|
GNUNET_JSON_parse (value, spec, NULL, NULL))
|
||||||
{
|
{
|
||||||
char msg[256] = {0};
|
char msg[256] = {0};
|
||||||
GNUNET_snprintf (msg,
|
GNUNET_snprintf (msg,
|
||||||
@ -193,28 +188,23 @@ handle_age_withdraw_reveal_json (
|
|||||||
MHD_HTTP_BAD_REQUEST,
|
MHD_HTTP_BAD_REQUEST,
|
||||||
TALER_EC_GENERIC_PARAMETER_MALFORMED,
|
TALER_EC_GENERIC_PARAMETER_MALFORMED,
|
||||||
msg);
|
msg);
|
||||||
goto EXIT;
|
goto CLEANUP;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
|
||||||
/* Parse diclosed keys */
|
|
||||||
{
|
|
||||||
unsigned int idx;
|
|
||||||
json_t *dc;
|
|
||||||
|
|
||||||
|
/* Parse diclosed keys */
|
||||||
actx->disclosed_coins = GNUNET_new_array (
|
actx->disclosed_coins = GNUNET_new_array (
|
||||||
actx->num_coins * (TALER_CNC_KAPPA),
|
actx->num_coins * (TALER_CNC_KAPPA - 1),
|
||||||
struct GNUNET_CRYPTO_EddsaPrivateKey);
|
struct GNUNET_CRYPTO_EddsaPrivateKey);
|
||||||
|
|
||||||
json_array_foreach (j_coin_evs, idx, dc) {
|
json_array_foreach (j_disclosed_coins, idx, value) {
|
||||||
struct GNUNET_JSON_Specification spec[] = {
|
struct GNUNET_JSON_Specification spec[] = {
|
||||||
GNUNET_JSON_spec_fixed_auto (NULL, &actx->disclosed_coins[idx]),
|
GNUNET_JSON_spec_fixed_auto (NULL, &actx->disclosed_coins[idx]),
|
||||||
GNUNET_JSON_spec_end ()
|
GNUNET_JSON_spec_end ()
|
||||||
};
|
};
|
||||||
|
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
GNUNET_JSON_parse (dc, spec, NULL, NULL))
|
GNUNET_JSON_parse (value, spec, NULL, NULL))
|
||||||
{
|
{
|
||||||
char msg[256] = {0};
|
char msg[256] = {0};
|
||||||
GNUNET_snprintf (msg,
|
GNUNET_snprintf (msg,
|
||||||
@ -225,10 +215,9 @@ handle_age_withdraw_reveal_json (
|
|||||||
MHD_HTTP_BAD_REQUEST,
|
MHD_HTTP_BAD_REQUEST,
|
||||||
TALER_EC_GENERIC_PARAMETER_MALFORMED,
|
TALER_EC_GENERIC_PARAMETER_MALFORMED,
|
||||||
msg);
|
msg);
|
||||||
goto EXIT;
|
goto CLEANUP;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO:oec: find commitment */
|
/* TODO:oec: find commitment */
|
||||||
@ -241,8 +230,7 @@ handle_age_withdraw_reveal_json (
|
|||||||
/* TODO:oec: send response */
|
/* TODO:oec: send response */
|
||||||
|
|
||||||
|
|
||||||
/* TODO */
|
CLEANUP:
|
||||||
EXIT:
|
|
||||||
age_reveal_context_free (actx);
|
age_reveal_context_free (actx);
|
||||||
return mhd_ret;
|
return mhd_ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user