mintdb postgres: test get_refresh_commit_coins()

This commit is contained in:
Sree Harsha Totakura 2015-08-24 11:54:30 +02:00
parent 0c16a9faea
commit ae73f166e5

View File

@ -167,6 +167,58 @@ static struct TALER_Amount fee_deposit;
static struct TALER_Amount fee_refresh; static struct TALER_Amount fee_refresh;
static struct TALER_Amount amount_with_fee; static struct TALER_Amount amount_with_fee;
static void
free_refresh_commit_coins_array(struct TALER_MINTDB_RefreshCommitCoin
*commit_coins,
unsigned int size)
{
unsigned int cnt;
struct TALER_MINTDB_RefreshCommitCoin *ccoin;
struct TALER_RefreshLinkEncrypted *rlink;
for (cnt = 0; cnt < size; cnt++)
{
ccoin = &commit_coins[cnt];
GNUNET_free_non_null (ccoin->coin_ev);
rlink = (struct TALER_RefreshLinkEncrypted *) ccoin->refresh_link;
GNUNET_free_non_null (rlink);
}
GNUNET_free (commit_coins);
}
static int
cmp_commit_coin_arrays (struct TALER_MINTDB_RefreshCommitCoin *a,
struct TALER_MINTDB_RefreshCommitCoin *b,
unsigned int size)
{
unsigned int cnt;
struct TALER_MINTDB_RefreshCommitCoin *a_ccoin;
struct TALER_RefreshLinkEncrypted *a_rlink;
struct TALER_MINTDB_RefreshCommitCoin *b_ccoin;
struct TALER_RefreshLinkEncrypted *b_rlink;
for (cnt = 0; cnt < size; cnt++)
{
a_ccoin = &a[cnt];
b_ccoin = &b[cnt];
FAILIF (a_ccoin->coin_ev_size != b_ccoin->coin_ev_size);
FAILIF (0 != memcmp (a_ccoin->coin_ev,
a_ccoin->coin_ev,
a_ccoin->coin_ev_size));
a_rlink = a_ccoin->refresh_link;
b_rlink = b_ccoin->refresh_link;
FAILIF (a_rlink->blinding_key_enc_size != b_rlink->blinding_key_enc_size);
FAILIF (0 != memcmp (a_rlink->blinding_key_enc,
b_rlink->blinding_key_enc,
a_rlink->blinding_key_enc_size));
FAILIF (0 != memcmp (a_rlink->coin_priv_enc,
b_rlink->coin_priv_enc,
sizeof (a_rlink->coin_priv_enc)));
}
return GNUNET_OK;
drop:
return GNUNET_SYSERR;
}
/** /**
* Function to test melting of coins as part of a refresh session * Function to test melting of coins as part of a refresh session
@ -190,6 +242,10 @@ test_melting (struct TALER_MINTDB_Session *session)
struct TALER_MINTDB_RefreshMelt *melts; struct TALER_MINTDB_RefreshMelt *melts;
struct TALER_DenominationPublicKey *new_denom_pubs; struct TALER_DenominationPublicKey *new_denom_pubs;
struct TALER_DenominationPublicKey *ret_denom_pubs; struct TALER_DenominationPublicKey *ret_denom_pubs;
struct TALER_MINTDB_RefreshCommitCoin *commit_coins;
struct TALER_MINTDB_RefreshCommitCoin *ret_commit_coins;
size_t size;
uint16_t cnc_index;
unsigned int cnt; unsigned int cnt;
int ret; int ret;
@ -199,6 +255,8 @@ test_melting (struct TALER_MINTDB_Session *session)
melts = NULL; melts = NULL;
new_dkp = NULL; new_dkp = NULL;
new_denom_pubs = NULL; new_denom_pubs = NULL;
commit_coins = NULL;
ret_commit_coins = NULL;
/* create and test a refresh session */ /* create and test a refresh session */
refresh_session.num_oldcoins = MELT_OLD_COINS; refresh_session.num_oldcoins = MELT_OLD_COINS;
refresh_session.num_newcoins = 1; refresh_session.num_newcoins = 1;
@ -300,12 +358,6 @@ test_melting (struct TALER_MINTDB_Session *session)
(ret_denom_pubs[cnt].rsa_public_key, (ret_denom_pubs[cnt].rsa_public_key,
new_denom_pubs[cnt].rsa_public_key)); new_denom_pubs[cnt].rsa_public_key));
} }
struct TALER_MINTDB_RefreshCommitCoin *commit_coins;
struct TALER_MINTDB_RefreshCommitCoin *ccoin;
struct TALER_RefreshLinkEncrypted *rlink;
size_t size;
uint16_t cnc_index;
#define COIN_ENC_MAX_SIZE 512 #define COIN_ENC_MAX_SIZE 512
commit_coins = GNUNET_new_array (MELT_NEW_COINS, commit_coins = GNUNET_new_array (MELT_NEW_COINS,
struct TALER_MINTDB_RefreshCommitCoin); struct TALER_MINTDB_RefreshCommitCoin);
@ -313,6 +365,8 @@ test_melting (struct TALER_MINTDB_Session *session)
(GNUNET_CRYPTO_QUALITY_WEAK, GNUNET_MIN (MELT_NEW_COINS, UINT16_MAX)); (GNUNET_CRYPTO_QUALITY_WEAK, GNUNET_MIN (MELT_NEW_COINS, UINT16_MAX));
for (cnt=0; cnt < MELT_NEW_COINS; cnt++) for (cnt=0; cnt < MELT_NEW_COINS; cnt++)
{ {
struct TALER_MINTDB_RefreshCommitCoin *ccoin;
struct TALER_RefreshLinkEncrypted *rlink;
ccoin = &commit_coins[cnt]; ccoin = &commit_coins[cnt];
size = GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK, size = GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
COIN_ENC_MAX_SIZE); COIN_ENC_MAX_SIZE);
@ -338,22 +392,27 @@ test_melting (struct TALER_MINTDB_Session *session)
cnc_index, cnc_index,
MELT_NEW_COINS, MELT_NEW_COINS,
commit_coins)); commit_coins));
ret_commit_coins = GNUNET_new_array (MELT_NEW_COINS,
struct TALER_MINTDB_RefreshCommitCoin);
FAILIF (GNUNET_OK !=
plugin->get_refresh_commit_coins (plugin->cls,
session,
&session_hash,
cnc_index,
MELT_NEW_COINS,
ret_commit_coins));
FAILIF (GNUNET_OK !=
cmp_commit_coin_arrays (commit_coins,
ret_commit_coins,
MELT_NEW_COINS));
ret = GNUNET_OK; ret = GNUNET_OK;
drop: drop:
destroy_denom_key_pair (dkp); destroy_denom_key_pair (dkp);
if (NULL != ret_commit_coins)
free_refresh_commit_coins_array (ret_commit_coins, MELT_NEW_COINS);
if (NULL != commit_coins) if (NULL != commit_coins)
{ free_refresh_commit_coins_array (commit_coins, MELT_NEW_COINS);
for (cnt = 0; cnt < MELT_NEW_COINS; cnt++)
{
ccoin = &commit_coins[cnt];
GNUNET_free_non_null (ccoin->coin_ev);
rlink = (struct TALER_RefreshLinkEncrypted *) ccoin->refresh_link;
GNUNET_free_non_null (rlink);
}
GNUNET_free (commit_coins);
}
if (NULL != melts) if (NULL != melts)
{ {
for (cnt = 0; cnt < MELT_OLD_COINS; cnt++) for (cnt = 0; cnt < MELT_OLD_COINS; cnt++)