add -o option to taler-mint-keyup

This commit is contained in:
Christian Grothoff 2015-09-16 18:48:05 +02:00
parent fa27e3f204
commit cee6c54cdf
2 changed files with 50 additions and 0 deletions

View File

@ -22,6 +22,9 @@ Print short help on options.
.IP "\-m FILE, \-\-master-key=FILE" .IP "\-m FILE, \-\-master-key=FILE"
Location of the private EdDSA offline master key of the mint. Location of the private EdDSA offline master key of the mint.
.B .B
.IP "\-o FILE, \-\-ouptut=FILE"
Where to write a denomination key signing request file to be given to the auditor.
.B
.IP "\-t TIMESTAMP, \-\-time=TIMESTAMP" .IP "\-t TIMESTAMP, \-\-time=TIMESTAMP"
Operate as if the current time was TIMESTAMP. Operate as if the current time was TIMESTAMP.
.B .B

View File

@ -157,6 +157,17 @@ struct CoinTypeParams
*/ */
static char *masterkeyfile; static char *masterkeyfile;
/**
* Filename where to write denomination key signing
* requests for the auditor (optional, can be NULL).
*/
static char *auditorrequestfile;
/**
* Handle for writing the output for the auditor.
*/
static FILE *auditor_output_file;
/** /**
* Director of the mint, containing the keys. * Director of the mint, containing the keys.
*/ */
@ -807,6 +818,20 @@ mint_keys_update_cointype (void *cls,
GNUNET_CRYPTO_rsa_private_key_free (denomkey_issue.denom_priv.rsa_private_key); GNUNET_CRYPTO_rsa_private_key_free (denomkey_issue.denom_priv.rsa_private_key);
return; return;
} }
if ( (NULL != auditor_output_file) &&
(sizeof (denomkey_issue.issue.properties) !=
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;
return;
}
GNUNET_CRYPTO_rsa_private_key_free (denomkey_issue.denom_priv.rsa_private_key); GNUNET_CRYPTO_rsa_private_key_free (denomkey_issue.denom_priv.rsa_private_key);
p.anchor = GNUNET_TIME_absolute_add (p.anchor, p.anchor = GNUNET_TIME_absolute_add (p.anchor,
p.duration_spend); p.duration_spend);
@ -859,6 +884,9 @@ main (int argc,
{'m', "master-key", "FILE", {'m', "master-key", "FILE",
"master key file (private key)", 1, "master key file (private key)", 1,
&GNUNET_GETOPT_set_filename, &masterkeyfile}, &GNUNET_GETOPT_set_filename, &masterkeyfile},
{'o', "output", "FILE",
"auditor denomination key signing request file to create", 1,
&GNUNET_GETOPT_set_filename, &auditorrequestfile},
{'t', "time", "TIMESTAMP", {'t', "time", "TIMESTAMP",
"pretend it is a different time for the update", 0, "pretend it is a different time for the update", 0,
&GNUNET_GETOPT_set_string, &pretend_time_str}, &GNUNET_GETOPT_set_string, &pretend_time_str},
@ -927,6 +955,20 @@ main (int argc,
GNUNET_CRYPTO_eddsa_key_get_public (&master_priv.eddsa_priv, GNUNET_CRYPTO_eddsa_key_get_public (&master_priv.eddsa_priv,
&master_public_key.eddsa_pub); &master_public_key.eddsa_pub);
if (NULL != auditorrequestfile)
{
auditor_output_file = FOPEN (auditorrequestfile,
"w");
if (NULL == auditor_output_file)
{
fprintf (stderr,
"Failed to open `%s' for writing: %s\n",
auditorrequestfile,
STRERROR (errno));
return 1;
}
}
/* check if key from file matches the one from the configuration */ /* check if key from file matches the one from the configuration */
{ {
struct GNUNET_CRYPTO_EddsaPublicKey master_public_key_from_cfg; struct GNUNET_CRYPTO_EddsaPublicKey master_public_key_from_cfg;
@ -986,6 +1028,11 @@ main (int argc,
if (GNUNET_OK != mint_keys_update_denomkeys ()) if (GNUNET_OK != mint_keys_update_denomkeys ())
return 1; return 1;
if (NULL != auditor_output_file)
{
FCLOSE (auditor_output_file);
auditor_output_file = NULL;
}
return 0; return 0;
} }