2015-06-09 17:35:33 +02:00
|
|
|
/*
|
|
|
|
This file is part of TALER
|
2016-01-19 14:39:00 +01:00
|
|
|
Copyright (C) 2014, 2015 GNUnet e.V.
|
2015-06-09 17:35:33 +02:00
|
|
|
|
|
|
|
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 mintdb/perf_taler_mintdb_init.h
|
2015-07-01 14:11:54 +02:00
|
|
|
* @brief Heler function for creating dummy inputs for the mint database
|
2015-06-09 17:35:33 +02:00
|
|
|
* @author Nicolas Fournier
|
|
|
|
*/
|
2015-06-09 13:03:37 +02:00
|
|
|
#ifndef __PERF_TALER_MINTDB_INIT_H___
|
|
|
|
#define __PERF_TALER_MINTDB_INIT_H___
|
|
|
|
|
2015-06-12 09:09:42 +02:00
|
|
|
#include "taler_mintdb_plugin.h"
|
2015-06-09 13:03:37 +02:00
|
|
|
|
|
|
|
|
2015-06-09 13:55:05 +02:00
|
|
|
#define CURRENCY "EUR"
|
2015-06-09 13:03:37 +02:00
|
|
|
|
2015-07-15 16:28:12 +02:00
|
|
|
/**
|
|
|
|
* All information about a reserve
|
|
|
|
*/
|
|
|
|
struct PERF_TALER_MINTDB_Reserve
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Information about a rserve available to the Mint
|
|
|
|
*/
|
|
|
|
struct TALER_MINTDB_Reserve reserve;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Private key of a reserve
|
|
|
|
*/
|
|
|
|
struct GNUNET_CRYPTO_EddsaPrivateKey private;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* All informations about a coin
|
|
|
|
*/
|
|
|
|
struct PERF_TALER_MINTDB_Coin
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Blinded coin, known by the mint
|
|
|
|
*/
|
|
|
|
struct TALER_MINTDB_CollectableBlindcoin blind;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Public key of the coin and othes informations
|
|
|
|
*/
|
|
|
|
struct TALER_CoinPublicInfo public_info;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Private key of the coin
|
|
|
|
*/
|
|
|
|
struct GNUNET_CRYPTO_EddsaPrivateKey priv;
|
|
|
|
};
|
2015-06-09 13:03:37 +02:00
|
|
|
|
2015-06-30 09:23:04 +02:00
|
|
|
|
2015-06-12 15:28:49 +02:00
|
|
|
/**
|
2015-06-30 09:23:04 +02:00
|
|
|
* Generate a dummy DenominationKeyInformation for testing purposes
|
|
|
|
* @return a dummy denomination key
|
2015-06-12 15:28:49 +02:00
|
|
|
*/
|
2015-06-30 09:23:04 +02:00
|
|
|
struct TALER_MINTDB_DenominationKeyIssueInformation *
|
|
|
|
PERF_TALER_MINTDB_denomination_init (void);
|
|
|
|
|
2015-06-26 15:32:20 +02:00
|
|
|
|
|
|
|
/**
|
2015-06-30 09:23:04 +02:00
|
|
|
* Copies the given denomination
|
|
|
|
* @param reserve the deposit copy
|
|
|
|
* @return a copy of @a deposit; NULL if error
|
2015-06-26 15:32:20 +02:00
|
|
|
*/
|
2015-06-30 09:23:04 +02:00
|
|
|
struct TALER_MINTDB_DenominationKeyIssueInformation *
|
|
|
|
PERF_TALER_MINTDB_denomination_copy (
|
|
|
|
const struct TALER_MINTDB_DenominationKeyIssueInformation *dki);
|
2015-06-10 14:59:14 +02:00
|
|
|
|
|
|
|
|
2015-06-12 15:28:49 +02:00
|
|
|
/**
|
2015-06-30 09:23:04 +02:00
|
|
|
* Free memory of a DenominationKeyIssueInformation
|
|
|
|
* @param dki pointer to the struct to free
|
2015-06-12 15:28:49 +02:00
|
|
|
*/
|
2015-06-10 14:59:14 +02:00
|
|
|
int
|
2015-06-30 09:23:04 +02:00
|
|
|
PERF_TALER_MINTDB_denomination_free (
|
|
|
|
struct TALER_MINTDB_DenominationKeyIssueInformation *dki);
|
2015-06-10 14:59:14 +02:00
|
|
|
|
|
|
|
|
2015-06-12 15:28:49 +02:00
|
|
|
/**
|
2015-06-30 09:23:04 +02:00
|
|
|
* Generate a dummy reserve for testing
|
|
|
|
* @return a reserve with 1000 EUR in it
|
2015-06-12 15:28:49 +02:00
|
|
|
*/
|
2015-07-15 16:28:12 +02:00
|
|
|
struct PERF_TALER_MINTDB_Reserve *
|
2015-06-12 12:09:14 +02:00
|
|
|
PERF_TALER_MINTDB_reserve_init (void);
|
2015-06-10 14:59:14 +02:00
|
|
|
|
|
|
|
|
2015-06-12 15:28:49 +02:00
|
|
|
/**
|
2015-06-30 09:23:04 +02:00
|
|
|
* Copies the given reserve
|
|
|
|
* @param reserve the reserve to copy
|
|
|
|
* @return a copy of @a reserve; NULL if error
|
2015-06-26 15:32:20 +02:00
|
|
|
*/
|
2015-07-15 16:28:12 +02:00
|
|
|
struct PERF_TALER_MINTDB_Reserve *
|
|
|
|
PERF_TALER_MINTDB_reserve_copy (const struct PERF_TALER_MINTDB_Reserve *reserve);
|
2015-06-26 15:32:20 +02:00
|
|
|
|
2015-06-09 13:03:37 +02:00
|
|
|
|
2015-06-12 15:28:49 +02:00
|
|
|
/**
|
2015-06-30 09:23:04 +02:00
|
|
|
* Free memory of a reserve
|
|
|
|
* @param reserve pointer to the structure to be freed
|
2015-06-12 15:28:49 +02:00
|
|
|
*/
|
|
|
|
int
|
2015-07-15 16:28:12 +02:00
|
|
|
PERF_TALER_MINTDB_reserve_free (struct PERF_TALER_MINTDB_Reserve *reserve);
|
2015-06-12 15:28:49 +02:00
|
|
|
|
|
|
|
|
|
|
|
/**
|
2015-06-30 09:23:04 +02:00
|
|
|
* Generate a dummy deposit for testing purposes
|
|
|
|
* @param dki the denomination key used to sign the key
|
2015-06-12 15:28:49 +02:00
|
|
|
*/
|
2015-06-09 13:03:37 +02:00
|
|
|
struct TALER_MINTDB_Deposit *
|
2015-06-30 09:23:04 +02:00
|
|
|
PERF_TALER_MINTDB_deposit_init (
|
2015-07-15 18:06:50 +02:00
|
|
|
const struct PERF_TALER_MINTDB_Coin *coin);
|
2015-06-26 15:32:20 +02:00
|
|
|
|
|
|
|
|
|
|
|
/**
|
2015-06-30 09:23:04 +02:00
|
|
|
* Copies the given deposit
|
|
|
|
* @param reserve the deposit copy
|
|
|
|
* @return a copy of @a deposit; NULL if error
|
2015-06-26 15:32:20 +02:00
|
|
|
*/
|
|
|
|
struct TALER_MINTDB_Deposit *
|
|
|
|
PERF_TALER_MINTDB_deposit_copy (const struct TALER_MINTDB_Deposit *deposit);
|
2015-06-09 13:03:37 +02:00
|
|
|
|
|
|
|
|
2015-06-12 15:28:49 +02:00
|
|
|
/**
|
|
|
|
* Free memory of a deposit
|
2015-06-30 09:23:04 +02:00
|
|
|
* @param deposit pointer to the structure to free
|
2015-06-12 15:28:49 +02:00
|
|
|
*/
|
2015-06-09 13:03:37 +02:00
|
|
|
int
|
2015-06-12 12:09:14 +02:00
|
|
|
PERF_TALER_MINTDB_deposit_free (struct TALER_MINTDB_Deposit *deposit);
|
2015-06-09 13:03:37 +02:00
|
|
|
|
|
|
|
|
2015-06-12 15:28:49 +02:00
|
|
|
/**
|
2015-07-15 17:46:49 +02:00
|
|
|
* Generate a coin for testing purpuses
|
2015-06-30 09:23:04 +02:00
|
|
|
* @param dki denomination key used to sign the coin
|
|
|
|
* @param reserve reserve providing the money for the coin
|
|
|
|
* @return a randomly generated CollectableBlindcoin
|
2015-06-12 15:28:49 +02:00
|
|
|
*/
|
2015-07-15 17:46:49 +02:00
|
|
|
struct PERF_TALER_MINTDB_Coin *
|
|
|
|
PERF_TALER_MINTDB_coin_init (
|
2015-06-30 09:23:04 +02:00
|
|
|
const struct TALER_MINTDB_DenominationKeyIssueInformation *dki,
|
2015-07-15 16:28:12 +02:00
|
|
|
const struct PERF_TALER_MINTDB_Reserve *reserve);
|
2015-06-12 11:14:32 +02:00
|
|
|
|
|
|
|
|
2015-06-26 15:32:20 +02:00
|
|
|
/**
|
2015-06-30 09:23:04 +02:00
|
|
|
* Copies the given coin
|
|
|
|
* @param coin the coin to copy
|
|
|
|
* @return a copy of coin; NULL if error
|
2015-06-26 15:32:20 +02:00
|
|
|
*/
|
2015-07-15 17:46:49 +02:00
|
|
|
struct PERF_TALER_MINTDB_Coin *
|
|
|
|
PERF_TALER_MINTDB_coin_copy (
|
|
|
|
const struct PERF_TALER_MINTDB_Coin *coin);
|
2015-06-30 09:23:04 +02:00
|
|
|
|
2015-06-26 15:32:20 +02:00
|
|
|
|
2015-06-12 15:28:49 +02:00
|
|
|
/**
|
2015-06-30 09:23:04 +02:00
|
|
|
* Liberate memory of @a coin
|
|
|
|
* @param coin pointer to the structure to free
|
2015-06-12 15:28:49 +02:00
|
|
|
*/
|
2015-06-09 13:55:05 +02:00
|
|
|
int
|
2015-07-15 17:46:49 +02:00
|
|
|
PERF_TALER_MINTDB_coin_free (
|
|
|
|
struct PERF_TALER_MINTDB_Coin *coin);
|
2015-06-10 14:59:14 +02:00
|
|
|
|
2015-06-09 13:03:37 +02:00
|
|
|
|
2015-08-17 10:56:56 +02:00
|
|
|
/**
|
|
|
|
* @return a randomly generated refresh session
|
|
|
|
*/
|
|
|
|
struct TALER_MINTDB_RefreshSession *
|
|
|
|
PERF_TALER_MINTDB_refresh_session_init (void);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return #GNUNET_OK if the copy was successful, #GNUNET_SYSERR if it wasn't
|
|
|
|
*/
|
|
|
|
int
|
|
|
|
PERF_TALER_MINTDB_refresh_session_copy (struct TALER_MINTDB_RefreshSession *session,
|
|
|
|
struct TALER_MINTDB_RefreshSession *copy);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Frees memory of a refresh_session
|
|
|
|
*/
|
|
|
|
int
|
|
|
|
PERF_TALER_MINTDB_refresh_session_free (
|
|
|
|
struct TALER_MINTDB_RefreshSession *refresh_session);
|
|
|
|
|
|
|
|
|
2015-07-09 10:46:33 +02:00
|
|
|
/**
|
|
|
|
* Create a melt operation
|
|
|
|
*
|
|
|
|
* @param session the refresh session
|
|
|
|
* @param dki the denomination the melted coin uses
|
|
|
|
* @return a pointer to a #TALER_MINTDB_RefreshMelt
|
|
|
|
*/
|
|
|
|
struct TALER_MINTDB_RefreshMelt *
|
|
|
|
PERF_TALER_MINTDB_refresh_melt_init (struct GNUNET_HashCode *session,
|
2015-07-20 10:24:09 +02:00
|
|
|
struct PERF_TALER_MINTDB_Coin *coin);
|
2015-07-09 10:46:33 +02:00
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Copies the internals of a #TALER_MINTDB_RefreshMelt
|
|
|
|
*
|
|
|
|
* @param melt the refresh melt to copy
|
|
|
|
* @return an copy of @ melt
|
|
|
|
*/
|
|
|
|
struct TALER_MINTDB_RefreshMelt *
|
|
|
|
PERF_TALER_MINTDB_refresh_melt_copy (const struct TALER_MINTDB_RefreshMelt *melt);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Free the internal memory of a #TALER_MINTDB_RefreshMelt
|
|
|
|
*
|
|
|
|
* @param melt the #TALER_MINTDB_RefreshMelt to free
|
|
|
|
* @return #GNUNET_OK if the operation was successful, #GNUNET_SYSERROR
|
|
|
|
*/
|
|
|
|
int
|
2015-07-09 11:30:56 +02:00
|
|
|
PERF_TALER_MINTDB_refresh_melt_free (struct TALER_MINTDB_RefreshMelt *melt);
|
2015-07-09 10:46:33 +02:00
|
|
|
|
|
|
|
|
2015-06-30 09:23:04 +02:00
|
|
|
/**
|
2015-08-17 10:56:56 +02:00
|
|
|
* Create a #TALER_MINTDB_RefreshCommitCoin
|
2015-06-30 09:23:04 +02:00
|
|
|
*/
|
2015-08-17 10:56:56 +02:00
|
|
|
struct TALER_MINTDB_RefreshCommitCoin *
|
|
|
|
PERF_TALER_MINTDB_refresh_commit_coin_init (void);
|
2015-06-30 09:23:04 +02:00
|
|
|
|
|
|
|
|
2015-07-09 10:46:33 +02:00
|
|
|
/**
|
2015-08-17 10:56:56 +02:00
|
|
|
* Copies a #TALER_MINTDB_RefreshCommitCoin
|
|
|
|
*
|
|
|
|
* @param commit_coin the commit to copy
|
|
|
|
* @return a copy of @a commit_coin
|
2015-07-09 10:46:33 +02:00
|
|
|
*/
|
2015-08-17 10:56:56 +02:00
|
|
|
struct TALER_MINTDB_RefreshCommitCoin *
|
|
|
|
PERF_TALER_MINTDB_refresh_commit_coin_copy (struct TALER_MINTDB_RefreshCommitCoin *commit_coin);
|
2015-07-09 10:46:33 +02:00
|
|
|
|
|
|
|
|
2015-06-30 09:23:04 +02:00
|
|
|
/**
|
2015-08-17 10:56:56 +02:00
|
|
|
* Free a #TALER_MINTDB_RefreshCommitCoin
|
|
|
|
*
|
|
|
|
* @param commit_coin the coin to free
|
2015-06-30 09:23:04 +02:00
|
|
|
*/
|
2015-08-17 10:56:56 +02:00
|
|
|
void
|
|
|
|
PERF_TALER_MINTDB_refresh_commit_coin_free (struct TALER_MINTDB_RefreshCommitCoin *commit_coin);
|
2015-06-30 09:23:04 +02:00
|
|
|
|
2015-06-09 13:03:37 +02:00
|
|
|
#endif
|