gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-exchange] branch master updated (6b5bfc5 -> 06c2327)


From: gnunet
Subject: [GNUnet-SVN] [taler-exchange] branch master updated (6b5bfc5 -> 06c2327)
Date: Fri, 17 Mar 2017 14:08:02 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a change to branch master
in repository exchange.

    from 6b5bfc5  more work on auditor, towards coin/denomination key checks
     new 2d7d658  initialize 'currency' variable
     new 06c2327  verify deposit signature during audit

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/auditor/Makefile.am                     |  1 +
 src/auditor/taler-auditor.c                 | 45 +++++++++++++++++++++++++++--
 src/exchangedb/plugin_exchangedb_postgres.c |  1 +
 src/exchangedb/test_exchangedb.c            | 20 ++++++-------
 src/include/taler_exchangedb_plugin.h       |  2 ++
 5 files changed, 57 insertions(+), 12 deletions(-)

diff --git a/src/auditor/Makefile.am b/src/auditor/Makefile.am
index c5d55a4..04e7dcb 100644
--- a/src/auditor/Makefile.am
+++ b/src/auditor/Makefile.am
@@ -20,6 +20,7 @@ taler_auditor_SOURCES = \
 taler_auditor_LDADD = \
   $(LIBGCRYPT_LIBS) \
   $(top_builddir)/src/util/libtalerutil.la \
+  $(top_builddir)/src/json/libtalerjson.la \
   $(top_builddir)/src/wire/libtalerwire.la \
   $(top_builddir)/src/exchangedb/libtalerexchangedb.la \
   $(top_builddir)/src/auditordb/libtalerauditordb.la \
diff --git a/src/auditor/taler-auditor.c b/src/auditor/taler-auditor.c
index b9edcf6..c018a71 100644
--- a/src/auditor/taler-auditor.c
+++ b/src/auditor/taler-auditor.c
@@ -25,7 +25,6 @@
  *   given in the aggregation_tracking table. This needs to be checked 
separately!
  *
  * TODO:
- * - initialize 'currency' (URGENT!)
  * - modify auditordb to allow multiple last serial IDs per table in progress 
tracking
  * - implement coin/denomination audit
  * - implement merchant deposit audit
