make -m option optional for taler-auditor and taler-wire-auditor

This commit is contained in:
Christian Grothoff 2017-11-12 14:11:05 +01:00
parent 25d96e88bd
commit f299130c50
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
3 changed files with 83 additions and 13 deletions

View File

@ -17,7 +17,7 @@ taler\-auditor \- Audit exchange.
Print short help on options. Print short help on options.
.B .B
.IP "\-m KEY, \-\-exchange-key=KEY" .IP "\-m KEY, \-\-exchange-key=KEY"
Public master key of the exchange in Crockford base32 encoding, for example as generated by gnunet\-ecc \-p. Public master key of the exchange in Crockford base32 encoding, for example as generated by gnunet\-ecc \-p. If this option is missing, taler\-auditor will use the MASTER_PUBLIC_KEY value from the "exchange" section of the configuration.
.B .B
.IP "\-r, \-\-reset" .IP "\-r, \-\-reset"
Reset the audit, starts everything from the beginning. Useful for testing and required for the first audit to setup auditor's tables. Note that if (just) the exchange key changes, the \-r option should not be used again. Reset the audit, starts everything from the beginning. Useful for testing and required for the first audit to setup auditor's tables. Note that if (just) the exchange key changes, the \-r option should not be used again.

View File

@ -3901,12 +3901,48 @@ run (void *cls,
const char *cfgfile, const char *cfgfile,
const struct GNUNET_CONFIGURATION_Handle *c) const struct GNUNET_CONFIGURATION_Handle *c)
{ {
static const struct TALER_MasterPublicKeyP zeromp;
struct TALER_Amount income_fee_total; struct TALER_Amount income_fee_total;
json_t *report; json_t *report;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Launching auditor\n"); "Launching auditor\n");
cfg = c; cfg = c;
if (0 == memcmp (&zeromp,
&master_pub,
sizeof (struct TALER_MasterPublicKeyP)))
{
/* -m option not given, try configuration */
char *master_public_key_str;
if (GNUNET_OK !=
GNUNET_CONFIGURATION_get_value_string (cfg,
"exchange",
"MASTER_PUBLIC_KEY",
&master_public_key_str))
{
fprintf (stderr,
"Pass option -m or set it in the configuration!\n");
GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
"exchange",
"MASTER_PUBLIC_KEY");
global_ret = 1;
return;
}
if (GNUNET_OK !=
GNUNET_CRYPTO_eddsa_public_key_from_string (master_public_key_str,
strlen (master_public_key_str),
&master_pub.eddsa_pub))
{
fprintf (stderr,
"Invalid master public key given in configuration file.");
GNUNET_free (master_public_key_str);
global_ret = 1;
return;
}
GNUNET_free (master_public_key_str);
} /* end of -m not given */
if (GNUNET_OK != if (GNUNET_OK !=
GNUNET_CONFIGURATION_get_value_string (cfg, GNUNET_CONFIGURATION_get_value_string (cfg,
"taler", "taler",
@ -4163,12 +4199,11 @@ main (int argc,
char *const *argv) char *const *argv)
{ {
const struct GNUNET_GETOPT_CommandLineOption options[] = { const struct GNUNET_GETOPT_CommandLineOption options[] = {
GNUNET_GETOPT_option_mandatory GNUNET_GETOPT_option_base32_auto ('m',
(GNUNET_GETOPT_option_base32_auto ('m', "exchange-key",
"exchange-key", "KEY",
"KEY", "public key of the exchange (Crockford base32 encoded)",
"public key of the exchange (Crockford base32 encoded)", &master_pub),
&master_pub)),
GNUNET_GETOPT_option_flag ('r', GNUNET_GETOPT_option_flag ('r',
"restart", "restart",
"restart audit from the beginning (required on first run)", "restart audit from the beginning (required on first run)",

View File

@ -1091,12 +1091,48 @@ run (void *cls,
const char *cfgfile, const char *cfgfile,
const struct GNUNET_CONFIGURATION_Handle *c) const struct GNUNET_CONFIGURATION_Handle *c)
{ {
static const struct TALER_MasterPublicKeyP zeromp;
enum GNUNET_DB_QueryStatus qs; enum GNUNET_DB_QueryStatus qs;
int ret; int ret;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Launching auditor\n"); "Launching auditor\n");
cfg = c; cfg = c;
if (0 == memcmp (&zeromp,
&master_pub,
sizeof (struct TALER_MasterPublicKeyP)))
{
/* -m option not given, try configuration */
char *master_public_key_str;
if (GNUNET_OK !=
GNUNET_CONFIGURATION_get_value_string (cfg,
"exchange",
"MASTER_PUBLIC_KEY",
&master_public_key_str))
{
fprintf (stderr,
"Pass option -m or set it in the configuration!\n");
GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
"exchange",
"MASTER_PUBLIC_KEY");
global_ret = 1;
return;
}
if (GNUNET_OK !=
GNUNET_CRYPTO_eddsa_public_key_from_string (master_public_key_str,
strlen (master_public_key_str),
&master_pub.eddsa_pub))
{
fprintf (stderr,
"Invalid master public key given in configuration file.");
GNUNET_free (master_public_key_str);
global_ret = 1;
return;
}
GNUNET_free (master_public_key_str);
} /* end of -m not given */
if (GNUNET_OK != if (GNUNET_OK !=
GNUNET_CONFIGURATION_get_value_string (cfg, GNUNET_CONFIGURATION_get_value_string (cfg,
"taler", "taler",
@ -1305,12 +1341,11 @@ main (int argc,
char *const *argv) char *const *argv)
{ {
const struct GNUNET_GETOPT_CommandLineOption options[] = { const struct GNUNET_GETOPT_CommandLineOption options[] = {
GNUNET_GETOPT_option_mandatory GNUNET_GETOPT_option_base32_auto ('m',
(GNUNET_GETOPT_option_base32_auto ('m', "exchange-key",
"exchange-key", "KEY",
"KEY", "public key of the exchange (Crockford base32 encoded)",
"public key of the exchange (Crockford base32 encoded)", &master_pub),
&master_pub)),
GNUNET_GETOPT_option_flag ('r', GNUNET_GETOPT_option_flag ('r',
"restart", "restart",
"restart audit from the beginning (required on first run)", "restart audit from the beginning (required on first run)",