summaryrefslogtreecommitdiff
path: root/src/lib/exchange_api_refreshes_reveal.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2022-02-09 21:25:57 +0100
committerChristian Grothoff <christian@grothoff.org>2022-02-09 21:25:57 +0100
commite6598cfa1a81f6b040718933496436987d21194b (patch)
treea5ec283b3780b03a8c460ae749ea7d116338415b /src/lib/exchange_api_refreshes_reveal.c
parent758f13b557a2a3e659e76816bacf4e93d3610914 (diff)
downloadexchange-e6598cfa1a81f6b040718933496436987d21194b.tar.gz
exchange-e6598cfa1a81f6b040718933496436987d21194b.tar.bz2
exchange-e6598cfa1a81f6b040718933496436987d21194b.zip
-get refresh to work
Diffstat (limited to 'src/lib/exchange_api_refreshes_reveal.c')
-rw-r--r--src/lib/exchange_api_refreshes_reveal.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/lib/exchange_api_refreshes_reveal.c b/src/lib/exchange_api_refreshes_reveal.c
index 0ce7593c2..b675d3db5 100644
--- a/src/lib/exchange_api_refreshes_reveal.c
+++ b/src/lib/exchange_api_refreshes_reveal.c
@@ -61,6 +61,11 @@ struct TALER_EXCHANGE_RefreshesRevealHandle
struct GNUNET_CURL_Job *job;
/**
+ * Exchange-contributed values to the operation.
+ */
+ struct TALER_ExchangeWithdrawValues *alg_values;
+
+ /**
* Function to call with the result.
*/
TALER_EXCHANGE_RefreshesRevealCallback reveal_cb;
@@ -140,7 +145,6 @@ refresh_reveal_ok (struct TALER_EXCHANGE_RefreshesRevealHandle *rrh,
struct TALER_DenominationPublicKey *pk;
json_t *jsonai;
struct TALER_BlindedDenominationSignature blind_sig;
- struct TALER_ExchangeWithdrawValues alg_values;
struct TALER_CoinSpendPublicKeyP coin_pub;
struct TALER_CoinPubHash coin_hash;
struct GNUNET_JSON_Specification spec[] = {
@@ -166,13 +170,11 @@ refresh_reveal_ok (struct TALER_EXCHANGE_RefreshesRevealHandle *rrh,
return GNUNET_SYSERR;
}
- // TODO: implement cipher handling
- alg_values.cipher = TALER_DENOMINATION_RSA;
TALER_planchet_setup_coin_priv (fc,
- &alg_values,
+ &rrh->alg_values[i],
&coin_privs[i]);
TALER_planchet_blinding_secret_create (fc,
- &alg_values,
+ &rrh->alg_values[i],
&bks);
/* needed to verify the signature, and we didn't store it earlier,
hence recomputing it here... */
@@ -188,7 +190,7 @@ refresh_reveal_ok (struct TALER_EXCHANGE_RefreshesRevealHandle *rrh,
&bks,
&coin_privs[i],
&coin_hash,
- &alg_values,
+ &rrh->alg_values[i],
&coin))
{
GNUNET_break_op (0);
@@ -493,12 +495,17 @@ TALER_EXCHANGE_refreshes_reveal (
rrh->reveal_cb = reveal_cb;
rrh->reveal_cb_cls = reveal_cb_cls;
rrh->md = md;
+ rrh->alg_values = GNUNET_memdup (alg_values,
+ md.num_fresh_coins
+ * sizeof (struct
+ TALER_ExchangeWithdrawValues));
rrh->url = TEAH_path_to_url (rrh->exchange,
arg_str);
if (NULL == rrh->url)
{
json_decref (reveal_obj);
TALER_EXCHANGE_free_melt_data_ (&md);
+ GNUNET_free (rrh->alg_values);
GNUNET_free (rrh);
return NULL;
}
@@ -514,6 +521,7 @@ TALER_EXCHANGE_refreshes_reveal (
curl_easy_cleanup (eh);
json_decref (reveal_obj);
TALER_EXCHANGE_free_melt_data_ (&md);
+ GNUNET_free (rrh->alg_values);
GNUNET_free (rrh->url);
GNUNET_free (rrh);
return NULL;
@@ -538,6 +546,7 @@ TALER_EXCHANGE_refreshes_reveal_cancel (
GNUNET_CURL_job_cancel (rrh->job);
rrh->job = NULL;
}
+ GNUNET_free (rrh->alg_values);
GNUNET_free (rrh->url);
TALER_curl_easy_post_finished (&rrh->ctx);
TALER_EXCHANGE_free_melt_data_ (&rrh->md);