diff options
Diffstat (limited to 'src/mint')
| -rw-r--r-- | src/mint/Makefile.am | 2 | ||||
| -rw-r--r-- | src/mint/key_io.c (renamed from src/mint/mint_common.c) | 18 | ||||
| -rw-r--r-- | src/mint/key_io.h | 137 | ||||
| -rw-r--r-- | src/mint/mint.h | 102 | ||||
| -rw-r--r-- | src/mint/taler-mint-httpd_keys.h | 2 | ||||
| -rw-r--r-- | src/mint/taler-mint-keycheck.c | 1 | ||||
| -rw-r--r-- | src/mint/taler-mint-keyup.c | 1 | 
7 files changed, 156 insertions, 107 deletions
| diff --git a/src/mint/Makefile.am b/src/mint/Makefile.am index c0fd6949..17b82dc5 100644 --- a/src/mint/Makefile.am +++ b/src/mint/Makefile.am @@ -4,7 +4,7 @@ lib_LTLIBRARIES = \    libtalermint_common.la  libtalermint_common_la_SOURCES = \ -  mint_common.c \ +  key_io.c key_io.h \    mint_db.c  libtalermint_common_la_LIBADD = \ diff --git a/src/mint/mint_common.c b/src/mint/key_io.c index 41b9d6ed..f401a126 100644 --- a/src/mint/mint_common.c +++ b/src/mint/key_io.c @@ -15,15 +15,17 @@  */  /** - * @file mint_common.c - * @brief Common functionality for the mint + * @file key_io.c + * @brief I/O operations for the Mint's private keys   * @author Florian Dold   * @author Benedikt Mueller   * @author Sree Harsha Totakura + * @author Christian Grothoff   */ -  #include "platform.h"  #include "mint.h" +#include "key_io.h" +  struct SignkeysIterateContext  { @@ -201,8 +203,8 @@ static int  denomkeys_iterate_topdir_iter (void *cls,                                 const char *filename)  { -    struct DenomkeysIterateContext *dic = cls; +    dic->alias = GNUNET_STRINGS_get_short_name (filename);    // FIXME: differentiate between error case and normal iteration abortion @@ -219,7 +221,9 @@ TALER_MINT_denomkeys_iterate (const char *mint_base_dir,    char *dir;    size_t len;    struct DenomkeysIterateContext dic; -  len = GNUNET_asprintf (&dir, ("%s" DIR_SEPARATOR_STR DIR_DENOMKEYS), + +  len = GNUNET_asprintf (&dir, +                         "%s" DIR_SEPARATOR_STR DIR_DENOMKEYS,                           mint_base_dir);    GNUNET_assert (len > 0); @@ -227,7 +231,9 @@ TALER_MINT_denomkeys_iterate (const char *mint_base_dir,    dic.it_cls = cls;    // scan over alias dirs -  return GNUNET_DISK_directory_scan (dir, &denomkeys_iterate_topdir_iter, &dic); +  return GNUNET_DISK_directory_scan (dir, +                                     &denomkeys_iterate_topdir_iter, +                                     &dic);  } diff --git a/src/mint/key_io.h b/src/mint/key_io.h new file mode 100644 index 00000000..44665e37 --- /dev/null +++ b/src/mint/key_io.h @@ -0,0 +1,137 @@ +/* +  This file is part of TALER +  (C) 2014 Christian Grothoff (and other contributing authors) + +  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, If not, see <http://www.gnu.org/licenses/> +*/ +/** + * @file key_io.h + * @brief IO operations for the mint's private keys + * @author Florian Dold + * @author Benedikt Mueller + * @author Christian Grothoff + * + * TODO: + * - document better + */ +#ifndef KEY_IO_H +#define KEY_IO_H + +#include <gnunet/gnunet_util_lib.h> +#include <gnunet/gnunet_common.h> +#include "taler_util.h" +#include "taler_signatures.h" + +#define DIR_SIGNKEYS "signkeys" +#define DIR_DENOMKEYS "denomkeys" + +/** + * On disk format used for a mint signing key. + * Includes the private key followed by the signed + * issue message. + */ +struct TALER_MINT_SignKeyIssuePriv +{ +  struct GNUNET_CRYPTO_EddsaPrivateKey signkey_priv; +  struct TALER_MINT_SignKeyIssue issue; +}; + + + +struct TALER_MINT_DenomKeyIssuePriv +{ +  /** +   * The private key of the denomination.  Will be NULL if the private key is +   * not available. +   */ +  struct GNUNET_CRYPTO_rsa_PrivateKey *denom_priv; + +  struct TALER_MINT_DenomKeyIssue issue; +}; + + + + +/** + * Iterator for sign keys. + * + * @param cls closure + * @param ski the sign key issue + * @return #GNUNET_OK to continue to iterate, + *  #GNUNET_NO to stop iteration with no error, + *  #GNUNET_SYSERR to abort iteration with error! + */ +typedef int +(*TALER_MINT_SignkeyIterator)(void *cls, +                              const struct TALER_MINT_SignKeyIssuePriv *ski); + +/** + * Iterator for denomination keys. + * + * @param cls closure + * @param dki the denomination key issue + * @param alias coin alias + * @return #GNUNET_OK to continue to iterate, + *  #GNUNET_NO to stop iteration with no error, + *  #GNUNET_SYSERR to abort iteration with error! + */ +typedef int +(*TALER_MINT_DenomkeyIterator)(void *cls, +                               const char *alias, +                               const struct TALER_MINT_DenomKeyIssuePriv *dki); + + + +/** + * FIXME + */ +int +TALER_MINT_signkeys_iterate (const char *mint_base_dir, +                             TALER_MINT_SignkeyIterator it, void *cls); + + +/** + * FIXME + */ +int +TALER_MINT_denomkeys_iterate (const char *mint_base_dir, +                              TALER_MINT_DenomkeyIterator it, void *cls); + + +/** + * Exports a denomination key to the given file + * + * @param filename the file where to write the denomination key + * @param dki the denomination key + * @return #GNUNET_OK upon success; #GNUNET_SYSERR upon failure. + */ +int +TALER_MINT_write_denom_key (const char *filename, +                            const struct TALER_MINT_DenomKeyIssuePriv *dki); + + +/** + * Import a denomination key from the given file + * + * @param filename the file to import the key from + * @param dki pointer to return the imported denomination key + * @return #GNUNET_OK upon success; #GNUNET_SYSERR upon failure + */ +int +TALER_MINT_read_denom_key (const char *filename, +                           struct TALER_MINT_DenomKeyIssuePriv *dki); + + + + + +#endif diff --git a/src/mint/mint.h b/src/mint/mint.h index 0a0e00d0..1c5e9802 100644 --- a/src/mint/mint.h +++ b/src/mint/mint.h @@ -20,20 +20,18 @@   * @author Benedikt Mueller   *   * TODO: - * - revisit and document `struct Deposit` members. + * - move DB functions to mint_db.h   */  #ifndef _MINT_H  #define _MINT_H  #include <gnunet/gnunet_util_lib.h>  #include <gnunet/gnunet_common.h> -#include <libpq-fe.h>  #include <jansson.h> +#include <libpq-fe.h>  #include "taler_util.h"  #include "taler_signatures.h" -#define DIR_SIGNKEYS "signkeys" -#define DIR_DENOMKEYS "denomkeys"  /**   * For now, we just do EUR.  Should become configurable @@ -41,31 +39,6 @@   */  #define MINT_CURRENCY "EUR" -/** - * On disk format used for a mint signing key. - * Includes the private key followed by the signed - * issue message. - */ -struct TALER_MINT_SignKeyIssuePriv -{ -  struct GNUNET_CRYPTO_EddsaPrivateKey signkey_priv; -  struct TALER_MINT_SignKeyIssue issue; -}; - - - -struct TALER_MINT_DenomKeyIssuePriv -{ -  /** -   * The private key of the denomination.  Will be NULL if the private key is -   * not available. -   */ -  struct GNUNET_CRYPTO_rsa_PrivateKey *denom_priv; - -  struct TALER_MINT_DenomKeyIssue issue; -}; - -  /**   * Public information about a coin (including the public key @@ -357,77 +330,6 @@ struct Reserve -/** - * Iterator for sign keys. - * - * @param cls closure - * @param ski the sign key issue - * @return #GNUNET_OK to continue to iterate, - *  #GNUNET_NO to stop iteration with no error, - *  #GNUNET_SYSERR to abort iteration with error! - */ -typedef int -(*TALER_MINT_SignkeyIterator)(void *cls, -                              const struct TALER_MINT_SignKeyIssuePriv *ski); - -/** - * Iterator for denomination keys. - * - * @param cls closure - * @param dki the denomination key issue - * @param alias coin alias - * @return #GNUNET_OK to continue to iterate, - *  #GNUNET_NO to stop iteration with no error, - *  #GNUNET_SYSERR to abort iteration with error! - */ -typedef int -(*TALER_MINT_DenomkeyIterator)(void *cls, -                               const char *alias, -                               const struct TALER_MINT_DenomKeyIssuePriv *dki); - - - -/** - * FIXME - */ -int -TALER_MINT_signkeys_iterate (const char *mint_base_dir, -                             TALER_MINT_SignkeyIterator it, void *cls); - - -/** - * FIXME - */ -int -TALER_MINT_denomkeys_iterate (const char *mint_base_dir, -                              TALER_MINT_DenomkeyIterator it, void *cls); - - -/** - * Exports a denomination key to the given file - * - * @param filename the file where to write the denomination key - * @param dki the denomination key - * @return #GNUNET_OK upon success; #GNUNET_SYSERR upon failure. - */ -int -TALER_MINT_write_denom_key (const char *filename, -                            const struct TALER_MINT_DenomKeyIssuePriv *dki); - - -/** - * Import a denomination key from the given file - * - * @param filename the file to import the key from - * @param dki pointer to return the imported denomination key - * @return #GNUNET_OK upon success; #GNUNET_SYSERR upon failure - */ -int -TALER_MINT_read_denom_key (const char *filename, -                           struct TALER_MINT_DenomKeyIssuePriv *dki); - - -  int  TALER_TALER_DB_extract_amount (PGresult *result,                                 unsigned int row, diff --git a/src/mint/taler-mint-httpd_keys.h b/src/mint/taler-mint-httpd_keys.h index 4182c25e..eeeb21ef 100644 --- a/src/mint/taler-mint-httpd_keys.h +++ b/src/mint/taler-mint-httpd_keys.h @@ -28,6 +28,8 @@  #include <jansson.h>  #include "taler-mint-httpd.h"  #include "mint.h" +#include "key_io.h" +  /**   * Snapshot of the (coin and signing) diff --git a/src/mint/taler-mint-keycheck.c b/src/mint/taler-mint-keycheck.c index 09f59ab2..c2deec0c 100644 --- a/src/mint/taler-mint-keycheck.c +++ b/src/mint/taler-mint-keycheck.c @@ -25,6 +25,7 @@  #include <gnunet/gnunet_util_lib.h>  #include "mint.h"  #include "taler_signatures.h" +#include "key_io.h"  static char *mintdir; diff --git a/src/mint/taler-mint-keyup.c b/src/mint/taler-mint-keyup.c index f8670eb9..03c66216 100644 --- a/src/mint/taler-mint-keyup.c +++ b/src/mint/taler-mint-keyup.c @@ -27,6 +27,7 @@  #include "taler_util.h"  #include "taler_signatures.h"  #include "mint.h" +#include "key_io.h"  /**   * FIXME: allow user to specify (within reason). | 
