summaryrefslogtreecommitdiff
path: root/src/mint-lib/test_mint_api.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2015-08-18 12:24:51 +0200
committerChristian Grothoff <christian@grothoff.org>2015-08-18 12:24:51 +0200
commita09d684cfc9cd20d7471b42e134fecc142786097 (patch)
treec3d9e3e714dd0c99de64ade2e93b04ab3a1803c2 /src/mint-lib/test_mint_api.c
parent84ba086d00e0bc6654f7fb03fcbc18d55f03f719 (diff)
downloadexchange-a09d684cfc9cd20d7471b42e134fecc142786097.tar.gz
exchange-a09d684cfc9cd20d7471b42e134fecc142786097.tar.bz2
exchange-a09d684cfc9cd20d7471b42e134fecc142786097.zip
handle permutations of keys in reply
Diffstat (limited to 'src/mint-lib/test_mint_api.c')
-rw-r--r--src/mint-lib/test_mint_api.c53
1 files changed, 36 insertions, 17 deletions
diff --git a/src/mint-lib/test_mint_api.c b/src/mint-lib/test_mint_api.c
index 9681cb9ba..8a9d09cec 100644
--- a/src/mint-lib/test_mint_api.c
+++ b/src/mint-lib/test_mint_api.c
@@ -984,6 +984,8 @@ link_cb (void *cls,
struct Command *cmd = &is->commands[is->ip];
const struct Command *ref;
unsigned int i;
+ unsigned int j;
+ unsigned int found;
cmd->details.refresh_link.rlh = NULL;
if (cmd->expected_response_code != http_status)
@@ -1012,25 +1014,42 @@ link_cb (void *cls,
fprintf (stderr,
"Got %u coins\n",
num_coins);
- /* FIXME: note: coins might be legitimately permutated in here... */
- /* (in fact, we currently get them in reverse order, and that's
- why this is "failing") */
+
for (i=0;i<num_coins;i++)
- {
- const struct FreshCoin *fc;
-
- fc = &ref->details.refresh_reveal.fresh_coins[i];
- if ( (0 != memcmp (&coin_privs[i],
- &fc->coin_priv,
- sizeof (struct TALER_CoinSpendPrivateKeyP))) ||
- (0 != GNUNET_CRYPTO_rsa_signature_cmp (fc->sig.rsa_signature,
- sigs[i].rsa_signature)) ||
- (0 != GNUNET_CRYPTO_rsa_public_key_cmp (fc->pk->key.rsa_public_key,
- pubs[i].rsa_public_key)) )
+ for (j=i+1;j<num_coins;j++)
+ if (0 == memcmp (&coin_privs[i],
+ &coin_privs[j],
+ sizeof (struct TALER_CoinSpendPrivateKeyP)))
+ GNUNET_break (0);
+ /* Note: coins might be legitimately permutated in here... */
+ found = 0;
+ for (i=0;i<num_coins;i++)
+ for (j=0;j<num_coins;j++)
{
- GNUNET_break (0);
- // fail (is); return; // commented out, as the test is wrong: needs to support permutations!
+ const struct FreshCoin *fc;
+
+ fc = &ref->details.refresh_reveal.fresh_coins[j];
+ if ( (0 == memcmp (&coin_privs[i],
+ &fc->coin_priv,
+ sizeof (struct TALER_CoinSpendPrivateKeyP))) &&
+ (0 == GNUNET_CRYPTO_rsa_signature_cmp (fc->sig.rsa_signature,
+ sigs[i].rsa_signature)) &&
+ (0 == GNUNET_CRYPTO_rsa_public_key_cmp (fc->pk->key.rsa_public_key,
+ pubs[i].rsa_public_key)) )
+ {
+ found++;
+ break;
+ }
}
+ if (found != num_coins)
+ {
+ fprintf (stderr,
+ "Only %u/%u coins match expectations\n",
+ found,
+ num_coins);
+ GNUNET_break (0);
+ fail (is);
+ return;
}
break;
default:
@@ -2072,7 +2091,7 @@ main (int argc,
fprintf (stderr, ".");
sleep (1);
}
- while (0 != system ("wget -q -t 1 -T 1 http://127.0.0.1:8081/agpl -o /dev/null -O /dev/null"));
+ while (0 != system ("wget -q -t 1 -T 1 http://127.0.0.1:8081/keys -o /dev/null -O /dev/null"));
fprintf (stderr, "\n");
result = GNUNET_SYSERR;
GNUNET_SCHEDULER_run (&run, NULL);