finished implementing #4401
This commit is contained in:
parent
8199c06882
commit
14436d1241
@ -372,6 +372,12 @@ commit_coin_cmp (struct TALER_EXCHANGEDB_RefreshCommitCoin *rc1,
|
|||||||
*/
|
*/
|
||||||
#define MELT_NEW_COINS 5
|
#define MELT_NEW_COINS 5
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Which index was 'randomly' chosen for the reveal for the test?
|
||||||
|
*/
|
||||||
|
#define MELT_NOREVEAL_INDEX 1
|
||||||
|
|
||||||
|
|
||||||
static struct TALER_EXCHANGEDB_RefreshCommitCoin *commit_coins[TALER_CNC_KAPPA];
|
static struct TALER_EXCHANGEDB_RefreshCommitCoin *commit_coins[TALER_CNC_KAPPA];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -498,7 +504,7 @@ test_refresh_commit_links (struct TALER_EXCHANGEDB_Session *session,
|
|||||||
plugin->get_refresh_commit_link (plugin->cls,
|
plugin->get_refresh_commit_link (plugin->cls,
|
||||||
session,
|
session,
|
||||||
session_hash,
|
session_hash,
|
||||||
1,
|
MELT_NOREVEAL_INDEX,
|
||||||
&cl2));
|
&cl2));
|
||||||
for (i=0;i<TALER_CNC_KAPPA;i++)
|
for (i=0;i<TALER_CNC_KAPPA;i++)
|
||||||
{
|
{
|
||||||
@ -527,6 +533,42 @@ test_refresh_commit_links (struct TALER_EXCHANGEDB_Session *session,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static struct GNUNET_HashCode session_hash;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with the session hashes and transfer secret
|
||||||
|
* information for a given coin. Checks if they are as expected.
|
||||||
|
*
|
||||||
|
* @param cls closure
|
||||||
|
* @param sh a session the coin was melted in
|
||||||
|
* @param transfer_pub public transfer key for the session
|
||||||
|
* @param shared_secret_enc set to shared secret for the session
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
check_transfer_data (void *cls,
|
||||||
|
const struct GNUNET_HashCode *sh,
|
||||||
|
const struct TALER_TransferPublicKeyP *transfer_pub,
|
||||||
|
const struct TALER_EncryptedLinkSecretP *shared_secret_enc)
|
||||||
|
{
|
||||||
|
int *ok = cls;
|
||||||
|
|
||||||
|
FAILIF (0 != memcmp (&rclp[MELT_NOREVEAL_INDEX].transfer_pub,
|
||||||
|
transfer_pub,
|
||||||
|
sizeof (struct TALER_TransferPublicKeyP)));
|
||||||
|
FAILIF (0 != memcmp (&rclp[MELT_NOREVEAL_INDEX].shared_secret_enc,
|
||||||
|
shared_secret_enc,
|
||||||
|
sizeof (struct TALER_EncryptedLinkSecretP)));
|
||||||
|
FAILIF (0 != memcmp (&session_hash,
|
||||||
|
sh,
|
||||||
|
sizeof (struct GNUNET_HashCode)));
|
||||||
|
*ok = GNUNET_OK;
|
||||||
|
return;
|
||||||
|
drop:
|
||||||
|
*ok = 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
|
||||||
*
|
*
|
||||||
@ -539,7 +581,6 @@ test_melting (struct TALER_EXCHANGEDB_Session *session)
|
|||||||
{
|
{
|
||||||
struct TALER_EXCHANGEDB_RefreshSession refresh_session;
|
struct TALER_EXCHANGEDB_RefreshSession refresh_session;
|
||||||
struct TALER_EXCHANGEDB_RefreshSession ret_refresh_session;
|
struct TALER_EXCHANGEDB_RefreshSession ret_refresh_session;
|
||||||
struct GNUNET_HashCode session_hash;
|
|
||||||
struct DenomKeyPair *dkp;
|
struct DenomKeyPair *dkp;
|
||||||
struct DenomKeyPair **new_dkp;
|
struct DenomKeyPair **new_dkp;
|
||||||
/* struct TALER_CoinPublicInfo *coins; */
|
/* struct TALER_CoinPublicInfo *coins; */
|
||||||
@ -563,7 +604,7 @@ test_melting (struct TALER_EXCHANGEDB_Session *session)
|
|||||||
ret_denom_pubs = NULL;
|
ret_denom_pubs = NULL;
|
||||||
/* create and test a refresh session */
|
/* create and test a refresh session */
|
||||||
refresh_session.num_newcoins = MELT_NEW_COINS;
|
refresh_session.num_newcoins = MELT_NEW_COINS;
|
||||||
refresh_session.noreveal_index = 1;
|
refresh_session.noreveal_index = MELT_NOREVEAL_INDEX;
|
||||||
/* create a denomination (value: 1; fraction: 100) */
|
/* create a denomination (value: 1; fraction: 100) */
|
||||||
dkp = create_denom_key_pair (512,
|
dkp = create_denom_key_pair (512,
|
||||||
session,
|
session,
|
||||||
@ -603,7 +644,7 @@ test_melting (struct TALER_EXCHANGEDB_Session *session)
|
|||||||
FAILIF (ret_refresh_session.num_newcoins != refresh_session.num_newcoins);
|
FAILIF (ret_refresh_session.num_newcoins != refresh_session.num_newcoins);
|
||||||
FAILIF (ret_refresh_session.noreveal_index != refresh_session.noreveal_index);
|
FAILIF (ret_refresh_session.noreveal_index != refresh_session.noreveal_index);
|
||||||
|
|
||||||
/* check refresh sesison melt data */
|
/* check refresh session melt data */
|
||||||
{
|
{
|
||||||
struct TALER_EXCHANGEDB_RefreshMelt *ret_melt;
|
struct TALER_EXCHANGEDB_RefreshMelt *ret_melt;
|
||||||
|
|
||||||
@ -731,7 +772,7 @@ test_melting (struct TALER_EXCHANGEDB_Session *session)
|
|||||||
found = GNUNET_NO;
|
found = GNUNET_NO;
|
||||||
for (cnt=0;cnt < MELT_NEW_COINS;cnt++)
|
for (cnt=0;cnt < MELT_NEW_COINS;cnt++)
|
||||||
{
|
{
|
||||||
r1 = commit_coins[1][cnt].refresh_link;
|
r1 = commit_coins[MELT_NOREVEAL_INDEX][cnt].refresh_link;
|
||||||
r2 = ldlp->link_data_enc;
|
r2 = ldlp->link_data_enc;
|
||||||
FAILIF (NULL == ldlp->ev_sig.rsa_signature);
|
FAILIF (NULL == ldlp->ev_sig.rsa_signature);
|
||||||
if ( (0 ==
|
if ( (0 ==
|
||||||
@ -752,7 +793,18 @@ test_melting (struct TALER_EXCHANGEDB_Session *session)
|
|||||||
plugin->free_link_data_list (plugin->cls,
|
plugin->free_link_data_list (plugin->cls,
|
||||||
ldl);
|
ldl);
|
||||||
|
|
||||||
/* FIXME #4401: test: get_transfer */
|
{
|
||||||
|
int ok;
|
||||||
|
|
||||||
|
ok = GNUNET_NO;
|
||||||
|
FAILIF (GNUNET_OK !=
|
||||||
|
plugin->get_transfer (plugin->cls,
|
||||||
|
session,
|
||||||
|
&meltp->coin.coin_pub,
|
||||||
|
&check_transfer_data,
|
||||||
|
&ok));
|
||||||
|
FAILIF (GNUNET_OK != ok);
|
||||||
|
}
|
||||||
|
|
||||||
ret = GNUNET_OK;
|
ret = GNUNET_OK;
|
||||||
drop:
|
drop:
|
||||||
|
Loading…
Reference in New Issue
Block a user