diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/exchange/taler-exchange-httpd_responses.c | 6 | ||||
| -rw-r--r-- | src/exchangedb/plugin_exchangedb_postgres.c | 11 | ||||
| -rw-r--r-- | src/include/taler_exchangedb_plugin.h | 2 | ||||
| -rw-r--r-- | src/include/taler_signatures.h | 2 | ||||
| -rw-r--r-- | src/lib/exchange_api_common.c | 12 | ||||
| -rw-r--r-- | src/testing/test_exchange_api.c | 77 | 
6 files changed, 78 insertions, 32 deletions
diff --git a/src/exchange/taler-exchange-httpd_responses.c b/src/exchange/taler-exchange-httpd_responses.c index 444729a2..4bcb9e7a 100644 --- a/src/exchange/taler-exchange-httpd_responses.c +++ b/src/exchange/taler-exchange-httpd_responses.c @@ -250,7 +250,7 @@ TEH_RESPONSE_compile_transaction_history (              TALER_SIGNATURE_EXCHANGE_CONFIRM_RECOUP_REFRESH),            .purpose.size = htonl (sizeof (pc)),            .timestamp = GNUNET_TIME_absolute_hton (pr->timestamp), -          .coin_pub = *coin_pub, +          .coin_pub = pr->coin.coin_pub,            .old_coin_pub = pr->old_coin_pub          }; @@ -273,7 +273,7 @@ TEH_RESPONSE_compile_transaction_history (          if (0 !=              json_array_append_new (                history, -              json_pack ("{s:s, s:o, s:o, s:o, s:o, s:o, s:o}", +              json_pack ("{s:s, s:o, s:o, s:o, s:o, s:o}",                           "type",                           "OLD-COIN-RECOUP",                           "amount", @@ -284,8 +284,6 @@ TEH_RESPONSE_compile_transaction_history (                           GNUNET_JSON_from_data_auto (&epub),                           "coin_pub",                           GNUNET_JSON_from_data_auto (&pr->coin.coin_pub), -                         "coin_sig", -                         GNUNET_JSON_from_data_auto (&pr->coin_sig),                           "timestamp",                           GNUNET_JSON_from_time_abs (pr->timestamp))))          { diff --git a/src/exchangedb/plugin_exchangedb_postgres.c b/src/exchangedb/plugin_exchangedb_postgres.c index 8e45d671..7934639b 100644 --- a/src/exchangedb/plugin_exchangedb_postgres.c +++ b/src/exchangedb/plugin_exchangedb_postgres.c @@ -4553,6 +4553,11 @@ postgres_get_coin_transactions (                                                 params,                                                 work[i].cb,                                                 &chc); +    GNUNET_log (GNUNET_ERROR_TYPE_INFO, +                "Coin %s yielded %d transactions of type %s\n", +                TALER_B2S (coin_pub), +                qs, +                work[i].statement);      if ( (0 > qs) ||           (chc.failed) )      { @@ -6913,6 +6918,9 @@ postgres_insert_recoup_request (      GNUNET_break (0);      return GNUNET_DB_STATUS_HARD_ERROR;    } +  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, +              "Inserting recoup for coin %s\n", +              TALER_B2S (&coin->coin_pub));    expiry = GNUNET_TIME_absolute_add (timestamp,                                       pg->legal_reserve_expiration_time);    reserve.gc = GNUNET_TIME_absolute_max (expiry, @@ -6976,6 +6984,9 @@ postgres_insert_recoup_refresh_request (    (void) cls;    /* now store actual recoup information */ +  GNUNET_log (GNUNET_ERROR_TYPE_INFO, +              "Inserting recoup-refresh for coin %s\n", +              TALER_B2S (&coin->coin_pub));    qs = GNUNET_PQ_eval_prepared_non_select (session->conn,                                             "recoup_refresh_insert",                                             params); diff --git a/src/include/taler_exchangedb_plugin.h b/src/include/taler_exchangedb_plugin.h index 8b4e63cd..f5e5dccc 100644 --- a/src/include/taler_exchangedb_plugin.h +++ b/src/include/taler_exchangedb_plugin.h @@ -373,7 +373,7 @@ struct TALER_EXCHANGEDB_RecoupRefreshListEntry    /**     * Blinding factor supplied to prove to the exchange that -   * the coin came from this reserve. +   * the coin came from this @e old_coin_pub.     */    struct TALER_DenominationBlindingKeyP coin_blind; diff --git a/src/include/taler_signatures.h b/src/include/taler_signatures.h index 3e4b893f..4e24c519 100644 --- a/src/include/taler_signatures.h +++ b/src/include/taler_signatures.h @@ -1219,7 +1219,7 @@ struct TALER_RecoupRequestPS    struct TALER_CoinSpendPublicKeyP coin_pub;    /** -   * Hash of the denomination public key of the coin. +   * Hash of the (revoked) denomination public key of the coin.     */    struct GNUNET_HashCode h_denom_pub; diff --git a/src/lib/exchange_api_common.c b/src/lib/exchange_api_common.c index feaef7b3..743adb0f 100644 --- a/src/lib/exchange_api_common.c +++ b/src/lib/exchange_api_common.c @@ -876,10 +876,11 @@ TALER_EXCHANGE_verify_coin_history (        TALER_amount_hton (&pc.recoup_amount,                           &amount);        if (GNUNET_OK != -          GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_EXCHANGE_CONFIRM_RECOUP, -                                      &pc, -                                      &exchange_sig.eddsa_signature, -                                      &exchange_pub.eddsa_pub)) +          GNUNET_CRYPTO_eddsa_verify ( +            TALER_SIGNATURE_EXCHANGE_CONFIRM_RECOUP_REFRESH, +            &pc, +            &exchange_sig.eddsa_signature, +            &exchange_pub.eddsa_pub))        {          GNUNET_break_op (0);          return GNUNET_SYSERR; @@ -890,6 +891,9 @@ TALER_EXCHANGE_verify_coin_history (      {        /* signature not supported, new version on server? */        GNUNET_break_op (0); +      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, +                  "Unexpected type `%s' in response\n", +                  type);        GNUNET_assert (GNUNET_SYSERR == add);        return GNUNET_SYSERR;      } diff --git a/src/testing/test_exchange_api.c b/src/testing/test_exchange_api.c index b8ec3699..410c1a49 100644 --- a/src/testing/test_exchange_api.c +++ b/src/testing/test_exchange_api.c @@ -675,28 +675,61 @@ run (void *cls,                                "recoup-reveal-coin-1b",                                "recoup-melt-coin-1b",                                "EUR:5"), -#if 1 -    /* "over-spend" 10 EUR recoup-refreshed coin */ -    TALER_TESTING_cmd_deposit ("recoup-refresh-deposit-failing", -                               "recoup-withdraw-coin-1b", -                               0, -                               bc.user42_payto, -                               "{\"items\":[{\"name\":\"more ice cream\",\"value\":1}]}", -                               GNUNET_TIME_UNIT_ZERO, -                               "EUR:11.5", -                               MHD_HTTP_OK), -    // FIXME: yes, we expect 'CONFLICT', but the -    // coin history we get is totally wrong! -    /* "spend" 10 EUR recoup-refreshed coin */ -    TALER_TESTING_cmd_deposit ("recoup-refresh-deposit-ok", -                               "recoup-withdraw-coin-1b", -                               0, -                               bc.user42_payto, -                               "{\"items\":[{\"name\":\"more ice cream\",\"value\":1}]}", -                               GNUNET_TIME_UNIT_ZERO, -                               "EUR:9.5", /* FIXME: pick 'right' amount! */ -                               MHD_HTTP_OK), -#endif +    /* melt 10 EUR coin *again* to get 1 EUR refreshed coin */ +    TALER_TESTING_cmd_melt ("recoup-remelt-coin-1a", +                            "recoup-withdraw-coin-1b", +                            MHD_HTTP_OK, +                            "EUR:1", +                            NULL), +    TALER_TESTING_cmd_refresh_reveal ("recoup-reveal-coin-1a", +                                      "recoup-remelt-coin-1a", +                                      MHD_HTTP_OK), +    /* Try melting for more than the residual value to provoke an error */ +    TALER_TESTING_cmd_melt ("recoup-remelt-coin-1b", +                            "recoup-withdraw-coin-1b", +                            MHD_HTTP_OK, +                            "EUR:1", +                            NULL), +    TALER_TESTING_cmd_melt ("recoup-remelt-coin-1c", +                            "recoup-withdraw-coin-1b", +                            MHD_HTTP_OK, +                            "EUR:1", +                            NULL), +    TALER_TESTING_cmd_melt ("recoup-remelt-coin-1d", +                            "recoup-withdraw-coin-1b", +                            MHD_HTTP_OK, +                            "EUR:1", +                            NULL), +    TALER_TESTING_cmd_melt ("recoup-remelt-coin-1e", +                            "recoup-withdraw-coin-1b", +                            MHD_HTTP_OK, +                            "EUR:1", +                            NULL), +    TALER_TESTING_cmd_melt ("recoup-remelt-coin-1f", +                            "recoup-withdraw-coin-1b", +                            MHD_HTTP_OK, +                            "EUR:1", +                            NULL), +    TALER_TESTING_cmd_melt ("recoup-remelt-coin-1g", +                            "recoup-withdraw-coin-1b", +                            MHD_HTTP_OK, +                            "EUR:1", +                            NULL), +    TALER_TESTING_cmd_melt ("recoup-remelt-coin-1h", +                            "recoup-withdraw-coin-1b", +                            MHD_HTTP_OK, +                            "EUR:1", +                            NULL), +    TALER_TESTING_cmd_melt ("recoup-remelt-coin-1i", +                            "recoup-withdraw-coin-1b", +                            MHD_HTTP_OK, +                            "EUR:1", +                            NULL), +    TALER_TESTING_cmd_melt ("recoup-remelt-coin-1b-failing", +                            "recoup-withdraw-coin-1b", +                            MHD_HTTP_CONFLICT, +                            "EUR:1", +                            NULL),      /* Re-withdraw from this reserve */      TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-2",                                         "recoup-create-reserve-1",  | 
