From 1c84b3d4af1a2484e60a9071556d4690dd7aac33 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sat, 4 Mar 2017 18:09:39 +0100 Subject: implementing #4932 --- src/exchangedb/exchangedb_fees.c | 12 ++++++++++-- src/exchangedb/test_exchangedb_fees.c | 7 +++++-- 2 files changed, 15 insertions(+), 4 deletions(-) (limited to 'src/exchangedb') diff --git a/src/exchangedb/exchangedb_fees.c b/src/exchangedb/exchangedb_fees.c index 5adee5d41..e3e16712d 100644 --- a/src/exchangedb/exchangedb_fees.c +++ b/src/exchangedb/exchangedb_fees.c @@ -142,17 +142,22 @@ TALER_EXCHANGEDB_fees_read (const struct GNUNET_CONFIGURATION_Handle *cfg, /** * Convert @a af to @a wf. * + * @param wireplugin name of the wire plugin the fees are for * @param[in,out] af aggregate fees, host format (updated to round time) * @param[out] wf aggregate fees, disk / signature format */ void -TALER_EXCHANGEDB_fees_2_wf (struct TALER_EXCHANGEDB_AggregateFees *af, +TALER_EXCHANGEDB_fees_2_wf (const char *wireplugin, + struct TALER_EXCHANGEDB_AggregateFees *af, struct TALER_MasterWireFeePS *wf) { (void) GNUNET_TIME_round_abs (&af->start_date); (void) GNUNET_TIME_round_abs (&af->end_date); wf->purpose.size = htonl (sizeof (*wf)); wf->purpose.purpose = htonl (TALER_SIGNATURE_MASTER_WIRE_FEES); + GNUNET_CRYPTO_hash (wireplugin, + strlen (wireplugin) + 1, + &wf->h_wire_method); wf->start_date = GNUNET_TIME_absolute_hton (af->start_date); wf->end_date = GNUNET_TIME_absolute_hton (af->end_date); TALER_amount_hton (&wf->wire_fee, @@ -164,11 +169,13 @@ TALER_EXCHANGEDB_fees_2_wf (struct TALER_EXCHANGEDB_AggregateFees *af, * Write given fee structure to disk. * * @param filename where to write the fees + * @param wireplugin which plugin the fees are about * @param af fee structure to write * @return #GNUNET_OK on success, #GNUNET_SYSERR on error */ int TALER_EXCHANGEDB_fees_write (const char *filename, + const char *wireplugin, struct TALER_EXCHANGEDB_AggregateFees *af) { struct GNUNET_DISK_FileHandle *fh; @@ -201,7 +208,8 @@ TALER_EXCHANGEDB_fees_write (const char *filename, GNUNET_DISK_file_close (fh)); return GNUNET_SYSERR; } - TALER_EXCHANGEDB_fees_2_wf (af, + TALER_EXCHANGEDB_fees_2_wf (wireplugin, + af, &wd.wf); wd.master_sig = af->master_sig; af = af->next; diff --git a/src/exchangedb/test_exchangedb_fees.c b/src/exchangedb/test_exchangedb_fees.c index b82abc5fd..2bee77452 100644 --- a/src/exchangedb/test_exchangedb_fees.c +++ b/src/exchangedb/test_exchangedb_fees.c @@ -36,7 +36,8 @@ sign_af (struct TALER_EXCHANGEDB_AggregateFees *af, { struct TALER_MasterWireFeePS wf; - TALER_EXCHANGEDB_fees_2_wf (af, + TALER_EXCHANGEDB_fees_2_wf ("test", + af, &wf); GNUNET_assert (GNUNET_OK == GNUNET_CRYPTO_eddsa_sign (priv, @@ -99,6 +100,7 @@ main (int argc, if (GNUNET_OK != TALER_EXCHANGEDB_fees_write (tmpfile, + "test", af)) { GNUNET_break (0); @@ -121,7 +123,8 @@ main (int argc, { struct TALER_MasterWireFeePS wf; - TALER_EXCHANGEDB_fees_2_wf (p, + TALER_EXCHANGEDB_fees_2_wf ("test", + p, &wf); if (GNUNET_OK != GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_MASTER_WIRE_FEES, -- cgit v1.2.3