diff options
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/taler_auditordb_plugin.h | 594 | ||||
| -rw-r--r-- | src/include/taler_exchangedb_plugin.h | 2 | 
2 files changed, 594 insertions, 2 deletions
diff --git a/src/include/taler_auditordb_plugin.h b/src/include/taler_auditordb_plugin.h index ec489c62..55846083 100644 --- a/src/include/taler_auditordb_plugin.h +++ b/src/include/taler_auditordb_plugin.h @@ -25,6 +25,7 @@  #include <jansson.h>  #include <gnunet/gnunet_util_lib.h>  #include "taler_auditordb_lib.h" +#include "taler_signatures.h"  /** @@ -36,6 +37,9 @@ struct TALER_AUDITORDB_Session;  /**   * @brief The plugin API, returned from the plugin's "init" function.   * The argument given to "init" is simply a configuration handle. + * + * Functions starting with "get_" return one result, functions starting + * with "select_" return multiple results via callbacks.   */  struct TALER_AUDITORDB_Plugin  { @@ -117,7 +121,7 @@ struct TALER_AUDITORDB_Plugin    (*rollback) (void *cls,                 struct TALER_AUDITORDB_Session *session); -   +    /**     * Function called to perform "garbage collection" on the     * database, expiring records we no longer require. @@ -129,6 +133,594 @@ struct TALER_AUDITORDB_Plugin    int    (*gc) (void *cls); + +  /** +   * Insert information about a denomination key and in particular +   * the properties (value, fees, expiration times) the coins signed +   * with this key have. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param issue issuing information with value, fees and other info about the denomination +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*insert_denomination_info)(void *cls, +                              struct TALER_AUDITORDB_Session *session, +                              const struct TALER_DenominationKeyValidityPS *issue); + + +  /** +   * Get information about denomination keys of a particular exchange. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master public key of the exchange +   * @param cb function to call with the results +   * @param cb_cls closure for @a cb +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*select_denomination_info)(void *cls, +                              struct TALER_AUDITORDB_Session *session, +                              const struct TALER_MasterPublicKeyP *master_pub, +                              void *cb, /* FIXME: type! */ +                              void *cb_cls); + + +  /** +   * Insert information about a reserve.  There must not be an +   * existing record for the reserve. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param reserve_pub public key of the reserve +   * @param master_pub master public key of the exchange +   * @param reserve_balance amount stored in the reserve +   * @param withdraw_fee_balance amount the exchange gained in withdraw fees +   *                             due to withdrawals from this reserve +   * @param expiration_date expiration date of the reserve +   * @param last_reserve_in_serial_id up to which point did we consider +   *                 incoming transfers for the above information +   * @param last_reserve_out_serial_id up to which point did we consider +   *                 withdrawals for the above information +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*insert_reserve_info)(void *cls, +                         struct TALER_AUDITORDB_Session *session, +                         const struct TALER_ReservePublicKeyP *reserve_pub, +                         const struct TALER_MasterPublicKeyP *master_pub, +                         const struct TALER_Amount *reserve_balance, +                         const struct TALER_Amount *withdraw_fee_balance, +                         struct GNUNET_TIME_Absolute expiration_date, +                         uint64_t last_reserve_in_serial_id, +                         uint64_t last_reserve_out_serial_id); + + +  /** +   * Update information about a reserve.  Destructively updates an +   * existing record, which must already exist. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param reserve_pub public key of the reserve +   * @param master_pub master public key of the exchange +   * @param reserve_balance amount stored in the reserve +   * @param withdraw_fee_balance amount the exchange gained in withdraw fees +   *                             due to withdrawals from this reserve +   * @param expiration_date expiration date of the reserve +   * @param last_reserve_in_serial_id up to which point did we consider +   *                 incoming transfers for the above information +   * @param last_reserve_out_serial_id up to which point did we consider +   *                 withdrawals for the above information +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*update_reserve_info)(void *cls, +                         struct TALER_AUDITORDB_Session *session, +                         const struct TALER_ReservePublicKeyP *reserve_pub, +                         const struct TALER_MasterPublicKeyP *master_pub, +                         const struct TALER_Amount *reserve_balance, +                         const struct TALER_Amount *withdraw_fee_balance, +                         struct GNUNET_TIME_Absolute expiration_date, +                         uint64_t last_reserve_in_serial_id, +                         uint64_t last_reserve_out_serial_id); + + +  /** +   * Get information about a reserve. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param reserve_pub public key of the reserve +   * @param master_pub master public key of the exchange +   * @param[out] reserve_balance amount stored in the reserve +   * @param[out] withdraw_fee_balance amount the exchange gained in withdraw fees +   *                             due to withdrawals from this reserve +   * @param[out] expiration_date expiration date of the reserve +   * @param[out] last_reserve_in_serial_id up to which point did we consider +   *                 incoming transfers for the above information +   * @param[out] last_reserve_out_serial_id up to which point did we consider +   *                 withdrawals for the above information +   * @return #GNUNET_OK on success; #GNUNET_NO if there is no known +   *         record about this reserve; #GNUNET_SYSERR on failure +   */ +  int +  (*get_reserve_info)(void *cls, +                      struct TALER_AUDITORDB_Session *session, +                      const struct TALER_ReservePublicKeyP *reserve_pub, +                      const struct TALER_MasterPublicKeyP *master_pub, +                      struct TALER_Amount *reserve_balance, +                      struct TALER_Amount *withdraw_fee_balance, +                      struct GNUNET_TIME_Absolute *expiration_date, +                      uint64_t *last_reserve_in_serial_id, +                      uint64_t *last_reserve_out_serial_id); + + + +  /** +   * Insert information about all reserves.  There must not be an +   * existing record for the @a master_pub. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master public key of the exchange +   * @param reserve_balance amount stored in the reserve +   * @param withdraw_fee_balance amount the exchange gained in withdraw fees +   *                             due to withdrawals from this reserve +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*insert_reserve_summary)(void *cls, +                            struct TALER_AUDITORDB_Session *session, +                            const struct TALER_MasterPublicKeyP *master_pub, +                            const struct TALER_Amount *reserve_balance, +                            const struct TALER_Amount *withdraw_fee_balance); + + +  /** +   * Update information about all reserves.  Destructively updates an +   * existing record, which must already exist. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master public key of the exchange +   * @param reserve_balance amount stored in the reserve +   * @param withdraw_fee_balance amount the exchange gained in withdraw fees +   *                             due to withdrawals from this reserve +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*update_reserve_summary)(void *cls, +                            struct TALER_AUDITORDB_Session *session, +                            const struct TALER_MasterPublicKeyP *master_pub, +                            const struct TALER_Amount *reserve_balance, +                            const struct TALER_Amount *withdraw_fee_balance); + + +  /** +   * Get summary information about all reserves. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master public key of the exchange +   * @param[out] reserve_balance amount stored in the reserve +   * @param[out] withdraw_fee_balance amount the exchange gained in withdraw fees +   *                             due to withdrawals from this reserve +   * @return #GNUNET_OK on success; #GNUNET_NO if there is no known +   *         record about this exchange; #GNUNET_SYSERR on failure +   */ +  int +  (*get_reserve_summary)(void *cls, +                         struct TALER_AUDITORDB_Session *session, +                         const struct TALER_MasterPublicKeyP *master_pub, +                         struct TALER_Amount *reserve_balance, +                         struct TALER_Amount *withdraw_fee_balance); + + +  /** +   * Insert information about a denomination key's balances.  There +   * must not be an existing record for the denomination key. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param denom_pub_hash hash of the denomination public key +   * @param denom_balance value of coins outstanding with this denomination key +   * @param deposit_fee_balance total deposit fees collected for this DK +   * @param melt_fee_balance total melt fees collected for this DK +   * @param refund_fee_balance total refund fees collected for this DK +   * @param last_reserve_out_serial_id up to which point did we consider +   *                 withdrawals for the above information +   * @param last_deposit_serial_id up to which point did we consider +   *                 deposits for the above information +   * @param last_melt_serial_id up to which point did we consider +   *                 melts for the above information +   * @param last_refund_serial_id up to which point did we consider +   *                 refunds for the above information +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*insert_denomination_balance)(void *cls, +                                 struct TALER_AUDITORDB_Session *session, +                                 const struct GNUNET_HashCode *denom_pub_hash, +                                 const struct TALER_Amount *denom_balance, +                                 const struct TALER_Amount *deposit_fee_balance, +                                 const struct TALER_Amount *melt_fee_balance, +                                 const struct TALER_Amount *refund_fee_balance, +                                 uint64_t last_reserve_out_serial_id, +                                 uint64_t last_deposit_serial_id, +                                 uint64_t last_melt_serial_id, +                                 uint64_t last_refund_serial_id); + + +  /** +   * Update information about a denomination key's balances.  There +   * must be an existing record for the denomination key. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param denom_pub_hash hash of the denomination public key +   * @param denom_balance value of coins outstanding with this denomination key +   * @param deposit_fee_balance total deposit fees collected for this DK +   * @param melt_fee_balance total melt fees collected for this DK +   * @param refund_fee_balance total refund fees collected for this DK +   * @param last_reserve_out_serial_id up to which point did we consider +   *                 withdrawals for the above information +   * @param last_deposit_serial_id up to which point did we consider +   *                 deposits for the above information +   * @param last_melt_serial_id up to which point did we consider +   *                 melts for the above information +   * @param last_refund_serial_id up to which point did we consider +   *                 refunds for the above information +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*update_denomination_balance)(void *cls, +                                 struct TALER_AUDITORDB_Session *session, +                                 const struct GNUNET_HashCode *denom_pub_hash, +                                 const struct TALER_Amount *denom_balance, +                                 const struct TALER_Amount *deposit_fee_balance, +                                 const struct TALER_Amount *melt_fee_balance, +                                 const struct TALER_Amount *refund_fee_balance, +                                 uint64_t last_reserve_out_serial_id, +                                 uint64_t last_deposit_serial_id, +                                 uint64_t last_melt_serial_id, +                                 uint64_t last_refund_serial_id); + + +  /** +   * Get information about a denomination key's balances. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param denom_pub_hash hash of the denomination public key +   * @param[out] denom_balance value of coins outstanding with this denomination key +   * @param[out] deposit_fee_balance total deposit fees collected for this DK +   * @param[out] melt_fee_balance total melt fees collected for this DK +   * @param[out] refund_fee_balance total refund fees collected for this DK +   * @param[out] last_reserve_out_serial_id up to which point did we consider +   *                 withdrawals for the above information +   * @param[out] last_deposit_serial_id up to which point did we consider +   *                 deposits for the above information +   * @param[out] last_melt_serial_id up to which point did we consider +   *                 melts for the above information +   * @param[out] last_refund_serial_id up to which point did we consider +   *                 refunds for the above information +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*get_denomination_balance)(void *cls, +                              struct TALER_AUDITORDB_Session *session, +                              const struct GNUNET_HashCode *denom_pub_hash, +                              struct TALER_Amount *denom_balance, +                              struct TALER_Amount *deposit_fee_balance, +                              struct TALER_Amount *melt_fee_balance, +                              struct TALER_Amount *refund_fee_balance, +                              uint64_t *last_reserve_out_serial_id, +                              uint64_t *last_deposit_serial_id, +                              uint64_t *last_melt_serial_id, +                              uint64_t *last_refund_serial_id); + + +  /** +   * Insert information about an exchange's denomination balances.  There +   * must not be an existing record for the exchange. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master key of the exchange +   * @param denom_balance value of coins outstanding with this denomination key +   * @param deposit_fee_balance total deposit fees collected for this DK +   * @param melt_fee_balance total melt fees collected for this DK +   * @param refund_fee_balance total refund fees collected for this DK +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*insert_denomination_summary)(void *cls, +                                 struct TALER_AUDITORDB_Session *session, +                                 const struct TALER_MasterPublicKeyP *master_pub, +                                 const struct TALER_Amount *denom_balance, +                                 const struct TALER_Amount *deposit_fee_balance, +                                 const struct TALER_Amount *melt_fee_balance, +                                 const struct TALER_Amount *refund_fee_balance); + + +  /** +   * Update information about an exchange's denomination balances.  There +   * must be an existing record for the exchange. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master key of the exchange +   * @param denom_balance value of coins outstanding with this denomination key +   * @param deposit_fee_balance total deposit fees collected for this DK +   * @param melt_fee_balance total melt fees collected for this DK +   * @param refund_fee_balance total refund fees collected for this DK +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*update_denomination_summary)(void *cls, +                                 struct TALER_AUDITORDB_Session *session, +                                 const struct TALER_MasterPublicKeyP *master_pub, +                                 const struct TALER_Amount *denom_balance, +                                 const struct TALER_Amount *deposit_fee_balance, +                                 const struct TALER_Amount *melt_fee_balance, +                                 const struct TALER_Amount *refund_fee_balance); + + +  /** +   * Get information about an exchange's denomination balances. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master key of the exchange +   * @param[out] denom_balance value of coins outstanding with this denomination key +   * @param[out] deposit_fee_balance total deposit fees collected for this DK +   * @param[out] melt_fee_balance total melt fees collected for this DK +   * @param[out] refund_fee_balance total refund fees collected for this DK +   * @return #GNUNET_OK on success; #GNUNET_NO if there is no entry +   *           for this @a master_pub; #GNUNET_SYSERR on failure +   */ +  int +  (*get_denomination_summary)(void *cls, +                              struct TALER_AUDITORDB_Session *session, +                              const struct TALER_MasterPublicKeyP *master_pub, +                              struct TALER_Amount *denom_balance, +                              struct TALER_Amount *deposit_fee_balance, +                              struct TALER_Amount *melt_fee_balance, +                              struct TALER_Amount *refund_fee_balance); + + +  /** +   * Insert information about an exchange's risk exposure.  There +   * must not be an existing record for the exchange. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master key of the exchange +   * @param risk maximum risk exposure of the exchange +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*insert_risk_summary)(void *cls, +                         struct TALER_AUDITORDB_Session *session, +                         const struct TALER_MasterPublicKeyP *master_pub, +                         const struct TALER_Amount *risk); + + +  /** +   * Update information about an exchange's risk exposure.  There +   * must be an existing record for the exchange. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master key of the exchange +   * @param risk maximum risk exposure of the exchange +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*update_risk_summary)(void *cls, +                         struct TALER_AUDITORDB_Session *session, +                         const struct TALER_MasterPublicKeyP *master_pub, +                         const struct TALER_Amount *risk); + + +  /** +   * Get information about an exchange's risk exposure. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master key of the exchange +   * @param[out] risk maximum risk exposure of the exchange +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure; +   *         #GNUNET_NO if we have no records for the @a master_pub +   */ +  int +  (*get_risk_summary)(void *cls, +                      struct TALER_AUDITORDB_Session *session, +                      const struct TALER_MasterPublicKeyP *master_pub, +                      struct TALER_Amount *risk); + + +  /** +   * Insert information about an exchange's historic +   * revenue about a denomination key. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master key of the exchange +   * @param denom_pub_hash hash of the denomination key +   * @param revenue_timestamp when did this profit get realized +   * @param revenue_balance what was the total profit made from +   *                        deposit fees, melting fees, refresh fees +   *                        and coins that were never returned? +   * @param deposit_fee_balance total profits from deposit fees +   * @param melt_fee_balance total profits from melting fees +   * @param refund_fee_balance total profits from refund fees +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*insert_historic_denom_revenue)(void *cls, +                                   struct TALER_AUDITORDB_Session *session, +                                   const struct TALER_MasterPublicKeyP *master_pub, +                                   const struct GNUNET_HashCode *denom_pub_hash, +                                   struct GNUNET_TIME_Absolute revenue_timestamp, +                                   const struct TALER_Amount *revenue_balance, +                                   const struct TALER_Amount *deposit_fee_balance, +                                   const struct TALER_Amount *melt_fee_balance, +                                   const struct TALER_Amount *refund_fee_balance); + +  /** +   * Obtain all of the historic denomination key revenue +   * of the given @a master_pub. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master key of the exchange +   * @param cb function to call with the results +   * @param cb_cls closure for @a cb +   * @return #GNUNET_OK on success, #GNUNET_SYSERR on failure +   */ +  int +  (*select_historic_denom_revnue)(void *cls, +                                  struct TALER_AUDITORDB_Session *session, +                                  const struct TALER_MasterPublicKeyP *master_pub, +                                  void *cb, /* FIXME: fix type */ +                                  void *cb_cls); + + +  /** +   * Insert information about an exchange's historic +   * losses (from compromised denomination keys). +   * +   * Note yet used, need to implement exchange's bankrupcy +   * protocol (and tables!) first. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master key of the exchange +   * @param denom_pub_hash hash of the denomination key +   * @param loss_timestamp when did this profit get realized +   * @param loss_balance what was the total loss +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*insert_historic_losses)(void *cls, +                            struct TALER_AUDITORDB_Session *session, +                            const struct TALER_MasterPublicKeyP *master_pub, +                            const struct GNUNET_HashCode *denom_pub_hash, +                            struct GNUNET_TIME_Absolute loss_timestamp, +                            const struct TALER_Amount *loss_balance); + +  /** +   * Obtain all of the historic denomination key losses +   * of the given @a master_pub. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master key of the exchange +   * @param cb function to call with the results +   * @param cb_cls closure for @a cb +   * @return #GNUNET_OK on success, #GNUNET_SYSERR on failure +   */ +  int +  (*select_historic_losses)(void *cls, +                            struct TALER_AUDITORDB_Session *session, +                            const struct TALER_MasterPublicKeyP *master_pub, +                            void *cb, /* FIXME: fix type */ +                            void *cb_cls); + + +  /** +   * Insert information about an exchange's historic revenue from reserves. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master key of the exchange +   * @param start_time beginning of aggregated time interval +   * @param end_time end of aggregated time interval +   * @param reserve_profits total profits made +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*insert_historic_reserve_revenue)(void *cls, +                                     struct TALER_AUDITORDB_Session *session, +                                     const struct TALER_MasterPublicKeyP *master_pub, +                                     struct GNUNET_TIME_Absolute start_time, +                                     struct GNUNET_TIME_Absolute end_time, +                                     const struct TALER_Amount *reserve_profits); + + +  /** +   * Return information about an exchange's historic revenue from reserves. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master key of the exchange +   * @param cb function to call with results +   * @param cb_cls closure for @a cb +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*select_historic_reserve_revenue)(void *cls, +                                     struct TALER_AUDITORDB_Session *session, +                                     const struct TALER_MasterPublicKeyP *master_pub, +                                     void *cb, /* FIXME: type */ +                                     void *cb_cls); + + + +  /** +   * Insert information about the predicted exchange's bank +   * account balance. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master key of the exchange +   * @param balance what the bank account balance of the exchange should show +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*insert_predicted_result)(void *cls, +                             struct TALER_AUDITORDB_Session *session, +                             const struct TALER_MasterPublicKeyP *master_pub, +                             const struct TALER_Amount *balance); + + +  /** +   * Update information about an exchange's predicted balance.  There +   * must be an existing record for the exchange. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master key of the exchange +   * @param balance what the bank account balance of the exchange should show +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure +   */ +  int +  (*update_predicted_result)(void *cls, +                             struct TALER_AUDITORDB_Session *session, +                             const struct TALER_MasterPublicKeyP *master_pub, +                             const struct TALER_Amount *balance); + + +  /** +   * Get an exchange's predicted balance. +   * +   * @param cls the @e cls of this struct with the plugin-specific state +   * @param session connection to use +   * @param master_pub master key of the exchange +   * @param[out] balance expected bank account balance of the exchange +   * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure; +   *         #GNUNET_NO if we have no records for the @a master_pub +   */ +  int +  (*get_predicted_balance)(void *cls, +                           struct TALER_AUDITORDB_Session *session, +                           const struct TALER_MasterPublicKeyP *master_pub, +                           struct TALER_Amount *balance); +  }; diff --git a/src/include/taler_exchangedb_plugin.h b/src/include/taler_exchangedb_plugin.h index 63327fcd..fb1eaf62 100644 --- a/src/include/taler_exchangedb_plugin.h +++ b/src/include/taler_exchangedb_plugin.h @@ -756,7 +756,7 @@ struct TALER_EXCHANGEDB_Plugin     * @param cls the @e cls of this struct with the plugin-specific state     * @param session connection to use     * @param denom_pub the public key used for signing coins of this denomination -   * @param issue issuing information with value, fees and other info about the coin +   * @param issue issuing information with value, fees and other info about the denomination     * @return #GNUNET_OK on success; #GNUNET_SYSERR on failure     */    int  | 
