tests compile, don't crash but fail
This commit is contained in:
parent
096834aa28
commit
e6d85c824f
@ -2612,14 +2612,14 @@ struct TALER_AgeCommitment
|
|||||||
* generation of this age commitment */
|
* generation of this age commitment */
|
||||||
struct TALER_AgeMask mask;
|
struct TALER_AgeMask mask;
|
||||||
|
|
||||||
/* The number of public keys, which must be the same as the number of groups
|
/* The number of public keys, which must be the same as the number of
|
||||||
* in the mask
|
* groups in the mask
|
||||||
*/
|
*/
|
||||||
size_t num_keys;
|
size_t num_pub_keys;
|
||||||
|
|
||||||
/* A NULL-terminated list of public keys.
|
/* A NULL-terminated list of public keys.
|
||||||
* The list must be exactly of length num_keys, i. e. the same as the number
|
* The list must be exactly of length @a num_pub_keys, i. e. the same as the
|
||||||
* of age groups defined in the mask.
|
* number of age groups defined in the mask.
|
||||||
*
|
*
|
||||||
* A hash of this list is the hashed commitment that goes into FDC
|
* A hash of this list is the hashed commitment that goes into FDC
|
||||||
* calculation during the withdraw and refresh operations for new coins. That
|
* calculation during the withdraw and refresh operations for new coins. That
|
||||||
@ -2628,7 +2628,7 @@ struct TALER_AgeCommitment
|
|||||||
struct TALER_AgeCommitmentPublicKeyP *pub;
|
struct TALER_AgeCommitmentPublicKeyP *pub;
|
||||||
|
|
||||||
/* A NULL-terminated list of private keys.
|
/* A NULL-terminated list of private keys.
|
||||||
* Note that the list can be smaller than the corresponding list of public
|
* Note that the list can be _smaller_ than the corresponding list of public
|
||||||
* keys! In that case, the wallet can sign off only for a subset of the age
|
* keys! In that case, the wallet can sign off only for a subset of the age
|
||||||
* groups.
|
* groups.
|
||||||
*/
|
*/
|
||||||
|
@ -1481,6 +1481,8 @@ TALER_EXCHANGE_withdraw2_cancel (struct TALER_EXCHANGE_Withdraw2Handle *wh);
|
|||||||
* @param melt_pk denomination key information
|
* @param melt_pk denomination key information
|
||||||
* record corresponding to the @a melt_sig
|
* record corresponding to the @a melt_sig
|
||||||
* validity of the keys
|
* validity of the keys
|
||||||
|
* @param age_commitment (optional) age commitment that went into the original
|
||||||
|
* coin. Maybe NULL, if no age commitment was provided.
|
||||||
* @param fresh_pks_len length of the @a pks array
|
* @param fresh_pks_len length of the @a pks array
|
||||||
* @param fresh_pks array of @a pks_len denominations of fresh coins to create
|
* @param fresh_pks array of @a pks_len denominations of fresh coins to create
|
||||||
* @return NULL
|
* @return NULL
|
||||||
@ -1495,6 +1497,7 @@ TALER_EXCHANGE_refresh_prepare (
|
|||||||
const struct TALER_Amount *melt_amount,
|
const struct TALER_Amount *melt_amount,
|
||||||
const struct TALER_DenominationSignature *melt_sig,
|
const struct TALER_DenominationSignature *melt_sig,
|
||||||
const struct TALER_EXCHANGE_DenomPublicKey *melt_pk,
|
const struct TALER_EXCHANGE_DenomPublicKey *melt_pk,
|
||||||
|
const struct TALER_AgeCommitment *age_commitment,
|
||||||
unsigned int fresh_pks_len,
|
unsigned int fresh_pks_len,
|
||||||
const struct TALER_EXCHANGE_DenomPublicKey *fresh_pks);
|
const struct TALER_EXCHANGE_DenomPublicKey *fresh_pks);
|
||||||
|
|
||||||
|
@ -343,6 +343,7 @@ TALER_EXCHANGE_refresh_prepare (
|
|||||||
const struct TALER_Amount *melt_amount,
|
const struct TALER_Amount *melt_amount,
|
||||||
const struct TALER_DenominationSignature *melt_sig,
|
const struct TALER_DenominationSignature *melt_sig,
|
||||||
const struct TALER_EXCHANGE_DenomPublicKey *melt_pk,
|
const struct TALER_EXCHANGE_DenomPublicKey *melt_pk,
|
||||||
|
const struct TALER_AgeCommitment *age_commitment,
|
||||||
unsigned int fresh_pks_len,
|
unsigned int fresh_pks_len,
|
||||||
const struct TALER_EXCHANGE_DenomPublicKey *fresh_pks)
|
const struct TALER_EXCHANGE_DenomPublicKey *fresh_pks)
|
||||||
{
|
{
|
||||||
@ -375,6 +376,7 @@ TALER_EXCHANGE_refresh_prepare (
|
|||||||
melt_sig);
|
melt_sig);
|
||||||
md.fresh_pks = GNUNET_new_array (fresh_pks_len,
|
md.fresh_pks = GNUNET_new_array (fresh_pks_len,
|
||||||
struct TALER_DenominationPublicKey);
|
struct TALER_DenominationPublicKey);
|
||||||
|
|
||||||
for (unsigned int i = 0; i<fresh_pks_len; i++)
|
for (unsigned int i = 0; i<fresh_pks_len; i++)
|
||||||
{
|
{
|
||||||
TALER_denom_pub_deep_copy (&md.fresh_pks[i],
|
TALER_denom_pub_deep_copy (&md.fresh_pks[i],
|
||||||
@ -393,6 +395,7 @@ TALER_EXCHANGE_refresh_prepare (
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* verify that melt_amount is above total cost */
|
/* verify that melt_amount is above total cost */
|
||||||
if (1 ==
|
if (1 ==
|
||||||
TALER_amount_cmp (&total,
|
TALER_amount_cmp (&total,
|
||||||
@ -416,10 +419,16 @@ TALER_EXCHANGE_refresh_prepare (
|
|||||||
TALER_link_derive_transfer_secret (melt_priv,
|
TALER_link_derive_transfer_secret (melt_priv,
|
||||||
&md.melted_coin.transfer_priv[i],
|
&md.melted_coin.transfer_priv[i],
|
||||||
&trans_sec[i]);
|
&trans_sec[i]);
|
||||||
|
|
||||||
md.fresh_coins[i] = GNUNET_new_array (fresh_pks_len,
|
md.fresh_coins[i] = GNUNET_new_array (fresh_pks_len,
|
||||||
struct TALER_PlanchetSecretsP);
|
struct TALER_PlanchetSecretsP);
|
||||||
|
|
||||||
rce[i].new_coins = GNUNET_new_array (fresh_pks_len,
|
rce[i].new_coins = GNUNET_new_array (fresh_pks_len,
|
||||||
struct TALER_RefreshCoinData);
|
struct TALER_RefreshCoinData);
|
||||||
|
|
||||||
|
md.fresh_ach[i] = GNUNET_new_array (fresh_pks_len,
|
||||||
|
struct TALER_AgeCommitment);
|
||||||
|
|
||||||
for (unsigned int j = 0; j<fresh_pks_len; j++)
|
for (unsigned int j = 0; j<fresh_pks_len; j++)
|
||||||
{
|
{
|
||||||
struct TALER_PlanchetSecretsP *fc = &md.fresh_coins[i][j];
|
struct TALER_PlanchetSecretsP *fc = &md.fresh_coins[i][j];
|
||||||
@ -433,7 +442,7 @@ TALER_EXCHANGE_refresh_prepare (
|
|||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
TALER_planchet_prepare (&md.fresh_pks[j],
|
TALER_planchet_prepare (&md.fresh_pks[j],
|
||||||
fc,
|
fc,
|
||||||
NULL, /* FIXME-oec: struct TALER_AgeCommitmentHash * */
|
&md.fresh_ach[j],
|
||||||
&c_hash,
|
&c_hash,
|
||||||
&pd))
|
&pd))
|
||||||
{
|
{
|
||||||
@ -454,6 +463,7 @@ TALER_EXCHANGE_refresh_prepare (
|
|||||||
rce,
|
rce,
|
||||||
&coin_pub,
|
&coin_pub,
|
||||||
melt_amount);
|
melt_amount);
|
||||||
|
|
||||||
/* finally, serialize everything */
|
/* finally, serialize everything */
|
||||||
ret = serialize_melt_data (&md);
|
ret = serialize_melt_data (&md);
|
||||||
for (unsigned int i = 0; i < TALER_CNC_KAPPA; i++)
|
for (unsigned int i = 0; i < TALER_CNC_KAPPA; i++)
|
||||||
@ -462,6 +472,7 @@ TALER_EXCHANGE_refresh_prepare (
|
|||||||
GNUNET_free (rce[i].new_coins[j].coin_ev);
|
GNUNET_free (rce[i].new_coins[j].coin_ev);
|
||||||
GNUNET_free (rce[i].new_coins);
|
GNUNET_free (rce[i].new_coins);
|
||||||
}
|
}
|
||||||
|
|
||||||
TALER_EXCHANGE_free_melt_data_ (&md);
|
TALER_EXCHANGE_free_melt_data_ (&md);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1076,6 +1076,7 @@ melt_run (void *cls,
|
|||||||
&melt_amount,
|
&melt_amount,
|
||||||
melt_sig,
|
melt_sig,
|
||||||
melt_denom_pub,
|
melt_denom_pub,
|
||||||
|
NULL, /* FIXME-oec */
|
||||||
num_fresh_coins,
|
num_fresh_coins,
|
||||||
rms->fresh_pks);
|
rms->fresh_pks);
|
||||||
if (NULL == rms->refresh_data)
|
if (NULL == rms->refresh_data)
|
||||||
|
@ -375,11 +375,11 @@ TALER_age_commitment_hash (
|
|||||||
struct GNUNET_HashCode hash;
|
struct GNUNET_HashCode hash;
|
||||||
GNUNET_assert (NULL != commitment);
|
GNUNET_assert (NULL != commitment);
|
||||||
GNUNET_assert (__builtin_popcount (commitment->mask.mask) ==
|
GNUNET_assert (__builtin_popcount (commitment->mask.mask) ==
|
||||||
commitment->num_keys);
|
commitment->num_pub_keys);
|
||||||
|
|
||||||
hash_context = GNUNET_CRYPTO_hash_context_start ();
|
hash_context = GNUNET_CRYPTO_hash_context_start ();
|
||||||
|
|
||||||
for (size_t i = 0; i < commitment->num_keys; i++)
|
for (size_t i = 0; i < commitment->num_pub_keys; i++)
|
||||||
{
|
{
|
||||||
GNUNET_CRYPTO_hash_context_read (hash_context,
|
GNUNET_CRYPTO_hash_context_read (hash_context,
|
||||||
&commitment->pub[i],
|
&commitment->pub[i],
|
||||||
|
Loading…
Reference in New Issue
Block a user