move TALER_CONFIG_get_denom into util lib
This commit is contained in:
parent
293b4018d1
commit
0119f629b3
@ -84,5 +84,19 @@ struct GNUNET_CONFIGURATION_Handle *
|
|||||||
TALER_config_load (const char *base_dir);
|
TALER_config_load (const char *base_dir);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Obtain denomination amount from configuration file.
|
||||||
|
*
|
||||||
|
* @param section section of the configuration to access
|
||||||
|
* @param option option of the configuration to access
|
||||||
|
* @param denom[OUT] set to the amount found in configuration
|
||||||
|
* @return #GNUNET_OK on success, #GNUNET_SYSERR on error
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
TALER_config_get_denom (struct GNUNET_CONFIGURATION_Handle *cfg,
|
||||||
|
const char *section,
|
||||||
|
const char *option,
|
||||||
|
struct TALER_Amount *denom);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -44,37 +44,38 @@
|
|||||||
GNUNET_NETWORK_STRUCT_BEGIN
|
GNUNET_NETWORK_STRUCT_BEGIN
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Struct with all of the key information for a kind of coin. Hashed
|
||||||
|
* to generate a unique directory name per coin type.
|
||||||
*/
|
*/
|
||||||
struct CoinTypeNBO
|
struct CoinTypeNBO
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
*
|
* How long can the coin be spend?
|
||||||
*/
|
*/
|
||||||
struct GNUNET_TIME_RelativeNBO duration_spend;
|
struct GNUNET_TIME_RelativeNBO duration_spend;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* How long can the coin be withdrawn (generated)?
|
||||||
*/
|
*/
|
||||||
struct GNUNET_TIME_RelativeNBO duration_withdraw;
|
struct GNUNET_TIME_RelativeNBO duration_withdraw;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* What is the value of the coin?
|
||||||
*/
|
*/
|
||||||
struct TALER_AmountNBO value;
|
struct TALER_AmountNBO value;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* What is the fee charged for withdrawl?
|
||||||
*/
|
*/
|
||||||
struct TALER_AmountNBO fee_withdraw;
|
struct TALER_AmountNBO fee_withdraw;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* What is the fee charged for deposits?
|
||||||
*/
|
*/
|
||||||
struct TALER_AmountNBO fee_deposit;
|
struct TALER_AmountNBO fee_deposit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* What is the fee charged for melting?
|
||||||
*/
|
*/
|
||||||
struct TALER_AmountNBO fee_refresh;
|
struct TALER_AmountNBO fee_refresh;
|
||||||
};
|
};
|
||||||
@ -171,63 +172,22 @@ static struct GNUNET_CRYPTO_EddsaPublicKey *master_pub;
|
|||||||
static struct GNUNET_TIME_Absolute lookahead_sign_stamp;
|
static struct GNUNET_TIME_Absolute lookahead_sign_stamp;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @param section
|
|
||||||
* @param option
|
|
||||||
* @param denom
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
config_get_denom (const char *section,
|
|
||||||
const char *option,
|
|
||||||
struct TALER_Amount *denom)
|
|
||||||
{
|
|
||||||
char *str;
|
|
||||||
|
|
||||||
if (GNUNET_OK !=
|
|
||||||
GNUNET_CONFIGURATION_get_value_string (kcfg,
|
|
||||||
section,
|
|
||||||
option,
|
|
||||||
&str))
|
|
||||||
return GNUNET_NO;
|
|
||||||
if (GNUNET_OK != TALER_string_to_amount (str,
|
|
||||||
denom))
|
|
||||||
return GNUNET_SYSERR;
|
|
||||||
return GNUNET_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Obtain the name of the directory we use to store signing
|
||||||
|
* keys created at time @a start.
|
||||||
*
|
*
|
||||||
*
|
* @param start time at which we create the signing key
|
||||||
* @return
|
* @return name of the directory we should use, basically "$MINTDIR/$TIME/";
|
||||||
|
* (valid until next call to this function)
|
||||||
*/
|
*/
|
||||||
static char *
|
static const char *
|
||||||
get_signkey_dir ()
|
|
||||||
{
|
|
||||||
char *dir;
|
|
||||||
|
|
||||||
GNUNET_asprintf (&dir,
|
|
||||||
"%s" DIR_SEPARATOR_STR DIR_SIGNKEYS,
|
|
||||||
mintdir);
|
|
||||||
return dir;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @param start
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
static char *
|
|
||||||
get_signkey_file (struct GNUNET_TIME_Absolute start)
|
get_signkey_file (struct GNUNET_TIME_Absolute start)
|
||||||
{
|
{
|
||||||
char *dir;
|
static char dir[4096];
|
||||||
|
|
||||||
GNUNET_asprintf (&dir,
|
GNUNET_snprintf (dir,
|
||||||
|
sizeof (dir),
|
||||||
"%s" DIR_SEPARATOR_STR DIR_SIGNKEYS DIR_SEPARATOR_STR "%llu",
|
"%s" DIR_SEPARATOR_STR DIR_SIGNKEYS DIR_SEPARATOR_STR "%llu",
|
||||||
mintdir,
|
mintdir,
|
||||||
(unsigned long long) start.abs_value_us);
|
(unsigned long long) start.abs_value_us);
|
||||||
@ -236,12 +196,12 @@ get_signkey_file (struct GNUNET_TIME_Absolute start)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hash the data defining the coin type.
|
* Hash the data defining the coin type. Exclude information that may
|
||||||
* Exclude information that may not be the same for all
|
* not be the same for all instances of the coin type (i.e. the
|
||||||
* instances of the coin type (i.e. the anchor, overlap).
|
* anchor, overlap).
|
||||||
*
|
*
|
||||||
* @param p
|
* @param p coin parameters to convert to a hash
|
||||||
* @param hash
|
* @param hash[OUT] set to the hash matching @a p
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
hash_coin_type (const struct CoinTypeParams *p,
|
hash_coin_type (const struct CoinTypeParams *p,
|
||||||
@ -267,10 +227,17 @@ hash_coin_type (const struct CoinTypeParams *p,
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Obtain the name of the directory we should use to store coins of
|
||||||
|
* the given type. The directory name has the format
|
||||||
|
* "$MINTDIR/$VALUE/$HASH/" where "$VALUE" represents the value of the
|
||||||
|
* coin and "$HASH" encodes all of the coin's parameters, generating a
|
||||||
|
* unique string for each type of coin. Note that the "$HASH"
|
||||||
|
* includes neither the absolute creation time nor the key of the
|
||||||
|
* coin, thus the files in the subdirectory really just refer to the
|
||||||
|
* same type of coins, not the same coin.
|
||||||
*
|
*
|
||||||
*
|
* @param p coin parameters to convert to a directory name
|
||||||
* @param p
|
* @return directory name (valid until next call to this function)
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
static const char *
|
static const char *
|
||||||
get_cointype_dir (const struct CoinTypeParams *p)
|
get_cointype_dir (const struct CoinTypeParams *p)
|
||||||
@ -499,7 +466,9 @@ mint_keys_update_signkeys ()
|
|||||||
}
|
}
|
||||||
ROUND_TO_SECS (signkey_duration,
|
ROUND_TO_SECS (signkey_duration,
|
||||||
rel_value_us);
|
rel_value_us);
|
||||||
signkey_dir = get_signkey_dir ();
|
GNUNET_asprintf (&signkey_dir,
|
||||||
|
"%s" DIR_SEPARATOR_STR DIR_SIGNKEYS,
|
||||||
|
mintdir);
|
||||||
// make sure the directory exists
|
// make sure the directory exists
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
GNUNET_DISK_directory_create (signkey_dir))
|
GNUNET_DISK_directory_create (signkey_dir))
|
||||||
@ -516,7 +485,7 @@ mint_keys_update_signkeys ()
|
|||||||
|
|
||||||
while (anchor.abs_value_us < lookahead_sign_stamp.abs_value_us)
|
while (anchor.abs_value_us < lookahead_sign_stamp.abs_value_us)
|
||||||
{
|
{
|
||||||
char *skf;
|
const char *skf;
|
||||||
|
|
||||||
skf = get_signkey_file (anchor);
|
skf = get_signkey_file (anchor);
|
||||||
if (GNUNET_YES !=
|
if (GNUNET_YES !=
|
||||||
@ -607,9 +576,10 @@ get_cointype_params (const char *ct,
|
|||||||
rel_value_us);
|
rel_value_us);
|
||||||
|
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
config_get_denom ("mint_denom_value",
|
TALER_config_get_denom (kcfg,
|
||||||
ct,
|
"mint_denom_value",
|
||||||
¶ms->value))
|
ct,
|
||||||
|
¶ms->value))
|
||||||
{
|
{
|
||||||
fprintf (stderr,
|
fprintf (stderr,
|
||||||
"Value not given for coin type '%s'\n",
|
"Value not given for coin type '%s'\n",
|
||||||
@ -618,9 +588,10 @@ get_cointype_params (const char *ct,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
config_get_denom ("mint_denom_fee_withdraw",
|
TALER_config_get_denom (kcfg,
|
||||||
ct,
|
"mint_denom_fee_withdraw",
|
||||||
¶ms->fee_withdraw))
|
ct,
|
||||||
|
¶ms->fee_withdraw))
|
||||||
{
|
{
|
||||||
fprintf (stderr,
|
fprintf (stderr,
|
||||||
"Withdraw fee not given for coin type '%s'\n",
|
"Withdraw fee not given for coin type '%s'\n",
|
||||||
@ -629,9 +600,10 @@ get_cointype_params (const char *ct,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
config_get_denom ("mint_denom_fee_deposit",
|
TALER_config_get_denom (kcfg,
|
||||||
ct,
|
"mint_denom_fee_deposit",
|
||||||
¶ms->fee_deposit))
|
ct,
|
||||||
|
¶ms->fee_deposit))
|
||||||
{
|
{
|
||||||
fprintf (stderr,
|
fprintf (stderr,
|
||||||
"Deposit fee not given for coin type '%s'\n",
|
"Deposit fee not given for coin type '%s'\n",
|
||||||
@ -640,9 +612,10 @@ get_cointype_params (const char *ct,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
config_get_denom ("mint_denom_fee_refresh",
|
TALER_config_get_denom (kcfg,
|
||||||
ct,
|
"mint_denom_fee_refresh",
|
||||||
¶ms->fee_refresh))
|
ct,
|
||||||
|
¶ms->fee_refresh))
|
||||||
{
|
{
|
||||||
fprintf (stderr,
|
fprintf (stderr,
|
||||||
"Deposit fee not given for coin type '%s'\n",
|
"Deposit fee not given for coin type '%s'\n",
|
||||||
|
@ -29,6 +29,34 @@
|
|||||||
#include <gcrypt.h>
|
#include <gcrypt.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Obtain denomination amount from configuration file.
|
||||||
|
*
|
||||||
|
* @param section section of the configuration to access
|
||||||
|
* @param option option of the configuration to access
|
||||||
|
* @param denom[OUT] set to the amount found in configuration
|
||||||
|
* @return #GNUNET_OK on success, #GNUNET_SYSERR on error
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
TALER_config_get_denom (struct GNUNET_CONFIGURATION_Handle *cfg,
|
||||||
|
const char *section,
|
||||||
|
const char *option,
|
||||||
|
struct TALER_Amount *denom)
|
||||||
|
{
|
||||||
|
char *str;
|
||||||
|
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
GNUNET_CONFIGURATION_get_value_string (cfg,
|
||||||
|
section,
|
||||||
|
option,
|
||||||
|
&str))
|
||||||
|
return GNUNET_NO;
|
||||||
|
if (GNUNET_OK != TALER_string_to_amount (str,
|
||||||
|
denom))
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
return GNUNET_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load configuration by parsing all configuration
|
* Load configuration by parsing all configuration
|
||||||
|
Loading…
Reference in New Issue
Block a user