aboutsummaryrefslogtreecommitdiff
path: root/src/exchange-tools/key-helper.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/exchange-tools/key-helper.c')
-rw-r--r--src/exchange-tools/key-helper.c130
1 files changed, 0 insertions, 130 deletions
diff --git a/src/exchange-tools/key-helper.c b/src/exchange-tools/key-helper.c
deleted file mode 100644
index 9fd7d50a6..000000000
--- a/src/exchange-tools/key-helper.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- This file is part of TALER
- Copyright (C) 2015-2020 Taler Systems SA
-
- TALER is free software; you can redistribute it and/or modify it under the
- terms of the GNU General Public License as published by the Free Software
- Foundation; either version 3, or (at your option) any later version.
-
- TALER is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along with
- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
-*/
-/**
- * @file key-helper.c
- * @brief shared logic between tools that deal with the master private key
- * @author Christian Grothoff
- */
-
-/**
- * Extract the @a master_priv from the @a cfg or @a masterkeyfile and
- * verify that it matches the master public key given in @a cfg.
- *
- * @param cfg configuration to use
- * @param masterkeyfile master private key filename, can be NULL to use from @a cfg
- * @param[out] master_priv where to store the master private key on success
- * @return #GNUNET_OK on success, #GNUNET_SYSERR on failures
- */
-static int
-get_and_check_master_key (const struct GNUNET_CONFIGURATION_Handle *cfg,
- const char *masterkeyfile,
- struct TALER_MasterPrivateKeyP *master_priv)
-{
- struct GNUNET_CRYPTO_EddsaPublicKey mpub;
- struct GNUNET_CRYPTO_EddsaPublicKey mpub_cfg;
- char *fn;
-
- if (NULL != masterkeyfile)
- {
- fn = GNUNET_strdup (masterkeyfile);
- }
- else
- {
- if (GNUNET_OK !=
- GNUNET_CONFIGURATION_get_value_filename (cfg,
- "exchange",
- "MASTER_PRIV_FILE",
- &fn))
- {
- fprintf (stderr,
- "Master private key file given neither in configuration nor on command-line\n");
- return GNUNET_SYSERR;
- }
- }
- if (GNUNET_YES !=
- GNUNET_DISK_file_test (fn))
- GNUNET_log (GNUNET_ERROR_TYPE_INFO,
- "Exchange master private key `%s' does not exist yet, creating it!\n",
- fn);
- {
- int ret;
-
- ret = GNUNET_CRYPTO_eddsa_key_from_file (fn,
- GNUNET_YES,
- &master_priv->eddsa_priv);
- if (GNUNET_SYSERR == ret)
- {
- fprintf (stderr,
- "Failed to initialize master key from file `%s': %s\n",
- fn,
- "could not create file");
- GNUNET_free (fn);
- return GNUNET_SYSERR;
- }
- GNUNET_CRYPTO_eddsa_key_get_public (&master_priv->eddsa_priv,
- &mpub);
- }
-
- /* Check our key matches that in the configuration */
- {
- char *masters;
-
- if (GNUNET_OK !=
- GNUNET_CONFIGURATION_get_value_string (cfg,
- "exchange",
- "MASTER_PUBLIC_KEY",
- &masters))
- {
- /* Help user by telling them precisely what to fix */
- masters = GNUNET_STRINGS_data_to_string_alloc (&mpub,
- sizeof (mpub));
- fprintf (stderr,
- "You must set MASTER_PUBLIC_KEY to `%s' in the [exchange] section of the configuration before proceeding.\n",
- masters);
- GNUNET_free (masters);
- GNUNET_free (fn);
- return GNUNET_SYSERR;
- }
- if (GNUNET_OK !=
- GNUNET_STRINGS_string_to_data (masters,
- strlen (masters),
- &mpub_cfg,
- sizeof (mpub_cfg)))
- {
- fprintf (stderr,
- "MASTER_PUBLIC_KEY value `%s' specified in section [exchange] of the configuration is not a valid public key\n",
- masters);
- GNUNET_free (masters);
- GNUNET_free (fn);
- return GNUNET_SYSERR;
- }
- if (0 != GNUNET_memcmp (&mpub,
- &mpub_cfg))
- {
- fprintf (stderr,
- "MASTER_PUBLIC_KEY value `%s' specified in section [exchange] of the configuration does not match our master private key. You can use `gnunet-ecc -p \"%s\"' to determine the correct value.\n",
- masters,
- fn);
- GNUNET_free (masters);
- GNUNET_free (fn);
- return GNUNET_SYSERR;
- }
- GNUNET_free (masters);
- }
- GNUNET_free (fn);
-
- return GNUNET_OK;
-}