summaryrefslogtreecommitdiff
path: root/src/lib/exchange_api_refreshes_reveal.c
diff options
context:
space:
mode:
authorChristian Grothoff <grothoff@gnunet.org>2022-02-04 22:02:48 +0100
committerChristian Grothoff <grothoff@gnunet.org>2022-02-04 22:02:48 +0100
commitd833966d521e9b836c8c854595671197c64c24f6 (patch)
tree57ba8beda7e0b7025c054e35a7ffc6985f028519 /src/lib/exchange_api_refreshes_reveal.c
parentbd5a25aff2ff6dc0a9115766fa239548f85bf641 (diff)
downloadexchange-d833966d521e9b836c8c854595671197c64c24f6.tar.gz
exchange-d833966d521e9b836c8c854595671197c64c24f6.tar.bz2
exchange-d833966d521e9b836c8c854595671197c64c24f6.zip
-API work
Diffstat (limited to 'src/lib/exchange_api_refreshes_reveal.c')
-rw-r--r--src/lib/exchange_api_refreshes_reveal.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/src/lib/exchange_api_refreshes_reveal.c b/src/lib/exchange_api_refreshes_reveal.c
index 82f92322a..85d20e55d 100644
--- a/src/lib/exchange_api_refreshes_reveal.c
+++ b/src/lib/exchange_api_refreshes_reveal.c
@@ -73,7 +73,7 @@ struct TALER_EXCHANGE_RefreshesRevealHandle
/**
* Actual information about the melt operation.
*/
- struct MeltData *md;
+ struct MeltData md;
/**
* The index selected by the exchange in cut-and-choose to not be revealed.
@@ -298,7 +298,8 @@ handle_refresh_reveal_finished (void *cls,
struct TALER_EXCHANGE_RefreshesRevealHandle *
TALER_EXCHANGE_refreshes_reveal (
struct TALER_EXCHANGE_Handle *exchange,
- const json_t *refresh_data,
+ const struct TALER_PlanchetSecretsP *ps,
+ const struct TALER_EXCHANGE_RefreshData *rd,
uint32_t noreveal_index,
TALER_EXCHANGE_RefreshesRevealCallback reveal_cb,
void *reveal_cb_cls)
@@ -311,7 +312,7 @@ TALER_EXCHANGE_refreshes_reveal (
json_t *link_sigs;
CURL *eh;
struct GNUNET_CURL_Context *ctx;
- struct MeltData *md;
+ struct MeltData md;
struct TALER_TransferPublicKeyP transfer_pub;
char arg_str[sizeof (struct TALER_RefreshCommitmentP) * 2 + 32];
@@ -330,9 +331,10 @@ TALER_EXCHANGE_refreshes_reveal (
GNUNET_break (0);
return NULL;
}
- md = TALER_EXCHANGE_deserialize_melt_data_ (refresh_data,
- exchange->key_data.currency);
- if (NULL == md)
+ if (GNUNET_OK !=
+ TALER_EXCHANGE_get_melt_data (ps,
+ rd,
+ &md))
{
GNUNET_break (0);
return NULL;
@@ -340,21 +342,21 @@ TALER_EXCHANGE_refreshes_reveal (
/* now transfer_pub */
GNUNET_CRYPTO_ecdhe_key_get_public (
- &md->melted_coin.transfer_priv[noreveal_index].ecdhe_priv,
+ &md.melted_coin.transfer_priv[noreveal_index].ecdhe_priv,
&transfer_pub.ecdhe_pub);
/* now new_denoms */
GNUNET_assert (NULL != (new_denoms_h = json_array ()));
GNUNET_assert (NULL != (coin_evs = json_array ()));
GNUNET_assert (NULL != (link_sigs = json_array ()));
- for (unsigned int i = 0; i<md->num_fresh_coins; i++)
+ for (unsigned int i = 0; i<md.num_fresh_coins; i++)
{
struct TALER_DenominationHash denom_hash;
struct TALER_ExchangeWithdrawValues alg_values;
struct TALER_PlanchetDetail pd;
struct TALER_CoinPubHash c_hash;
- TALER_denom_pub_hash (&md->fresh_pks[i],
+ TALER_denom_pub_hash (&md.fresh_pks[i],
&denom_hash);
GNUNET_assert (0 ==
json_array_append_new (new_denoms_h,
@@ -364,9 +366,9 @@ TALER_EXCHANGE_refreshes_reveal (
// TODO: implement cipher handling
alg_values.cipher = TALER_DENOMINATION_RSA;
if (GNUNET_OK !=
- TALER_planchet_prepare (&md->fresh_pks[i],
+ TALER_planchet_prepare (&md.fresh_pks[i],
&alg_values,
- &md->fresh_coins[noreveal_index][i],
+ &md.fresh_coins[noreveal_index][i],
&c_hash,
&pd))
{
@@ -374,6 +376,7 @@ TALER_EXCHANGE_refreshes_reveal (
GNUNET_break (0);
json_decref (new_denoms_h);
json_decref (coin_evs);
+ TALER_EXCHANGE_free_melt_data_ (&md);
return NULL;
}
GNUNET_assert (0 ==
@@ -394,7 +397,7 @@ TALER_EXCHANGE_refreshes_reveal (
blinded_msg,
pd.blinded_planchet.details.rsa_blinded_planchet.
blinded_msg_size,
- &md->melted_coin.coin_priv,
+ &md.melted_coin.coin_priv,
&link_sig);
GNUNET_assert (0 ==
json_array_append_new (
@@ -417,7 +420,7 @@ TALER_EXCHANGE_refreshes_reveal (
GNUNET_assert (0 ==
json_array_append_new (transfer_privs,
GNUNET_JSON_from_data_auto (
- &md->melted_coin.transfer_priv[j])));
+ &md.melted_coin.transfer_priv[j])));
}
/* build main JSON request */
@@ -436,7 +439,7 @@ TALER_EXCHANGE_refreshes_reveal (
char pub_str[sizeof (struct TALER_RefreshCommitmentP) * 2];
char *end;
- end = GNUNET_STRINGS_data_to_string (&md->rc,
+ end = GNUNET_STRINGS_data_to_string (&md.rc,
sizeof (struct
TALER_RefreshCommitmentP),
pub_str,
@@ -459,6 +462,7 @@ TALER_EXCHANGE_refreshes_reveal (
if (NULL == rrh->url)
{
json_decref (reveal_obj);
+ TALER_EXCHANGE_free_melt_data_ (&md);
GNUNET_free (rrh);
return NULL;
}
@@ -473,6 +477,7 @@ TALER_EXCHANGE_refreshes_reveal (
if (NULL != eh)
curl_easy_cleanup (eh);
json_decref (reveal_obj);
+ TALER_EXCHANGE_free_melt_data_ (&md);
GNUNET_free (rrh->url);
GNUNET_free (rrh);
return NULL;