fix use of struct TALER_DepositRequestPS (rest)

This commit is contained in:
Christian Grothoff 2015-03-28 17:18:07 +01:00
parent 15b362373f
commit 3c87b1a0b3
2 changed files with 30 additions and 3 deletions

View File

@ -141,6 +141,8 @@ parse_and_handle_deposit_request (struct MHD_Connection *connection,
struct TALER_MINTDB_Deposit deposit; struct TALER_MINTDB_Deposit deposit;
char *wire_enc; char *wire_enc;
size_t len; size_t len;
struct TALER_MINTDB_DenominationKeyIssueInformation *dki;
struct TMH_KS_StateHandle *ks;
struct TMH_PARSE_FieldSpecification spec[] = { struct TMH_PARSE_FieldSpecification spec[] = {
TMH_PARSE_MEMBER_RSA_PUBLIC_KEY ("denom_pub", &deposit.coin.denom_pub), TMH_PARSE_MEMBER_RSA_PUBLIC_KEY ("denom_pub", &deposit.coin.denom_pub),
TMH_PARSE_MEMBER_RSA_SIGNATURE ("ubsig", &deposit.coin.denom_sig), TMH_PARSE_MEMBER_RSA_SIGNATURE ("ubsig", &deposit.coin.denom_sig),
@ -169,7 +171,7 @@ parse_and_handle_deposit_request (struct MHD_Connection *connection,
{ {
TMH_PARSE_release_data (spec); TMH_PARSE_release_data (spec);
return TMH_RESPONSE_reply_arg_invalid (connection, return TMH_RESPONSE_reply_arg_invalid (connection,
"wire"); "wire");
} }
if (NULL == (wire_enc = json_dumps (wire, JSON_COMPACT | JSON_SORT_KEYS))) if (NULL == (wire_enc = json_dumps (wire, JSON_COMPACT | JSON_SORT_KEYS)))
{ {
@ -183,10 +185,29 @@ parse_and_handle_deposit_request (struct MHD_Connection *connection,
len, len,
&deposit.h_wire); &deposit.h_wire);
GNUNET_free (wire_enc); GNUNET_free (wire_enc);
ks = TMH_KS_acquire ();
dki = TMH_KS_denomination_key_lookup (ks,
&deposit.coin.denom_pub);
if (NULL == dki)
{
TMH_KS_release (ks);
TMH_PARSE_release_data (spec);
return TMH_RESPONSE_reply_arg_invalid (connection,
"denom_pub");
}
TALER_amount_ntoh (&deposit.deposit_fee,
&dki->issue.fee_deposit);
TMH_KS_release (ks);
deposit.wire = wire; deposit.wire = wire;
deposit.amount_with_fee = *amount; deposit.amount_with_fee = *amount;
deposit.deposit_fee = *amount; // FIXME: get fee from denomination key! if (-1 == TALER_amount_cmp (&deposit.amount_with_fee,
&deposit.deposit_fee))
{
/* Total amount smaller than fee, invalid */
TMH_PARSE_release_data (spec);
return TMH_RESPONSE_reply_arg_invalid (connection,
"f");
}
res = verify_and_execute_deposit (connection, res = verify_and_execute_deposit (connection,
&deposit); &deposit);
TMH_PARSE_release_data (spec); TMH_PARSE_release_data (spec);

View File

@ -146,6 +146,12 @@ TMH_WITHDRAW_handler_withdraw_sign (struct TMH_RequestHandler *rh,
ks = TMH_KS_acquire (); ks = TMH_KS_acquire ();
dki = TMH_KS_denomination_key_lookup (ks, dki = TMH_KS_denomination_key_lookup (ks,
&denomination_pub); &denomination_pub);
if (NULL == dki)
{
GNUNET_free (denomination_pub_data);
return TMH_RESPONSE_reply_arg_invalid (connection,
"denom_pub");
}
TALER_amount_ntoh (&amount, TALER_amount_ntoh (&amount,
&dki->issue.value); &dki->issue.value);
TALER_amount_ntoh (&fee_withdraw, TALER_amount_ntoh (&fee_withdraw,