gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] 02/130: brutally fixing types in src/include/, creating


From: gnunet
Subject: [taler-exchange] 02/130: brutally fixing types in src/include/, creating plenty of FTBFS issues
Date: Wed, 17 Nov 2021 12:24:10 +0100

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

grothoff pushed a commit to branch master
in repository exchange.

commit 55632b1fbfd5098e3fad6256c0f485cf2a012096
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Fri Oct 22 22:04:35 2021 +0200

    brutally fixing types in src/include/, creating plenty of FTBFS issues
---
 src/include/taler_auditordb_plugin.h  |  31 ++---
 src/include/taler_crypto_lib.h        | 228 +++++++++++++++++++++++++++++-----
 src/include/taler_exchange_service.h  |  63 +++++-----
 src/include/taler_exchangedb_plugin.h | 100 ++++++++-------
 src/include/taler_signatures.h        |  67 +++++-----
 src/include/taler_util.h              |   2 +-
 src/util/Makefile.am                  |   1 +
 src/util/mhd.c                        |   2 +-
 src/util/secmod_signatures.c          |   4 +-
 9 files changed, 343 insertions(+), 155 deletions(-)

diff --git a/src/include/taler_auditordb_plugin.h 
b/src/include/taler_auditordb_plugin.h
index 7733009b..18db8694 100644
--- a/src/include/taler_auditordb_plugin.h
+++ b/src/include/taler_auditordb_plugin.h
@@ -59,10 +59,10 @@ typedef void
  *         #GNUNET_NO to stop processing further rows
  *         #GNUNET_SYSERR or other values on error.
  */
-typedef int
+typedef enum GNUNET_GenericReturnValue
 (*TALER_AUDITORDB_HistoricDenominationRevenueDataCallback)(
   void *cls,
-  const struct GNUNET_HashCode *denom_pub_hash,
+  const struct TALER_DenominationHash *denom_pub_hash,
   struct GNUNET_TIME_Absolute revenue_timestamp,
   const struct TALER_Amount *revenue_balance,
   const struct TALER_Amount *loss_balance);
@@ -81,7 +81,7 @@ typedef int
  *         #GNUNET_NO to stop processing further rows
  *         #GNUNET_SYSERR or other values on error.
  */
-typedef int
+typedef enum GNUNET_GenericReturnValue
 (*TALER_AUDITORDB_HistoricReserveRevenueDataCallback)(
   void *cls,
   struct GNUNET_TIME_Absolute start_time,
@@ -171,7 +171,6 @@ struct TALER_AUDITORDB_ProgressPointDepositConfirmation
    */
   uint64_t last_deposit_confirmation_serial_id;
 
-
 };
 
 
@@ -275,12 +274,12 @@ struct TALER_AUDITORDB_DepositConfirmation
   /**
    * Hash over the contract for which this deposit is made.
    */
-  struct GNUNET_HashCode h_contract_terms;
+  struct TALER_PrivateContractHash h_contract_terms;
 
   /**
    * Hash over the wiring information of the merchant.
    */
-  struct GNUNET_HashCode h_wire;
+  struct TALER_MerchantWireHash h_wire;
 
   /**
    * Time when this deposit confirmation was generated by the exchange.
@@ -349,7 +348,7 @@ struct TALER_AUDITORDB_DepositConfirmation
  * @param dc the deposit confirmation itself
  * @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop iterating
  */
