indentation and minor updates to reflect latest API docs
This commit is contained in:
parent
42147c2501
commit
80b29ed2ae
@ -24,11 +24,13 @@
|
||||
|
||||
/**
|
||||
* @brief Number of characters (plus 1 for 0-termination) we use to
|
||||
* represent currency names (i.e. EUR, USD, etc.). We use
|
||||
* 4 for alignment as 3 characters are typical and we need a
|
||||
* 0-terminator. So do not change this.
|
||||
* represent currency names (i.e. EUR, USD, etc.). We use 8+4 for
|
||||
* alignment in the `struct TALER_Amount`. The amount is typically an
|
||||
* ISO 4217 currency code when an alpha-numeric 3-digit code is used.
|
||||
* For regional currencies, the first character should be a "*" followed
|
||||
* by a region-specific name (i.e. "*BRETAGNEFR").
|
||||
*/
|
||||
#define TALER_CURRENCY_LEN 4
|
||||
#define TALER_CURRENCY_LEN 12
|
||||
|
||||
/**
|
||||
* @brief The "fraction" value in a `struct TALER_Amount` represents which
|
||||
|
@ -186,7 +186,7 @@ TMH_DB_execute_deposit (struct MHD_Connection *connection,
|
||||
{
|
||||
TALER_LOG_WARNING ("Failed to store /deposit information in database\n");
|
||||
TMH_plugin->rollback (TMH_plugin->cls,
|
||||
session);
|
||||
session);
|
||||
return TMH_RESPONSE_reply_internal_db_error (connection);
|
||||
}
|
||||
|
||||
@ -218,30 +218,31 @@ TMH_DB_execute_deposit (struct MHD_Connection *connection,
|
||||
*/
|
||||
int
|
||||
TMH_DB_execute_withdraw_status (struct MHD_Connection *connection,
|
||||
const struct TALER_ReservePublicKeyP *reserve_pub)
|
||||
const struct TALER_ReservePublicKeyP *reserve_pub)
|
||||
{
|
||||
struct TALER_MINTDB_Session *session;
|
||||
struct TALER_MINTDB_ReserveHistory *rh;
|
||||
int res;
|
||||
|
||||
if (NULL == (session = TMH_plugin->get_session (TMH_plugin->cls,
|
||||
GNUNET_NO)))
|
||||
GNUNET_NO)))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
return TMH_RESPONSE_reply_internal_db_error (connection);
|
||||
}
|
||||
rh = TMH_plugin->get_reserve_history (TMH_plugin->cls,
|
||||
session,
|
||||
reserve_pub);
|
||||
session,
|
||||
reserve_pub);
|
||||
if (NULL == rh)
|
||||
return TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_NOT_FOUND,
|
||||
"{s:s}",
|
||||
"error", "Reserve not found");
|
||||
MHD_HTTP_NOT_FOUND,
|
||||
"{s:s, s:s}",
|
||||
"error", "Reserve not found",
|
||||
"parameter", "withdraw_pub");
|
||||
res = TMH_RESPONSE_reply_withdraw_status_success (connection,
|
||||
rh);
|
||||
rh);
|
||||
TMH_plugin->free_reserve_history (TMH_plugin->cls,
|
||||
rh);
|
||||
rh);
|
||||
return res;
|
||||
}
|
||||
|
||||
@ -262,11 +263,11 @@ TMH_DB_execute_withdraw_status (struct MHD_Connection *connection,
|
||||
*/
|
||||
int
|
||||
TMH_DB_execute_withdraw_sign (struct MHD_Connection *connection,
|
||||
const struct TALER_ReservePublicKeyP *reserve,
|
||||
const struct TALER_DenominationPublicKey *denomination_pub,
|
||||
const char *blinded_msg,
|
||||
size_t blinded_msg_len,
|
||||
const struct TALER_ReserveSignatureP *signature)
|
||||
const struct TALER_ReservePublicKeyP *reserve,
|
||||
const struct TALER_DenominationPublicKey *denomination_pub,
|
||||
const char *blinded_msg,
|
||||
size_t blinded_msg_len,
|
||||
const struct TALER_ReserveSignatureP *signature)
|
||||
{
|
||||
struct TALER_MINTDB_Session *session;
|
||||
struct TALER_MINTDB_ReserveHistory *rh;
|
||||
@ -290,15 +291,15 @@ TMH_DB_execute_withdraw_sign (struct MHD_Connection *connection,
|
||||
&h_blind);
|
||||
|
||||
if (NULL == (session = TMH_plugin->get_session (TMH_plugin->cls,
|
||||
GNUNET_NO)))
|
||||
GNUNET_NO)))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
return TMH_RESPONSE_reply_internal_db_error (connection);
|
||||
}
|
||||
res = TMH_plugin->get_collectable_blindcoin (TMH_plugin->cls,
|
||||
session,
|
||||
&h_blind,
|
||||
&collectable);
|
||||
session,
|
||||
&h_blind,
|
||||
&collectable);
|
||||
if (GNUNET_SYSERR == res)
|
||||
{
|
||||
GNUNET_break (0);
|
||||
@ -319,15 +320,15 @@ TMH_DB_execute_withdraw_sign (struct MHD_Connection *connection,
|
||||
/* Check if balance is sufficient */
|
||||
key_state = TMH_KS_acquire ();
|
||||
dki = TMH_KS_denomination_key_lookup (key_state,
|
||||
denomination_pub);
|
||||
denomination_pub);
|
||||
if (NULL == dki)
|
||||
{
|
||||
TMH_KS_release (key_state);
|
||||
return TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_NOT_FOUND,
|
||||
"{s:s}",
|
||||
"error",
|
||||
"Denomination not found");
|
||||
MHD_HTTP_NOT_FOUND,
|
||||
"{s:s}",
|
||||
"error",
|
||||
"Denomination not found");
|
||||
}
|
||||
if (GNUNET_OK !=
|
||||
TMH_plugin->start (TMH_plugin->cls,
|
||||
@ -339,18 +340,15 @@ TMH_DB_execute_withdraw_sign (struct MHD_Connection *connection,
|
||||
}
|
||||
|
||||
rh = TMH_plugin->get_reserve_history (TMH_plugin->cls,
|
||||
session,
|
||||
reserve);
|
||||
session,
|
||||
reserve);
|
||||
if (NULL == rh)
|
||||
{
|
||||
TMH_plugin->rollback (TMH_plugin->cls,
|
||||
session);
|
||||
TMH_KS_release (key_state);
|
||||
return TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_NOT_FOUND,
|
||||
"{s:s}",
|
||||
"error",
|
||||
"Reserve not found");
|
||||
return TMH_RESPONSE_reply_arg_unknown (connection,
|
||||
"reserve_pub");
|
||||
}
|
||||
|
||||
/* calculate amount required including fees */
|
||||
@ -386,7 +384,7 @@ TMH_DB_execute_withdraw_sign (struct MHD_Connection *connection,
|
||||
&pos->details.bank->amount))
|
||||
{
|
||||
TMH_plugin->rollback (TMH_plugin->cls,
|
||||
session);
|
||||
session);
|
||||
TMH_KS_release (key_state);
|
||||
return TMH_RESPONSE_reply_internal_db_error (connection);
|
||||
}
|
||||
@ -394,7 +392,7 @@ TMH_DB_execute_withdraw_sign (struct MHD_Connection *connection,
|
||||
break;
|
||||
case TALER_MINTDB_RO_WITHDRAW_COIN:
|
||||
tdki = TMH_KS_denomination_key_lookup (key_state,
|
||||
&pos->details.withdraw->denom_pub);
|
||||
&pos->details.withdraw->denom_pub);
|
||||
TALER_amount_ntoh (&value,
|
||||
&tdki->issue.value);
|
||||
if (0 == (res & 2))
|
||||
@ -406,7 +404,7 @@ TMH_DB_execute_withdraw_sign (struct MHD_Connection *connection,
|
||||
&value))
|
||||
{
|
||||
TMH_plugin->rollback (TMH_plugin->cls,
|
||||
session);
|
||||
session);
|
||||
TMH_KS_release (key_state);
|
||||
return TMH_RESPONSE_reply_internal_db_error (connection);
|
||||
}
|
||||
@ -426,13 +424,13 @@ TMH_DB_execute_withdraw_sign (struct MHD_Connection *connection,
|
||||
TMH_plugin->rollback (TMH_plugin->cls,
|
||||
session);
|
||||
res = TMH_RESPONSE_reply_withdraw_sign_insufficient_funds (connection,
|
||||
rh);
|
||||
rh);
|
||||
TMH_plugin->free_reserve_history (TMH_plugin->cls,
|
||||
rh);
|
||||
rh);
|
||||
return res;
|
||||
}
|
||||
TMH_plugin->free_reserve_history (TMH_plugin->cls,
|
||||
rh);
|
||||
rh);
|
||||
|
||||
/* Balance is good, sign the coin! */
|
||||
sig = GNUNET_CRYPTO_rsa_sign (dki->denom_priv.rsa_private_key,
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
This file is part of TALER
|
||||
Copyright (C) 2014 GNUnet e.V.
|
||||
Copyright (C) 2014, 2015 GNUnet e.V.
|
||||
|
||||
TALER is free software; you can redistribute it and/or modify it under the
|
||||
terms of the GNU Affero General Public License as published by the Free Software
|
||||
@ -23,8 +23,8 @@
|
||||
* @author Christian Grothoff
|
||||
*
|
||||
* TODO:
|
||||
* - missing 'wire' format check (well-formed SEPA-details)
|
||||
* - ugliy if-construction for deposit type
|
||||
* - missing 'wire' format check (well-formed SEPA-details) (#3624)
|
||||
* - ugly if-construction for deposit type
|
||||
*/
|
||||
#include "platform.h"
|
||||
#include <gnunet/gnunet_util_lib.h>
|
||||
@ -80,19 +80,19 @@ verify_and_execute_deposit (struct MHD_Connection *connection,
|
||||
&deposit->coin.coin_pub.ecdsa_pub))
|
||||
{
|
||||
TALER_LOG_WARNING ("Invalid signature on /deposit request\n");
|
||||
return TMH_RESPONSE_reply_arg_invalid (connection,
|
||||
"csig");
|
||||
return TMH_RESPONSE_reply_signature_invalid (connection,
|
||||
"coin_sig");
|
||||
}
|
||||
/* check denomination exists and is valid */
|
||||
key_state = TMH_KS_acquire ();
|
||||
dki = TMH_KS_denomination_key_lookup (key_state,
|
||||
&deposit->coin.denom_pub);
|
||||
&deposit->coin.denom_pub);
|
||||
if (NULL == dki)
|
||||
{
|
||||
TMH_KS_release (key_state);
|
||||
TALER_LOG_WARNING ("Unknown denomination key in /deposit request\n");
|
||||
return TMH_RESPONSE_reply_arg_invalid (connection,
|
||||
"denom_pub");
|
||||
return TMH_RESPONSE_reply_arg_unknown (connection,
|
||||
"denom_pub");
|
||||
}
|
||||
/* check coin signature */
|
||||
if (GNUNET_YES !=
|
||||
@ -100,7 +100,8 @@ verify_and_execute_deposit (struct MHD_Connection *connection,
|
||||
{
|
||||
TALER_LOG_WARNING ("Invalid coin passed for /deposit\n");
|
||||
TMH_KS_release (key_state);
|
||||
return TMH_RESPONSE_reply_coin_invalid (connection);
|
||||
return TMH_RESPONSE_reply_signature_invalid (connection,
|
||||
"ub_sig");
|
||||
}
|
||||
TALER_amount_ntoh (&fee_deposit,
|
||||
&dki->issue.fee_deposit);
|
||||
@ -110,7 +111,7 @@ verify_and_execute_deposit (struct MHD_Connection *connection,
|
||||
TMH_KS_release (key_state);
|
||||
return (MHD_YES ==
|
||||
TMH_RESPONSE_reply_external_error (connection,
|
||||
"deposited amount smaller than depositing fee"))
|
||||
"deposited amount smaller than depositing fee"))
|
||||
? GNUNET_NO : GNUNET_SYSERR;
|
||||
}
|
||||
TMH_KS_release (key_state);
|
||||
@ -145,12 +146,12 @@ parse_and_handle_deposit_request (struct MHD_Connection *connection,
|
||||
struct TMH_KS_StateHandle *ks;
|
||||
struct TMH_PARSE_FieldSpecification spec[] = {
|
||||
TMH_PARSE_MEMBER_DENOMINATION_PUBLIC_KEY ("denom_pub", &deposit.coin.denom_pub),
|
||||
TMH_PARSE_MEMBER_DENOMINATION_SIGNATURE ("ubsig", &deposit.coin.denom_sig),
|
||||
TMH_PARSE_MEMBER_DENOMINATION_SIGNATURE ("ub_sig", &deposit.coin.denom_sig),
|
||||
TMH_PARSE_MEMBER_FIXED ("coin_pub", &deposit.coin.coin_pub),
|
||||
TMH_PARSE_MEMBER_FIXED ("merchant_pub", &deposit.merchant_pub),
|
||||
TMH_PARSE_MEMBER_FIXED ("H_a", &deposit.h_contract),
|
||||
TMH_PARSE_MEMBER_FIXED ("H_contract", &deposit.h_contract),
|
||||
TMH_PARSE_MEMBER_FIXED ("H_wire", &deposit.h_wire),
|
||||
TMH_PARSE_MEMBER_FIXED ("csig", &deposit.csig),
|
||||
TMH_PARSE_MEMBER_FIXED ("coin_sig", &deposit.csig),
|
||||
TMH_PARSE_MEMBER_FIXED ("transaction_id", &deposit.transaction_id),
|
||||
TMH_PARSE_MEMBER_TIME_ABS ("timestamp", &deposit.timestamp),
|
||||
TMH_PARSE_MEMBER_TIME_ABS ("refund_deadline", &deposit.refund_deadline),
|
||||
@ -170,7 +171,7 @@ parse_and_handle_deposit_request (struct MHD_Connection *connection,
|
||||
wire))
|
||||
{
|
||||
TMH_PARSE_release_data (spec);
|
||||
return TMH_RESPONSE_reply_arg_invalid (connection,
|
||||
return TMH_RESPONSE_reply_arg_unknown (connection,
|
||||
"wire");
|
||||
}
|
||||
if (NULL == (wire_enc = json_dumps (wire, JSON_COMPACT | JSON_SORT_KEYS)))
|
||||
@ -192,7 +193,7 @@ parse_and_handle_deposit_request (struct MHD_Connection *connection,
|
||||
{
|
||||
TMH_KS_release (ks);
|
||||
TMH_PARSE_release_data (spec);
|
||||
return TMH_RESPONSE_reply_arg_invalid (connection,
|
||||
return TMH_RESPONSE_reply_arg_unknown (connection,
|
||||
"denom_pub");
|
||||
}
|
||||
TALER_amount_ntoh (&deposit.deposit_fee,
|
||||
|
@ -406,18 +406,18 @@ TMH_KS_acquire (void)
|
||||
GNUNET_NO);
|
||||
key_state->reload_time = GNUNET_TIME_absolute_get ();
|
||||
TALER_MINTDB_denomination_keys_iterate (TMH_mint_directory,
|
||||
&reload_keys_denom_iter,
|
||||
key_state);
|
||||
&reload_keys_denom_iter,
|
||||
key_state);
|
||||
TALER_MINTDB_signing_keys_iterate (TMH_mint_directory,
|
||||
&reload_keys_sign_iter,
|
||||
key_state);
|
||||
&reload_keys_sign_iter,
|
||||
key_state);
|
||||
key_state->next_reload = GNUNET_TIME_absolute_ntoh (key_state->current_sign_key_issue.issue.expire);
|
||||
if (0 == key_state->next_reload.abs_value_us)
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||
"No valid signing key found!\n");
|
||||
|
||||
keys = json_pack ("{s:o, s:o, s:o, s:o}",
|
||||
"TMH_master_public_key",
|
||||
"master_public_key",
|
||||
TALER_json_from_data (&TMH_master_public_key,
|
||||
sizeof (struct GNUNET_CRYPTO_EddsaPublicKey)),
|
||||
"signkeys", key_state->sign_keys_array,
|
||||
@ -436,8 +436,8 @@ TMH_KS_acquire (void)
|
||||
&sig);
|
||||
keys = json_pack ("{s:o, s:o}",
|
||||
"keys", keys,
|
||||
"eddsa-signature", TALER_json_from_eddsa_sig (&ks.purpose,
|
||||
&sig.eddsa_signature));
|
||||
"eddsa_sig", TALER_json_from_eddsa_sig (&ks.purpose,
|
||||
&sig.eddsa_signature));
|
||||
key_state->keys_json = json_dumps (keys,
|
||||
JSON_INDENT (2));
|
||||
json_decref (keys);
|
||||
|
@ -276,9 +276,9 @@ TMH_PARSE_post_cleanup_callback (void *con_cls)
|
||||
*/
|
||||
int
|
||||
TMH_PARSE_mhd_request_arg_data (struct MHD_Connection *connection,
|
||||
const char *param_name,
|
||||
void *out_data,
|
||||
size_t out_size)
|
||||
const char *param_name,
|
||||
void *out_data,
|
||||
size_t out_size)
|
||||
{
|
||||
const char *str;
|
||||
|
||||
@ -406,14 +406,11 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,
|
||||
{
|
||||
ret = (MHD_YES ==
|
||||
TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:s, s:o}",
|
||||
"error",
|
||||
"missing field in JSON",
|
||||
"field",
|
||||
fname,
|
||||
"path",
|
||||
path))
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:s, s:o}",
|
||||
"error", "missing field in JSON",
|
||||
"field", fname,
|
||||
"path", path))
|
||||
? GNUNET_NO : GNUNET_SYSERR;
|
||||
break;
|
||||
}
|
||||
@ -432,11 +429,10 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,
|
||||
{
|
||||
ret = (MHD_YES ==
|
||||
TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:o}",
|
||||
"error",
|
||||
"missing index in JSON",
|
||||
"path", path))
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:o}",
|
||||
"error", "missing index in JSON",
|
||||
"path", path))
|
||||
? GNUNET_NO : GNUNET_SYSERR;
|
||||
break;
|
||||
}
|
||||
@ -458,10 +454,8 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,
|
||||
TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:o}",
|
||||
"error",
|
||||
"string expected",
|
||||
"path",
|
||||
path))
|
||||
"error", "string expected",
|
||||
"path", path))
|
||||
? GNUNET_NO : GNUNET_SYSERR;
|
||||
break;
|
||||
}
|
||||
@ -471,12 +465,10 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,
|
||||
{
|
||||
ret = (MHD_YES ==
|
||||
TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:o}",
|
||||
"error",
|
||||
"malformed binary data in JSON",
|
||||
"path",
|
||||
path))
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:o}",
|
||||
"error", "malformed binary data in JSON",
|
||||
"path", path))
|
||||
? GNUNET_NO : GNUNET_SYSERR;
|
||||
break;
|
||||
}
|
||||
@ -517,11 +509,10 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,
|
||||
*len = 0;
|
||||
ret = (MHD_YES ==
|
||||
TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:o}",
|
||||
"error",
|
||||
"malformed binary data in JSON",
|
||||
"path", path))
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:o}",
|
||||
"error", "malformed binary data in JSON",
|
||||
"path", path))
|
||||
? GNUNET_NO : GNUNET_SYSERR;
|
||||
break;
|
||||
}
|
||||
@ -539,12 +530,12 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,
|
||||
{
|
||||
ret = (MHD_YES ==
|
||||
TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:i, s:i, s:o}",
|
||||
"error", "wrong JSON field type",
|
||||
"type_expected", typ,
|
||||
"type_actual", json_typeof (root),
|
||||
"path", path))
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:i, s:i, s:o}",
|
||||
"error", "wrong JSON field type",
|
||||
"type_expected", typ,
|
||||
"type_actual", json_typeof (root),
|
||||
"path", path))
|
||||
? GNUNET_NO : GNUNET_SYSERR;
|
||||
break;
|
||||
}
|
||||
@ -570,10 +561,8 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,
|
||||
TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:o}",
|
||||
"error",
|
||||
"string expected",
|
||||
"path",
|
||||
path))
|
||||
"error", "string expected",
|
||||
"path", path))
|
||||
? GNUNET_NO : GNUNET_SYSERR;
|
||||
break;
|
||||
}
|
||||
@ -590,10 +579,8 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,
|
||||
TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:o}",
|
||||
"error",
|
||||
"malformed binary data in JSON",
|
||||
"path",
|
||||
path))
|
||||
"error", "malformed binary data in JSON",
|
||||
"path", path))
|
||||
? GNUNET_NO : GNUNET_SYSERR;
|
||||
break;
|
||||
}
|
||||
@ -606,10 +593,8 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,
|
||||
TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:o}",
|
||||
"error",
|
||||
"malformed RSA public key in JSON",
|
||||
"path",
|
||||
path))
|
||||
"error", "malformed RSA public key in JSON",
|
||||
"path", path))
|
||||
? GNUNET_NO : GNUNET_SYSERR;
|
||||
break;
|
||||
}
|
||||
@ -634,10 +619,8 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,
|
||||
TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:o}",
|
||||
"error",
|
||||
"string expected",
|
||||
"path",
|
||||
path))
|
||||
"error", "string expected",
|
||||
"path", path))
|
||||
? GNUNET_NO : GNUNET_SYSERR;
|
||||
break;
|
||||
}
|
||||
@ -654,10 +637,8 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,
|
||||
TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:o}",
|
||||
"error",
|
||||
"malformed binary data in JSON",
|
||||
"path",
|
||||
path))
|
||||
"error", "malformed binary data in JSON",
|
||||
"path", path))
|
||||
? GNUNET_NO : GNUNET_SYSERR;
|
||||
break;
|
||||
}
|
||||
@ -670,10 +651,8 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,
|
||||
TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:o}",
|
||||
"error",
|
||||
"malformed RSA signature in JSON",
|
||||
"path",
|
||||
path))
|
||||
"error", "malformed RSA signature in JSON",
|
||||
"path", path))
|
||||
? GNUNET_NO : GNUNET_SYSERR;
|
||||
break;
|
||||
}
|
||||
|
@ -139,9 +139,9 @@ handle_refresh_melt_binary (struct MHD_Connection *connection,
|
||||
/* We require total value of coins being melted and
|
||||
total value of coins being generated to match! */
|
||||
return TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s}",
|
||||
"error", "value mismatch");
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s}",
|
||||
"error", "value mismatch");
|
||||
}
|
||||
return TMH_DB_execute_refresh_melt (connection,
|
||||
session_hash,
|
||||
|
@ -39,8 +39,8 @@
|
||||
*/
|
||||
int
|
||||
TMH_RESPONSE_reply_json (struct MHD_Connection *connection,
|
||||
const json_t *json,
|
||||
unsigned int response_code)
|
||||
const json_t *json,
|
||||
unsigned int response_code)
|
||||
{
|
||||
struct MHD_Response *resp;
|
||||
char *json_str;
|
||||
@ -72,9 +72,9 @@ TMH_RESPONSE_reply_json (struct MHD_Connection *connection,
|
||||
*/
|
||||
int
|
||||
TMH_RESPONSE_reply_json_pack (struct MHD_Connection *connection,
|
||||
unsigned int response_code,
|
||||
const char *fmt,
|
||||
...)
|
||||
unsigned int response_code,
|
||||
const char *fmt,
|
||||
...)
|
||||
{
|
||||
json_t *json;
|
||||
va_list argp;
|
||||
@ -86,8 +86,8 @@ TMH_RESPONSE_reply_json_pack (struct MHD_Connection *connection,
|
||||
if (NULL == json)
|
||||
return MHD_NO;
|
||||
ret = TMH_RESPONSE_reply_json (connection,
|
||||
json,
|
||||
response_code);
|
||||
json,
|
||||
response_code);
|
||||
json_decref (json);
|
||||
return ret;
|
||||
}
|
||||
@ -102,33 +102,53 @@ TMH_RESPONSE_reply_json_pack (struct MHD_Connection *connection,
|
||||
*/
|
||||
int
|
||||
TMH_RESPONSE_reply_arg_invalid (struct MHD_Connection *connection,
|
||||
const char *param_name)
|
||||
const char *param_name)
|
||||
{
|
||||
return TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:s}",
|
||||
"error", "invalid parameter",
|
||||
"parameter", param_name);
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:s}",
|
||||
"error", "invalid parameter",
|
||||
"parameter", param_name);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Send a response indicating an invalid coin. (I.e. the signature
|
||||
* over the public key of the coin does not match a valid signing key
|
||||
* of this mint).
|
||||
* Send a response indicating an argument refering to a
|
||||
* resource unknown to the mint (i.e. unknown reserve or
|
||||
* denomination key).
|
||||
*
|
||||
* @param connection the MHD connection to use
|
||||
* @return MHD result code
|
||||
* @param param_name the parameter that is invalid
|
||||
* @return a MHD result code
|
||||
*/
|
||||
int
|
||||
TMH_RESPONSE_reply_coin_invalid (struct MHD_Connection *connection)
|
||||
TMH_RESPONSE_reply_arg_unknown (struct MHD_Connection *connection,
|
||||
const char *param_name)
|
||||
{
|
||||
/* TODO: may want to be more precise in the future and
|
||||
distinguish bogus signatures from bogus public keys. */
|
||||
return TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_NOT_FOUND,
|
||||
"{s:s}",
|
||||
"error", "Coin is not valid");
|
||||
MHD_HTTP_NOT_FOUND,
|
||||
"{s:s, s:s}",
|
||||
"error", "unknown entity referenced",
|
||||
"parameter", param_name);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Send a response indicating an invalid signature.
|
||||
*
|
||||
* @param connection the MHD connection to use
|
||||
* @param param_name the parameter that is invalid
|
||||
* @return a MHD result code
|
||||
*/
|
||||
int
|
||||
TMH_RESPONSE_reply_signature_invalid (struct MHD_Connection *connection,
|
||||
const char *param_name)
|
||||
{
|
||||
return TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_UNAUTHORIZED,
|
||||
"{s:s, s:s}",
|
||||
"error", "invalid signature",
|
||||
"parameter", param_name);
|
||||
}
|
||||
|
||||
|
||||
@ -141,13 +161,13 @@ TMH_RESPONSE_reply_coin_invalid (struct MHD_Connection *connection)
|
||||
*/
|
||||
int
|
||||
TMH_RESPONSE_reply_arg_missing (struct MHD_Connection *connection,
|
||||
const char *param_name)
|
||||
const char *param_name)
|
||||
{
|
||||
return TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{ s:s, s:s}",
|
||||
"error", "missing parameter",
|
||||
"parameter", param_name);
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{ s:s, s:s}",
|
||||
"error", "missing parameter",
|
||||
"parameter", param_name);
|
||||
}
|
||||
|
||||
|
||||
@ -160,13 +180,13 @@ TMH_RESPONSE_reply_arg_missing (struct MHD_Connection *connection,
|
||||
*/
|
||||
int
|
||||
TMH_RESPONSE_reply_internal_error (struct MHD_Connection *connection,
|
||||
const char *hint)
|
||||
const char *hint)
|
||||
{
|
||||
return TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:s}",
|
||||
"error", "internal error",
|
||||
"hint", hint);
|
||||
MHD_HTTP_INTERNAL_SERVER_ERROR,
|
||||
"{s:s, s:s}",
|
||||
"error", "internal error",
|
||||
"hint", hint);
|
||||
}
|
||||
|
||||
|
||||
@ -256,10 +276,10 @@ int
|
||||
TMH_RESPONSE_reply_invalid_json (struct MHD_Connection *connection)
|
||||
{
|
||||
return TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s}",
|
||||
"error",
|
||||
"invalid json");
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s}",
|
||||
"error",
|
||||
"invalid json");
|
||||
}
|
||||
|
||||
|
||||
@ -312,10 +332,10 @@ TMH_RESPONSE_reply_deposit_success (struct MHD_Connection *connection,
|
||||
sig_json = TALER_json_from_eddsa_sig (&dc.purpose,
|
||||
&sig.eddsa_signature);
|
||||
ret = TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_OK,
|
||||
"{s:s, s:o}",
|
||||
"status", "DEPOSIT_OK",
|
||||
"signature", sig_json);
|
||||
MHD_HTTP_OK,
|
||||
"{s:s, s:o}",
|
||||
"status", "DEPOSIT_OK",
|
||||
"signature", sig_json);
|
||||
json_decref (sig_json);
|
||||
return ret;
|
||||
}
|
||||
@ -369,7 +389,7 @@ compile_transaction_history (const struct TALER_MINTDB_TransactionList *tl)
|
||||
{
|
||||
struct TALER_RefreshMeltCoinAffirmationPS ms;
|
||||
const struct TALER_MINTDB_RefreshMelt *melt = pos->details.melt;
|
||||
|
||||
t
|
||||
type = "melt";
|
||||
value = melt->amount_with_fee;
|
||||
ms.purpose.purpose = htonl (TALER_SIGNATURE_WALLET_COIN_MELT);
|
||||
@ -493,7 +513,7 @@ compile_reserve_history (const struct TALER_MINTDB_ReserveHistory *rh,
|
||||
case TALER_MINTDB_RO_WITHDRAW_COIN:
|
||||
|
||||
dki = TMH_KS_denomination_key_lookup (key_state,
|
||||
&pos->details.withdraw->denom_pub);
|
||||
&pos->details.withdraw->denom_pub);
|
||||
TALER_amount_ntoh (&value,
|
||||
&dki->issue.value);
|
||||
if (0 == ret)
|
||||
@ -556,7 +576,7 @@ compile_reserve_history (const struct TALER_MINTDB_ReserveHistory *rh,
|
||||
*/
|
||||
int
|
||||
TMH_RESPONSE_reply_withdraw_status_success (struct MHD_Connection *connection,
|
||||
const struct TALER_MINTDB_ReserveHistory *rh)
|
||||
const struct TALER_MINTDB_ReserveHistory *rh)
|
||||
{
|
||||
json_t *json_balance;
|
||||
json_t *json_history;
|
||||
@ -567,13 +587,13 @@ TMH_RESPONSE_reply_withdraw_status_success (struct MHD_Connection *connection,
|
||||
&balance);
|
||||
if (NULL == json_history)
|
||||
return TMH_RESPONSE_reply_internal_error (connection,
|
||||
"balance calculation failure");
|
||||
"balance calculation failure");
|
||||
json_balance = TALER_json_from_amount (&balance);
|
||||
ret = TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_OK,
|
||||
"{s:o, s:o}",
|
||||
"balance", json_balance,
|
||||
"history", json_history);
|
||||
MHD_HTTP_OK,
|
||||
"{s:o, s:o}",
|
||||
"balance", json_balance,
|
||||
"history", json_history);
|
||||
json_decref (json_history);
|
||||
json_decref (json_balance);
|
||||
return ret;
|
||||
@ -591,7 +611,7 @@ TMH_RESPONSE_reply_withdraw_status_success (struct MHD_Connection *connection,
|
||||
*/
|
||||
int
|
||||
TMH_RESPONSE_reply_withdraw_sign_insufficient_funds (struct MHD_Connection *connection,
|
||||
const struct TALER_MINTDB_ReserveHistory *rh)
|
||||
const struct TALER_MINTDB_ReserveHistory *rh)
|
||||
{
|
||||
json_t *json_balance;
|
||||
json_t *json_history;
|
||||
@ -602,14 +622,14 @@ TMH_RESPONSE_reply_withdraw_sign_insufficient_funds (struct MHD_Connection *conn
|
||||
&balance);
|
||||
if (NULL == json_history)
|
||||
return TMH_RESPONSE_reply_internal_error (connection,
|
||||
"balance calculation failure");
|
||||
"balance calculation failure");
|
||||
json_balance = TALER_json_from_amount (&balance);
|
||||
ret = TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_PAYMENT_REQUIRED,
|
||||
"{s:s, s:o, s:o}",
|
||||
"error", "Insufficient funds"
|
||||
"balance", json_balance,
|
||||
"history", json_history);
|
||||
MHD_HTTP_PAYMENT_REQUIRED,
|
||||
"{s:s, s:o, s:o}",
|
||||
"error", "Insufficient funds"
|
||||
"balance", json_balance,
|
||||
"history", json_history);
|
||||
json_decref (json_history);
|
||||
json_decref (json_balance);
|
||||
return ret;
|
||||
@ -625,16 +645,16 @@ TMH_RESPONSE_reply_withdraw_sign_insufficient_funds (struct MHD_Connection *conn
|
||||
*/
|
||||
int
|
||||
TMH_RESPONSE_reply_withdraw_sign_success (struct MHD_Connection *connection,
|
||||
const struct TALER_MINTDB_CollectableBlindcoin *collectable)
|
||||
const struct TALER_MINTDB_CollectableBlindcoin *collectable)
|
||||
{
|
||||
json_t *sig_json;
|
||||
int ret;
|
||||
|
||||
sig_json = TALER_json_from_rsa_signature (collectable->sig.rsa_signature);
|
||||
ret = TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_OK,
|
||||
"{s:o}",
|
||||
"ev_sig", sig_json);
|
||||
MHD_HTTP_OK,
|
||||
"{s:o}",
|
||||
"ev_sig", sig_json);
|
||||
json_decref (sig_json);
|
||||
return ret;
|
||||
}
|
||||
@ -774,12 +794,12 @@ TMH_RESPONSE_reply_refresh_reveal_missmatch (struct MHD_Connection *connection,
|
||||
const char *missmatch_object)
|
||||
{
|
||||
return TMH_RESPONSE_reply_json_pack (connection,
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:i, s:i, s:s}",
|
||||
"error", "commitment violation",
|
||||
"offset", (int) off,
|
||||
"index", (int) j,
|
||||
"object", missmatch_object);
|
||||
MHD_HTTP_BAD_REQUEST,
|
||||
"{s:s, s:i, s:i, s:s}",
|
||||
"error", "commitment violation",
|
||||
"offset", (int) off,
|
||||
"index", (int) j,
|
||||
"object", missmatch_object);
|
||||
}
|
||||
|
||||
|
||||
|
@ -64,6 +64,18 @@ TMH_RESPONSE_reply_json_pack (struct MHD_Connection *connection,
|
||||
...);
|
||||
|
||||
|
||||
/**
|
||||
* Send a response indicating an invalid signature.
|
||||
*
|
||||
* @param connection the MHD connection to use
|
||||
* @param param_name the parameter that is invalid
|
||||
* @return a MHD result code
|
||||
*/
|
||||
int
|
||||
TMH_RESPONSE_reply_signature_invalid (struct MHD_Connection *connection,
|
||||
const char *param_name);
|
||||
|
||||
|
||||
/**
|
||||
* Send a response indicating an invalid argument.
|
||||
*
|
||||
@ -77,15 +89,17 @@ TMH_RESPONSE_reply_arg_invalid (struct MHD_Connection *connection,
|
||||
|
||||
|
||||
/**
|
||||
* Send a response indicating an invalid coin. (I.e. the signature
|
||||
* over the public key of the coin does not match a valid signing key
|
||||
* of this mint).
|
||||
* Send a response indicating an argument refering to a
|
||||
* resource unknown to the mint (i.e. unknown reserve or
|
||||
* denomination key).
|
||||
*
|
||||
* @param connection the MHD connection to use
|
||||
* @return MHD result code
|
||||
* @param param_name the parameter that is invalid
|
||||
* @return a MHD result code
|
||||
*/
|
||||
int
|
||||
TMH_RESPONSE_reply_coin_invalid (struct MHD_Connection *connection);
|
||||
TMH_RESPONSE_reply_arg_unknown (struct MHD_Connection *connection,
|
||||
const char *param_name);
|
||||
|
||||
|
||||
/**
|
||||
|
@ -61,7 +61,7 @@ TMH_WITHDRAW_handler_withdraw_status (struct TMH_RequestHandler *rh,
|
||||
if (GNUNET_NO == res)
|
||||
return MHD_YES; /* parse error */
|
||||
return TMH_DB_execute_withdraw_status (connection,
|
||||
&reserve_pub);
|
||||
&reserve_pub);
|
||||
}
|
||||
|
||||
|
||||
@ -132,7 +132,7 @@ TMH_WITHDRAW_handler_withdraw_sign (struct TMH_RequestHandler *rh,
|
||||
if (NULL == dki)
|
||||
{
|
||||
TMH_PARSE_release_data (spec);
|
||||
return TMH_RESPONSE_reply_arg_invalid (connection,
|
||||
return TMH_RESPONSE_reply_arg_unknown (connection,
|
||||
"denom_pub");
|
||||
}
|
||||
TALER_amount_ntoh (&amount,
|
||||
@ -165,8 +165,8 @@ TMH_WITHDRAW_handler_withdraw_sign (struct TMH_RequestHandler *rh,
|
||||
{
|
||||
TALER_LOG_WARNING ("Client supplied invalid signature for /withdraw/sign request\n");
|
||||
TMH_PARSE_release_data (spec);
|
||||
return TMH_RESPONSE_reply_arg_invalid (connection,
|
||||
"reserve_sig");
|
||||
return TMH_RESPONSE_reply_signature_invalid (connection,
|
||||
"reserve_sig");
|
||||
}
|
||||
res = TMH_DB_execute_withdraw_sign (connection,
|
||||
&wsrd.reserve_pub,
|
||||
|
@ -84,7 +84,8 @@ TALER_json_from_abs (struct GNUNET_TIME_Absolute stamp)
|
||||
json_t *j;
|
||||
char *mystr;
|
||||
int ret;
|
||||
ret = GNUNET_asprintf (&mystr, "%llu",
|
||||
ret = GNUNET_asprintf (&mystr,
|
||||
"%llu",
|
||||
(long long) (stamp.abs_value_us / (1000 * 1000)));
|
||||
GNUNET_assert (ret > 0);
|
||||
j = json_string (mystr);
|
||||
@ -117,11 +118,11 @@ TALER_json_from_eddsa_sig (const struct GNUNET_CRYPTO_EccSignaturePurpose *purpo
|
||||
|
||||
el = TALER_json_from_data (purpose,
|
||||
ntohl (purpose->size));
|
||||
json_object_set_new (root, "eddsa-val", el);
|
||||
json_object_set_new (root, "eddsa_val", el);
|
||||
|
||||
el = TALER_json_from_data (signature,
|
||||
sizeof (struct GNUNET_CRYPTO_EddsaSignature));
|
||||
json_object_set_new (root, "eddsa-sig", el);
|
||||
json_object_set_new (root, "eddsa_sig", el);
|
||||
|
||||
return root;
|
||||
}
|
||||
@ -151,11 +152,11 @@ TALER_json_from_ecdsa_sig (const struct GNUNET_CRYPTO_EccSignaturePurpose *purpo
|
||||
|
||||
el = TALER_json_from_data (purpose,
|
||||
ntohl (purpose->size));
|
||||
json_object_set_new (root, "ecdsa-val", el);
|
||||
json_object_set_new (root, "ecdsa_val", el);
|
||||
|
||||
el = TALER_json_from_data (signature,
|
||||
sizeof (struct GNUNET_CRYPTO_EddsaSignature));
|
||||
json_object_set_new (root, "ecdsa-sig", el);
|
||||
json_object_set_new (root, "ecdsa_sig", el);
|
||||
|
||||
return root;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user