summaryrefslogtreecommitdiff
path: root/src/include/taler_exchangedb_plugin.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/taler_exchangedb_plugin.h')
-rw-r--r--src/include/taler_exchangedb_plugin.h71
1 files changed, 41 insertions, 30 deletions
diff --git a/src/include/taler_exchangedb_plugin.h b/src/include/taler_exchangedb_plugin.h
index 8b01ee650..73a18ca6a 100644
--- a/src/include/taler_exchangedb_plugin.h
+++ b/src/include/taler_exchangedb_plugin.h
@@ -981,18 +981,15 @@ struct TALER_EXCHANGEDB_Deposit
struct TALER_PrivateContractHash h_contract_terms;
/**
- * Hash of the (canonical) representation of @e wire, used
- * to check the signature on the request. Generated by
- * the exchange from the detailed wire data provided by the
- * merchant.
+ * Salt used by the merchant to compute "h_wire".
*/
- struct TALER_MerchantWireHash h_wire;
+ struct TALER_WireSalt wire_salt;
/**
- * Detailed information about the receiver for executing the transaction.
- * Includes URL in payto://-format and salt.
+ * Information about the receiver for executing the transaction. URI in
+ * payto://-format.
*/
- json_t *receiver_wire_account;
+ char *receiver_wire_account;
/**
* Additional details for extensions relevant for this
@@ -1072,23 +1069,20 @@ struct TALER_EXCHANGEDB_DepositListEntry
struct TALER_PrivateContractHash h_contract_terms;
/**
- * Hash of the (canonical) representation of @e wire, used
- * to check the signature on the request. Generated by
- * the exchange from the detailed wire data provided by the
- * merchant.
- */
- struct TALER_MerchantWireHash h_wire;
-
- /**
* Hash of the public denomination key used to sign the coin.
*/
struct TALER_DenominationHash h_denom_pub;
/**
* Detailed information about the receiver for executing the transaction.
- * Includes URL in payto://-format and salt.
+ * URL in payto://-format.
*/
- json_t *receiver_wire_account;
+ char *receiver_wire_account;
+
+ /**
+ * Salt used to compute h_wire from the @e receiver_wire_account.
+ */
+ struct TALER_WireSalt wire_salt;
/**
* Time when this request was generated. Used, for example, to
@@ -1545,17 +1539,9 @@ typedef enum GNUNET_GenericReturnValue
void *cls,
uint64_t rowid,
struct GNUNET_TIME_Absolute exchange_timestamp,
- struct GNUNET_TIME_Absolute wallet_timestamp,
- const struct TALER_MerchantPublicKeyP *merchant_pub,
+ const struct TALER_EXCHANGEDB_Deposit *deposit,
const struct TALER_DenominationPublicKey *denom_pub,
- const struct TALER_CoinSpendPublicKeyP *coin_pub,
- const struct TALER_CoinSpendSignatureP *coin_sig,
- const struct TALER_Amount *amount_with_fee,
- const struct TALER_PrivateContractHash *h_contract_terms,
- struct GNUNET_TIME_Absolute refund_deadline,
- struct GNUNET_TIME_Absolute wire_deadline,
- const json_t *receiver_wire_account,
- int done);
+ bool done);
/**
@@ -2627,7 +2613,6 @@ struct TALER_EXCHANGEDB_Plugin
*
* @param cls the @e cls of this struct with the plugin-specific state
* @param deposit deposit to search for
- * @param check_extras whether to check extra fields or not
* @param[out] deposit_fee set to the deposit fee the exchange charged
* @param[out] exchange_timestamp set to the time when the exchange received the deposit
* @return 1 if we know this operation,
@@ -2637,12 +2622,38 @@ struct TALER_EXCHANGEDB_Plugin
enum GNUNET_DB_QueryStatus
(*have_deposit)(void *cls,
const struct TALER_EXCHANGEDB_Deposit *deposit,
- int check_extras,
struct TALER_Amount *deposit_fee,
struct GNUNET_TIME_Absolute *exchange_timestamp);
/**
+ * Check if we have the specified deposit already in the database.
+ *
+ * @param cls the `struct PostgresClosure` with the plugin-specific state
+ * @param h_contract_terms contract to check for
+ * @param h_wire wire hash to check for
+ * @param coin_pub public key of the coin to check for
+ * @param merchant merchant public key to check for
+ * @param refund_deadline expected refund deadline
+ * @param[out] deposit_fee set to the deposit fee the exchange charged
+ * @param[out] exchange_timestamp set to the time when the exchange received the deposit
+ * @return 1 if we know this operation,
+ * 0 if this exact deposit is unknown to us,
+ * otherwise transaction error status
+ */
+ enum GNUNET_DB_QueryStatus
+ (*have_deposit2)(
+ void *cls,
+ const struct TALER_PrivateContractHash *h_contract_terms,
+ const struct TALER_MerchantWireHash *h_wire,
+ const struct TALER_CoinSpendPublicKeyP *coin_pub,
+ const struct TALER_MerchantPublicKeyP *merchant,
+ struct GNUNET_TIME_Absolute refund_deadline,
+ struct TALER_Amount *deposit_fee,
+ struct GNUNET_TIME_Absolute *exchange_timestamp);
+
+
+ /**
* Insert information about deposited coin into the database.
*
* @param cls the @e cls of this struct with the plugin-specific state