gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] 01/03: [wip, #7267] added correct response for age comm


From: gnunet
Subject: [taler-exchange] 01/03: [wip, #7267] added correct response for age commitment conflict during deposit
Date: Sat, 09 Dec 2023 13:57:45 +0100

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

oec pushed a commit to branch master
in repository exchange.

commit 9454b655454317cc129eecc61009ffc7c2a9925b
Author: Özgür Kesim <oec-taler@kesim.org>
AuthorDate: Sat Dec 9 13:57:00 2023 +0100

    [wip, #7267] added correct response for age commitment conflict during 
deposit
---
 src/exchange/taler-exchange-httpd_db.c        | 11 +++++------
 src/exchange/taler-exchange-httpd_responses.c | 22 ++++++++++++++++++++++
 src/exchange/taler-exchange-httpd_responses.h | 21 +++++++++++++++++++++
 3 files changed, 48 insertions(+), 6 deletions(-)

diff --git a/src/exchange/taler-exchange-httpd_db.c 
b/src/exchange/taler-exchange-httpd_db.c
index 5660074e..a00a9785 100644
--- a/src/exchange/taler-exchange-httpd_db.c
+++ b/src/exchange/taler-exchange-httpd_db.c
@@ -37,14 +37,14 @@ TEH_make_coin_known (const struct TALER_CoinPublicInfo 
*coin,
 {
   enum TALER_EXCHANGEDB_CoinKnownStatus cks;
   struct TALER_DenominationHashP h_denom_pub;
-  struct TALER_AgeCommitmentHash age_hash;
+  struct TALER_AgeCommitmentHash h_age_commitment;
 
   /* make sure coin is 'known' in database */
   cks = TEH_plugin->ensure_coin_known (TEH_plugin->cls,
                                        coin,
                                        known_coin_id,
                                        &h_denom_pub,
-                                       &age_hash);
+                                       &h_age_commitment);
   switch (cks)
   {
   case TALER_EXCHANGEDB_CKS_ADDED:
@@ -70,13 +70,12 @@ TEH_make_coin_known (const struct TALER_CoinPublicInfo 
*coin,
       &coin->coin_pub);
     return GNUNET_DB_STATUS_HARD_ERROR;
   case TALER_EXCHANGEDB_CKS_AGE_CONFLICT:
-    /* FIXME: insufficient_funds != Age conflict! See issue #7267, need new
-     * strategy for evidence gathering */
-    *mhd_ret = TEH_RESPONSE_reply_coin_insufficient_funds (
+    *mhd_ret = TEH_RESPONSE_reply_coin_age_commitment_conflict (
       connection,
       TALER_EC_EXCHANGE_GENERIC_COIN_CONFLICTING_AGE_HASH,
       &h_denom_pub,
-      &coin->coin_pub);
+      &coin->coin_pub,
+      &h_age_commitment);
     return GNUNET_DB_STATUS_HARD_ERROR;
   }
   GNUNET_assert (0);
diff --git a/src/exchange/taler-exchange-httpd_responses.c 
b/src/exchange/taler-exchange-httpd_responses.c
index 322da387..c1aa9db6 100644
--- a/src/exchange/taler-exchange-httpd_responses.c
+++ b/src/exchange/taler-exchange-httpd_responses.c
@@ -177,6 +177,28 @@ TEH_RESPONSE_reply_coin_insufficient_funds (
 }
 
 
+MHD_RESULT
+TEH_RESPONSE_reply_coin_age_commitment_conflict (
+  struct MHD_Connection *connection,
+  enum TALER_ErrorCode ec,
+  const struct TALER_DenominationHashP *h_denom_pub,
+  const struct TALER_CoinSpendPublicKeyP *coin_pub,
+  const struct TALER_AgeCommitmentHash *h_age_commitment_hash)
+{
+  return TALER_MHD_REPLY_JSON_PACK (
+    connection,
+    TALER_ErrorCode_get_http_status_safe (ec),
+    TALER_JSON_pack_ec (ec),
+    GNUNET_JSON_pack_data_auto ("coin_pub",
+                                coin_pub),
+    GNUNET_JSON_pack_data_auto ("h_denom_pub",
+                                h_denom_pub),
+    GNUNET_JSON_pack_data_auto ("h_age_commitment_hash",
+                                h_age_commitment_hash)
+    );
+}
+
+
 MHD_RESULT
 TEH_RESPONSE_reply_reserve_insufficient_balance (
   struct MHD_Connection *connection,
diff --git a/src/exchange/taler-exchange-httpd_responses.h 
b/src/exchange/taler-exchange-httpd_responses.h
index 8adf1136..5fe106e1 100644
--- a/src/exchange/taler-exchange-httpd_responses.h
+++ b/src/exchange/taler-exchange-httpd_responses.h
@@ -159,6 +159,27 @@ TEH_RESPONSE_reply_coin_insufficient_funds (
   const struct TALER_DenominationHashP *h_denom_pub,
   const struct TALER_CoinSpendPublicKeyP *coin_pub);
 
+/**
+ * Send proof that a request is invalid to client because of
+ * a conflicting value for the age commitment hash of a coin.
+ * This function will create a message with the conflicting
+ * hash value for the age commitment of the given coin.
+ *
+ * @param connection connection to the client
+ * @param ec error code to return
+ * @param h_denom_pub hash of the denomination of the coin
+ * @param coin_pub public key of the coin
+ * @param h_age_commitment hash of the age commitment as found in the database
+ * @return MHD result code
+ */
+MHD_RESULT
+TEH_RESPONSE_reply_coin_age_commitment_conflict (
+  struct MHD_Connection *connection,
+  enum TALER_ErrorCode ec,
+  const struct TALER_DenominationHashP *h_denom_pub,
+  const struct TALER_CoinSpendPublicKeyP *coin_pub,
+  const struct TALER_AgeCommitmentHash *h_age_commitment);
+
 /**
  * Fundamental details about a purse.
  */

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

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