a first, untested stab at #6123, committing intermediate result that passes (existing) tests
This commit is contained in:
parent
3a470a26c3
commit
59a5b1ceb8
@ -122,7 +122,6 @@ exchange = http://localhost:8081/
|
|||||||
|
|
||||||
[coin_kudos_ct_1]
|
[coin_kudos_ct_1]
|
||||||
value = TESTKUDOS:0.01
|
value = TESTKUDOS:0.01
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -134,7 +133,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_kudos_ct_10]
|
[coin_kudos_ct_10]
|
||||||
value = TESTKUDOS:0.10
|
value = TESTKUDOS:0.10
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -146,7 +144,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_kudos_1]
|
[coin_kudos_1]
|
||||||
value = TESTKUDOS:1
|
value = TESTKUDOS:1
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -158,7 +155,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_kudos_2]
|
[coin_kudos_2]
|
||||||
value = TESTKUDOS:2
|
value = TESTKUDOS:2
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -170,7 +166,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_kudos_4]
|
[coin_kudos_4]
|
||||||
value = TESTKUDOS:4
|
value = TESTKUDOS:4
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -182,7 +177,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_kudos_5]
|
[coin_kudos_5]
|
||||||
value = TESTKUDOS:5
|
value = TESTKUDOS:5
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -194,7 +188,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_kudos_8]
|
[coin_kudos_8]
|
||||||
value = TESTKUDOS:8
|
value = TESTKUDOS:8
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -206,7 +199,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_kudos_10]
|
[coin_kudos_10]
|
||||||
value = TESTKUDOS:10
|
value = TESTKUDOS:10
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
|
@ -88,7 +88,6 @@ closing-fee-2027 = EUR:0.01
|
|||||||
# the exchange should support (and their respective fee structure)
|
# the exchange should support (and their respective fee structure)
|
||||||
[coin_eur_ct_1]
|
[coin_eur_ct_1]
|
||||||
value = EUR:0.01
|
value = EUR:0.01
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -100,7 +99,6 @@ rsa_keysize = 2048
|
|||||||
|
|
||||||
[coin_eur_ct_10]
|
[coin_eur_ct_10]
|
||||||
value = EUR:0.10
|
value = EUR:0.10
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -112,7 +110,6 @@ rsa_keysize = 2048
|
|||||||
|
|
||||||
[coin_eur_1]
|
[coin_eur_1]
|
||||||
value = EUR:1
|
value = EUR:1
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -124,7 +121,6 @@ rsa_keysize = 2048
|
|||||||
|
|
||||||
[coin_eur_5]
|
[coin_eur_5]
|
||||||
value = EUR:5
|
value = EUR:5
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -136,7 +132,6 @@ rsa_keysize = 2048
|
|||||||
|
|
||||||
[coin_eur_10]
|
[coin_eur_10]
|
||||||
value = EUR:10
|
value = EUR:10
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
|
|
||||||
# All options are mandatory!
|
# All options are mandatory!
|
||||||
# value = EUR:0.01
|
# value = EUR:0.01
|
||||||
# duration_overlap = 60 minutes
|
|
||||||
# duration_withdraw = 7 days
|
# duration_withdraw = 7 days
|
||||||
# duration_spend = 2 years
|
# duration_spend = 2 years
|
||||||
# duration_legal = 3 years
|
# duration_legal = 3 years
|
||||||
|
@ -117,13 +117,6 @@ struct DenominationParameters
|
|||||||
*/
|
*/
|
||||||
struct GNUNET_TIME_Relative duration_withdraw;
|
struct GNUNET_TIME_Relative duration_withdraw;
|
||||||
|
|
||||||
/**
|
|
||||||
* How much should coin creation (@e duration_withdraw) duration overlap
|
|
||||||
* with the next denomination? Basically, the starting time of two
|
|
||||||
* denominations is always @e duration_withdraw - @e duration_overlap apart.
|
|
||||||
*/
|
|
||||||
struct GNUNET_TIME_Relative duration_overlap;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* What is the value of each coin?
|
* What is the value of each coin?
|
||||||
*/
|
*/
|
||||||
@ -161,6 +154,13 @@ struct DenominationParameters
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* How much should coin creation (@e duration_withdraw) duration overlap
|
||||||
|
* with the next denomination? Basically, the starting time of two
|
||||||
|
* denominations is always @e duration_withdraw - #duration_overlap apart.
|
||||||
|
*/
|
||||||
|
static struct GNUNET_TIME_Relative duration_overlap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The configured currency.
|
* The configured currency.
|
||||||
*/
|
*/
|
||||||
@ -234,6 +234,13 @@ static struct GNUNET_TIME_Relative max_duration_spend;
|
|||||||
*/
|
*/
|
||||||
static struct GNUNET_HashCode revoke_dkh;
|
static struct GNUNET_HashCode revoke_dkh;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Which RSA key size should we use for replacment keys after revocation?
|
||||||
|
* (Useful because maybe that's the one option one might usefully want to
|
||||||
|
* change when replacing a key.)
|
||||||
|
*/
|
||||||
|
static unsigned int replacement_key_size = 2048;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return value from main().
|
* Return value from main().
|
||||||
*/
|
*/
|
||||||
@ -641,23 +648,11 @@ get_denomination_type_params (const char *ct,
|
|||||||
return GNUNET_SYSERR;
|
return GNUNET_SYSERR;
|
||||||
}
|
}
|
||||||
GNUNET_TIME_round_rel (¶ms->duration_legal);
|
GNUNET_TIME_round_rel (¶ms->duration_legal);
|
||||||
if (GNUNET_OK !=
|
if (duration_overlap.rel_value_us >=
|
||||||
GNUNET_CONFIGURATION_get_value_time (kcfg,
|
|
||||||
ct,
|
|
||||||
"DURATION_OVERLAP",
|
|
||||||
¶ms->duration_overlap))
|
|
||||||
{
|
|
||||||
GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
|
|
||||||
ct,
|
|
||||||
"DURATION_OVERLAP");
|
|
||||||
return GNUNET_SYSERR;
|
|
||||||
}
|
|
||||||
GNUNET_TIME_round_rel (¶ms->duration_overlap);
|
|
||||||
if (params->duration_overlap.rel_value_us >=
|
|
||||||
params->duration_withdraw.rel_value_us)
|
params->duration_withdraw.rel_value_us)
|
||||||
{
|
{
|
||||||
GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR,
|
GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR,
|
||||||
ct,
|
"exchangedb",
|
||||||
"DURATION_OVERLAP",
|
"DURATION_OVERLAP",
|
||||||
"Value given for DURATION_OVERLAP must be smaller than value for DURATION_WITHDRAW!");
|
"Value given for DURATION_OVERLAP must be smaller than value for DURATION_WITHDRAW!");
|
||||||
return GNUNET_SYSERR;
|
return GNUNET_SYSERR;
|
||||||
@ -741,7 +736,7 @@ get_denomination_type_params (const char *ct,
|
|||||||
dir = get_denomination_dir (params);
|
dir = get_denomination_dir (params);
|
||||||
get_anchor (dir,
|
get_anchor (dir,
|
||||||
params->duration_withdraw,
|
params->duration_withdraw,
|
||||||
params->duration_overlap,
|
duration_overlap,
|
||||||
¶ms->anchor);
|
¶ms->anchor);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -808,6 +803,45 @@ create_denomkey_issue (
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write the @a denomkey_issue to file @a dkf and also (if applicable)
|
||||||
|
* dump the properties to the #auditor_output_file.
|
||||||
|
*
|
||||||
|
* @param dkf where to write the @a denomkey_issue
|
||||||
|
* @param denomkey_issue data to write
|
||||||
|
* @return #GNUNET_OK on success
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
write_denomkey_issue (
|
||||||
|
const char *dkf,
|
||||||
|
const struct TALER_EXCHANGEDB_DenominationKey *denomkey_issue)
|
||||||
|
{
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
TALER_EXCHANGEDB_denomination_key_write (dkf,
|
||||||
|
denomkey_issue))
|
||||||
|
{
|
||||||
|
fprintf (stderr,
|
||||||
|
"Failed to write denomination key information to file `%s'.\n",
|
||||||
|
dkf);
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
|
if ( (NULL != auditor_output_file) &&
|
||||||
|
(1 !=
|
||||||
|
fwrite (&denomkey_issue->issue.properties,
|
||||||
|
sizeof (struct TALER_DenominationKeyValidityPS),
|
||||||
|
1,
|
||||||
|
auditor_output_file)) )
|
||||||
|
{
|
||||||
|
fprintf (stderr,
|
||||||
|
"Failed to write denomination key information to %s: %s\n",
|
||||||
|
auditorrequestfile,
|
||||||
|
strerror (errno));
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
|
return GNUNET_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate new denomination signing keys for the denomination type of the given @a
|
* Generate new denomination signing keys for the denomination type of the given @a
|
||||||
* denomination_alias.
|
* denomination_alias.
|
||||||
@ -862,48 +896,19 @@ exchange_keys_update_denominationtype (void *cls,
|
|||||||
denomination_alias,
|
denomination_alias,
|
||||||
GNUNET_STRINGS_absolute_time_to_string (p.anchor),
|
GNUNET_STRINGS_absolute_time_to_string (p.anchor),
|
||||||
dkf);
|
dkf);
|
||||||
|
|
||||||
create_denomkey_issue (&p,
|
create_denomkey_issue (&p,
|
||||||
&denomkey_issue);
|
&denomkey_issue);
|
||||||
if (GNUNET_OK !=
|
*ret = write_denomkey_issue (dkf,
|
||||||
TALER_EXCHANGEDB_denomination_key_write (dkf,
|
&denomkey_issue);
|
||||||
&denomkey_issue))
|
|
||||||
{
|
|
||||||
fprintf (stderr,
|
|
||||||
"Failed to write denomination key information to file `%s'.\n",
|
|
||||||
dkf);
|
|
||||||
*ret = GNUNET_SYSERR;
|
|
||||||
GNUNET_CRYPTO_rsa_private_key_free (
|
|
||||||
denomkey_issue.denom_priv.rsa_private_key);
|
|
||||||
GNUNET_CRYPTO_rsa_public_key_free (
|
|
||||||
denomkey_issue.denom_pub.rsa_public_key);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if ( (NULL != auditor_output_file) &&
|
|
||||||
(1 !=
|
|
||||||
fwrite (&denomkey_issue.issue.properties,
|
|
||||||
sizeof (struct TALER_DenominationKeyValidityPS),
|
|
||||||
1,
|
|
||||||
auditor_output_file)) )
|
|
||||||
{
|
|
||||||
fprintf (stderr,
|
|
||||||
"Failed to write denomination key information to %s: %s\n",
|
|
||||||
auditorrequestfile,
|
|
||||||
strerror (errno));
|
|
||||||
*ret = GNUNET_SYSERR;
|
|
||||||
GNUNET_CRYPTO_rsa_private_key_free (
|
|
||||||
denomkey_issue.denom_priv.rsa_private_key);
|
|
||||||
GNUNET_CRYPTO_rsa_public_key_free (
|
|
||||||
denomkey_issue.denom_pub.rsa_public_key);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
GNUNET_CRYPTO_rsa_private_key_free (
|
GNUNET_CRYPTO_rsa_private_key_free (
|
||||||
denomkey_issue.denom_priv.rsa_private_key);
|
denomkey_issue.denom_priv.rsa_private_key);
|
||||||
GNUNET_CRYPTO_rsa_public_key_free (denomkey_issue.denom_pub.rsa_public_key);
|
GNUNET_CRYPTO_rsa_public_key_free (denomkey_issue.denom_pub.rsa_public_key);
|
||||||
|
if (GNUNET_OK != *ret)
|
||||||
|
return; /* stop loop, hard error */
|
||||||
p.anchor = GNUNET_TIME_absolute_add (p.anchor,
|
p.anchor = GNUNET_TIME_absolute_add (p.anchor,
|
||||||
p.duration_withdraw);
|
p.duration_withdraw);
|
||||||
p.anchor = GNUNET_TIME_absolute_subtract (p.anchor,
|
p.anchor = GNUNET_TIME_absolute_subtract (p.anchor,
|
||||||
p.duration_overlap);
|
duration_overlap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1114,6 +1119,105 @@ create_wire_fees (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the denomination that we just revoked is currently active,
|
||||||
|
* and if so, generate a replacement key.
|
||||||
|
*
|
||||||
|
* @param cls closure with the revoked denomination key hash, a `struct GNUNET_HashCode *`
|
||||||
|
* @param alias coin alias
|
||||||
|
* @param dki the denomination key
|
||||||
|
* @return #GNUNET_OK to continue to iterate,
|
||||||
|
* #GNUNET_NO to stop iteration with no error,
|
||||||
|
* #GNUNET_SYSERR to abort iteration with error!
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
check_revocation_regeneration (
|
||||||
|
void *cls,
|
||||||
|
const char *alias,
|
||||||
|
const struct TALER_EXCHANGEDB_DenominationKey *dki)
|
||||||
|
{
|
||||||
|
const struct GNUNET_HashCode *denom_hash = cls;
|
||||||
|
struct GNUNET_TIME_Absolute now;
|
||||||
|
struct GNUNET_TIME_Absolute withdraw_end;
|
||||||
|
|
||||||
|
if (0 !=
|
||||||
|
GNUNET_memcmp (denom_hash,
|
||||||
|
&dki->issue.properties.denom_hash))
|
||||||
|
return GNUNET_OK; /* does not match */
|
||||||
|
now = GNUNET_TIME_absolute_get ();
|
||||||
|
withdraw_end = GNUNET_TIME_absolute_ntoh (
|
||||||
|
dki->issue.properties.expire_withdraw);
|
||||||
|
if (now.abs_value_us >= withdraw_end.abs_value_us)
|
||||||
|
{
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
|
"Revoked denomination key has expired, no need to create a replacment\n");
|
||||||
|
return GNUNET_NO;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
struct GNUNET_TIME_Absolute anchor
|
||||||
|
= GNUNET_TIME_absolute_ntoh (dki->issue.properties.start);
|
||||||
|
struct TALER_EXCHANGEDB_DenominationKey dki_new;
|
||||||
|
const char *dkf;
|
||||||
|
int ret;
|
||||||
|
struct DenominationParameters dp = {
|
||||||
|
.duration_legal
|
||||||
|
= GNUNET_TIME_absolute_get_difference
|
||||||
|
(anchor,
|
||||||
|
GNUNET_TIME_absolute_ntoh (dki->issue.properties.expire_legal)),
|
||||||
|
.duration_spend
|
||||||
|
= GNUNET_TIME_absolute_get_difference
|
||||||
|
(anchor,
|
||||||
|
GNUNET_TIME_absolute_ntoh (dki->issue.properties.expire_deposit)),
|
||||||
|
.duration_withdraw
|
||||||
|
= GNUNET_TIME_absolute_get_difference
|
||||||
|
(anchor,
|
||||||
|
GNUNET_TIME_absolute_ntoh (dki->issue.properties.expire_withdraw)),
|
||||||
|
.anchor = anchor,
|
||||||
|
.rsa_keysize = replacement_key_size
|
||||||
|
};
|
||||||
|
char *dkfi;
|
||||||
|
|
||||||
|
TALER_amount_ntoh (&dp.value,
|
||||||
|
&dki->issue.properties.value);
|
||||||
|
TALER_amount_ntoh (&dp.fee_withdraw,
|
||||||
|
&dki->issue.properties.fee_withdraw);
|
||||||
|
TALER_amount_ntoh (&dp.fee_deposit,
|
||||||
|
&dki->issue.properties.fee_deposit);
|
||||||
|
TALER_amount_ntoh (&dp.fee_refresh,
|
||||||
|
&dki->issue.properties.fee_refresh);
|
||||||
|
TALER_amount_ntoh (&dp.fee_refund,
|
||||||
|
&dki->issue.properties.fee_refund);
|
||||||
|
|
||||||
|
/* find unused file name for revocation file by appending -%u */
|
||||||
|
dkf = get_denomination_type_file (&dp,
|
||||||
|
dp.anchor);
|
||||||
|
for (unsigned int i = 1;; i++)
|
||||||
|
{
|
||||||
|
GNUNET_asprintf (&dkfi,
|
||||||
|
"%s-%u",
|
||||||
|
dkf,
|
||||||
|
i);
|
||||||
|
if (GNUNET_YES != GNUNET_DISK_file_test (dkfi))
|
||||||
|
break;
|
||||||
|
GNUNET_free (dkfi);
|
||||||
|
}
|
||||||
|
|
||||||
|
create_denomkey_issue (&dp,
|
||||||
|
&dki_new);
|
||||||
|
ret = write_denomkey_issue (dkfi,
|
||||||
|
&dki_new);
|
||||||
|
GNUNET_free (dkfi);
|
||||||
|
GNUNET_CRYPTO_rsa_private_key_free (dki_new.denom_priv.rsa_private_key);
|
||||||
|
GNUNET_CRYPTO_rsa_public_key_free (dki_new.denom_pub.rsa_public_key);
|
||||||
|
if (GNUNET_OK != ret)
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return GNUNET_NO;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Revoke the denomination key matching @a hc and request /recoup to be
|
* Revoke the denomination key matching @a hc and request /recoup to be
|
||||||
* initiated.
|
* initiated.
|
||||||
@ -1126,29 +1230,41 @@ create_wire_fees (void)
|
|||||||
static int
|
static int
|
||||||
revoke_denomination (const struct GNUNET_HashCode *hc)
|
revoke_denomination (const struct GNUNET_HashCode *hc)
|
||||||
{
|
{
|
||||||
char *basedir;
|
{
|
||||||
|
char *basedir;
|
||||||
|
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
GNUNET_CONFIGURATION_get_value_filename (kcfg,
|
GNUNET_CONFIGURATION_get_value_filename (kcfg,
|
||||||
"exchange",
|
"exchange",
|
||||||
"REVOCATION_DIR",
|
"REVOCATION_DIR",
|
||||||
&basedir))
|
&basedir))
|
||||||
{
|
{
|
||||||
GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
|
GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
|
||||||
"exchange",
|
"exchange",
|
||||||
"REVOCATION_DIR");
|
"REVOCATION_DIR");
|
||||||
return GNUNET_SYSERR;
|
return GNUNET_SYSERR;
|
||||||
}
|
}
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
TALER_EXCHANGEDB_denomination_key_revoke (basedir,
|
TALER_EXCHANGEDB_denomination_key_revoke (basedir,
|
||||||
hc,
|
hc,
|
||||||
&master_priv))
|
&master_priv))
|
||||||
{
|
{
|
||||||
|
GNUNET_free (basedir);
|
||||||
|
GNUNET_break (0);
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
GNUNET_free (basedir);
|
GNUNET_free (basedir);
|
||||||
GNUNET_break (0);
|
}
|
||||||
|
|
||||||
|
if (GNUNET_SYSERR ==
|
||||||
|
TALER_EXCHANGEDB_denomination_keys_iterate (exchange_directory,
|
||||||
|
&check_revocation_regeneration,
|
||||||
|
(void *) hc))
|
||||||
|
{
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||||
|
"Might have failed to generate replacement for revoked denomination key!\n");
|
||||||
return GNUNET_SYSERR;
|
return GNUNET_SYSERR;
|
||||||
}
|
}
|
||||||
GNUNET_free (basedir);
|
|
||||||
return GNUNET_OK;
|
return GNUNET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1186,6 +1302,19 @@ run (void *cls,
|
|||||||
now = now_tmp;
|
now = now_tmp;
|
||||||
}
|
}
|
||||||
GNUNET_TIME_round_abs (&now);
|
GNUNET_TIME_round_abs (&now);
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
GNUNET_CONFIGURATION_get_value_time (kcfg,
|
||||||
|
"exchangedb",
|
||||||
|
"DURATION_OVERLAP",
|
||||||
|
&duration_overlap))
|
||||||
|
{
|
||||||
|
GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
|
||||||
|
"exchangedb",
|
||||||
|
"DURATION_OVERLAP");
|
||||||
|
global_ret = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
GNUNET_TIME_round_rel (&duration_overlap);
|
||||||
|
|
||||||
if (NULL == feedir)
|
if (NULL == feedir)
|
||||||
{
|
{
|
||||||
@ -1336,6 +1465,11 @@ main (int argc,
|
|||||||
"DIRNAME",
|
"DIRNAME",
|
||||||
"directory where to write wire transfer fee structure",
|
"directory where to write wire transfer fee structure",
|
||||||
&feedir),
|
&feedir),
|
||||||
|
GNUNET_GETOPT_option_uint ('k',
|
||||||
|
"replacement-keysize",
|
||||||
|
"BITS",
|
||||||
|
"when creating a replacement key in a revocation operation, which key size should be used for the new denomination key",
|
||||||
|
&replacement_key_size),
|
||||||
GNUNET_GETOPT_option_filename ('o',
|
GNUNET_GETOPT_option_filename ('o',
|
||||||
"output",
|
"output",
|
||||||
"FILENAME",
|
"FILENAME",
|
||||||
|
@ -98,7 +98,6 @@ CLOSING-FEE-2027 = EUR:0.01
|
|||||||
# Coins for the tests.
|
# Coins for the tests.
|
||||||
[coin_eur_ct_1]
|
[coin_eur_ct_1]
|
||||||
value = EUR:0.01
|
value = EUR:0.01
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -110,7 +109,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_eur_ct_10]
|
[coin_eur_ct_10]
|
||||||
value = EUR:0.10
|
value = EUR:0.10
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -122,7 +120,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_eur_1]
|
[coin_eur_1]
|
||||||
value = EUR:1
|
value = EUR:1
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
|
@ -102,7 +102,6 @@ CLOSING-FEE-2027 = EUR:0.01
|
|||||||
# Coins for the tests.
|
# Coins for the tests.
|
||||||
[coin_eur_ct_1]
|
[coin_eur_ct_1]
|
||||||
value = EUR:0.01
|
value = EUR:0.01
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -114,7 +113,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_eur_ct_10]
|
[coin_eur_ct_10]
|
||||||
value = EUR:0.10
|
value = EUR:0.10
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -126,7 +124,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_eur_1]
|
[coin_eur_1]
|
||||||
value = EUR:1
|
value = EUR:1
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
|
@ -26,3 +26,11 @@ IDLE_RESERVE_EXPIRATION_TIME = 4 weeks
|
|||||||
# After how long do we forget about reserves? Should be above
|
# After how long do we forget about reserves? Should be above
|
||||||
# the legal expiration timeframe of withdrawn coins.
|
# the legal expiration timeframe of withdrawn coins.
|
||||||
LEGAL_RESERVE_EXPIRATION_TIME = 7 years
|
LEGAL_RESERVE_EXPIRATION_TIME = 7 years
|
||||||
|
|
||||||
|
|
||||||
|
# How long should generated coins overlap in their validity
|
||||||
|
# periods. Should be long enough to avoid problems with
|
||||||
|
# wallets picking one key and then due to network latency
|
||||||
|
# another key being valid. The DURATION_WITHDRAW period
|
||||||
|
# must be longer than this value.
|
||||||
|
DURATION_OVERLAP = 5 minutes
|
@ -93,7 +93,6 @@ CLOSING-FEE-2027 = EUR:0.01
|
|||||||
# refuses to start.
|
# refuses to start.
|
||||||
[coin_eur_ct_1]
|
[coin_eur_ct_1]
|
||||||
value = EUR:0.01
|
value = EUR:0.01
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
|
@ -146,7 +146,6 @@ CLOSING-FEE-2027 = EUR:0.01
|
|||||||
# the exchange should support (and their respective fee structure)
|
# the exchange should support (and their respective fee structure)
|
||||||
[coin_eur_ct_1]
|
[coin_eur_ct_1]
|
||||||
value = EUR:0.01
|
value = EUR:0.01
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -158,7 +157,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_eur_ct_10]
|
[coin_eur_ct_10]
|
||||||
value = EUR:0.10
|
value = EUR:0.10
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -170,7 +168,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_eur_1]
|
[coin_eur_1]
|
||||||
value = EUR:1
|
value = EUR:1
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -182,7 +179,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_eur_5]
|
[coin_eur_5]
|
||||||
value = EUR:5
|
value = EUR:5
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -194,7 +190,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_eur_10]
|
[coin_eur_10]
|
||||||
value = EUR:10
|
value = EUR:10
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
|
@ -148,7 +148,6 @@ CLOSING-FEE-2027 = EUR:0.01
|
|||||||
# the exchange should support (and their respective fee structure)
|
# the exchange should support (and their respective fee structure)
|
||||||
[coin_eur_ct_1]
|
[coin_eur_ct_1]
|
||||||
value = EUR:0.01
|
value = EUR:0.01
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -160,7 +159,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_eur_ct_10]
|
[coin_eur_ct_10]
|
||||||
value = EUR:0.10
|
value = EUR:0.10
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -172,7 +170,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_eur_1]
|
[coin_eur_1]
|
||||||
value = EUR:1
|
value = EUR:1
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -184,7 +181,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_eur_5]
|
[coin_eur_5]
|
||||||
value = EUR:5
|
value = EUR:5
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -196,7 +192,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_eur_10]
|
[coin_eur_10]
|
||||||
value = EUR:10
|
value = EUR:10
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
|
@ -167,9 +167,11 @@ CLOSING-FEE-2024 = EUR:0.01
|
|||||||
CLOSING-FEE-2025 = EUR:0.01
|
CLOSING-FEE-2025 = EUR:0.01
|
||||||
CLOSING-FEE-2026 = EUR:0.01
|
CLOSING-FEE-2026 = EUR:0.01
|
||||||
|
|
||||||
|
[exchangedb]
|
||||||
|
duration_overlap = 1 s
|
||||||
|
|
||||||
[coin_eur_1]
|
[coin_eur_1]
|
||||||
value = EUR:1
|
value = EUR:1
|
||||||
duration_overlap = 1 s
|
|
||||||
duration_withdraw = 80 s
|
duration_withdraw = 80 s
|
||||||
duration_spend = 80 s
|
duration_spend = 80 s
|
||||||
duration_legal = 60 s
|
duration_legal = 60 s
|
||||||
|
@ -135,7 +135,6 @@ CLOSING-FEE-2027 = EUR:0.01
|
|||||||
|
|
||||||
[coin_eur_ct_1]
|
[coin_eur_ct_1]
|
||||||
value = EUR:0.01
|
value = EUR:0.01
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -147,7 +146,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_eur_ct_10]
|
[coin_eur_ct_10]
|
||||||
value = EUR:0.10
|
value = EUR:0.10
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -159,7 +157,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_eur_1]
|
[coin_eur_1]
|
||||||
value = EUR:1
|
value = EUR:1
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -171,7 +168,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_eur_5]
|
[coin_eur_5]
|
||||||
value = EUR:5
|
value = EUR:5
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
@ -183,7 +179,6 @@ rsa_keysize = 1024
|
|||||||
|
|
||||||
[coin_eur_10]
|
[coin_eur_10]
|
||||||
value = EUR:10
|
value = EUR:10
|
||||||
duration_overlap = 5 minutes
|
|
||||||
duration_withdraw = 7 days
|
duration_withdraw = 7 days
|
||||||
duration_spend = 2 years
|
duration_spend = 2 years
|
||||||
duration_legal = 3 years
|
duration_legal = 3 years
|
||||||
|
Loading…
Reference in New Issue
Block a user