From 9b8c350d4dc38256fe746ef31c480bc4f50ac4c8 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 13 Feb 2022 12:44:09 +0100 Subject: -remove redundancies in the refresh-melt computation and fix uninitialized bks return value --- src/lib/exchange_api_refreshes_reveal.c | 79 ++++++++------------------------- 1 file changed, 18 insertions(+), 61 deletions(-) (limited to 'src/lib/exchange_api_refreshes_reveal.c') diff --git a/src/lib/exchange_api_refreshes_reveal.c b/src/lib/exchange_api_refreshes_reveal.c index b17720768..08357c14e 100644 --- a/src/lib/exchange_api_refreshes_reveal.c +++ b/src/lib/exchange_api_refreshes_reveal.c @@ -140,7 +140,8 @@ refresh_reveal_ok (struct TALER_EXCHANGE_RefreshesRevealHandle *rrh, { struct TALER_EXCHANGE_RevealedCoinInfo *rci = &rcis[i]; - struct TALER_DenominationPublicKey *pk; + const struct FreshCoinData *fcd = &rrh->md.fcds[i]; + const struct TALER_DenominationPublicKey *pk; json_t *jsonai; struct TALER_BlindedDenominationSignature blind_sig; struct TALER_CoinSpendPublicKeyP coin_pub; @@ -153,8 +154,9 @@ refresh_reveal_ok (struct TALER_EXCHANGE_RefreshesRevealHandle *rrh, struct TALER_FreshCoin coin; union TALER_DenominationBlindingKeyP bks; - rci->ps = rrh->md.fresh_coins[rrh->noreveal_index][i]; - pk = &rrh->md.fresh_pks[i]; + rci->ps = fcd->ps[rrh->noreveal_index]; + rci->bks = fcd->bks[rrh->noreveal_index]; + pk = &fcd->fresh_pk; jsonai = json_array_get (jsona, i); GNUNET_assert (NULL != jsonai); @@ -323,9 +325,7 @@ TALER_EXCHANGE_refreshes_reveal ( CURL *eh; struct GNUNET_CURL_Context *ctx; struct MeltData md; - struct TALER_TransferPublicKeyP transfer_pub; char arg_str[sizeof (struct TALER_RefreshCommitmentP) * 2 + 32]; - struct TALER_TransferSecretP ts; GNUNET_assert (num_coins == rd->fresh_pks_len); if (noreveal_index >= TALER_CNC_KAPPA) @@ -353,80 +353,38 @@ TALER_EXCHANGE_refreshes_reveal ( return NULL; } - /* now transfer_pub */ - GNUNET_CRYPTO_ecdhe_key_get_public ( - &md.melted_coin.transfer_priv[noreveal_index].ecdhe_priv, - &transfer_pub.ecdhe_pub); - TALER_link_recover_transfer_secret (&transfer_pub, - &rd->melt_priv, - &ts); - /* 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; iblinded_planchet)))); { struct TALER_CoinSpendSignatureP link_sig; struct TALER_BlindedCoinHash bch; - TALER_coin_ev_hash (&pd.blinded_planchet, + TALER_coin_ev_hash (&rcd->blinded_planchet, &denom_hash, &bch); TALER_wallet_link_sign ( &denom_hash, - &transfer_pub, + &md.transfer_pub[noreveal_index], &bch, &md.melted_coin.coin_priv, &link_sig); @@ -435,7 +393,6 @@ TALER_EXCHANGE_refreshes_reveal ( link_sigs, GNUNET_JSON_from_data_auto (&link_sig))); } - TALER_blinded_planchet_free (&pd.blinded_planchet); } /* build array of transfer private keys */ @@ -450,13 +407,13 @@ 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.transfer_priv[j]))); } /* build main JSON request */ reveal_obj = GNUNET_JSON_PACK ( GNUNET_JSON_pack_data_auto ("transfer_pub", - &transfer_pub), + &md.transfer_pub[noreveal_index]), GNUNET_JSON_pack_array_steal ("transfer_privs", transfer_privs), GNUNET_JSON_pack_array_steal ("link_sigs", -- cgit v1.2.3