gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] branch master updated: improve wallet_Data support in e


From: gnunet
Subject: [taler-exchange] branch master updated: improve wallet_Data support in exchange APIs
Date: Mon, 11 Sep 2023 15:33:04 +0200

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

grothoff pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new dae82359 improve wallet_Data support in exchange APIs
dae82359 is described below

commit dae8235928105f24f3178cdd2bcfa67ac0fb21c3
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Mon Sep 11 15:33:01 2023 +0200

    improve wallet_Data support in exchange APIs
---
 src/auditor/taler-helper-auditor-coins.c             |  3 +++
 src/exchange/taler-exchange-httpd_batch-deposit.c    |  1 +
 src/exchange/taler-exchange-httpd_responses.c        |  1 +
 src/exchangedb/pg_get_coin_transactions.c            |  5 +++++
 .../pg_select_coin_deposits_above_serial_id.c        |  5 +++++
 src/include/taler_crypto_lib.h                       |  4 ++++
 src/include/taler_exchangedb_plugin.h                | 20 ++++++++++++++++++++
 src/lib/exchange_api_common.c                        |  8 ++++++++
 src/lib/exchange_api_refund.c                        |  8 ++++++++
 src/testing/testing_api_cmd_batch_deposit.c          |  3 ++-
 src/testing/testing_api_cmd_deposit.c                |  3 ++-
 src/util/wallet_signatures.c                         |  8 ++++++--
 12 files changed, 65 insertions(+), 4 deletions(-)

