diff options
-rwxr-xr-x[-rw-r--r--] | bootstrap | 0 | ||||
-rw-r--r-- | contrib/exchange-template/config/exchange-common.conf | 10 | ||||
-rw-r--r-- | src/bank-lib/bank_api_admin.c | 13 | ||||
-rw-r--r-- | src/bank-lib/test_bank_api.c | 15 | ||||
-rw-r--r-- | src/exchange-lib/exchange_api_wire.c | 20 | ||||
-rw-r--r-- | src/exchange-lib/test-exchange-home/config/exchange-common.conf | 8 | ||||
-rw-r--r-- | src/exchange-lib/test_exchange_api.c | 4 | ||||
-rw-r--r-- | src/exchange/taler-exchange-httpd_wire.c | 5 | ||||
-rw-r--r-- | src/include/taler_bank_service.h | 6 | ||||
-rw-r--r-- | src/wire/plugin_wire_test.c | 19 |
10 files changed, 82 insertions, 18 deletions
diff --git a/bootstrap b/bootstrap index 4e7cc0537..4e7cc0537 100644..100755 --- a/bootstrap +++ b/bootstrap diff --git a/contrib/exchange-template/config/exchange-common.conf b/contrib/exchange-template/config/exchange-common.conf index 183ae47ad..26bf4ff94 100644 --- a/contrib/exchange-template/config/exchange-common.conf +++ b/contrib/exchange-template/config/exchange-common.conf @@ -25,5 +25,11 @@ DB_CONN_STR = "postgres:///talercheck" SEPA_RESPONSE_FILE = "sepa.json" [wire-test] -BANK_URI = "http://bank/" -BANK_ACCOUNT_NUMBER = 1 +# What is the main website of the bank? +BANK_URI = "https://bank/" +# Into which account at the 'bank' should incoming +# wire transfers be made? +BANK_ACCOUNT_NO_INCOMING = 2 +# From which account at the 'bank' should outgoing +# wire transfers be made? +BANK_ACCOUNT_NO_OUTGOING = 2 diff --git a/src/bank-lib/bank_api_admin.c b/src/bank-lib/bank_api_admin.c index bfcf16a23..5deb4aa72 100644 --- a/src/bank-lib/bank_api_admin.c +++ b/src/bank-lib/bank_api_admin.c @@ -150,7 +150,8 @@ handle_admin_add_incoming_finished (void *cls, * @param reserve_pub public key of the reserve * @param amount amount that was deposited * @param execution_date when did we receive the amount - * @param account_no account number (53 bits at most) + * @param debit_account_no account number to withdraw from (53 bits at most) + * @param credit_account_no account number to deposit into (53 bits at most) * @param res_cb the callback to call when the final result for this request is available * @param res_cb_cls closure for the above callback * @return NULL @@ -161,7 +162,8 @@ struct TALER_BANK_AdminAddIncomingHandle * TALER_BANK_admin_add_incoming (struct TALER_BANK_Context *bank, const struct TALER_WireTransferIdentifierRawP *wtid, const struct TALER_Amount *amount, - uint64_t account_no, + uint64_t debit_account_no, + uint64_t credit_account_no, TALER_BANK_AdminAddIncomingResultCallback res_cb, void *res_cb_cls) { @@ -169,12 +171,13 @@ TALER_BANK_admin_add_incoming (struct TALER_BANK_Context *bank, json_t *admin_obj; CURL *eh; - admin_obj = json_pack ("{s:o, s:o," /* reserve_pub/amount */ - " s:I}", /* execution_Date/wire */ + admin_obj = json_pack ("{s:o, s:o," + " s:I, s:I}", "wtid", TALER_json_from_data (wtid, sizeof (*wtid)), "amount", TALER_json_from_amount (amount), - "account", (json_int_t) account_no); + "debit_account", (json_int_t) debit_account_no, + "credit_account", (json_int_t) credit_account_no); aai = GNUNET_new (struct TALER_BANK_AdminAddIncomingHandle); aai->bank = bank; aai->cb = res_cb; diff --git a/src/bank-lib/test_bank_api.c b/src/bank-lib/test_bank_api.c index b14f523ba..5e38ae2ec 100644 --- a/src/bank-lib/test_bank_api.c +++ b/src/bank-lib/test_bank_api.c @@ -103,9 +103,14 @@ struct Command const char *amount; /** - * Account number. + * Credited account number. */ - uint64_t account_no; + uint64_t credit_account_no; + + /** + * Debited account number. + */ + uint64_t debit_account_no; /** * Wire transfer identifier to use. Initialized to @@ -310,7 +315,8 @@ interpreter_run (void *cls, = TALER_BANK_admin_add_incoming (ctx, &cmd->details.admin_add_incoming.wtid, &amount, - cmd->details.admin_add_incoming.account_no, + cmd->details.admin_add_incoming.debit_account_no, + cmd->details.admin_add_incoming.credit_account_no, &add_incoming_cb, is); if (NULL == cmd->details.admin_add_incoming.aih) @@ -470,7 +476,8 @@ run (void *cls, { .oc = OC_ADMIN_ADD_INCOMING, .label = "deposit-1", .expected_response_code = MHD_HTTP_OK, - .details.admin_add_incoming.account_no = 42, + .details.admin_add_incoming.credit_account_no = 1, + .details.admin_add_incoming.debit_account_no = 2, .details.admin_add_incoming.amount = "EUR:5.01" }, { .oc = OC_END } diff --git a/src/exchange-lib/exchange_api_wire.c b/src/exchange-lib/exchange_api_wire.c index fd40230c7..f01c5000b 100644 --- a/src/exchange-lib/exchange_api_wire.c +++ b/src/exchange-lib/exchange_api_wire.c @@ -84,6 +84,25 @@ struct TALER_EXCHANGE_WireHandle /** * Verify that the signature on the "200 OK" response + * for /wire/test from the exchange is valid. + * Accepts everything. + * + * @param wh wire handle + * @param json json reply with the signature + * @return #GNUNET_SYSERR if @a json is invalid, + * #GNUNET_NO if the method is unknown, + * #GNUNET_OK if the json is valid + */ +static int +verify_wire_test_signature_ok (const struct TALER_EXCHANGE_WireHandle *wh, + json_t *json) +{ + return GNUNET_OK; +} + + +/** + * Verify that the signature on the "200 OK" response * for /wire/sepa from the exchange is valid. * * @param wh wire handle @@ -182,6 +201,7 @@ verify_wire_method_signature_ok (const struct TALER_EXCHANGE_WireHandle *wh, int (*handler)(const struct TALER_EXCHANGE_WireHandle *wh, json_t *json); } handlers[] = { + { "test", &verify_wire_test_signature_ok }, { "sepa", &verify_wire_sepa_signature_ok }, { NULL, NULL } }; diff --git a/src/exchange-lib/test-exchange-home/config/exchange-common.conf b/src/exchange-lib/test-exchange-home/config/exchange-common.conf index 35711a8f3..89b7f5182 100644 --- a/src/exchange-lib/test-exchange-home/config/exchange-common.conf +++ b/src/exchange-lib/test-exchange-home/config/exchange-common.conf @@ -26,5 +26,11 @@ DB_CONN_STR = "postgres:///talercheck" SEPA_RESPONSE_FILE = "test-exchange-home/sepa.json" [wire-test] +# What is the main website of the bank? BANK_URI = "http://localhost/" -BANK_ACCOUNT_NUMBER = 1 +# Into which account at the 'bank' should incoming +# wire transfers be made? +BANK_ACCOUNT_NO_INCOMING = 2 +# From which account at the 'bank' should outgoing +# wire transfers be made? +BANK_ACCOUNT_NO_OUTGOING = 2
\ No newline at end of file diff --git a/src/exchange-lib/test_exchange_api.c b/src/exchange-lib/test_exchange_api.c index 80e2c6add..890e80756 100644 --- a/src/exchange-lib/test_exchange_api.c +++ b/src/exchange-lib/test_exchange_api.c @@ -2328,8 +2328,8 @@ run (void *cls, #if WIRE_TEST { .oc = OC_WIRE, .label = "wire-test", - /* /wire/test replies with a 302 redirect */ - .expected_response_code = MHD_HTTP_FOUND, + /* /wire/test replies with a 200 OK */ + .expected_response_code = MHD_HTTP_OK, .details.wire.format = "test" }, #endif #if WIRE_SEPA diff --git a/src/exchange/taler-exchange-httpd_wire.c b/src/exchange/taler-exchange-httpd_wire.c index 0d1e3f3f1..cec041762 100644 --- a/src/exchange/taler-exchange-httpd_wire.c +++ b/src/exchange/taler-exchange-httpd_wire.c @@ -117,13 +117,14 @@ TMH_WIRE_handler_wire_test (struct TMH_RequestHandler *rh, if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_number (cfg, "wire-test", - "BANK_ACCOUNT_NUMBER", + "BANK_ACCOUNT_NO_INCOMING", &account_number)) { /* oopsie, configuration error */ MHD_destroy_response (response); + GNUNET_free (bank_uri); return TMH_RESPONSE_reply_internal_error (connection, - "BANK_URI not configured"); + "BANK_ACCOUNT_NO_INCOMING not configured"); } ret = TMH_RESPONSE_reply_json_pack (connection, MHD_HTTP_OK, diff --git a/src/include/taler_bank_service.h b/src/include/taler_bank_service.h index a4f33fc97..508ca714b 100644 --- a/src/include/taler_bank_service.h +++ b/src/include/taler_bank_service.h @@ -133,7 +133,8 @@ typedef void * @param reserve_pub public key of the reserve * @param amount amount that was deposited * @param execution_date when did we receive the amount - * @param account_no account number (53 bits at most) + * @param debit_account_no account number to withdraw from (53 bits at most) + * @param credit_account_no account number to deposit into (53 bits at most) * @param res_cb the callback to call when the final result for this request is available * @param res_cb_cls closure for the above callback * @return NULL @@ -144,7 +145,8 @@ struct TALER_BANK_AdminAddIncomingHandle * TALER_BANK_admin_add_incoming (struct TALER_BANK_Context *bank, const struct TALER_WireTransferIdentifierRawP *wtid, const struct TALER_Amount *amount, - uint64_t account_no, + uint64_t debit_account_no, + uint64_t credit_account_no, TALER_BANK_AdminAddIncomingResultCallback res_cb, void *res_cb_cls); diff --git a/src/wire/plugin_wire_test.c b/src/wire/plugin_wire_test.c index 98d9281ce..1d19edf57 100644 --- a/src/wire/plugin_wire_test.c +++ b/src/wire/plugin_wire_test.c @@ -44,6 +44,11 @@ struct TestClosure char *currency; /** + * Number of the account that the exchange has at the bank. + */ + unsigned long long exchange_account_no; + + /** * Handle to the bank task, or NULL. */ struct GNUNET_SCHEDULER_Task *bt; @@ -489,6 +494,7 @@ test_execute_wire_transfer (void *cls, eh->aaih = TALER_BANK_admin_add_incoming (tc->bank, &bf.wtid, &amount, + (uint64_t) tc->exchange_account_no, (uint64_t) account_no, &execute_cb, eh); @@ -552,6 +558,19 @@ libtaler_plugin_wire_test_init (void *cls) } tc = GNUNET_new (struct TestClosure); if (GNUNET_OK != + GNUNET_CONFIGURATION_get_value_number (cfg, + "wire-test", + "BANK_ACCOUNT_NO_OUTGOING", + &tc->exchange_account_no)) + { + GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, + "wire-test", + "BANK_ACCOUNT_NO_OUTGOING"); + GNUNET_free (uri); + GNUNET_free (tc); + return NULL; + } + if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_string (cfg, "exchange", "CURRENCY", |