@@ -1426,6 +1425,7 @@ refresh_session_cb (void *cls,
  *
  * @param cls closure
  * @param rowid unique serial ID for the deposit in our DB
+ * @param timestamp when did the deposit happen
  * @param merchant_pub public key of the merchant
  * @param coin_pub public key of the coin
  * @param coin_sig signature from the coin
@@ -1442,6 +1442,7 @@ refresh_session_cb (void *cls,
 static int
 deposit_cb (void *cls,
             uint64_t rowid,
+            struct GNUNET_TIME_Absolute timestamp,
             const struct TALER_MerchantPublicKeyP *merchant_pub,
             const struct TALER_CoinSpendPublicKeyP *coin_pub,
             const struct TALER_CoinSpendSignatureP *coin_sig,
@@ -1455,6 +1456,7 @@ deposit_cb (void *cls,
   struct CoinContext *cc = cls;
   struct CoinSummary *cs;
   const struct TALER_EXCHANGEDB_DenominationKeyInformationP *dki;
+  struct TALER_DepositRequestPS dr;
 
   cs = get_coin_summary (cc,
                          coin_pub);
@@ -1465,7 +1467,34 @@ deposit_cb (void *cls,
   }
   dki = cs->dki;
 
-  // TODO: verify signature
+  dr.purpose.purpose = htonl (TALER_SIGNATURE_WALLET_COIN_DEPOSIT);
+  dr.purpose.size = htonl (sizeof (dr));
+  dr.h_proposal_data = *h_proposal_data;
+  if (GNUNET_OK !=
+      TALER_JSON_hash (receiver_wire_account,
+                       &dr.h_wire))
+  {
+    GNUNET_break (0);
+    return GNUNET_SYSERR;
+  }
+  dr.timestamp = GNUNET_TIME_absolute_hton (timestamp);
+  dr.refund_deadline = GNUNET_TIME_absolute_hton (refund_deadline);
+  TALER_amount_hton (&dr.amount_with_fee,
+                     amount_with_fee);
+  dr.deposit_fee = dki->properties.fee_deposit;
+  dr.merchant = *merchant_pub;
+  dr.coin_pub = *coin_pub;
+  if (GNUNET_OK !=
+      GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_WALLET_COIN_DEPOSIT,
+                                  &dr.purpose,
+                                  &coin_sig->eddsa_signature,
+                                  &coin_pub->eddsa_pub))
+  {
+    report_row_inconsistency ("deposit",
+                              rowid,
+                              "invalid signature for coin deposit");
+    return GNUNET_OK;
+  }
 
   // TODO: update expected amounts in 'cc'
   return GNUNET_OK;
@@ -1936,6 +1965,18 @@ run (void *cls,
      const char *cfgfile,
      const struct GNUNET_CONFIGURATION_Handle *cfg)
 {
+  if (GNUNET_OK !=
+      GNUNET_CONFIGURATION_get_value_string (cfg,
+                                             "taler",
+                                             "CURRENCY",
+                                             &currency))
+  {
+    GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
+                               "taler",
+                               "CURRENCY");
+    global_ret = 1;
+    return;
+  }
   if (NULL ==
       (edb = TALER_EXCHANGEDB_plugin_load (cfg)))
   {
diff --git a/src/exchangedb/plugin_exchangedb_postgres.c 
b/src/exchangedb/plugin_exchangedb_postgres.c
index 26d6b87..b00bc7b 100644
--- a/src/exchangedb/plugin_exchangedb_postgres.c
+++ b/src/exchangedb/plugin_exchangedb_postgres.c
@@ -4762,6 +4762,7 @@ postgres_select_deposits_above_serial_id (void *cls,
     }
     cb (cb_cls,
         rowid,
+        deposit.timestamp,
         &deposit.merchant_pub,
         &deposit.coin.coin_pub,
         &deposit.csig,
diff --git a/src/exchangedb/test_exchangedb.c b/src/exchangedb/test_exchangedb.c
index 9b4cfde..2097b0a 100644
--- a/src/exchangedb/test_exchangedb.c
+++ b/src/exchangedb/test_exchangedb.c
@@ -502,33 +502,31 @@ check_transfer_data (void *cls,
   *ok = GNUNET_SYSERR;
 }
 
+
 /**
  * Function called with details about coins that were melted,
  * with the goal of auditing the refresh's execution.
  *
+ *
  * @param cls closure
  * @param rowid unique serial ID for the refresh session in our DB
- * @param merchant_pub public key of the merchant
  * @param coin_pub public key of the coin
  * @param coin_sig signature from the coin
  * @param amount_with_fee amount that was deposited including fee
- * @param h_proposal_data hash of the proposal data known to merchant and 
customer
- * @param refund_deadline by which the merchant adviced that he might want
- *        to get a refund
- * @param wire_deadline by which the merchant adviced that he would like the
- *        wire transfer to be executed
- * @param receiver_wire_account wire details for the merchant, NULL from 
iterate_matching_deposits()
- * @param done flag set if the deposit was already executed (or not)
+ * @param num_newcoins how many coins were issued
+ * @param noreveal_index which index was picked by the exchange in 
cut-and-choose
+ * @param session_hash what is the session hash
  * @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
  */
-int
+static int
 audit_refresh_session_cb (void *cls,
                           uint64_t rowid,
                           const struct TALER_CoinSpendPublicKeyP *coin_pub,
                           const struct TALER_CoinSpendSignatureP *coin_sig,
                           const struct TALER_Amount *amount_with_fee,
                           uint16_t num_newcoins,
-                          uint16_t noreveal_index)
+                          uint16_t noreveal_index,
+                          const struct GNUNET_HashCode *session_hash)
 {
   auditor_row_cnt++;
   return GNUNET_OK;
@@ -953,6 +951,7 @@ deposit_cb (void *cls,
  *
  * @param cls closure
  * @param rowid unique serial ID for the deposit in our DB
+ * @param timestamp when did the deposit happen
  * @param merchant_pub public key of the merchant
  * @param coin_pub public key of the coin
  * @param coin_sig signature from the coin
@@ -969,6 +968,7 @@ deposit_cb (void *cls,
 static int
 audit_deposit_cb (void *cls,
                   uint64_t rowid,
+                  struct GNUNET_TIME_Absolute timestamp,
                   const struct TALER_MerchantPublicKeyP *merchant_pub,
                   const struct TALER_CoinSpendPublicKeyP *coin_pub,
                   const struct TALER_CoinSpendSignatureP *coin_sig,
diff --git a/src/include/taler_exchangedb_plugin.h 
b/src/include/taler_exchangedb_plugin.h
index 524025e..a365e35 100644
--- a/src/include/taler_exchangedb_plugin.h
+++ b/src/include/taler_exchangedb_plugin.h
@@ -590,6 +590,7 @@ typedef void
  *
  * @param cls closure
  * @param rowid unique serial ID for the deposit in our DB
+ * @param timestamp when did the deposit happen
  * @param merchant_pub public key of the merchant
  * @param coin_pub public key of the coin
  * @param coin_sig signature from the coin
@@ -606,6 +607,7 @@ typedef void
 typedef int
 (*TALER_EXCHANGEDB_DepositCallback)(void *cls,
                                     uint64_t rowid,
+                                    struct GNUNET_TIME_Absolute timestamp,
                                     const struct TALER_MerchantPublicKeyP 
*merchant_pub,
                                     const struct TALER_CoinSpendPublicKeyP 
*coin_pub,
                                     const struct TALER_CoinSpendSignatureP 
*coin_sig,

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]