-typedef int
+typedef enum GNUNET_GenericReturnValue
 (*TALER_AUDITORDB_DepositConfirmationCallback)(
   void *cls,
   uint64_t serial_id,
@@ -453,8 +452,8 @@ struct TALER_AUDITORDB_Plugin
    * @return #GNUNET_OK on success,
    *         #GNUNET_SYSERR on DB errors
    */
-  int
-  (*gc) (void *cls);
+  enum GNUNET_GenericReturnValue
+  (*gc)(void *cls);
 
 
   /**
@@ -1040,7 +1039,8 @@ struct TALER_AUDITORDB_Plugin
    */
   enum GNUNET_DB_QueryStatus
   (*insert_denomination_balance)(void *cls,
-                                 const struct GNUNET_HashCode *denom_pub_hash,
+                                 const struct
+                                 TALER_DenominationHash *denom_pub_hash,
                                  const struct TALER_Amount *denom_balance,
                                  const struct TALER_Amount *denom_loss,
                                  const struct TALER_Amount *denom_risk,
@@ -1063,7 +1063,8 @@ struct TALER_AUDITORDB_Plugin
    */
   enum GNUNET_DB_QueryStatus
   (*update_denomination_balance)(void *cls,
-                                 const struct GNUNET_HashCode *denom_pub_hash,
+                                 const struct
+                                 TALER_DenominationHash *denom_pub_hash,
                                  const struct TALER_Amount *denom_balance,
                                  const struct TALER_Amount *denom_loss,
                                  const struct TALER_Amount *denom_risk,
@@ -1085,7 +1086,8 @@ struct TALER_AUDITORDB_Plugin
    */
   enum GNUNET_DB_QueryStatus
   (*get_denomination_balance)(void *cls,
-                              const struct GNUNET_HashCode *denom_pub_hash,
+                              const struct
+                              TALER_DenominationHash *denom_pub_hash,
                               struct TALER_Amount *denom_balance,
                               struct TALER_Amount *denom_loss,
                               struct TALER_Amount *denom_risk,
@@ -1102,7 +1104,8 @@ struct TALER_AUDITORDB_Plugin
    */
   enum GNUNET_DB_QueryStatus
   (*del_denomination_balance)(void *cls,
-                              const struct GNUNET_HashCode *denom_pub_hash);
+                              const struct
+                              TALER_DenominationHash *denom_pub_hash);
 
 
   /**
@@ -1206,7 +1209,7 @@ struct TALER_AUDITORDB_Plugin
   (*insert_historic_denom_revenue)(
     void *cls,
     const struct TALER_MasterPublicKeyP *master_pub,
-    const struct GNUNET_HashCode *denom_pub_hash,
+    const struct TALER_DenominationHash *denom_pub_hash,
     struct GNUNET_TIME_Absolute revenue_timestamp,
     const struct TALER_Amount *revenue_balance,
     const struct TALER_Amount *recoup_loss_balance);
diff --git a/src/include/taler_crypto_lib.h b/src/include/taler_crypto_lib.h
index 0284fc55..ed6ed36f 100644
--- a/src/include/taler_crypto_lib.h
+++ b/src/include/taler_crypto_lib.h
@@ -1,6 +1,6 @@
 /*
   This file is part of TALER
-  Copyright (C) 2014-2020 Taler Systems SA
+  Copyright (C) 2014-2021 Taler Systems SA
 
   TALER is free software; you can redistribute it and/or modify it under the
   terms of the GNU General Public License as published by the Free Software
@@ -366,8 +366,85 @@ struct TALER_ClaimTokenP
 struct TALER_WireSalt
 {
   /**
-   * Actual salt value.
-   * FIXME: #7032: change to 16 byte value!
+   * Actual 128-bit salt value.
+   */
+  uint32_t salt[4];
+};
+
+
+/**
+ * Hash used to represent a denomination public key
+ * and associated age restrictions (if any).
+ */
+struct TALER_DenominationHash
+{
+  /**
+   * Actual hash value.
+   */
+  struct GNUNET_HashCode data;
+};
+
+
+/**
+ * Hash used to represent the private part
+ * of a contract between merchant and consumer.
+ */
+struct TALER_PrivateContractHash
+{
+  /**
+   * Actual hash value.
+   */
+  struct GNUNET_HashCode data;
+};
+
+
+/**
+ * Hash used to represent the "public" extensions to
+ * a contract that is shared with the exchange.
+ */
+struct TALER_ExtensionContractHash
+{
+  /**
+   * Actual hash value.
+   */
+  struct GNUNET_HashCode data;
+};
+
+
+/**
+ * Hash used to represent the salted hash of a
+ * merchant's bank account.
+ */
+struct TALER_MerchantWireHash
+{
+  /**
+   * Actual hash value.
+   */
+  struct GNUNET_HashCode data;
+};
+
+
+/**
+ * Hash used to represent the unsalted hash of a
+ * payto:// URI representing a bank account.
+ */
+struct TALER_PaytoHash
+{
+  /**
+   * Actual hash value.
+   */
+  struct GNUNET_HashCode data;
+};
+
+
+/**
+ * Hash used to represent a commitment to a blinded
+ * coin, i.e. the hash of the envelope.
+ */
+struct TALER_BlindedCoinHash
+{
+  /**
+   * Actual hash value.
    */
   struct GNUNET_HashCode data;
 };
@@ -376,15 +453,48 @@ struct TALER_WireSalt
 GNUNET_NETWORK_STRUCT_END
 
 
+/**
+ * Types of public keys used for denominations in Taler.
+ */
+enum TALER_DenominationCipher
+{
+
+  /**
+   * RSA blind signature.
+   */
+  TALER_DENOMINATION_RSA = 0,
+
+  /**
+   * Clause-Schnorr blind signature.
+   */
+  // TALER_DENOMINATION_CS = 1
+};
+
+
 /**
  * @brief Type of (unblinded) coin signatures for Taler.
  */
 struct TALER_DenominationSignature
 {
+
+  /**
+   * Type of the signature.
+   */
+  enum TALER_DenominationCipher cipher;
+
   /**
-   * Taler uses RSA for blinding.
+   * Details, depending on @e cipher.
    */
-  struct GNUNET_CRYPTO_RsaSignature *rsa_signature;
+  union
+  {
+
+    /**
+     * If we use #TALER_DENOMINATION_RSA in @a cipher.
+     */
+    struct GNUNET_CRYPTO_RsaSignature *rsa_signature;
+
+  } details;
+
 };
 
 
@@ -393,10 +503,29 @@ struct TALER_DenominationSignature
  */
 struct TALER_DenominationPublicKey
 {
+
   /**
-   * Taler uses RSA for signing coins.
+   * Type of the public key.
    */
-  struct GNUNET_CRYPTO_RsaPublicKey *rsa_public_key;
+  enum TALER_DenominationCipher cipher;
+
+  /**
+   * Age restriction mask used for the key.
+   */
+  uint32_t age_mask;
+
+  /**
+   * Details, depending on @e cipher.
+   */
+  union
+  {
+
+    /**
+     * If we use #TALER_DENOMINATION_RSA in @a cipher.
+     */
+    struct GNUNET_CRYPTO_RsaPublicKey *rsa_public_key;
+
+  } details;
 };
 
 
@@ -405,10 +534,23 @@ struct TALER_DenominationPublicKey
  */
 struct TALER_DenominationPrivateKey
 {
+
+  /**
+   * Type of the public key.
+   */
+  enum TALER_DenominationCipher cipher;
+
   /**
-   * Taler uses RSA for signing coins.
+   * Details, depending on @e cipher.
    */
-  struct GNUNET_CRYPTO_RsaPrivateKey *rsa_private_key;
+  union
+  {
+
+    /**
+     * If we use #TALER_DENOMINATION_RSA in @a cipher.
+     */
+    struct GNUNET_CRYPTO_RsaPrivateKey *rsa_private_key;
+  };
 };
 
 
@@ -428,7 +570,7 @@ struct TALER_CoinPublicInfo
    * Hash of the public key representing the denomination of the coin that is
    * being deposited.
    */
-  struct GNUNET_HashCode denom_pub_hash;
+  struct TALER_DenominationHash denom_pub_hash;
 
   /**
    * (Unblinded) signature over @e coin_pub with @e denom_pub,
@@ -467,6 +609,30 @@ struct TALER_TrackTransferDetails
 };
 
 
+/**
+ * Compute the hash of the given @a denom_pub.
+ *
+ * @param denom_pub public key to hash
+ * @param[out] denom_hash resulting hash value
+ */
+void
+TALER_denom_pub_hash (const struct TALER_DenominationPublicKey *denom_pub,
+                      struct TALER_DenominationHash *denom_hash);
+
+
+/**
+ * Obtain denomination public key from a denomination private key.
+ *
+ * @param denom_priv private key to convert
+ * @param age_mask age mask to use
+ * @param[out] denom_pub where to return the public key
+ */
+void
+TALER_denom_priv_to_pub (const struct TALER_DenominationPrivateKey *denom_priv,
+                         uint32_t age_mask,
+                         struct TALER_DenominationPublicKey *denom_pub);
+
+
 /**
  * Check if a coin is valid; that is, whether the denomination key exists,
  * is not expired, and the signature is correct.
@@ -520,7 +686,7 @@ struct TALER_PlanchetDetail
   /**
    * Hash of the denomination public key.
    */
-  struct GNUNET_HashCode denom_pub_hash;
+  struct TALER_DenominationHash denom_pub_hash;
 
   /**
    * Blinded coin (see GNUNET_CRYPTO_rsa_blind()).  Note: is malloc()'ed!
@@ -845,7 +1011,7 @@ typedef void
   const char *section_name,
   struct GNUNET_TIME_Absolute start_time,
   struct GNUNET_TIME_Relative validity_duration,
-  const struct GNUNET_HashCode *h_denom_pub,
+  const struct TALER_DenominationHash *h_denom_pub,
   const struct TALER_DenominationPublicKey *denom_pub,
   const struct TALER_SecurityModulePublicKeyP *sm_pub,
   const struct TALER_SecurityModuleSignatureP *sm_sig);
@@ -900,7 +1066,7 @@ TALER_CRYPTO_helper_denom_poll (struct 
TALER_CRYPTO_DenominationHelper *dh);
 struct TALER_DenominationSignature
 TALER_CRYPTO_helper_denom_sign (
   struct TALER_CRYPTO_DenominationHelper *dh,
-  const struct GNUNET_HashCode *h_denom_pub,
+  const struct TALER_DenominationHash *h_denom_pub,
   const void *msg,
   size_t msg_size,
   enum TALER_ErrorCode *ec);
@@ -924,7 +1090,7 @@ TALER_CRYPTO_helper_denom_sign (
 void
 TALER_CRYPTO_helper_denom_revoke (
   struct TALER_CRYPTO_DenominationHelper *dh,
-  const struct GNUNET_HashCode *h_denom_pub);
+  const struct TALER_DenominationHash *h_denom_pub);
 
 
 /**
@@ -1090,7 +1256,7 @@ TALER_CRYPTO_helper_esign_disconnect (
  * @param[out] coin_sig resulting signature
  */
 void
-TALER_wallet_link_sign (const struct GNUNET_HashCode *h_denom_pub,
+TALER_wallet_link_sign (const struct TALER_DenominationHash *h_denom_pub,
                         const struct TALER_TransferPublicKeyP *transfer_pub,
                         const void *coin_ev,
                         size_t coin_ev_size,
@@ -1111,7 +1277,7 @@ TALER_wallet_link_sign (const struct GNUNET_HashCode 
*h_denom_pub,
  */
 enum GNUNET_GenericReturnValue
 TALER_wallet_link_verify (
-  const struct GNUNET_HashCode *h_denom_pub,
+  const struct TALER_DenominationHash *h_denom_pub,
   const struct TALER_TransferPublicKeyP *transfer_pub,
   const void *coin_ev,
   size_t coin_ev_size,
@@ -1200,7 +1366,7 @@ TALER_exchange_offline_auditor_del_verify (
  */
 void
 TALER_exchange_offline_denomination_revoke_sign (
-  const struct GNUNET_HashCode *h_denom_pub,
+  const struct TALER_DenominationHash *h_denom_pub,
   const struct TALER_MasterPrivateKeyP *master_priv,
   struct TALER_MasterSignatureP *master_sig);
 
@@ -1215,7 +1381,7 @@ TALER_exchange_offline_denomination_revoke_sign (
  */
 enum GNUNET_GenericReturnValue
 TALER_exchange_offline_denomination_revoke_verify (
-  const struct GNUNET_HashCode *h_denom_pub,
+  const struct TALER_DenominationHash *h_denom_pub,
   const struct TALER_MasterPublicKeyP *master_pub,
   const struct TALER_MasterSignatureP *master_sig);
 
@@ -1308,7 +1474,7 @@ TALER_exchange_offline_signkey_validity_verify (
  */
 void
 TALER_exchange_offline_denom_validity_sign (
-  const struct GNUNET_HashCode *h_denom_pub,
+  const struct TALER_DenominationHash *h_denom_pub,
   struct GNUNET_TIME_Absolute stamp_start,
   struct GNUNET_TIME_Absolute stamp_expire_withdraw,
   struct GNUNET_TIME_Absolute stamp_expire_deposit,
@@ -1341,7 +1507,7 @@ TALER_exchange_offline_denom_validity_sign (
  */
 enum GNUNET_GenericReturnValue
 TALER_exchange_offline_denom_validity_verify (
-  const struct GNUNET_HashCode *h_denom_pub,
+  const struct TALER_DenominationHash *h_denom_pub,
   struct GNUNET_TIME_Absolute stamp_start,
   struct GNUNET_TIME_Absolute stamp_expire_withdraw,
   struct GNUNET_TIME_Absolute stamp_expire_deposit,
@@ -1393,9 +1559,9 @@ TALER_exchange_secmod_eddsa_verify (
 
 
 /**
- * Create security module RSA signature.
+ * Create security module denomination signature.
  *
- * @param h_denom_pub hash of the public key to validate
+ * @param h_denom_pub hash of the public key to sign
  * @param section_name name of the section in the configuration
  * @param start_sign starting point of validity for signing
  * @param duration how long will the key be in use
@@ -1403,8 +1569,8 @@ TALER_exchange_secmod_eddsa_verify (
  * @param[out] secm_sig where to write the signature
  */
 void
-TALER_exchange_secmod_rsa_sign (
-  const struct GNUNET_HashCode *h_denom_pub,
+TALER_exchange_secmod_denom_sign (
+  const struct TALER_DenominationHash *h_denom_pub,
   const char *section_name,
   struct GNUNET_TIME_Absolute start_sign,
   struct GNUNET_TIME_Relative duration,
@@ -1413,7 +1579,7 @@ TALER_exchange_secmod_rsa_sign (
 
 
 /**
- * Verify security module RSA signature.
+ * Verify security module denomination signature.
  *
  * @param h_denom_pub hash of the public key to validate
  * @param section_name name of the section in the configuration
@@ -1424,8 +1590,8 @@ TALER_exchange_secmod_rsa_sign (
  * @return #GNUNET_OK if the signature is valid
  */
 enum GNUNET_GenericReturnValue
-TALER_exchange_secmod_rsa_verify (
-  const struct GNUNET_HashCode *h_denom_pub,
+TALER_exchange_secmod_denom_verify (
+  const struct TALER_DenominationHash *h_denom_pub,
   const char *section_name,
   struct GNUNET_TIME_Absolute start_sign,
   struct GNUNET_TIME_Relative duration,
@@ -1454,7 +1620,7 @@ TALER_exchange_secmod_rsa_verify (
 void
 TALER_auditor_denom_validity_sign (
   const char *auditor_url,
-  const struct GNUNET_HashCode *h_denom_pub,
+  const struct TALER_DenominationHash *h_denom_pub,
   const struct TALER_MasterPublicKeyP *master_pub,
   struct GNUNET_TIME_Absolute stamp_start,
   struct GNUNET_TIME_Absolute stamp_expire_withdraw,
@@ -1491,7 +1657,7 @@ TALER_auditor_denom_validity_sign (
 enum GNUNET_GenericReturnValue
 TALER_auditor_denom_validity_verify (
   const char *auditor_url,
-  const struct GNUNET_HashCode *h_denom_pub,
+  const struct TALER_DenominationHash *h_denom_pub,
   const struct TALER_MasterPublicKeyP *master_pub,
   struct GNUNET_TIME_Absolute stamp_start,
   struct GNUNET_TIME_Absolute stamp_expire_withdraw,
@@ -1629,7 +1795,7 @@ TALER_exchange_offline_wire_del_verify (
  */
 void
 TALER_exchange_wire_signature_hash (const char *payto_uri,
-                                    struct GNUNET_HashCode *hc);
+                                    struct TALER_PaytoHash *hc);
 
 
 /**
@@ -1673,7 +1839,7 @@ TALER_exchange_wire_signature_make (
 void
 TALER_merchant_wire_signature_hash (const char *payto_uri,
                                     const struct TALER_WireSalt *salt,
-                                    struct GNUNET_HashCode *hc);
+                                    struct TALER_MerchantWireHash *hc);
 
 
 /**
diff --git a/src/include/taler_exchange_service.h 
b/src/include/taler_exchange_service.h
index 0b624391..d82e4b09 100644
--- a/src/include/taler_exchange_service.h
+++ b/src/include/taler_exchange_service.h
@@ -97,7 +97,7 @@ struct TALER_EXCHANGE_DenomPublicKey
   /**
    * The hash of the public key.
    */
-  struct GNUNET_HashCode h_key;
+  struct TALER_DenominationHash h_key;
 
   /**
    * Exchange's master signature over this denomination record.
@@ -619,7 +619,7 @@ TALER_EXCHANGE_destroy_denomination_key (
 const struct TALER_EXCHANGE_DenomPublicKey *
 TALER_EXCHANGE_get_denomination_key_by_hash (
   const struct TALER_EXCHANGE_Keys *keys,
-  const struct GNUNET_HashCode *hc);
+  const struct TALER_DenominationHash *hc);
 
 
 /**
@@ -772,6 +772,7 @@ TALER_EXCHANGE_wire_cancel (struct 
TALER_EXCHANGE_WireHandle *wh);
  * @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 h_extensions hash over the extensions
  * @param h_denom_pub hash of the coin denomination's public key
  * @param coin_priv coin’s private key
  * @param wallet_timestamp timestamp when the contract was finalized, must not 
be too far in the future
@@ -783,9 +784,10 @@ void
 TALER_EXCHANGE_deposit_permission_sign (
   const struct TALER_Amount *amount,
   const struct TALER_Amount *deposit_fee,
-  const struct GNUNET_HashCode *h_wire,
-  const struct GNUNET_HashCode *h_contract_terms,
-  const struct GNUNET_HashCode *h_denom_pub,
+  const struct TALER_MerchantWireHash *h_wire,
+  const struct TALER_PrivateContractHash *h_contract_terms,
+  const struct TALER_ExtensionContractHash *h_extensions,
+  const struct TALER_DenominationHash *h_denom_pub,
   const struct TALER_CoinSpendPrivateKeyP *coin_priv,
   struct GNUNET_TIME_Absolute wallet_timestamp,
   const struct TALER_MerchantPublicKeyP *merchant_pub,
@@ -889,6 +891,7 @@ typedef void
  *        forced to settle in the past or upon very short notice, but of 
course a well-behaved exchange will limit aggregation based on the advice 
received)
  * @param wire_details the merchant’s account details, in a format supported 
by the exchange
  * @param h_contract_terms hash of the contact of the merchant with the 
customer (further details are never disclosed to the exchange)
+ * @param extension_details extension-specific details about the deposit 
relevant to the exchange
  * @param coin_pub coin’s public key
  * @param denom_pub denomination key with which the coin is signed
  * @param denom_sig exchange’s unblinded signature of the coin
@@ -903,21 +906,23 @@ typedef void
  *         signatures fail to verify).  In this case, the callback is not 
called.
  */
 struct TALER_EXCHANGE_DepositHandle *
-TALER_EXCHANGE_deposit (struct TALER_EXCHANGE_Handle *exchange,
-                        const struct TALER_Amount *amount,
-                        struct GNUNET_TIME_Absolute wire_deadline,
-                        json_t *wire_details,
-                        const struct GNUNET_HashCode *h_contract_terms,
-                        const struct TALER_CoinSpendPublicKeyP *coin_pub,
-                        const struct TALER_DenominationSignature *denom_sig,
-                        const struct TALER_DenominationPublicKey *denom_pub,
-                        struct GNUNET_TIME_Absolute timestamp,
-                        const struct TALER_MerchantPublicKeyP *merchant_pub,
-                        struct GNUNET_TIME_Absolute refund_deadline,
-                        const struct TALER_CoinSpendSignatureP *coin_sig,
-                        TALER_EXCHANGE_DepositResultCallback cb,
-                        void *cb_cls,
-                        enum TALER_ErrorCode *ec);
+TALER_EXCHANGE_deposit (
+  struct TALER_EXCHANGE_Handle *exchange,
+  const struct TALER_Amount *amount,
+  struct GNUNET_TIME_Absolute wire_deadline,
+  const json_t *wire_details,
+  const struct TALER_PrivateContractHash *h_contract_terms,
+  const json_t *extension_details,
+  const struct TALER_CoinSpendPublicKeyP *coin_pub,
+  const struct TALER_DenominationSignature *denom_sig,
+  const struct TALER_DenominationPublicKey *denom_pub,
+  struct GNUNET_TIME_Absolute timestamp,
+  const struct TALER_MerchantPublicKeyP *merchant_pub,
+  struct GNUNET_TIME_Absolute refund_deadline,
+  const struct TALER_CoinSpendSignatureP *coin_sig,
+  TALER_EXCHANGE_DepositResultCallback cb,
+  void *cb_cls,
+  enum TALER_ErrorCode *ec);
 
 
 /**
@@ -996,7 +1001,7 @@ typedef void
 struct TALER_EXCHANGE_RefundHandle *
 TALER_EXCHANGE_refund (struct TALER_EXCHANGE_Handle *exchange,
                        const struct TALER_Amount *amount,
-                       const struct GNUNET_HashCode *h_contract_terms,
+                       const struct TALER_PrivateContractHash 
*h_contract_terms,
                        const struct TALER_CoinSpendPublicKeyP *coin_pub,
                        uint64_t rtransaction_id,
                        const struct TALER_MerchantPrivateKeyP *merchant_priv,
@@ -1712,7 +1717,7 @@ struct TALER_EXCHANGE_TransferData
   /**
    * hash of the wire transfer address the transfer went to
    */
-  struct GNUNET_HashCode h_wire;
+  struct TALER_MerchantWireHash h_wire;
 
   /**
    * time when the exchange claims to have performed the wire transfer
@@ -1912,8 +1917,8 @@ struct TALER_EXCHANGE_DepositGetHandle *
 TALER_EXCHANGE_deposits_get (
   struct TALER_EXCHANGE_Handle *exchange,
   const struct TALER_MerchantPrivateKeyP *merchant_priv,
-  const struct GNUNET_HashCode *h_wire,
-  const struct GNUNET_HashCode *h_contract_terms,
+  const struct TALER_MerchantWireHash *h_wire,
+  const struct TALER_PrivateContractHash *h_contract_terms,
   const struct TALER_CoinSpendPublicKeyP *coin_pub,
   TALER_EXCHANGE_DepositGetCallback cb,
   void *cb_cls);
@@ -1948,7 +1953,7 @@ TALER_EXCHANGE_verify_coin_history (
   const char *currency,
   const struct TALER_CoinSpendPublicKeyP *coin_pub,
   json_t *history,
-  struct GNUNET_HashCode *h_denom_pub,
+  struct TALER_DenominationHash *h_denom_pub,
   struct TALER_Amount *total);
 
 
@@ -2146,7 +2151,7 @@ typedef void
 struct TALER_EXCHANGE_KycCheckHandle *
 TALER_EXCHANGE_kyc_check (struct TALER_EXCHANGE_Handle *eh,
                           uint64_t payment_target,
-                          const struct GNUNET_HashCode *h_payto,
+                          const struct TALER_PaytoHash *h_payto,
                           struct GNUNET_TIME_Relative timeout,
                           TALER_EXCHANGE_KycStatusCallback cb,
                           void *cb_cls);
@@ -2452,7 +2457,7 @@ struct TALER_EXCHANGE_DenominationKeySignature
   /**
    * The hash of the denomination's public key
    */
-  struct GNUNET_HashCode h_denom_pub;
+  struct TALER_DenominationHash h_denom_pub;
 
   /**
    * Signature over this denomination key by the exchange's master signature.
@@ -2570,7 +2575,7 @@ struct 
TALER_EXCHANGE_ManagementRevokeDenominationKeyHandle *
 TALER_EXCHANGE_management_revoke_denomination_key (
   struct GNUNET_CURL_Context *ctx,
   const char *url,
-  const struct GNUNET_HashCode *h_denom_pub,
+  const struct TALER_DenominationHash *h_denom_pub,
   const struct TALER_MasterSignatureP *master_sig,
   TALER_EXCHANGE_ManagementRevokeDenominationKeyCallback cb,
   void *cb_cls);
@@ -2942,7 +2947,7 @@ struct TALER_EXCHANGE_AuditorAddDenominationHandle *
 TALER_EXCHANGE_add_auditor_denomination (
   struct GNUNET_CURL_Context *ctx,
   const char *url,
-  const struct GNUNET_HashCode *h_denom_pub,
+  const struct TALER_DenominationHash *h_denom_pub,
   const struct TALER_AuditorPublicKeyP *auditor_pub,
   const struct TALER_AuditorSignatureP *auditor_sig,
   TALER_EXCHANGE_AuditorAddDenominationCallback cb,
diff --git a/src/include/taler_exchangedb_plugin.h 
b/src/include/taler_exchangedb_plugin.h
index 5a3313ca..83040dbe 100644
--- a/src/include/taler_exchangedb_plugin.h
+++ b/src/include/taler_exchangedb_plugin.h
@@ -228,7 +228,7 @@ struct TALER_EXCHANGEDB_TableData
 
     struct
     {
-      struct GNUNET_HashCode h_blind_ev;
+      struct TALER_BlindedCoinHash h_blind_ev;
       struct TALER_DenominationSignature denom_sig;
       struct TALER_ReserveSignatureP reserve_sig;
       struct GNUNET_TIME_Absolute execution_date;
@@ -309,10 +309,11 @@ struct TALER_EXCHANGEDB_TableData
       struct GNUNET_TIME_Absolute refund_deadline;
       struct GNUNET_TIME_Absolute wire_deadline;
       struct TALER_MerchantPublicKeyP merchant_pub;
-      struct GNUNET_HashCode h_contract_terms;
+      struct TALER_PrivateContractHash h_contract_terms;
       // h_wire omitted, to be recomputed!
       struct TALER_CoinSpendSignatureP coin_sig;
       json_t *wire;
+      json_t *extensions;
       bool tiny;
       bool done;
       uint64_t known_coin_id;
@@ -618,7 +619,7 @@ typedef void
 (*TALER_EXCHANGEDB_DenominationsCallback)(
   void *cls,
   const struct TALER_DenominationPublicKey *denom_pub,
-  const struct GNUNET_HashCode *h_denom_pub,
+  const struct TALER_DenominationHash *h_denom_pub,
   const struct TALER_EXCHANGEDB_DenominationKeyMetaData *meta,
   const struct TALER_MasterSignatureP *master_sig,
   bool recoup_possible);
@@ -670,7 +671,7 @@ typedef void
 (*TALER_EXCHANGEDB_AuditorDenominationsCallback)(
   void *cls,
   const struct TALER_AuditorPublicKeyP *auditor_pub,
-  const struct GNUNET_HashCode *h_denom_pub,
+  const struct TALER_DenominationHash *h_denom_pub,
   const struct TALER_AuditorSignatureP *auditor_sig);
 
 
@@ -690,7 +691,7 @@ struct TALER_EXCHANGEDB_CollectableBlindcoin
   /**
    * Hash of the denomination key (which coin was generated).
    */
-  struct GNUNET_HashCode denom_pub_hash;
+  struct TALER_DenominationHash denom_pub_hash;
 
   /**
    * Value of the coin being exchangeed (matching the denomination key)
@@ -723,7 +724,7 @@ struct TALER_EXCHANGEDB_CollectableBlindcoin
    * Hash over the blinded message, needed to verify
    * the @e reserve_sig.
    */
-  struct GNUNET_HashCode h_coin_envelope;
+  struct TALER_BlindedCoinHash h_coin_envelope;
 
   /**
    * Signature confirming the withdrawal, matching @e reserve_pub,
@@ -797,7 +798,7 @@ struct TALER_EXCHANGEDB_RecoupListEntry
   /**
    * Hash of the public denomination key used to sign the coin.
    */
-  struct GNUNET_HashCode h_denom_pub;
+  struct TALER_DenominationHash h_denom_pub;
 
   /**
    * Public key of the reserve the coin was paid back into.
@@ -977,7 +978,7 @@ struct TALER_EXCHANGEDB_Deposit
    * Hash over the proposal data between merchant and customer
    * (remains unknown to the Exchange).
    */
-  struct GNUNET_HashCode h_contract_terms;
+  struct TALER_PrivateContractHash h_contract_terms;
 
   /**
    * Hash of the (canonical) representation of @e wire, used
@@ -985,7 +986,7 @@ struct TALER_EXCHANGEDB_Deposit
    * the exchange from the detailed wire data provided by the
    * merchant.
    */
-  struct GNUNET_HashCode h_wire;
+  struct TALER_MerchantWireHash h_wire;
 
   /**
    * Detailed information about the receiver for executing the transaction.
@@ -993,6 +994,12 @@ struct TALER_EXCHANGEDB_Deposit
    */
   json_t *receiver_wire_account;
 
+  /**
+   * Additional details for extensions relevant for this
+   * deposit operation.
+   */
+  json_t *extension_details;
+
   /**
    * Time when this request was generated.  Used, for example, to
    * assess when (roughly) the income was achieved for tax purposes.
@@ -1062,7 +1069,7 @@ struct TALER_EXCHANGEDB_DepositListEntry
    * Hash over the proposa data between merchant and customer
    * (remains unknown to the Exchange).
    */
-  struct GNUNET_HashCode h_contract_terms;
+  struct TALER_PrivateContractHash h_contract_terms;
 
   /**
    * Hash of the (canonical) representation of @e wire, used
@@ -1070,12 +1077,12 @@ struct TALER_EXCHANGEDB_DepositListEntry
    * the exchange from the detailed wire data provided by the
    * merchant.
    */
-  struct GNUNET_HashCode h_wire;
+  struct TALER_MerchantWireHash h_wire;
 
   /**
    * Hash of the public denomination key used to sign the coin.
    */
-  struct GNUNET_HashCode h_denom_pub;
+  struct TALER_DenominationHash h_denom_pub;
 
   /**
    * Detailed information about the receiver for executing the transaction.
@@ -1152,7 +1159,7 @@ struct TALER_EXCHANGEDB_RefundListEntry
    * Hash over the proposal data between merchant and customer
    * (remains unknown to the Exchange).
    */
-  struct GNUNET_HashCode h_contract_terms;
+  struct TALER_PrivateContractHash h_contract_terms;
 
   /**
    * Merchant-generated REFUND transaction ID to detect duplicate
@@ -1258,7 +1265,7 @@ struct TALER_EXCHANGEDB_MeltListEntry
   /**
    * Hash of the public denomination key used to sign the coin.
    */
-  struct GNUNET_HashCode h_denom_pub;
+  struct TALER_DenominationHash h_denom_pub;
 
   /**
    * How much value is being melted?  This amount includes the fees,
@@ -1462,7 +1469,7 @@ typedef enum GNUNET_DB_QueryStatus
   const struct TALER_CoinSpendPublicKeyP *coin_pub,
   const struct TALER_Amount *amount_with_fee,
   const struct TALER_Amount *deposit_fee,
-  const struct GNUNET_HashCode *h_contract_terms);
+  const struct TALER_PrivateContractHash *h_contract_terms);
 
 
 /**
@@ -1489,7 +1496,7 @@ typedef enum GNUNET_DB_QueryStatus
   const struct TALER_CoinSpendPublicKeyP *coin_pub,
   const struct TALER_Amount *amount_with_fee,
   const struct TALER_Amount *deposit_fee,
-  const struct GNUNET_HashCode *h_contract_terms,
+  const struct TALER_PrivateContractHash *h_contract_terms,
   const json_t *receiver_wire_account);
 
 
@@ -1544,7 +1551,7 @@ typedef enum GNUNET_GenericReturnValue
   const struct TALER_CoinSpendPublicKeyP *coin_pub,
   const struct TALER_CoinSpendSignatureP *coin_sig,
   const struct TALER_Amount *amount_with_fee,
-  const struct GNUNET_HashCode *h_contract_terms,
+  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,
@@ -1735,7 +1742,7 @@ typedef enum GNUNET_GenericReturnValue
   const struct TALER_CoinSpendPublicKeyP *coin_pub,
   const struct TALER_MerchantPublicKeyP *merchant_pub,
   const struct TALER_MerchantSignatureP *merchant_sig,
-  const struct GNUNET_HashCode *h_contract_terms,
+  const struct TALER_PrivateContractHash *h_contract_terms,
   uint64_t rtransaction_id,
   const struct TALER_Amount *amount_with_fee);
 
@@ -1816,7 +1823,7 @@ typedef enum GNUNET_GenericReturnValue
 (*TALER_EXCHANGEDB_WithdrawCallback)(
   void *cls,
   uint64_t rowid,
-  const struct GNUNET_HashCode *h_blind_ev,
+  const struct TALER_BlindedCoinHash *h_blind_ev,
   const struct TALER_DenominationPublicKey *denom_pub,
   const struct TALER_ReservePublicKeyP *reserve_pub,
   const struct TALER_ReserveSignatureP *reserve_sig,
@@ -1860,10 +1867,10 @@ typedef void
   void *cls,
   uint64_t rowid,
   const struct TALER_MerchantPublicKeyP *merchant_pub,
-  const struct GNUNET_HashCode *h_wire,
+  const struct TALER_MerchantWireHash *h_wire,
   const json_t *account_details,
   struct GNUNET_TIME_Absolute exec_time,
-  const struct GNUNET_HashCode *h_contract_terms,
+  const struct TALER_PrivateContractHash *h_contract_terms,
   const struct TALER_DenominationPublicKey *denom_pub,
   const struct TALER_CoinSpendPublicKeyP *coin_pub,
   const struct TALER_Amount *coin_value,
@@ -1962,7 +1969,7 @@ typedef enum GNUNET_GenericReturnValue
   struct GNUNET_TIME_Absolute timestamp,
   const struct TALER_Amount *amount,
   const struct TALER_CoinSpendPublicKeyP *old_coin_pub,
-  const struct GNUNET_HashCode *old_denom_pub_hash,
+  const struct TLAER_DenominationHash *old_denom_pub_hash,
   const struct TALER_CoinPublicInfo *coin,
   const struct TALER_DenominationPublicKey *denom_pub,
   const struct TALER_CoinSpendSignatureP *coin_sig,
@@ -2045,7 +2052,7 @@ typedef void
   const struct TALER_CoinPublicInfo *coin,
   const struct TALER_CoinSpendSignatureP *coin_sig,
   const struct TALER_DenominationBlindingKeyP *coin_blind,
-  const struct GNUNET_HashCode *h_blinded_ev,
+  const struct TALER_BlindedCoinHash *h_blinded_ev,
   const struct TALER_Amount *amount);
 
 
@@ -2260,7 +2267,7 @@ struct TALER_EXCHANGEDB_Plugin
   enum GNUNET_DB_QueryStatus
   (*get_denomination_info)(
     void *cls,
-    const struct GNUNET_HashCode *denom_pub_hash,
+    const struct TALER_DenominationHash *denom_pub_hash,
     struct TALER_EXCHANGEDB_DenominationKeyInformationP *issue);
 
 
@@ -2400,7 +2407,7 @@ struct TALER_EXCHANGEDB_Plugin
   enum GNUNET_DB_QueryStatus
   (*select_kyc_status)(void *cls,
                        uint64_t payment_target_uuid,
-                       struct GNUNET_HashCode *h_payto,
+                       struct TALER_PaytoHash *h_payto,
                        struct TALER_EXCHANGEDB_KycStatus *kyc);
 
 
@@ -2472,7 +2479,7 @@ struct TALER_EXCHANGEDB_Plugin
    */
   enum GNUNET_DB_QueryStatus
   (*get_withdraw_info)(void *cls,
-                       const struct GNUNET_HashCode *h_blind,
+                       const struct TALER_BlindedCoinHash *h_blind,
                        struct TALER_EXCHANGEDB_CollectableBlindcoin 
*collectable);
 
 
@@ -2547,7 +2554,7 @@ struct TALER_EXCHANGEDB_Plugin
    */
   long long
   (*count_known_coins) (void *cls,
-                        const struct GNUNET_HashCode *denom_pub_hash);
+                        const struct TALER_DenominationHash *denom_pub_hash);
 
 
   /**
@@ -2612,7 +2619,7 @@ struct TALER_EXCHANGEDB_Plugin
   enum GNUNET_DB_QueryStatus
   (*get_coin_denomination)(void *cls,
                            const struct TALER_CoinSpendPublicKeyP *coin_pub,
-                           struct GNUNET_HashCode *denom_hash);
+                           struct TALER_DenominationHash *denom_hash);
 
 
   /**
@@ -2676,7 +2683,7 @@ struct TALER_EXCHANGEDB_Plugin
   (*select_refunds_by_coin)(void *cls,
                             const struct TALER_CoinSpendPublicKeyP *coin_pub,
                             const struct TALER_MerchantPublicKeyP 
*merchant_pub,
-                            const struct GNUNET_HashCode *h_contract,
+                            const struct TALER_PrivateContractHash *h_contract,
                             TALER_EXCHANGEDB_RefundCoinCallback cb,
                             void *cb_cls);
 
@@ -2712,8 +2719,8 @@ struct TALER_EXCHANGEDB_Plugin
   (*test_deposit_done)(void *cls,
                        const struct TALER_CoinSpendPublicKeyP *coin_pub,
                        const struct TALER_MerchantPublicKeyP *merchant_pub,
-                       const struct GNUNET_HashCode *h_contract_terms,
-                       const struct GNUNET_HashCode *h_wire);
+                       const struct TALER_PrivateContractHash 
*h_contract_terms,
+                       const struct TALER_MerchantWireHash *h_wire);
 
 
   /**
@@ -2778,7 +2785,7 @@ struct TALER_EXCHANGEDB_Plugin
   enum GNUNET_DB_QueryStatus
   (*iterate_matching_deposits)(
     void *cls,
-    const struct GNUNET_HashCode *h_wire,
+    const struct TALER_MerchantWireHash *h_wire,
     const struct TALER_MerchantPublicKeyP *merchant_pub,
     TALER_EXCHANGEDB_MatchingDepositIterator deposit_cb,
     void *deposit_cb_cls,
@@ -2959,8 +2966,8 @@ struct TALER_EXCHANGEDB_Plugin
   enum GNUNET_DB_QueryStatus
   (*lookup_transfer_by_deposit)(
     void *cls,
-    const struct GNUNET_HashCode *h_contract_terms,
-    const struct GNUNET_HashCode *h_wire,
+    const struct TALER_PrivateContractHash *h_contract_terms,
+    const struct TALER_MerchantWireHash *h_wire,
     const struct TALER_CoinSpendPublicKeyP *coin_pub,
     const struct TALER_MerchantPublicKeyP *merchant_pub,
     bool *pending,
@@ -3173,8 +3180,8 @@ struct TALER_EXCHANGEDB_Plugin
    * @return #GNUNET_OK on success,
    *         #GNUNET_SYSERR on DB errors
    */
-  int
-  (*gc) (void *cls);
+  enum GNUNET_GenericReturnValue
+  (*gc)(void *cls);
 
 
   /**
@@ -3395,7 +3402,7 @@ struct TALER_EXCHANGEDB_Plugin
     const struct TALER_CoinSpendSignatureP *coin_sig,
     const struct TALER_DenominationBlindingKeyP *coin_blind,
     const struct TALER_Amount *amount,
-    const struct GNUNET_HashCode *h_blind_ev,
+    const struct TALER_BlindedCoinHash *h_blind_ev,
     struct GNUNET_TIME_Absolute timestamp);
 
 
@@ -3420,7 +3427,7 @@ struct TALER_EXCHANGEDB_Plugin
     const struct TALER_CoinSpendSignatureP *coin_sig,
     const struct TALER_DenominationBlindingKeyP *coin_blind,
     const struct TALER_Amount *amount,
-    const struct GNUNET_HashCode *h_blind_ev,
+    const struct TALER_BlindedCoinHash *h_blind_ev,
     struct GNUNET_TIME_Absolute timestamp);
 
 
@@ -3435,7 +3442,7 @@ struct TALER_EXCHANGEDB_Plugin
    */
   enum GNUNET_DB_QueryStatus
   (*get_reserve_by_h_blind)(void *cls,
-                            const struct GNUNET_HashCode *h_blind_ev,
+                            const struct TALER_BlindedCoinHash *h_blind_ev,
                             struct TALER_ReservePublicKeyP *reserve_pub);
 
 
@@ -3450,7 +3457,7 @@ struct TALER_EXCHANGEDB_Plugin
    */
   enum GNUNET_DB_QueryStatus
   (*get_old_coin_by_h_blind)(void *cls,
-                             const struct GNUNET_HashCode *h_blind_ev,
+                             const struct TALER_BlindedCoinHash *h_blind_ev,
                              struct TALER_CoinSpendPublicKeyP *old_coin_pub);
 
 
@@ -3466,7 +3473,7 @@ struct TALER_EXCHANGEDB_Plugin
   enum GNUNET_DB_QueryStatus
   (*insert_denomination_revocation)(
     void *cls,
-    const struct GNUNET_HashCode *denom_pub_hash,
+    const struct TALER_DenominationHash *denom_pub_hash,
     const struct TALER_MasterSignatureP *master_sig);
 
 
@@ -3482,7 +3489,8 @@ struct TALER_EXCHANGEDB_Plugin
    */
   enum GNUNET_DB_QueryStatus
   (*get_denomination_revocation)(void *cls,
-                                 const struct GNUNET_HashCode *denom_pub_hash,
+                                 const struct
+                                 TALER_DenominationHash *denom_pub_hash,
                                  struct TALER_MasterSignatureP *master_sig,
                                  uint64_t *rowid);
 
@@ -3699,7 +3707,7 @@ struct TALER_EXCHANGEDB_Plugin
   enum GNUNET_DB_QueryStatus
   (*lookup_denomination_key)(
     void *cls,
-    const struct GNUNET_HashCode *h_denom_pub,
+    const struct TALER_DenominationHash *h_denom_pub,
     struct TALER_EXCHANGEDB_DenominationKeyMetaData *meta);
 
 
@@ -3716,7 +3724,7 @@ struct TALER_EXCHANGEDB_Plugin
   enum GNUNET_DB_QueryStatus
   (*add_denomination_key)(
     void *cls,
-    const struct GNUNET_HashCode *h_denom_pub,
+    const struct TALER_DenominationHash *h_denom_pub,
     const struct TALER_DenominationPublicKey *denom_pub,
     const struct TALER_EXCHANGEDB_DenominationKeyMetaData *meta,
     const struct TALER_MasterSignatureP *master_sig);
@@ -3767,7 +3775,7 @@ struct TALER_EXCHANGEDB_Plugin
   enum GNUNET_DB_QueryStatus
   (*insert_auditor_denom_sig)(
     void *cls,
-    const struct GNUNET_HashCode *h_denom_pub,
+    const struct TALER_DenominationHash *h_denom_pub,
     const struct TALER_AuditorPublicKeyP *auditor_pub,
     const struct TALER_AuditorSignatureP *auditor_sig);
 
@@ -3784,7 +3792,7 @@ struct TALER_EXCHANGEDB_Plugin
   enum GNUNET_DB_QueryStatus
   (*select_auditor_denom_sig)(
     void *cls,
-    const struct GNUNET_HashCode *h_denom_pub,
+    const struct TALER_DenominationHash *h_denom_pub,
     const struct TALER_AuditorPublicKeyP *auditor_pub,
     struct TALER_AuditorSignatureP *auditor_sig);
 
diff --git a/src/include/taler_signatures.h b/src/include/taler_signatures.h
index 38c2dc25..b7279a66 100644
--- a/src/include/taler_signatures.h
+++ b/src/include/taler_signatures.h
@@ -332,7 +332,7 @@ struct TALER_DenominationKeyAnnouncementPS
   /**
    * Hash of the denomination public key.
    */
-  struct GNUNET_HashCode h_denom_pub;
+  struct TALER_DenominationHash h_denom_pub;
 
   /**
    * Hash of the section name in the configuration of this denomination.
@@ -398,7 +398,7 @@ struct TALER_LinkDataPS
   /**
    * Hash of the denomination public key of the new coin.
    */
-  struct GNUNET_HashCode h_denom_pub;
+  struct TALER_DenominationHash h_denom_pub;
 
   /**
    * Transfer public key (for which the private key was not revealed)
@@ -408,7 +408,7 @@ struct TALER_LinkDataPS
   /**
    * Hash of the blinded new coin.
    */
-  struct GNUNET_HashCode coin_envelope_hash;
+  struct TALER_BlindedCoinHash coin_envelope_hash;
 };
 
 
@@ -443,12 +443,12 @@ struct TALER_WithdrawRequestPS
   /**
    * Hash of the denomination public key for the coin that is withdrawn.
    */
-  struct GNUNET_HashCode h_denomination_pub GNUNET_PACKED;
+  struct TALER_DenominationHash h_denomination_pub GNUNET_PACKED;
 
   /**
    * Hash of the (blinded) message to be signed by the Exchange.
    */
-  struct GNUNET_HashCode h_coin_envelope GNUNET_PACKED;
+  struct TALER_BlindedCoinHash h_coin_envelope GNUNET_PACKED;
 };
 
 
@@ -467,17 +467,22 @@ struct TALER_DepositRequestPS
   /**
    * Hash over the contract for which this deposit is made.
    */
-  struct GNUNET_HashCode h_contract_terms GNUNET_PACKED;
+  struct TALER_PrivateContractHash h_contract_terms GNUNET_PACKED;
+
+  /**
+   * Hash over extension attributes shared with the exchange.
+   */
+  struct TALER_ExtensionContractHash h_extensions GNUNET_PACKED;
 
   /**
    * Hash over the wiring information of the merchant.
    */
-  struct GNUNET_HashCode h_wire GNUNET_PACKED;
+  struct TALER_MerchantWireHash h_wire GNUNET_PACKED;
 
   /**
    * Hash over the denomination public key used to sign the coin.
    */
-  struct GNUNET_HashCode h_denom_pub GNUNET_PACKED;
+  struct TALER_DenominationHash h_denom_pub GNUNET_PACKED;
 
   /**
    * Time when this request was generated.  Used, for example, to
@@ -550,12 +555,12 @@ struct TALER_DepositConfirmationPS
   /**
    * Hash over the contract for which this deposit is made.
    */
-  struct GNUNET_HashCode h_contract_terms GNUNET_PACKED;
+  struct TALER_PrivateContractHash h_contract_terms GNUNET_PACKED;
 
   /**
    * Hash over the wiring information of the merchant.
    */
-  struct GNUNET_HashCode h_wire GNUNET_PACKED;
+  struct TALER_MerchantWireHash h_wire GNUNET_PACKED;
 
   /**
    * Time when this confirmation was generated / when the exchange received
@@ -609,7 +614,7 @@ struct TALER_RefundRequestPS
    * Hash over the proposal data to identify the contract
    * which is being refunded.
    */
-  struct GNUNET_HashCode h_contract_terms GNUNET_PACKED;
+  struct TALER_PrivateContractHash h_contract_terms GNUNET_PACKED;
 
   /**
    * The coin's public key.  This is the value that must have been
@@ -651,7 +656,7 @@ struct TALER_RefundConfirmationPS
    * Hash over the proposal data to identify the contract
    * which is being refunded.
    */
-  struct GNUNET_HashCode h_contract_terms GNUNET_PACKED;
+  struct TALER_PrivateContractHash h_contract_terms GNUNET_PACKED;
 
   /**
    * The coin's public key.  This is the value that must have been
@@ -698,7 +703,7 @@ struct TALER_RefreshMeltCoinAffirmationPS
   /**
    * Hash over the denomination public key used to sign the coin.
    */
-  struct GNUNET_HashCode h_denom_pub GNUNET_PACKED;
+  struct TALER_DenominationHash h_denom_pub GNUNET_PACKED;
 
   /**
    * How much of the value of the coin should be melted?  This amount
@@ -845,7 +850,7 @@ struct TALER_ExchangeAccountSetupSuccessPS
    * Hash over the payto for which the signature was
    * made.
    */
-  struct GNUNET_HashCode h_payto;
+  struct TALER_PaytoHash h_payto;
 
   /**
    * When was the signature made.
@@ -931,7 +936,7 @@ struct TALER_MasterAddWirePS
   /**
    * Hash over the exchange's payto URI.
    */
-  struct GNUNET_HashCode h_wire GNUNET_PACKED;
+  struct TALER_PaytoHash h_payto GNUNET_PACKED;
 };
 
 
@@ -956,7 +961,7 @@ struct TALER_MasterDelWirePS
   /**
    * Hash over the exchange's payto URI.
    */
-  struct GNUNET_HashCode h_wire GNUNET_PACKED;
+  struct TALER_PaytoHash h_payto GNUNET_PACKED;
 
 };
 
@@ -1053,7 +1058,7 @@ struct TALER_DenominationKeyValidityPS
    * Hash code of the denomination public key. (Used to avoid having
    * the variable-size RSA key in this struct.)
    */
-  struct GNUNET_HashCode denom_hash GNUNET_PACKED;
+  struct TALER_DenominationHash denom_hash GNUNET_PACKED;
 
 };
 
@@ -1155,7 +1160,7 @@ struct TALER_ExchangeKeyValidityPS
    * Hash code of the denomination public key. (Used to avoid having
    * the variable-size RSA key in this struct.)
    */
-  struct GNUNET_HashCode denom_hash GNUNET_PACKED;
+  struct TALER_DenominationHash denom_hash GNUNET_PACKED;
 
 };
 
@@ -1176,7 +1181,7 @@ struct TALER_MasterWireDetailsPS
    * Hash over the account holder's payto:// URL and
    * the salt, as done by #TALER_exchange_wire_signature_hash().
    */
-  struct GNUNET_HashCode h_wire_details GNUNET_PACKED;
+  struct TALER_MerchantWireHash h_wire_details GNUNET_PACKED;
 
 };
 
@@ -1236,7 +1241,7 @@ struct TALER_MasterDenominationKeyRevocationPS
   /**
    * Hash of the denomination key.
    */
-  struct GNUNET_HashCode h_denom_pub;
+  struct TALER_DenominationHash h_denom_pub;
 
 };
 
@@ -1273,12 +1278,12 @@ struct TALER_DepositTrackPS
   /**
    * Hash over the proposal data of the contract for which this deposit is 
made.
    */
-  struct GNUNET_HashCode h_contract_terms GNUNET_PACKED;
+  struct TALER_PrivateContractHash h_contract_terms GNUNET_PACKED;
 
   /**
    * Hash over the wiring information of the merchant.
    */
-  struct GNUNET_HashCode h_wire GNUNET_PACKED;
+  struct TALER_MerchantWireHash h_wire GNUNET_PACKED;
 
   /**
    * The Merchant's public key.  The deposit inquiry request is to be
@@ -1305,7 +1310,7 @@ struct TALER_WireDepositDetailP
   /**
    * Hash of the contract
    */
-  struct GNUNET_HashCode h_contract_terms;
+  struct TALER_PrivateContractHash h_contract_terms;
 
   /**
    * Time when the wire transfer was performed by the exchange.
@@ -1360,7 +1365,7 @@ struct TALER_WireDepositDataPS
   /**
    * Hash of wire details of the merchant.
    */
-  struct GNUNET_HashCode h_wire;
+  struct TALER_MerchantWireHash h_wire;
 
   /**
    * Hash of the individual deposits that were aggregated,
@@ -1403,7 +1408,7 @@ struct TALER_PaymentResponsePS
   /**
    * Hash of the proposal data associated with this confirmation
    */
-  struct GNUNET_HashCode h_contract_terms;
+  struct TALER_PrivateContractHash h_contract_terms;
 };
 
 
@@ -1422,12 +1427,12 @@ struct TALER_ConfirmWirePS
   /**
    * Hash over the wiring information of the merchant.
    */
-  struct GNUNET_HashCode h_wire GNUNET_PACKED;
+  struct TALER_MerchantWireHash h_wire GNUNET_PACKED;
 
   /**
    * Hash over the contract for which this deposit is made.
    */
-  struct GNUNET_HashCode h_contract_terms GNUNET_PACKED;
+  struct TALER_PrivateContractHash h_contract_terms GNUNET_PACKED;
 
   /**
    * Raw value (binary encoding) of the wire transfer subject.
@@ -1476,7 +1481,7 @@ struct TALER_RecoupRequestPS
   /**
    * Hash of the (revoked) denomination public key of the coin.
    */
-  struct GNUNET_HashCode h_denom_pub;
+  struct TALER_DenominationHash h_denom_pub;
 
   /**
    * Blinding factor that was used to withdraw the coin.
@@ -1582,7 +1587,7 @@ struct TALER_DenominationUnknownAffirmationPS
   /**
    * Hash of the public denomination key we do not know.
    */
-  struct GNUNET_HashCode h_denom_pub;
+  struct TALER_DenominationHash h_denom_pub;
 };
 
 
@@ -1612,7 +1617,7 @@ struct TALER_DenominationExpiredAffirmationPS
   /**
    * Hash of the public denomination key we do not know.
    */
-  struct GNUNET_HashCode h_denom_pub;
+  struct TALER_DenominationHash h_denom_pub;
 
 };
 
@@ -1652,7 +1657,7 @@ struct TALER_ReserveCloseConfirmationPS
   /**
    * Hash of the receiver's bank account.
    */
-  struct GNUNET_HashCode h_wire;
+  struct TALER_PaytoHash h_wire;
 
   /**
    * Wire transfer subject.
diff --git a/src/include/taler_util.h b/src/include/taler_util.h
index 2c556be2..4faa75c4 100644
--- a/src/include/taler_util.h
+++ b/src/include/taler_util.h
@@ -233,7 +233,7 @@ TALER_language_matches (const char *language_pattern,
  *          #GNUNET_NO if the MHD connection is using http,
  *          #GNUNET_SYSERR if the connection type couldn't be determined
  */
-int
+enum GNUNET_GenericReturnValue
 TALER_mhd_is_https (struct MHD_Connection *connection);
 
 
diff --git a/src/util/Makefile.am b/src/util/Makefile.am
index e94c64a3..c8455dd4 100644
--- a/src/util/Makefile.am
+++ b/src/util/Makefile.am
@@ -69,6 +69,7 @@ libtalerutil_la_SOURCES = \
   crypto_helper_denom.c \
   crypto_helper_esign.c \
   crypto_wire.c \
+  denom.c \
   getopt.c \
   lang.c \
   iban.c \
diff --git a/src/util/mhd.c b/src/util/mhd.c
index 9684f979..2f262340 100644
--- a/src/util/mhd.c
+++ b/src/util/mhd.c
@@ -31,7 +31,7 @@
  *          #GNUNET_NO if the MHD connection is using http,
  *          #GNUNET_SYSERR if the connection type couldn't be determined
  */
-int
+enum GNUNET_GenericReturnValue
 TALER_mhd_is_https (struct MHD_Connection *connection)
 {
   const union MHD_ConnectionInfo *ci;
diff --git a/src/util/secmod_signatures.c b/src/util/secmod_signatures.c
index 3df68861..875f3eb5 100644
--- a/src/util/secmod_signatures.c
+++ b/src/util/secmod_signatures.c
@@ -70,7 +70,7 @@ TALER_exchange_secmod_eddsa_verify (
 
 
 void
-TALER_exchange_secmod_rsa_sign (
+TALER_exchange_secmod_denom_sign (
   const struct GNUNET_HashCode *h_denom_pub,
   const char *section_name,
   struct GNUNET_TIME_Absolute start_sign,
@@ -97,7 +97,7 @@ TALER_exchange_secmod_rsa_sign (
 
 
 enum GNUNET_GenericReturnValue
-TALER_exchange_secmod_rsa_verify (
+TALER_exchange_secmod_denom_verify (
   const struct GNUNET_HashCode *h_denom_pub,
   const char *section_name,
   struct GNUNET_TIME_Absolute start_sign,

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