diff options
Diffstat (limited to 'src/lib/testing_api_cmd_refresh.c')
-rw-r--r-- | src/lib/testing_api_cmd_refresh.c | 153 |
1 files changed, 79 insertions, 74 deletions
diff --git a/src/lib/testing_api_cmd_refresh.c b/src/lib/testing_api_cmd_refresh.c index d0b589b12..3a4de783d 100644 --- a/src/lib/testing_api_cmd_refresh.c +++ b/src/lib/testing_api_cmd_refresh.c @@ -83,7 +83,7 @@ struct RefreshMeltState /** * Array of the denomination public keys - * corresponding to the @e fresh_amounts. + * corresponding to the @e num_fresh_coins; */ struct TALER_EXCHANGE_DenomPublicKey *fresh_pks; @@ -103,6 +103,11 @@ struct RefreshMeltState size_t refresh_data_length; /** + * Number of fresh coins generated by the melt. + */ + unsigned int num_fresh_coins; + + /** * Expected HTTP response code. */ unsigned int expected_response_code; @@ -282,7 +287,7 @@ do_reveal_retry (void *cls) static void reveal_cb (void *cls, unsigned int http_status, - enum TALER_ErrorCode ec, + enum TALER_ErrorCode ec, unsigned int num_coins, const struct TALER_CoinSpendPrivateKeyP *coin_privs, const struct TALER_DenominationSignature *sigs, @@ -340,24 +345,19 @@ reveal_cb (void *cls, case MHD_HTTP_OK: rrs->fresh_coins = GNUNET_new_array (num_coins, struct FreshCoin); - - const struct TALER_EXCHANGE_DenomPublicKey *fresh_pks; - - if (GNUNET_OK != - TALER_TESTING_get_trait_denom_pub (melt_cmd, - 0, - &fresh_pks)) - { - GNUNET_break (0); - TALER_TESTING_interpreter_fail (rrs->is); - return; - } - for (unsigned int i=0; i<num_coins; i++) { struct FreshCoin *fc = &rrs->fresh_coins[i]; - fc->pk = &fresh_pks[i]; + if (GNUNET_OK != + TALER_TESTING_get_trait_denom_pub (melt_cmd, + i, + &fc->pk)) + { + GNUNET_break (0); + TALER_TESTING_interpreter_fail (rrs->is); + return; + } fc->coin_priv = coin_privs[i]; fc->sig.rsa_signature = GNUNET_CRYPTO_rsa_signature_dup (sigs[i].rsa_signature); @@ -611,18 +611,18 @@ link_cb (void *cls, for (unsigned int i=0;i<num_coins;i++) for (unsigned int j=0;j<num_coins;j++) { - if ( (0 == GNUNET_memcmp - (&coin_privs[i], &fc[j].coin_priv)) && - (0 == GNUNET_CRYPTO_rsa_signature_cmp - (fc[i].sig.rsa_signature, - sigs[j].rsa_signature)) && - (0 == GNUNET_CRYPTO_rsa_public_key_cmp - (fc[i].pk->key.rsa_public_key, - pubs[j].rsa_public_key)) ) - { - found++; - break; - } + if ( (0 == GNUNET_memcmp + (&coin_privs[i], &fc[j].coin_priv)) && + (0 == GNUNET_CRYPTO_rsa_signature_cmp + (fc[i].sig.rsa_signature, + sigs[j].rsa_signature)) && + (0 == GNUNET_CRYPTO_rsa_public_key_cmp + (fc[i].pk->key.rsa_public_key, + pubs[j].rsa_public_key)) ) + { + found++; + break; + } } if (found != num_coins) { @@ -883,7 +883,7 @@ refresh_melt_run (void *cls, for (num_fresh_coins=0; NULL != melt_fresh_amounts[num_fresh_coins]; num_fresh_coins++) ; - + rms->num_fresh_coins = num_fresh_coins; rms->fresh_pks = GNUNET_new_array (num_fresh_coins, struct TALER_EXCHANGE_DenomPublicKey); @@ -935,13 +935,12 @@ refresh_melt_run (void *cls, return; } if (GNUNET_OK != TALER_TESTING_get_trait_denom_pub - (coin_command, 0, &melt_denom_pub)) + (coin_command, 0, &melt_denom_pub)) { GNUNET_break (0); TALER_TESTING_interpreter_fail (rms->is); return; } - for (unsigned int i=0;i<num_fresh_coins;i++) { const struct TALER_EXCHANGE_DenomPublicKey *fresh_pk; @@ -1035,7 +1034,6 @@ refresh_melt_cleanup (void *cls, * @param ret[out] result (could be anything). * @param trait name of the trait. * @param index index number of the object to offer. - * * @return #GNUNET_OK on success. */ static int @@ -1046,15 +1044,22 @@ refresh_melt_traits (void *cls, { struct RefreshMeltState *rms = cls; - struct TALER_TESTING_Trait traits[] = { - TALER_TESTING_make_trait_denom_pub (0, rms->fresh_pks), - TALER_TESTING_trait_end () - }; - - return TALER_TESTING_get_trait (traits, - ret, - trait, - index); + if (index >= rms->num_fresh_coins) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } + { + struct TALER_TESTING_Trait traits[] = { + TALER_TESTING_make_trait_denom_pub (index, &rms->fresh_pks[index]), + TALER_TESTING_trait_end () + }; + + return TALER_TESTING_get_trait (traits, + ret, + trait, + index); + } } @@ -1081,20 +1086,20 @@ TALER_TESTING_cmd_refresh_melt md.coin_reference = coin_reference; md.amount = amount; - rms = GNUNET_new (struct RefreshMeltState); rms->melted_coin = md; rms->expected_response_code = expected_response_code; - - struct TALER_TESTING_Command cmd = { - .label = label, - .cls = rms, - .run = &refresh_melt_run, - .cleanup = &refresh_melt_cleanup, - .traits = &refresh_melt_traits - }; - - return cmd; + { + struct TALER_TESTING_Command cmd = { + .label = label, + .cls = rms, + .run = &refresh_melt_run, + .cleanup = &refresh_melt_cleanup, + .traits = &refresh_melt_traits + }; + + return cmd; + } } @@ -1109,7 +1114,6 @@ TALER_TESTING_cmd_refresh_melt * @param coin_reference reference to a command that will provide * a coin to refresh * @param expected_response_code expected HTTP code - * * @return the command. */ struct TALER_TESTING_Command @@ -1124,21 +1128,21 @@ TALER_TESTING_cmd_refresh_melt_double md.coin_reference = coin_reference; md.amount = amount; - rms = GNUNET_new (struct RefreshMeltState); rms->melted_coin = md; rms->expected_response_code = expected_response_code; rms->double_melt = GNUNET_YES; - - struct TALER_TESTING_Command cmd = { - .label = label, - .cls = rms, - .run = &refresh_melt_run, - .cleanup = &refresh_melt_cleanup, - .traits = &refresh_melt_traits - }; - - return cmd; + { + struct TALER_TESTING_Command cmd = { + .label = label, + .cls = rms, + .run = &refresh_melt_run, + .cleanup = &refresh_melt_cleanup, + .traits = &refresh_melt_traits + }; + + return cmd; + } } @@ -1237,16 +1241,17 @@ TALER_TESTING_cmd_refresh_reveal rrs = GNUNET_new (struct RefreshRevealState); rrs->melt_reference = melt_reference; rrs->expected_response_code = expected_response_code; - - struct TALER_TESTING_Command cmd = { - .cls = rrs, - .label = label, - .run = &refresh_reveal_run, - .cleanup = &refresh_reveal_cleanup, - .traits = &refresh_reveal_traits - }; - - return cmd; + { + struct TALER_TESTING_Command cmd = { + .cls = rrs, + .label = label, + .run = &refresh_reveal_run, + .cleanup = &refresh_reveal_cleanup, + .traits = &refresh_reveal_traits + }; + + return cmd; + } } |