diff options
| -rw-r--r-- | src/include/taler_auditordb_plugin.h | 31 | ||||
| -rw-r--r-- | src/include/taler_crypto_lib.h | 228 | ||||
| -rw-r--r-- | src/include/taler_exchange_service.h | 63 | ||||
| -rw-r--r-- | src/include/taler_exchangedb_plugin.h | 100 | ||||
| -rw-r--r-- | src/include/taler_signatures.h | 67 | ||||
| -rw-r--r-- | src/include/taler_util.h | 2 | ||||
| -rw-r--r-- | src/util/Makefile.am | 1 | ||||
| -rw-r--r-- | src/util/mhd.c | 2 | ||||
| -rw-r--r-- | 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;  }; @@ -377,14 +454,47 @@ 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, @@ -468,6 +610,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. @@ -994,6 +995,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.     * Note that the Exchange will only check that the timestamp is not "too @@ -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, | 
