move /refresh/reveal response generation to taler-mint-httpd_responses.c

This commit is contained in:
Christian Grothoff 2015-01-21 13:38:57 +01:00
parent 4d8f4903db
commit 53a7140a0b
3 changed files with 55 additions and 18 deletions

View File

@ -436,7 +436,7 @@ TALER_MINT_handler_refresh_melt (struct RequestHandler *rh,
denom_pubs, denom_pubs,
coin_count, coin_count,
coin_public_infos); coin_public_infos);
// FIXME: free memory
return res; return res;
} }
@ -696,8 +696,7 @@ helper_refresh_reveal_send_response (struct MHD_Connection *connection,
int res; int res;
int newcoin_index; int newcoin_index;
struct RefreshSession refresh_session; struct RefreshSession refresh_session;
json_t *root; struct TALER_RSA_Signature *sigs;
json_t *list;
res = TALER_MINT_DB_get_refresh_session (db_conn, res = TALER_MINT_DB_get_refresh_session (db_conn,
refresh_session_pub, refresh_session_pub,
@ -710,32 +709,27 @@ helper_refresh_reveal_send_response (struct MHD_Connection *connection,
} }
GNUNET_assert (0 != refresh_session.reveal_ok); GNUNET_assert (0 != refresh_session.reveal_ok);
sigs = GNUNET_malloc (refresh_session.num_newcoins *
root = json_object (); sizeof (struct TALER_RSA_Signature));
list = json_array ();
json_object_set_new (root, "ev_sigs", list);
for (newcoin_index = 0; newcoin_index < refresh_session.num_newcoins; newcoin_index++) for (newcoin_index = 0; newcoin_index < refresh_session.num_newcoins; newcoin_index++)
{ {
struct TALER_RSA_Signature ev_sig;
res = TALER_MINT_DB_get_refresh_collectable (db_conn, res = TALER_MINT_DB_get_refresh_collectable (db_conn,
newcoin_index, newcoin_index,
refresh_session_pub, refresh_session_pub,
&ev_sig); &sigs[newcoin_index]);
if (GNUNET_OK != res) if (GNUNET_OK != res)
{ {
// FIXME: return 'internal error' // FIXME: return 'internal error'
GNUNET_break (0); GNUNET_break (0);
GNUNET_free (sigs);
return MHD_NO; return MHD_NO;
} }
json_array_append_new (list,
TALER_JSON_from_data (&ev_sig,
sizeof (struct TALER_RSA_Signature)));
} }
return TALER_MINT_reply_json (connection, res = TALER_MINT_reply_refresh_reveal_success (connection,
root, refresh_session.num_newcoins,
MHD_HTTP_OK); sigs);
GNUNET_free (sigs);
return res;
} }

View File

@ -362,6 +362,35 @@ TALER_MINT_reply_refresh_commit_success (struct MHD_Connection *connection,
} }
/**
* Send a response for "/refresh/reveal".
*
* @param connection the connection to send the response to
* @param num_newcoins number of new coins for which we reveal data
* @param sigs array of @a num_newcoins signatures revealed
* @return a MHD result code
*/
int
TALER_MINT_reply_refresh_reveal_success (struct MHD_Connection *connection,
unsigned int num_newcoins,
const struct TALER_RSA_Signature *sigs)
{
int newcoin_index;
json_t *root;
json_t *list;
root = json_object ();
list = json_array ();
json_object_set_new (root, "ev_sigs", list);
for (newcoin_index = 0; newcoin_index < num_newcoins; newcoin_index++)
json_array_append_new (list,
TALER_JSON_from_data (&sigs[newcoin_index],
sizeof (struct TALER_RSA_Signature)));
return TALER_MINT_reply_json (connection,
root,
MHD_HTTP_OK);
}

View File

@ -177,7 +177,7 @@ TALER_MINT_reply_refresh_commit_success (struct MHD_Connection *connection,
* Send a response for "/refresh/melt". * Send a response for "/refresh/melt".
* *
* @param connection the connection to send the response to * @param connection the connection to send the response to
* @param db_conn the database connection to fetch values from * @param session session data to generate reply from
* @param session_pub the refresh session public key. * @param session_pub the refresh session public key.
* @return a MHD result code * @return a MHD result code
*/ */
@ -187,5 +187,19 @@ TALER_MINT_reply_refresh_melt_success (struct MHD_Connection *connection,
const struct GNUNET_CRYPTO_EddsaPublicKey *session_pub); const struct GNUNET_CRYPTO_EddsaPublicKey *session_pub);
/**
* Send a response for "/refresh/reveal".
*
* @param connection the connection to send the response to
* @param num_newcoins number of new coins for which we reveal data
* @param sigs array of @a num_newcoins signatures revealed
* @return a MHD result code
*/
int
TALER_MINT_reply_refresh_reveal_success (struct MHD_Connection *connection,
unsigned int num_newcoins,
const struct TALER_RSA_Signature *sigs);
#endif #endif