make API actually workable:
This commit is contained in:
parent
d833966d52
commit
cfc6c3fcd0
@ -1609,6 +1609,8 @@ struct TALER_EXCHANGE_MeltHandle;
|
|||||||
*
|
*
|
||||||
* @param cls closure
|
* @param cls closure
|
||||||
* @param hr HTTP response data
|
* @param hr HTTP response data
|
||||||
|
* @param num_coins number of fresh coins to be created, length of the @a exchange_vals array, 0 if the operation failed
|
||||||
|
* @param alg_values array @a num_coins of exchange values contributed to the refresh operation
|
||||||
* @param noreveal_index choice by the exchange in the cut-and-choose protocol,
|
* @param noreveal_index choice by the exchange in the cut-and-choose protocol,
|
||||||
* UINT32_MAX on error
|
* UINT32_MAX on error
|
||||||
* @param sign_key exchange key used to sign @a full_response, or NULL
|
* @param sign_key exchange key used to sign @a full_response, or NULL
|
||||||
@ -1617,6 +1619,8 @@ typedef void
|
|||||||
(*TALER_EXCHANGE_MeltCallback) (
|
(*TALER_EXCHANGE_MeltCallback) (
|
||||||
void *cls,
|
void *cls,
|
||||||
const struct TALER_EXCHANGE_HttpResponse *hr,
|
const struct TALER_EXCHANGE_HttpResponse *hr,
|
||||||
|
unsigned int num_coins,
|
||||||
|
const struct TALER_ExchangeWithdrawValues *alg_values,
|
||||||
uint32_t noreveal_index,
|
uint32_t noreveal_index,
|
||||||
const struct TALER_ExchangePublicKeyP *sign_key);
|
const struct TALER_ExchangePublicKeyP *sign_key);
|
||||||
|
|
||||||
@ -1670,7 +1674,7 @@ TALER_EXCHANGE_melt_cancel (struct TALER_EXCHANGE_MeltHandle *mh);
|
|||||||
*
|
*
|
||||||
* @param cls closure
|
* @param cls closure
|
||||||
* @param hr HTTP response data
|
* @param hr HTTP response data
|
||||||
* @param num_coins number of fresh coins created, length of the @a exchange_vals, @a sigs and @a coin_privs arrays, 0 if the operation failed
|
* @param num_coins number of fresh coins created, length of the @a sigs and @a coin_privs arrays, 0 if the operation failed
|
||||||
* @param exchange_vals array of contributions from the exchange on the refreshes
|
* @param exchange_vals array of contributions from the exchange on the refreshes
|
||||||
* @param coin_privs array of @a num_coins private keys for the coins that were created, NULL on error
|
* @param coin_privs array of @a num_coins private keys for the coins that were created, NULL on error
|
||||||
* @param sigs array of signature over @a num_coins coins, NULL on error
|
* @param sigs array of signature over @a num_coins coins, NULL on error
|
||||||
@ -1681,7 +1685,6 @@ typedef void
|
|||||||
const struct TALER_EXCHANGE_HttpResponse *hr,
|
const struct TALER_EXCHANGE_HttpResponse *hr,
|
||||||
unsigned int num_coins,
|
unsigned int num_coins,
|
||||||
const struct TALER_CoinSpendPrivateKeyP *coin_privs,
|
const struct TALER_CoinSpendPrivateKeyP *coin_privs,
|
||||||
const struct TALER_ExchangeWithdrawValues *exchange_vals,
|
|
||||||
const struct TALER_DenominationSignature *sigs);
|
const struct TALER_DenominationSignature *sigs);
|
||||||
|
|
||||||
|
|
||||||
@ -1703,6 +1706,8 @@ struct TALER_EXCHANGE_RefreshesRevealHandle;
|
|||||||
* @param exchange the exchange handle; the exchange must be ready to operate
|
* @param exchange the exchange handle; the exchange must be ready to operate
|
||||||
* @param ps the fresh secret that defines the refresh operation
|
* @param ps the fresh secret that defines the refresh operation
|
||||||
* @param rd the refresh data that characterizes the refresh operation
|
* @param rd the refresh data that characterizes the refresh operation
|
||||||
|
* @param num_coins number of fresh coins to be created, length of the @a exchange_vals array, must match value in @a rd
|
||||||
|
* @param alg_values array @a num_coins of exchange values contributed to the refresh operation
|
||||||
* @param noreveal_index response from the exchange to the
|
* @param noreveal_index response from the exchange to the
|
||||||
* #TALER_EXCHANGE_melt() invocation
|
* #TALER_EXCHANGE_melt() invocation
|
||||||
* @param reveal_cb the callback to call with the final result of the
|
* @param reveal_cb the callback to call with the final result of the
|
||||||
@ -1716,6 +1721,8 @@ TALER_EXCHANGE_refreshes_reveal (
|
|||||||
struct TALER_EXCHANGE_Handle *exchange,
|
struct TALER_EXCHANGE_Handle *exchange,
|
||||||
const struct TALER_PlanchetSecretsP *ps,
|
const struct TALER_PlanchetSecretsP *ps,
|
||||||
const struct TALER_EXCHANGE_RefreshData *rd,
|
const struct TALER_EXCHANGE_RefreshData *rd,
|
||||||
|
unsigned int num_coins,
|
||||||
|
const struct TALER_ExchangeWithdrawValues *alg_values,
|
||||||
uint32_t noreveal_index,
|
uint32_t noreveal_index,
|
||||||
TALER_EXCHANGE_RefreshesRevealCallback reveal_cb,
|
TALER_EXCHANGE_RefreshesRevealCallback reveal_cb,
|
||||||
void *reveal_cb_cls);
|
void *reveal_cb_cls);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
This file is part of TALER
|
This file is part of TALER
|
||||||
Copyright (C) 2015-2021 Taler Systems SA
|
Copyright (C) 2015-2022 Taler Systems SA
|
||||||
|
|
||||||
TALER is free software; you can redistribute it and/or modify it under the
|
TALER is free software; you can redistribute it and/or modify it under the
|
||||||
terms of the GNU General Public License as published by the Free Software
|
terms of the GNU General Public License as published by the Free Software
|
||||||
|
@ -95,12 +95,14 @@ struct TALER_EXCHANGE_RefreshesRevealHandle
|
|||||||
*
|
*
|
||||||
* @param rrh operation handle
|
* @param rrh operation handle
|
||||||
* @param json reply from the exchange
|
* @param json reply from the exchange
|
||||||
* @param[out] sigs array of length `num_fresh_coins`, initialized to contain RSA signatures
|
* @param[out] sigs array of length `num_fresh_coins`, initialized to contain the coin private keys
|
||||||
|
* @param[out] sigs array of length `num_fresh_coins`, initialized to contain signatures
|
||||||
* @return #GNUNET_OK on success, #GNUNET_SYSERR on errors
|
* @return #GNUNET_OK on success, #GNUNET_SYSERR on errors
|
||||||
*/
|
*/
|
||||||
static enum GNUNET_GenericReturnValue
|
static enum GNUNET_GenericReturnValue
|
||||||
refresh_reveal_ok (struct TALER_EXCHANGE_RefreshesRevealHandle *rrh,
|
refresh_reveal_ok (struct TALER_EXCHANGE_RefreshesRevealHandle *rrh,
|
||||||
const json_t *json,
|
const json_t *json,
|
||||||
|
struct TALER_CoinSpendPrivateKeyP *coin_privs,
|
||||||
struct TALER_DenominationSignature *sigs)
|
struct TALER_DenominationSignature *sigs)
|
||||||
{
|
{
|
||||||
json_t *jsona;
|
json_t *jsona;
|
||||||
@ -165,6 +167,7 @@ refresh_reveal_ok (struct TALER_EXCHANGE_RefreshesRevealHandle *rrh,
|
|||||||
|
|
||||||
/* needed to verify the signature, and we didn't store it earlier,
|
/* needed to verify the signature, and we didn't store it earlier,
|
||||||
hence recomputing it here... */
|
hence recomputing it here... */
|
||||||
|
coin_privs[i] = fc->coin_priv;
|
||||||
GNUNET_CRYPTO_eddsa_key_get_public (&fc->coin_priv.eddsa_priv,
|
GNUNET_CRYPTO_eddsa_key_get_public (&fc->coin_priv.eddsa_priv,
|
||||||
&coin_pub.eddsa_pub);
|
&coin_pub.eddsa_pub);
|
||||||
/* FIXME-Oec: Age commitment hash. */
|
/* FIXME-Oec: Age commitment hash. */
|
||||||
@ -223,13 +226,15 @@ handle_refresh_reveal_finished (void *cls,
|
|||||||
case MHD_HTTP_OK:
|
case MHD_HTTP_OK:
|
||||||
{
|
{
|
||||||
struct TALER_DenominationSignature sigs[rrh->md->num_fresh_coins];
|
struct TALER_DenominationSignature sigs[rrh->md->num_fresh_coins];
|
||||||
int ret;
|
struct TALER_CoinSpendPrivateKeyP coin_privs[rrh->md->num_fresh_coins];
|
||||||
|
enum GNUNET_GenericReturnValue ret;
|
||||||
|
|
||||||
memset (sigs,
|
memset (sigs,
|
||||||
0,
|
0,
|
||||||
sizeof (sigs));
|
sizeof (sigs));
|
||||||
ret = refresh_reveal_ok (rrh,
|
ret = refresh_reveal_ok (rrh,
|
||||||
j,
|
j,
|
||||||
|
coin_privs,
|
||||||
sigs);
|
sigs);
|
||||||
if (GNUNET_OK != ret)
|
if (GNUNET_OK != ret)
|
||||||
{
|
{
|
||||||
@ -241,7 +246,7 @@ handle_refresh_reveal_finished (void *cls,
|
|||||||
rrh->reveal_cb (rrh->reveal_cb_cls,
|
rrh->reveal_cb (rrh->reveal_cb_cls,
|
||||||
&hr,
|
&hr,
|
||||||
rrh->md->num_fresh_coins,
|
rrh->md->num_fresh_coins,
|
||||||
rrh->md->fresh_coins[rrh->noreveal_index],
|
coin_privs,
|
||||||
sigs);
|
sigs);
|
||||||
rrh->reveal_cb = NULL;
|
rrh->reveal_cb = NULL;
|
||||||
}
|
}
|
||||||
@ -300,6 +305,8 @@ TALER_EXCHANGE_refreshes_reveal (
|
|||||||
struct TALER_EXCHANGE_Handle *exchange,
|
struct TALER_EXCHANGE_Handle *exchange,
|
||||||
const struct TALER_PlanchetSecretsP *ps,
|
const struct TALER_PlanchetSecretsP *ps,
|
||||||
const struct TALER_EXCHANGE_RefreshData *rd,
|
const struct TALER_EXCHANGE_RefreshData *rd,
|
||||||
|
unsigned int num_coins,
|
||||||
|
const struct TALER_ExchangeWithdrawValues *alg_values,
|
||||||
uint32_t noreveal_index,
|
uint32_t noreveal_index,
|
||||||
TALER_EXCHANGE_RefreshesRevealCallback reveal_cb,
|
TALER_EXCHANGE_RefreshesRevealCallback reveal_cb,
|
||||||
void *reveal_cb_cls)
|
void *reveal_cb_cls)
|
||||||
@ -363,11 +370,9 @@ TALER_EXCHANGE_refreshes_reveal (
|
|||||||
GNUNET_JSON_from_data_auto (
|
GNUNET_JSON_from_data_auto (
|
||||||
&denom_hash)));
|
&denom_hash)));
|
||||||
|
|
||||||
// TODO: implement cipher handling
|
|
||||||
alg_values.cipher = TALER_DENOMINATION_RSA;
|
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
TALER_planchet_prepare (&md.fresh_pks[i],
|
TALER_planchet_prepare (&md.fresh_pks[i],
|
||||||
&alg_values,
|
&rrh->exchange_vals[i],
|
||||||
&md.fresh_coins[noreveal_index][i],
|
&md.fresh_coins[noreveal_index][i],
|
||||||
&c_hash,
|
&c_hash,
|
||||||
&pd))
|
&pd))
|
||||||
@ -452,6 +457,8 @@ TALER_EXCHANGE_refreshes_reveal (
|
|||||||
}
|
}
|
||||||
/* finally, we can actually issue the request */
|
/* finally, we can actually issue the request */
|
||||||
rrh = GNUNET_new (struct TALER_EXCHANGE_RefreshesRevealHandle);
|
rrh = GNUNET_new (struct TALER_EXCHANGE_RefreshesRevealHandle);
|
||||||
|
rrh->exchange_vals = GNUNET_new_array (struct TALER_ExchangeWithdrawValues,
|
||||||
|
md.num_fresh_coins);
|
||||||
rrh->exchange = exchange;
|
rrh->exchange = exchange;
|
||||||
rrh->noreveal_index = noreveal_index;
|
rrh->noreveal_index = noreveal_index;
|
||||||
rrh->reveal_cb = reveal_cb;
|
rrh->reveal_cb = reveal_cb;
|
||||||
@ -505,6 +512,7 @@ TALER_EXCHANGE_refreshes_reveal_cancel (
|
|||||||
GNUNET_free (rrh->url);
|
GNUNET_free (rrh->url);
|
||||||
TALER_curl_easy_post_finished (&rrh->ctx);
|
TALER_curl_easy_post_finished (&rrh->ctx);
|
||||||
TALER_EXCHANGE_free_melt_data_ (rrh->md); /* does not free 'md' itself */
|
TALER_EXCHANGE_free_melt_data_ (rrh->md); /* does not free 'md' itself */
|
||||||
|
GNUNET_free (rrh->exchange_vals);
|
||||||
GNUNET_free (rrh->md);
|
GNUNET_free (rrh->md);
|
||||||
GNUNET_free (rrh);
|
GNUNET_free (rrh);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user