diff --git a/src/auditor/taler-helper-auditor-coins.c 
b/src/auditor/taler-helper-auditor-coins.c
index 5ce7fcb4..bfdc11c7 100644
--- a/src/auditor/taler-helper-auditor-coins.c
+++ b/src/auditor/taler-helper-auditor-coins.c
@@ -1565,6 +1565,9 @@ deposit_cb (void *cls,
                                      &issue->fees.deposit,
                                      &h_wire,
                                      &deposit->h_contract_terms,
+                                     deposit->no_wallet_data_hash
+                                     ? NULL
+                                     : &deposit->wallet_data_hash,
                                      &deposit->coin.h_age_commitment,
                                      &deposit->h_policy,
                                      &h_denom_pub,
diff --git a/src/exchange/taler-exchange-httpd_batch-deposit.c 
b/src/exchange/taler-exchange-httpd_batch-deposit.c
index e2aac1f2..4ef14308 100644
--- a/src/exchange/taler-exchange-httpd_batch-deposit.c
+++ b/src/exchange/taler-exchange-httpd_batch-deposit.c
@@ -468,6 +468,7 @@ parse_coin (struct MHD_Connection *connection,
         deposit_fee,
         &dc->h_wire,
         &bd->h_contract_terms,
+        &bd->wallet_data_hash,
         &cdi->coin.h_age_commitment,
         NULL != dc->policy_json ? &dc->h_policy : NULL,
         &cdi->coin.denom_pub_hash,
diff --git a/src/exchange/taler-exchange-httpd_responses.c 
b/src/exchange/taler-exchange-httpd_responses.c
index 863166e0..1b601b87 100644
--- a/src/exchange/taler-exchange-httpd_responses.c
+++ b/src/exchange/taler-exchange-httpd_responses.c
@@ -76,6 +76,7 @@ TEH_RESPONSE_compile_transaction_history (
               &deposit->deposit_fee,
               &h_wire,
               &deposit->h_contract_terms,
+              &deposit->wallet_data_hash,
               &deposit->h_age_commitment,
               &deposit->h_policy,
               &deposit->h_denom_pub,
diff --git a/src/exchangedb/pg_get_coin_transactions.c 
b/src/exchangedb/pg_get_coin_transactions.c
index ad0835fd..e05fbbd9 100644
--- a/src/exchangedb/pg_get_coin_transactions.c
+++ b/src/exchangedb/pg_get_coin_transactions.c
@@ -100,6 +100,10 @@ add_coin_deposit (void *cls,
           GNUNET_PQ_result_spec_auto_from_type ("age_commitment_hash",
                                                 &deposit->h_age_commitment),
           &deposit->no_age_commitment),
+        GNUNET_PQ_result_spec_allow_null (
+          GNUNET_PQ_result_spec_auto_from_type ("wallet_data_hash",
+                                                &deposit->wallet_data_hash),
+          &deposit->no_wallet_data_hash),
         GNUNET_PQ_result_spec_timestamp ("wallet_timestamp",
                                          &deposit->timestamp),
         GNUNET_PQ_result_spec_timestamp ("refund_deadline",
@@ -735,6 +739,7 @@ TEH_PG_get_coin_transactions (
            ",bdep.wire_deadline"
            ",bdep.merchant_pub"
            ",bdep.h_contract_terms"
+           ",bdep.wallet_data_hash"
            ",bdep.wire_salt"
            ",wt.payto_uri"
            ",cdep.coin_sig"
diff --git a/src/exchangedb/pg_select_coin_deposits_above_serial_id.c 
b/src/exchangedb/pg_select_coin_deposits_above_serial_id.c
index 49065c17..000b908e 100644
--- a/src/exchangedb/pg_select_coin_deposits_above_serial_id.c
+++ b/src/exchangedb/pg_select_coin_deposits_above_serial_id.c
@@ -93,6 +93,10 @@ coin_deposit_serial_helper_cb (void *cls,
         GNUNET_PQ_result_spec_auto_from_type ("age_commitment_hash",
                                               &deposit.coin.h_age_commitment),
         &deposit.coin.no_age_commitment),
+      GNUNET_PQ_result_spec_allow_null (
+        GNUNET_PQ_result_spec_auto_from_type ("wallet_data_hash",
+                                              &deposit.wallet_data_hash),
+        &deposit.no_wallet_data_hash),
       GNUNET_PQ_result_spec_auto_from_type ("coin_sig",
                                             &deposit.csig),
       GNUNET_PQ_result_spec_timestamp ("refund_deadline",
@@ -166,6 +170,7 @@ TEH_PG_select_coin_deposits_above_serial_id (
            ",bdep.wallet_timestamp"
            ",bdep.exchange_timestamp"
            ",bdep.merchant_pub"
+           ",bdep.wallet_data_hash"
            ",denom.denom_pub"
            ",kc.coin_pub"
            ",kc.age_commitment_hash"
diff --git a/src/include/taler_crypto_lib.h b/src/include/taler_crypto_lib.h
index ee06f631..67e5ff71 100644
--- a/src/include/taler_crypto_lib.h
+++ b/src/include/taler_crypto_lib.h
@@ -3548,6 +3548,7 @@ TALER_wallet_reserve_attest_request_verify (
  * @param deposit_fee the deposit fee we expect to pay
  * @param h_wire hash of the merchant’s account details
  * @param h_contract_terms hash of the contact of the merchant with the 
customer (further details are never disclosed to the exchange)
+ * @param wallet_data_hash hash over wallet inputs into the contract (maybe 
NULL)
  * @param h_age_commitment hash over the age commitment, if applicable to the 
denomination (maybe NULL)
  * @param h_policy hash over the policy extension
  * @param h_denom_pub hash of the coin denomination's public key
@@ -3563,6 +3564,7 @@ TALER_wallet_deposit_sign (
   const struct TALER_Amount *deposit_fee,
   const struct TALER_MerchantWireHashP *h_wire,
   const struct TALER_PrivateContractHashP *h_contract_terms,
+  const struct GNUNET_HashCode *wallet_data_hash,
   const struct TALER_AgeCommitmentHash *h_age_commitment,
   const struct TALER_ExtensionPolicyHashP *h_policy,
   const struct TALER_DenominationHashP *h_denom_pub,
@@ -3580,6 +3582,7 @@ TALER_wallet_deposit_sign (
  * @param deposit_fee the deposit fee we expect to pay
  * @param h_wire hash of the merchant’s account details
  * @param h_contract_terms hash of the contact of the merchant with the 
customer (further details are never disclosed to the exchange)
+ * @param wallet_data_hash hash over wallet inputs into the contract (maybe 
NULL)
  * @param h_age_commitment hash over the age commitment (maybe all zeroes, if 
not applicable to the denomination)
  * @param h_policy hash over the policy extension
  * @param h_denom_pub hash of the coin denomination's public key
@@ -3596,6 +3599,7 @@ TALER_wallet_deposit_verify (
   const struct TALER_Amount *deposit_fee,
   const struct TALER_MerchantWireHashP *h_wire,
   const struct TALER_PrivateContractHashP *h_contract_terms,
+  const struct GNUNET_HashCode *wallet_data_hash,
   const struct TALER_AgeCommitmentHash *h_age_commitment,
   const struct TALER_ExtensionPolicyHashP *h_policy,
   const struct TALER_DenominationHashP *h_denom_pub,
diff --git a/src/include/taler_exchangedb_plugin.h 
b/src/include/taler_exchangedb_plugin.h
index c3be78b4..8be26a75 100644
--- a/src/include/taler_exchangedb_plugin.h
+++ b/src/include/taler_exchangedb_plugin.h
@@ -1861,6 +1861,11 @@ struct TALER_EXCHANGEDB_Deposit
    */
   struct TALER_WireSaltP wire_salt;
 
+  /**
+   * Hash over inputs from the wallet to customize the contract.
+   */
+  struct GNUNET_HashCode wallet_data_hash;
+
   /**
    * Hash over the policy data for this deposit (remains unknown to the
    * Exchange).  Needed for the verification of the deposit's signature
@@ -1919,6 +1924,11 @@ struct TALER_EXCHANGEDB_Deposit
    */
   bool has_policy;
 
+  /**
+   * True if @e wallet_data_hash is not in use.
+   */
+  bool no_wallet_data_hash;
+
 };
 
 
@@ -1949,6 +1959,11 @@ struct TALER_EXCHANGEDB_DepositListEntry
    */
   struct TALER_PrivateContractHashP h_contract_terms;
 
+  /**
+   * Hash over inputs from the wallet to customize the contract.
+   */
+  struct GNUNET_HashCode wallet_data_hash;
+
   /**
    * Hash of the public denomination key used to sign the coin.
    */
@@ -2023,6 +2038,11 @@ struct TALER_EXCHANGEDB_DepositListEntry
    */
   bool no_age_commitment;
 
+  /**
+   * true, if wallet data hash is not present
+   */
+  bool no_wallet_data_hash;
+
   /**
    * True if a policy was provided with the deposit request
    */
diff --git a/src/lib/exchange_api_common.c b/src/lib/exchange_api_common.c
index ac0c4617..609a2f7e 100644
--- a/src/lib/exchange_api_common.c
+++ b/src/lib/exchange_api_common.c
@@ -848,6 +848,8 @@ help_deposit (struct CoinHistoryParseContext *pc,
   struct TALER_PrivateContractHashP h_contract_terms;
   struct TALER_ExtensionPolicyHashP h_policy;
   bool no_h_policy;
+  struct GNUNET_HashCode wallet_data_hash;
+  bool no_wallet_data_hash;
   struct GNUNET_TIME_Timestamp wallet_timestamp;
   struct TALER_MerchantPublicKeyP merchant_pub;
   struct GNUNET_TIME_Timestamp refund_deadline = {0};
@@ -860,6 +862,10 @@ help_deposit (struct CoinHistoryParseContext *pc,
                                  &sig),
     GNUNET_JSON_spec_fixed_auto ("h_contract_terms",
                                  &h_contract_terms),
+    GNUNET_JSON_spec_mark_optional (
+      GNUNET_JSON_spec_fixed_auto ("wallet_data_hash",
+                                   &wallet_data_hash),
+      &no_wallet_data_hash),
     GNUNET_JSON_spec_fixed_auto ("h_wire",
                                  &h_wire),
     GNUNET_JSON_spec_mark_optional (
@@ -897,6 +903,7 @@ help_deposit (struct CoinHistoryParseContext *pc,
         &deposit_fee,
         &h_wire,
         &h_contract_terms,
+        no_wallet_data_hash ? NULL : &wallet_data_hash,
         no_hac ? NULL : &hac,
         no_h_policy ? NULL : &h_policy,
         &pc->dk->h_key,
@@ -2145,6 +2152,7 @@ TALER_EXCHANGE_verify_deposit_signature_ (
                                    &dki->fees.deposit,
                                    h_wire,
                                    &dcd->h_contract_terms,
+                                   &dcd->wallet_data_hash,
                                    &cdd->h_age_commitment,
                                    ech,
                                    &cdd->h_denom_pub,
diff --git a/src/lib/exchange_api_refund.c b/src/lib/exchange_api_refund.c
index 83f9612d..3f12f28d 100644
--- a/src/lib/exchange_api_refund.c
+++ b/src/lib/exchange_api_refund.c
@@ -234,6 +234,8 @@ verify_conflict_history_ok (struct 
TALER_EXCHANGE_RefundHandle *rh,
       bool no_hac;
       struct TALER_ExtensionPolicyHashP h_policy;
       bool no_h_policy;
+      struct GNUNET_HashCode wallet_data_hash;
+      bool no_wallet_data_hash;
       struct GNUNET_TIME_Timestamp wallet_timestamp;
       struct TALER_MerchantPublicKeyP merchant_pub;
       struct GNUNET_TIME_Timestamp refund_deadline;
@@ -253,6 +255,10 @@ verify_conflict_history_ok (struct 
TALER_EXCHANGE_RefundHandle *rh,
           GNUNET_JSON_spec_fixed_auto ("h_policy",
                                        &h_policy),
           &no_h_policy),
+        GNUNET_JSON_spec_mark_optional (
+          GNUNET_JSON_spec_fixed_auto ("wallet_data_hash",
+                                       &wallet_data_hash),
+          &no_wallet_data_hash),
         GNUNET_JSON_spec_timestamp ("timestamp",
                                     &wallet_timestamp),
         GNUNET_JSON_spec_timestamp ("refund_deadline",
@@ -277,6 +283,8 @@ verify_conflict_history_ok (struct 
TALER_EXCHANGE_RefundHandle *rh,
                                        &deposit_fee,
                                        &h_wire,
                                        &h_contract_terms,
+                                       no_wallet_data_hash ? NULL :
+                                       &wallet_data_hash,
                                        no_hac ?  NULL : &h_age_commitment,
                                        no_h_policy ? NULL: &h_policy,
                                        &h_denom_pub,
diff --git a/src/testing/testing_api_cmd_batch_deposit.c 
b/src/testing/testing_api_cmd_batch_deposit.c
index c1e973cb..a3c25e35 100644
--- a/src/testing/testing_api_cmd_batch_deposit.c
+++ b/src/testing/testing_api_cmd_batch_deposit.c
@@ -364,8 +364,9 @@ batch_deposit_run (void *cls,
                                &denom_pub->fees.deposit,
                                &h_wire,
                                &h_contract_terms,
+                               NULL, /* wallet_data_hash */
                                &cdd->h_age_commitment,
-                               NULL, /* FIXME #7270: add hash of extensions */
+                               NULL, /* hash of extensions */
                                &denom_pub->h_key,
                                ds->wallet_timestamp,
                                &merchant_pub,
diff --git a/src/testing/testing_api_cmd_deposit.c 
b/src/testing/testing_api_cmd_deposit.c
index 0e17dc2f..0ee6aa44 100644
--- a/src/testing/testing_api_cmd_deposit.c
+++ b/src/testing/testing_api_cmd_deposit.c
@@ -441,8 +441,9 @@ deposit_run (void *cls,
                                &denom_pub->fees.deposit,
                                &h_wire,
                                &h_contract_terms,
+                               NULL, /* wallet data hash */
                                phac,
-                               NULL, /* FIXME #7270: add hash of extensions */
+                               NULL, /* hash of extensions */
                                &denom_pub->h_key,
                                ds->wallet_timestamp,
                                &merchant_pub,
diff --git a/src/util/wallet_signatures.c b/src/util/wallet_signatures.c
index 89acecb3..4b2fab6e 100644
--- a/src/util/wallet_signatures.c
+++ b/src/util/wallet_signatures.c
@@ -127,6 +127,7 @@ TALER_wallet_deposit_sign (
   const struct TALER_Amount *deposit_fee,
   const struct TALER_MerchantWireHashP *h_wire,
   const struct TALER_PrivateContractHashP *h_contract_terms,
+  const struct GNUNET_HashCode *wallet_data_hash,
   const struct TALER_AgeCommitmentHash *h_age_commitment,
   const struct TALER_ExtensionPolicyHashP *h_policy,
   const struct TALER_DenominationHashP *h_denom_pub,
@@ -147,6 +148,8 @@ TALER_wallet_deposit_sign (
     .merchant = *merchant_pub
   };
 
+  if (NULL != wallet_data_hash)
+    dr.wallet_data_hash = *wallet_data_hash;
   if (NULL != h_age_commitment)
     dr.h_age_commitment = *h_age_commitment;
   if (NULL != h_policy)
@@ -167,6 +170,7 @@ TALER_wallet_deposit_verify (
   const struct TALER_Amount *deposit_fee,
   const struct TALER_MerchantWireHashP *h_wire,
   const struct TALER_PrivateContractHashP *h_contract_terms,
+  const struct GNUNET_HashCode *wallet_data_hash,
   const struct TALER_AgeCommitmentHash *h_age_commitment,
   const struct TALER_ExtensionPolicyHashP *h_policy,
   const struct TALER_DenominationHashP *h_denom_pub,
@@ -185,10 +189,10 @@ TALER_wallet_deposit_verify (
     .wallet_timestamp = GNUNET_TIME_timestamp_hton (wallet_timestamp),
     .refund_deadline = GNUNET_TIME_timestamp_hton (refund_deadline),
     .merchant = *merchant_pub,
-    .h_age_commitment = {{{0}}},
-    .h_policy = {{{0}}}
   };
 
+  if (NULL != wallet_data_hash)
+    dr.wallet_data_hash = *wallet_data_hash;
   if (NULL != h_age_commitment)
     dr.h_age_commitment = *h_age_commitment;
   if (NULL != h_policy)

-- 
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]