-more minor bugfixes
This commit is contained in:
parent
f0bcbf6586
commit
446761b602
@ -842,21 +842,17 @@ help_melt (struct CoinHistoryParseContext *pc,
|
||||
return GNUNET_SYSERR;
|
||||
}
|
||||
|
||||
if (NULL != pc->dk)
|
||||
/* check that melt fee matches our expectations from /keys! */
|
||||
if ( (GNUNET_YES !=
|
||||
TALER_amount_cmp_currency (&melt_fee,
|
||||
&pc->dk->fees.refresh)) ||
|
||||
(0 !=
|
||||
TALER_amount_cmp (&melt_fee,
|
||||
&pc->dk->fees.refresh)) )
|
||||
{
|
||||
/* check that melt fee matches our expectations from /keys! */
|
||||
if ( (GNUNET_YES !=
|
||||
TALER_amount_cmp_currency (&melt_fee,
|
||||
&pc->dk->fees.refresh)) ||
|
||||
(0 !=
|
||||
TALER_amount_cmp (&melt_fee,
|
||||
&pc->dk->fees.refresh)) )
|
||||
{
|
||||
GNUNET_break_op (0);
|
||||
return GNUNET_SYSERR;
|
||||
}
|
||||
GNUNET_break_op (0);
|
||||
return GNUNET_SYSERR;
|
||||
}
|
||||
|
||||
if (GNUNET_OK !=
|
||||
TALER_wallet_melt_verify (
|
||||
amount,
|
||||
@ -938,26 +934,23 @@ help_refund (struct CoinHistoryParseContext *pc,
|
||||
return GNUNET_SYSERR;
|
||||
}
|
||||
/* NOTE: theoretically, we could also check that the given
|
||||
merchant_pub and h_contract_terms appear in the
|
||||
history under deposits. However, there is really no benefit
|
||||
for the exchange to lie here, so not checking is probably OK
|
||||
(an auditor ought to check, though). Then again, we similarly
|
||||
had no reason to check the merchant's signature (other than a
|
||||
well-formendess check). */
|
||||
merchant_pub and h_contract_terms appear in the
|
||||
history under deposits. However, there is really no benefit
|
||||
for the exchange to lie here, so not checking is probably OK
|
||||
(an auditor ought to check, though). Then again, we similarly
|
||||
had no reason to check the merchant's signature (other than a
|
||||
well-formendess check). */
|
||||
|
||||
/* check that refund fee matches our expectations from /keys! */
|
||||
if (NULL != pc->dk)
|
||||
if ( (GNUNET_YES !=
|
||||
TALER_amount_cmp_currency (&refund_fee,
|
||||
&pc->dk->fees.refund)) ||
|
||||
(0 !=
|
||||
TALER_amount_cmp (&refund_fee,
|
||||
&pc->dk->fees.refund)) )
|
||||
{
|
||||
if ( (GNUNET_YES !=
|
||||
TALER_amount_cmp_currency (&refund_fee,
|
||||
&pc->dk->fees.refund)) ||
|
||||
(0 !=
|
||||
TALER_amount_cmp (&refund_fee,
|
||||
&pc->dk->fees.refund)) )
|
||||
{
|
||||
GNUNET_break_op (0);
|
||||
return GNUNET_SYSERR;
|
||||
}
|
||||
GNUNET_break_op (0);
|
||||
return GNUNET_SYSERR;
|
||||
}
|
||||
return GNUNET_NO;
|
||||
}
|
||||
|
@ -406,8 +406,9 @@ TALER_EXCHANGE_account_merge (
|
||||
{
|
||||
struct TALER_Amount zero_purse_fee;
|
||||
|
||||
TALER_amount_set_zero (purse_value_after_fees->currency,
|
||||
&zero_purse_fee);
|
||||
GNUNET_assert (GNUNET_OK ==
|
||||
TALER_amount_set_zero (purse_value_after_fees->currency,
|
||||
&zero_purse_fee));
|
||||
TALER_wallet_account_merge_sign (merge_timestamp,
|
||||
purse_pub,
|
||||
purse_expiration,
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
This file is part of TALER
|
||||
Copyright (C) 2014-2021 Taler Systems SA
|
||||
Copyright (C) 2014-2022 Taler Systems SA
|
||||
|
||||
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
|
||||
@ -445,17 +445,30 @@ verify_conflict_history_ok (struct TALER_EXCHANGE_RefundHandle *rh,
|
||||
{
|
||||
rtotal = rh->refund_amount;
|
||||
}
|
||||
if (-1 == TALER_amount_cmp (&dtotal,
|
||||
if ( (have_refund) && (! have_deposit) )
|
||||
{
|
||||
GNUNET_break (0);
|
||||
GNUNET_JSON_parse_free (spec);
|
||||
return GNUNET_SYSERR;
|
||||
}
|
||||
if (! (have_refund && have_deposit))
|
||||
{
|
||||
/* need both for a refund-deposit conflict proof */
|
||||
GNUNET_break (0);
|
||||
GNUNET_JSON_parse_free (spec);
|
||||
return GNUNET_SYSERR;
|
||||
}
|
||||
if (-1 != TALER_amount_cmp (&dtotal,
|
||||
&rtotal))
|
||||
{
|
||||
/* dtotal < rtotal: good! */
|
||||
/* rtotal <= dtotal is fine, no conflict! */
|
||||
GNUNET_break_op (0);
|
||||
GNUNET_JSON_parse_free (spec);
|
||||
return GNUNET_OK;
|
||||
return GNUNET_SYSERR;
|
||||
}
|
||||
/* this fails to prove a conflict */
|
||||
GNUNET_break_op (0);
|
||||
/* dtotal < rtotal: that's a conflict! */
|
||||
GNUNET_JSON_parse_free (spec);
|
||||
return GNUNET_SYSERR;
|
||||
return GNUNET_OK;
|
||||
}
|
||||
|
||||
|
||||
|
@ -311,6 +311,7 @@ TALER_EXCHANGE_reserves_history (
|
||||
if (NULL == keys)
|
||||
{
|
||||
GNUNET_break (0);
|
||||
curl_easy_cleanup (eh);
|
||||
GNUNET_free (rsh->url);
|
||||
GNUNET_free (rsh);
|
||||
return NULL;
|
||||
@ -320,6 +321,7 @@ TALER_EXCHANGE_reserves_history (
|
||||
if (NULL == gf)
|
||||
{
|
||||
GNUNET_break_op (0);
|
||||
curl_easy_cleanup (eh);
|
||||
GNUNET_free (rsh->url);
|
||||
GNUNET_free (rsh);
|
||||
return NULL;
|
||||
|
@ -164,14 +164,16 @@ insert_deposit_run (void *cls,
|
||||
0,
|
||||
sizeof (deposit));
|
||||
|
||||
GNUNET_CRYPTO_kdf (&merchant_priv,
|
||||
sizeof (struct TALER_MerchantPrivateKeyP),
|
||||
"merchant-priv",
|
||||
strlen ("merchant-priv"),
|
||||
ids->merchant_name,
|
||||
strlen (ids->merchant_name),
|
||||
NULL,
|
||||
0);
|
||||
GNUNET_assert (
|
||||
GNUNET_YES ==
|
||||
GNUNET_CRYPTO_kdf (&merchant_priv,
|
||||
sizeof (struct TALER_MerchantPrivateKeyP),
|
||||
"merchant-priv",
|
||||
strlen ("merchant-priv"),
|
||||
ids->merchant_name,
|
||||
strlen (ids->merchant_name),
|
||||
NULL,
|
||||
0));
|
||||
GNUNET_CRYPTO_eddsa_key_get_public (&merchant_priv.eddsa_priv,
|
||||
&deposit.merchant_pub.eddsa_pub);
|
||||
GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK,
|
||||
|
Loading…
Reference in New Issue
Block a user