-start on AML work (incomplete)
This commit is contained in:
parent
d0b43b0e6a
commit
19132b6716
@ -141,6 +141,7 @@ CONFIG = /research/taler/exchange/src/auditor/auditor-basedb.conf
|
|||||||
[taler]
|
[taler]
|
||||||
CURRENCY_ROUND_UNIT = TESTKUDOS:0.01
|
CURRENCY_ROUND_UNIT = TESTKUDOS:0.01
|
||||||
CURRENCY = TESTKUDOS
|
CURRENCY = TESTKUDOS
|
||||||
|
AML_THRESHOLD = TESTKUDOS:1000000
|
||||||
|
|
||||||
[merchantdb-postgres]
|
[merchantdb-postgres]
|
||||||
CONFIG = postgres:///auditor-basedb
|
CONFIG = postgres:///auditor-basedb
|
||||||
|
@ -148,6 +148,12 @@ struct Shard
|
|||||||
*/
|
*/
|
||||||
static struct TALER_Amount currency_round_unit;
|
static struct TALER_Amount currency_round_unit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* What is the largest amount we transfer before triggering
|
||||||
|
* an AML check?
|
||||||
|
*/
|
||||||
|
static struct TALER_Amount aml_threshold;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* What is the base URL of this exchange? Used in the
|
* What is the base URL of this exchange? Used in the
|
||||||
* wire transfer subjects so that merchants and governments
|
* wire transfer subjects so that merchants and governments
|
||||||
@ -294,11 +300,20 @@ parse_aggregator_config (void)
|
|||||||
"taler",
|
"taler",
|
||||||
"CURRENCY_ROUND_UNIT",
|
"CURRENCY_ROUND_UNIT",
|
||||||
¤cy_round_unit)) ||
|
¤cy_round_unit)) ||
|
||||||
( (0 != currency_round_unit.fraction) &&
|
(TALER_amount_is_zero (¤cy_round_unit)) )
|
||||||
(0 != currency_round_unit.value) ) )
|
|
||||||
{
|
{
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||||
"Need non-zero value in section `TALER' under `CURRENCY_ROUND_UNIT'\n");
|
"Need non-zero amount in section `TALER' under `CURRENCY_ROUND_UNIT'\n");
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
TALER_config_get_amount (cfg,
|
||||||
|
"taler",
|
||||||
|
"AML_THRESHOLD",
|
||||||
|
&aml_threshold))
|
||||||
|
{
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||||
|
"Need amount in section `TALER' under `AML_THRESHOLD'\n");
|
||||||
return GNUNET_SYSERR;
|
return GNUNET_SYSERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -524,6 +539,81 @@ kyc_satisfied (struct AggregationUnit *au_active)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called on each @a amount that was found to
|
||||||
|
* be relevant for an AML check.
|
||||||
|
*
|
||||||
|
* @param cls closure with the `struct TALER_Amount *` where we store the sum
|
||||||
|
* @param amount encountered transaction amount
|
||||||
|
* @param date when was the amount encountered
|
||||||
|
* @return #GNUNET_OK to continue to iterate,
|
||||||
|
* #GNUNET_NO to abort iteration
|
||||||
|
* #GNUNET_SYSERR on internal error (also abort itaration)
|
||||||
|
*/
|
||||||
|
static enum GNUNET_GenericReturnValue
|
||||||
|
sum_for_aml (
|
||||||
|
void *cls,
|
||||||
|
const struct TALER_Amount *amount,
|
||||||
|
struct GNUNET_TIME_Absolute date)
|
||||||
|
{
|
||||||
|
struct TALER_Amount *sum = cls;
|
||||||
|
|
||||||
|
(void) date;
|
||||||
|
if (0 >
|
||||||
|
TALER_amount_add (sum,
|
||||||
|
sum,
|
||||||
|
amount))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
|
return GNUNET_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if AML is required for a transfer to @a h_payto.
|
||||||
|
*
|
||||||
|
* @param[in,out] au_active aggregation unit to check for
|
||||||
|
* @return true if AML checks are satisfied
|
||||||
|
*/
|
||||||
|
static bool
|
||||||
|
aml_satisfied (struct AggregationUnit *au_active)
|
||||||
|
{
|
||||||
|
enum GNUNET_DB_QueryStatus qs;
|
||||||
|
struct TALER_Amount total;
|
||||||
|
|
||||||
|
total = au_active->final_amount;
|
||||||
|
qs = db_plugin->select_aggregation_amounts_for_kyc_check (
|
||||||
|
db_plugin->cls,
|
||||||
|
&au_active->h_payto,
|
||||||
|
GNUNET_TIME_absolute_subtract (GNUNET_TIME_absolute_get (),
|
||||||
|
GNUNET_TIME_UNIT_MONTHS),
|
||||||
|
&sum_for_aml,
|
||||||
|
&total);
|
||||||
|
if (qs < 0)
|
||||||
|
{
|
||||||
|
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (0 >= TALER_amount_cmp (&total,
|
||||||
|
&aml_threshold))
|
||||||
|
{
|
||||||
|
/* total <= aml_threshold, do nothing */
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
qs = db_plugin->trigger_aml_process (db_plugin->cls,
|
||||||
|
&au_active->h_payto,
|
||||||
|
&total);
|
||||||
|
if (qs < 0)
|
||||||
|
{
|
||||||
|
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Perform the main aggregation work for @a au. Expects to be in
|
* Perform the main aggregation work for @a au. Expects to be in
|
||||||
* a working transaction, which the caller must also ultimately commit
|
* a working transaction, which the caller must also ultimately commit
|
||||||
@ -649,7 +739,8 @@ do_aggregate (struct AggregationUnit *au)
|
|||||||
TALER_amount_round_down (&au->final_amount,
|
TALER_amount_round_down (&au->final_amount,
|
||||||
¤cy_round_unit)) ||
|
¤cy_round_unit)) ||
|
||||||
(TALER_amount_is_zero (&au->final_amount)) ||
|
(TALER_amount_is_zero (&au->final_amount)) ||
|
||||||
(! kyc_satisfied (au)) )
|
(! kyc_satisfied (au)) ||
|
||||||
|
(! aml_satisfied (au)) )
|
||||||
{
|
{
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
"Not ready for wire transfer (%d/%s)\n",
|
"Not ready for wire transfer (%d/%s)\n",
|
||||||
|
@ -233,8 +233,7 @@ again:
|
|||||||
MHD_HTTP_OK,
|
MHD_HTTP_OK,
|
||||||
GNUNET_JSON_pack_timestamp ("exchange_timestamp",
|
GNUNET_JSON_pack_timestamp ("exchange_timestamp",
|
||||||
bdc->exchange_timestamp),
|
bdc->exchange_timestamp),
|
||||||
GNUNET_JSON_pack_data_auto (
|
GNUNET_JSON_pack_data_auto ("exchange_pub",
|
||||||
"exchange_pub",
|
|
||||||
&pub),
|
&pub),
|
||||||
GNUNET_JSON_pack_array_steal ("exchange_sigs",
|
GNUNET_JSON_pack_array_steal ("exchange_sigs",
|
||||||
arr));
|
arr));
|
||||||
@ -268,13 +267,12 @@ batch_deposit_transaction (void *cls,
|
|||||||
* insert or update the record. */
|
* insert or update the record. */
|
||||||
if (dc->has_policy)
|
if (dc->has_policy)
|
||||||
{
|
{
|
||||||
qs = TEH_plugin->persist_policy_details (TEH_plugin->cls,
|
qs = TEH_plugin->persist_policy_details (
|
||||||
|
TEH_plugin->cls,
|
||||||
&dc->policy_details,
|
&dc->policy_details,
|
||||||
&dc->policy_details_serial_id,
|
&dc->policy_details_serial_id,
|
||||||
&dc->policy_details.
|
&dc->policy_details.accumulated_total,
|
||||||
accumulated_total,
|
&dc->policy_details.fulfillment_state);
|
||||||
&dc->policy_details.
|
|
||||||
fulfillment_state);
|
|
||||||
if (qs < 0)
|
if (qs < 0)
|
||||||
return qs;
|
return qs;
|
||||||
}
|
}
|
||||||
@ -295,7 +293,7 @@ batch_deposit_transaction (void *cls,
|
|||||||
deposit,
|
deposit,
|
||||||
known_coin_id,
|
known_coin_id,
|
||||||
&dc->h_payto,
|
&dc->h_payto,
|
||||||
(dc->has_policy)
|
dc->has_policy
|
||||||
? &dc->policy_details_serial_id
|
? &dc->policy_details_serial_id
|
||||||
: NULL,
|
: NULL,
|
||||||
&dc->exchange_timestamp,
|
&dc->exchange_timestamp,
|
||||||
|
@ -556,8 +556,10 @@ EXTRA_DIST = \
|
|||||||
test_exchange_api.conf \
|
test_exchange_api.conf \
|
||||||
test_exchange_api-cs.conf \
|
test_exchange_api-cs.conf \
|
||||||
test_exchange_api-rsa.conf \
|
test_exchange_api-rsa.conf \
|
||||||
|
test_exchange_api_twisted.conf \
|
||||||
test_exchange_api_twisted-cs.conf \
|
test_exchange_api_twisted-cs.conf \
|
||||||
test_exchange_api_twisted-rsa.conf \
|
test_exchange_api_twisted-rsa.conf \
|
||||||
|
test_exchange_api_keys_cherry_picking.conf \
|
||||||
test_exchange_api_keys_cherry_picking-cs.conf \
|
test_exchange_api_keys_cherry_picking-cs.conf \
|
||||||
test_exchange_api_keys_cherry_picking-rsa.conf \
|
test_exchange_api_keys_cherry_picking-rsa.conf \
|
||||||
test_exchange_api_expire_reserve_now-cs.conf \
|
test_exchange_api_expire_reserve_now-cs.conf \
|
||||||
|
@ -17,6 +17,7 @@ DURATION = 14 days
|
|||||||
# Currency supported by the exchange (can only be one)
|
# Currency supported by the exchange (can only be one)
|
||||||
CURRENCY = EUR
|
CURRENCY = EUR
|
||||||
CURRENCY_ROUND_UNIT = EUR:0.01
|
CURRENCY_ROUND_UNIT = EUR:0.01
|
||||||
|
AML_THRESHOLD = EUR:1000000
|
||||||
|
|
||||||
[exchange]
|
[exchange]
|
||||||
# The DB plugin to use
|
# The DB plugin to use
|
||||||
|
@ -17,6 +17,7 @@ DURATION = 14 days
|
|||||||
# Currency supported by the exchange (can only be one)
|
# Currency supported by the exchange (can only be one)
|
||||||
CURRENCY = EUR
|
CURRENCY = EUR
|
||||||
CURRENCY_ROUND_UNIT = EUR:0.01
|
CURRENCY_ROUND_UNIT = EUR:0.01
|
||||||
|
AML_THRESHOLD = EUR:1000000
|
||||||
|
|
||||||
[exchange]
|
[exchange]
|
||||||
# The DB plugin to use
|
# The DB plugin to use
|
||||||
|
@ -21,6 +21,7 @@ DURATION = 14 days
|
|||||||
# Currency supported by the exchange (can only be one)
|
# Currency supported by the exchange (can only be one)
|
||||||
CURRENCY = EUR
|
CURRENCY = EUR
|
||||||
CURRENCY_ROUND_UNIT = EUR:0.01
|
CURRENCY_ROUND_UNIT = EUR:0.01
|
||||||
|
AML_THRESHOLD = EUR:1000000
|
||||||
|
|
||||||
[auditor]
|
[auditor]
|
||||||
BASE_URL = "http://localhost:8083/"
|
BASE_URL = "http://localhost:8083/"
|
||||||
|
@ -21,6 +21,7 @@ DURATION = 14 days
|
|||||||
# Currency supported by the exchange (can only be one)
|
# Currency supported by the exchange (can only be one)
|
||||||
CURRENCY = EUR
|
CURRENCY = EUR
|
||||||
CURRENCY_ROUND_UNIT = EUR:0.01
|
CURRENCY_ROUND_UNIT = EUR:0.01
|
||||||
|
AML_THRESHOLD = EUR:1000000
|
||||||
|
|
||||||
[auditor]
|
[auditor]
|
||||||
BASE_URL = "http://localhost:8083/"
|
BASE_URL = "http://localhost:8083/"
|
||||||
|
@ -20,6 +20,7 @@ DURATION = 14 days
|
|||||||
# Currency supported by the exchange (can only be one)
|
# Currency supported by the exchange (can only be one)
|
||||||
CURRENCY = EUR
|
CURRENCY = EUR
|
||||||
CURRENCY_ROUND_UNIT = EUR:0.01
|
CURRENCY_ROUND_UNIT = EUR:0.01
|
||||||
|
AML_THRESHOLD = EUR:1000000
|
||||||
|
|
||||||
[auditor]
|
[auditor]
|
||||||
BASE_URL = "http://localhost:8083/"
|
BASE_URL = "http://localhost:8083/"
|
||||||
|
@ -1,91 +1,11 @@
|
|||||||
# This file is in the public domain.
|
# This file is in the public domain.
|
||||||
#
|
#
|
||||||
[PATHS]
|
@INLINE@ test_exchange_api_keys_cherry_picking.conf
|
||||||
# Persistent data storage for the testcase
|
|
||||||
TALER_TEST_HOME = test_exchange_api_keys_cherry_picking_home/
|
|
||||||
TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/${USER:-}/taler-system-runtime/
|
|
||||||
|
|
||||||
# Persistent data storage
|
|
||||||
TALER_DATA_HOME = $TALER_HOME/.local/share/taler/
|
|
||||||
|
|
||||||
# Configuration files
|
|
||||||
TALER_CONFIG_HOME = $TALER_HOME/.config/taler/
|
|
||||||
|
|
||||||
# Cached data, no big deal if lost
|
|
||||||
TALER_CACHE_HOME = $TALER_HOME/.cache/taler/
|
|
||||||
|
|
||||||
[taler]
|
|
||||||
# Currency supported by the exchange (can only be one)
|
|
||||||
CURRENCY = EUR
|
|
||||||
|
|
||||||
[taler-exchange-secmod-cs]
|
|
||||||
# Reduce from 1 year to speed up test
|
|
||||||
LOOKAHEAD_SIGN = 24 days
|
|
||||||
|
|
||||||
[taler-exchange-secmod-eddsa]
|
|
||||||
# Reduce from 1 year to speed up test
|
|
||||||
LOOKAHEAD_SIGN = 24 days
|
|
||||||
# Reduce from 12 weeks to ensure we have multiple
|
|
||||||
DURATION = 14 days
|
|
||||||
|
|
||||||
[auditor]
|
|
||||||
BASE_URL = "http://localhost:8083/"
|
|
||||||
|
|
||||||
# HTTP port the auditor listens to
|
|
||||||
PORT = 8083
|
|
||||||
|
|
||||||
[exchange]
|
|
||||||
# HTTP port the exchange listens to
|
|
||||||
PORT = 8081
|
|
||||||
|
|
||||||
# Master public key used to sign the exchange's various keys
|
|
||||||
MASTER_PUBLIC_KEY = 98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG
|
|
||||||
|
|
||||||
# How to access our database
|
|
||||||
DB = postgres
|
|
||||||
|
|
||||||
# Base URL of the exchange. Must be set to a URL where the
|
|
||||||
# exchange (or the twister) is actually listening.
|
|
||||||
BASE_URL = "http://localhost:8081/"
|
|
||||||
|
|
||||||
|
|
||||||
[exchangedb-postgres]
|
|
||||||
CONFIG = "postgres:///talercheck"
|
|
||||||
|
|
||||||
[auditordb-postgres]
|
|
||||||
CONFIG = "postgres:///talercheck"
|
|
||||||
|
|
||||||
[exchange-account-1]
|
|
||||||
PAYTO_URI = "payto://x-taler-bank/localhost/42?receiver-name=42"
|
|
||||||
|
|
||||||
[exchange-accountcredentials-1]
|
|
||||||
WIRE_GATEWAY_URL = "http://localhost:9082/42/"
|
|
||||||
|
|
||||||
[exchange-account-2]
|
|
||||||
PAYTO_URI = "payto://x-taler-bank/localhost/2?receiver-name=2"
|
|
||||||
ENABLE_DEBIT = YES
|
|
||||||
ENABLE_CREDIT = YES
|
|
||||||
|
|
||||||
[exchange-accountcredentials-2]
|
|
||||||
WIRE_GATEWAY_URL = "http://localhost:9082/2/"
|
|
||||||
|
|
||||||
# Authentication information for basic authentication
|
|
||||||
TALER_BANK_AUTH_METHOD = "basic"
|
|
||||||
USERNAME = user
|
|
||||||
PASSWORD = pass
|
|
||||||
|
|
||||||
[bank]
|
|
||||||
HTTP_PORT=8082
|
|
||||||
|
|
||||||
[taler-exchange-secmod-cs]
|
[taler-exchange-secmod-cs]
|
||||||
OVERLAP_DURATION = 1 s
|
OVERLAP_DURATION = 1 s
|
||||||
LOOKAHEAD_SIGN = 20 s
|
LOOKAHEAD_SIGN = 20 s
|
||||||
|
|
||||||
[taler-exchange-secmod-eddsa]
|
|
||||||
OVERLAP_DURATION = 1 s
|
|
||||||
DURATION = 30 s
|
|
||||||
LOOKAHEAD_SIGN = 20 s
|
|
||||||
|
|
||||||
[coin_eur_1]
|
[coin_eur_1]
|
||||||
value = EUR:1
|
value = EUR:1
|
||||||
duration_withdraw = 5 s
|
duration_withdraw = 5 s
|
||||||
|
@ -1,91 +1,11 @@
|
|||||||
# This file is in the public domain.
|
# This file is in the public domain.
|
||||||
#
|
#
|
||||||
[PATHS]
|
@INLINE@ test_exchange_api_keys_cherry_picking.conf
|
||||||
# Persistent data storage for the testcase
|
|
||||||
TALER_TEST_HOME = test_exchange_api_keys_cherry_picking_home/
|
|
||||||
TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/${USER:-}/taler-system-runtime/
|
|
||||||
|
|
||||||
# Persistent data storage
|
|
||||||
TALER_DATA_HOME = $TALER_HOME/.local/share/taler/
|
|
||||||
|
|
||||||
# Configuration files
|
|
||||||
TALER_CONFIG_HOME = $TALER_HOME/.config/taler/
|
|
||||||
|
|
||||||
# Cached data, no big deal if lost
|
|
||||||
TALER_CACHE_HOME = $TALER_HOME/.cache/taler/
|
|
||||||
|
|
||||||
[taler]
|
|
||||||
# Currency supported by the exchange (can only be one)
|
|
||||||
CURRENCY = EUR
|
|
||||||
|
|
||||||
[taler-exchange-secmod-rsa]
|
|
||||||
# Reduce from 1 year to speed up test
|
|
||||||
LOOKAHEAD_SIGN = 24 days
|
|
||||||
|
|
||||||
[taler-exchange-secmod-eddsa]
|
|
||||||
# Reduce from 1 year to speed up test
|
|
||||||
LOOKAHEAD_SIGN = 24 days
|
|
||||||
# Reduce from 12 weeks to ensure we have multiple
|
|
||||||
DURATION = 14 days
|
|
||||||
|
|
||||||
[auditor]
|
|
||||||
BASE_URL = "http://localhost:8083/"
|
|
||||||
|
|
||||||
# HTTP port the auditor listens to
|
|
||||||
PORT = 8083
|
|
||||||
|
|
||||||
[exchange]
|
|
||||||
# HTTP port the exchange listens to
|
|
||||||
PORT = 8081
|
|
||||||
|
|
||||||
# Master public key used to sign the exchange's various keys
|
|
||||||
MASTER_PUBLIC_KEY = 98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG
|
|
||||||
|
|
||||||
# How to access our database
|
|
||||||
DB = postgres
|
|
||||||
|
|
||||||
# Base URL of the exchange. Must be set to a URL where the
|
|
||||||
# exchange (or the twister) is actually listening.
|
|
||||||
BASE_URL = "http://localhost:8081/"
|
|
||||||
|
|
||||||
|
|
||||||
[exchangedb-postgres]
|
|
||||||
CONFIG = "postgres:///talercheck"
|
|
||||||
|
|
||||||
[auditordb-postgres]
|
|
||||||
CONFIG = "postgres:///talercheck"
|
|
||||||
|
|
||||||
[exchange-account-1]
|
|
||||||
PAYTO_URI = "payto://x-taler-bank/localhost/42?receiver-name=42"
|
|
||||||
|
|
||||||
[exchange-accountcredentials-1]
|
|
||||||
WIRE_GATEWAY_URL = "http://localhost:9082/42/"
|
|
||||||
|
|
||||||
[exchange-account-2]
|
|
||||||
PAYTO_URI = "payto://x-taler-bank/localhost/2?receiver-name=2"
|
|
||||||
ENABLE_DEBIT = YES
|
|
||||||
ENABLE_CREDIT = YES
|
|
||||||
|
|
||||||
[exchange-accountcredentials-2]
|
|
||||||
WIRE_GATEWAY_URL = "http://localhost:9082/2/"
|
|
||||||
|
|
||||||
# Authentication information for basic authentication
|
|
||||||
TALER_BANK_AUTH_METHOD = "basic"
|
|
||||||
USERNAME = user
|
|
||||||
PASSWORD = pass
|
|
||||||
|
|
||||||
[bank]
|
|
||||||
HTTP_PORT=8082
|
|
||||||
|
|
||||||
[taler-exchange-secmod-rsa]
|
[taler-exchange-secmod-rsa]
|
||||||
OVERLAP_DURATION = 1 s
|
OVERLAP_DURATION = 1 s
|
||||||
LOOKAHEAD_SIGN = 20 s
|
LOOKAHEAD_SIGN = 20 s
|
||||||
|
|
||||||
[taler-exchange-secmod-eddsa]
|
|
||||||
OVERLAP_DURATION = 1 s
|
|
||||||
DURATION = 30 s
|
|
||||||
LOOKAHEAD_SIGN = 20 s
|
|
||||||
|
|
||||||
[coin_eur_1]
|
[coin_eur_1]
|
||||||
value = EUR:1
|
value = EUR:1
|
||||||
duration_withdraw = 5 s
|
duration_withdraw = 5 s
|
||||||
|
74
src/testing/test_exchange_api_keys_cherry_picking.conf
Normal file
74
src/testing/test_exchange_api_keys_cherry_picking.conf
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
# This file is in the public domain.
|
||||||
|
#
|
||||||
|
[PATHS]
|
||||||
|
# Persistent data storage for the testcase
|
||||||
|
TALER_TEST_HOME = test_exchange_api_keys_cherry_picking_home/
|
||||||
|
TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/${USER:-}/taler-system-runtime/
|
||||||
|
|
||||||
|
# Persistent data storage
|
||||||
|
TALER_DATA_HOME = $TALER_HOME/.local/share/taler/
|
||||||
|
|
||||||
|
# Configuration files
|
||||||
|
TALER_CONFIG_HOME = $TALER_HOME/.config/taler/
|
||||||
|
|
||||||
|
# Cached data, no big deal if lost
|
||||||
|
TALER_CACHE_HOME = $TALER_HOME/.cache/taler/
|
||||||
|
|
||||||
|
[taler]
|
||||||
|
# Currency supported by the exchange (can only be one)
|
||||||
|
CURRENCY = EUR
|
||||||
|
|
||||||
|
[taler-exchange-secmod-eddsa]
|
||||||
|
OVERLAP_DURATION = 1 s
|
||||||
|
DURATION = 30 s
|
||||||
|
LOOKAHEAD_SIGN = 20 s
|
||||||
|
|
||||||
|
|
||||||
|
[auditor]
|
||||||
|
BASE_URL = "http://localhost:8083/"
|
||||||
|
|
||||||
|
# HTTP port the auditor listens to
|
||||||
|
PORT = 8083
|
||||||
|
|
||||||
|
[exchange]
|
||||||
|
# HTTP port the exchange listens to
|
||||||
|
PORT = 8081
|
||||||
|
|
||||||
|
# Master public key used to sign the exchange's various keys
|
||||||
|
MASTER_PUBLIC_KEY = 98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG
|
||||||
|
|
||||||
|
# How to access our database
|
||||||
|
DB = postgres
|
||||||
|
|
||||||
|
# Base URL of the exchange. Must be set to a URL where the
|
||||||
|
# exchange (or the twister) is actually listening.
|
||||||
|
BASE_URL = "http://localhost:8081/"
|
||||||
|
|
||||||
|
[exchangedb-postgres]
|
||||||
|
CONFIG = "postgres:///talercheck"
|
||||||
|
|
||||||
|
[auditordb-postgres]
|
||||||
|
CONFIG = "postgres:///talercheck"
|
||||||
|
|
||||||
|
[exchange-account-1]
|
||||||
|
PAYTO_URI = "payto://x-taler-bank/localhost/42?receiver-name=42"
|
||||||
|
|
||||||
|
[exchange-accountcredentials-1]
|
||||||
|
WIRE_GATEWAY_URL = "http://localhost:9082/42/"
|
||||||
|
|
||||||
|
[exchange-account-2]
|
||||||
|
PAYTO_URI = "payto://x-taler-bank/localhost/2?receiver-name=2"
|
||||||
|
ENABLE_DEBIT = YES
|
||||||
|
ENABLE_CREDIT = YES
|
||||||
|
|
||||||
|
[exchange-accountcredentials-2]
|
||||||
|
WIRE_GATEWAY_URL = "http://localhost:9082/2/"
|
||||||
|
|
||||||
|
# Authentication information for basic authentication
|
||||||
|
TALER_BANK_AUTH_METHOD = "basic"
|
||||||
|
USERNAME = user
|
||||||
|
PASSWORD = pass
|
||||||
|
|
||||||
|
[bank]
|
||||||
|
HTTP_PORT=8082
|
||||||
|
|
@ -1,150 +1,4 @@
|
|||||||
# This file is in the public domain.
|
# This file is in the public domain.
|
||||||
[PATHS]
|
@INLINE@ test_exchange_api-cs.conf
|
||||||
# Persistent data storage for the testcase
|
@INLINE@ test_exchange_api-twisted.conf
|
||||||
TALER_TEST_HOME = test_exchange_api_home/
|
|
||||||
TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/${USER:-}/taler-system-runtime/
|
|
||||||
|
|
||||||
[taler-exchange-secmod-rsa]
|
|
||||||
# Reduce from 1 year to speed up test
|
|
||||||
LOOKAHEAD_SIGN = 24 days
|
|
||||||
|
|
||||||
[taler-exchange-secmod-eddsa]
|
|
||||||
# Reduce from 1 year to speed up test
|
|
||||||
LOOKAHEAD_SIGN = 24 days
|
|
||||||
# Reduce from 12 weeks to ensure we have multiple
|
|
||||||
DURATION = 14 days
|
|
||||||
|
|
||||||
[taler]
|
|
||||||
# Currency supported by the exchange (can only be one)
|
|
||||||
CURRENCY = EUR
|
|
||||||
CURRENCY_ROUND_UNIT = EUR:0.01
|
|
||||||
|
|
||||||
[exchange]
|
|
||||||
# HTTP port the exchange listens to
|
|
||||||
PORT = 8081
|
|
||||||
|
|
||||||
# Master public key used to sign the exchange's various keys
|
|
||||||
MASTER_PUBLIC_KEY = 98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG
|
|
||||||
|
|
||||||
# How to access our database
|
|
||||||
DB = postgres
|
|
||||||
|
|
||||||
# Base URL of the exchange ('S PROXY). This URL is where the
|
|
||||||
# twister listens at, so that it will be able to get all the
|
|
||||||
# connection addressed to the exchange. In fact, the presence
|
|
||||||
# of the twister is 100% transparent to the test case, as it
|
|
||||||
# only seeks the exchange/BASE_URL URL to connect to the exchange.
|
|
||||||
BASE_URL = "http://localhost:8888/"
|
|
||||||
|
|
||||||
[exchangedb-postgres]
|
|
||||||
CONFIG = "postgres:///talercheck"
|
|
||||||
|
|
||||||
[auditor]
|
|
||||||
BASE_URL = "http://localhost:8083/"
|
|
||||||
PORT = 8083
|
|
||||||
|
|
||||||
[auditordb-postgres]
|
|
||||||
CONFIG = "postgres:///talercheck"
|
|
||||||
|
|
||||||
[exchange-account-1]
|
|
||||||
# What is the URL of our account?
|
|
||||||
PAYTO_URI = "payto://x-taler-bank/localhost/42?receiver-name=42"
|
|
||||||
|
|
||||||
[exchange-accountcredentials-1]
|
|
||||||
WIRE_GATEWAY_URL = "http://localhost:9081/42/"
|
|
||||||
WIRE_GATEWAY_AUTH_METHOD = NONE
|
|
||||||
|
|
||||||
[exchange-account-2]
|
|
||||||
PAYTO_URI = "payto://x-taler-bank/localhost/2?receiver-name=2"
|
|
||||||
ENABLE_DEBIT = YES
|
|
||||||
ENABLE_CREDIT = YES
|
|
||||||
|
|
||||||
[exchange-accountcredentials-2]
|
|
||||||
WIRE_GATEWAY_URL = "http://localhost:8082/2/"
|
|
||||||
WIRE_GATEWAY_AUTH_METHOD = BASIC
|
|
||||||
USERNAME = user
|
|
||||||
PASSWORD = pass
|
|
||||||
|
|
||||||
[bank]
|
|
||||||
HTTP_PORT = 8082
|
|
||||||
|
|
||||||
[twister]
|
|
||||||
# HTTP listen port for twister
|
|
||||||
HTTP_PORT = 8888
|
|
||||||
SERVE = tcp
|
|
||||||
|
|
||||||
# HTTP Destination for twister. The test-Webserver needs
|
|
||||||
# to listen on the port used here. Note: no trailing '/'!
|
|
||||||
DESTINATION_BASE_URL = "http://localhost:8081"
|
|
||||||
|
|
||||||
# Control port for TCP
|
|
||||||
# PORT = 8889
|
|
||||||
HOSTNAME = localhost
|
|
||||||
ACCEPT_FROM = 127.0.0.1;
|
|
||||||
ACCEPT_FROM6 = ::1;
|
|
||||||
|
|
||||||
# Control port for UNIX
|
|
||||||
UNIXPATH = /tmp/taler-service-twister.sock
|
|
||||||
UNIX_MATCH_UID = NO
|
|
||||||
UNIX_MATCH_GID = YES
|
|
||||||
|
|
||||||
# Launching of twister by ARM
|
|
||||||
# BINARY = taler-service-twister
|
|
||||||
# AUTOSTART = NO
|
|
||||||
# FORCESTART = NO
|
|
||||||
|
|
||||||
|
|
||||||
[coin_eur_ct_1]
|
|
||||||
value = EUR:0.01
|
|
||||||
duration_withdraw = 7 days
|
|
||||||
duration_spend = 2 years
|
|
||||||
duration_legal = 3 years
|
|
||||||
fee_withdraw = EUR:0.00
|
|
||||||
fee_deposit = EUR:0.00
|
|
||||||
fee_refresh = EUR:0.01
|
|
||||||
fee_refund = EUR:0.01
|
|
||||||
CIPHER = CS
|
|
||||||
|
|
||||||
[coin_eur_ct_10]
|
|
||||||
value = EUR:0.10
|
|
||||||
duration_withdraw = 7 days
|
|
||||||
duration_spend = 2 years
|
|
||||||
duration_legal = 3 years
|
|
||||||
fee_withdraw = EUR:0.01
|
|
||||||
fee_deposit = EUR:0.01
|
|
||||||
fee_refresh = EUR:0.03
|
|
||||||
fee_refund = EUR:0.01
|
|
||||||
CIPHER = CS
|
|
||||||
|
|
||||||
[coin_eur_1]
|
|
||||||
value = EUR:1
|
|
||||||
duration_withdraw = 7 days
|
|
||||||
duration_spend = 2 years
|
|
||||||
duration_legal = 3 years
|
|
||||||
fee_withdraw = EUR:0.01
|
|
||||||
fee_deposit = EUR:0.01
|
|
||||||
fee_refresh = EUR:0.03
|
|
||||||
fee_refund = EUR:0.01
|
|
||||||
CIPHER = CS
|
|
||||||
|
|
||||||
[coin_eur_5]
|
|
||||||
value = EUR:5
|
|
||||||
duration_withdraw = 7 days
|
|
||||||
duration_spend = 2 years
|
|
||||||
duration_legal = 3 years
|
|
||||||
fee_withdraw = EUR:0.01
|
|
||||||
fee_deposit = EUR:0.01
|
|
||||||
fee_refresh = EUR:0.03
|
|
||||||
fee_refund = EUR:0.01
|
|
||||||
CIPHER = CS
|
|
||||||
|
|
||||||
[coin_eur_10]
|
|
||||||
value = EUR:10
|
|
||||||
duration_withdraw = 7 days
|
|
||||||
duration_spend = 2 years
|
|
||||||
duration_legal = 3 years
|
|
||||||
fee_withdraw = EUR:0.01
|
|
||||||
fee_deposit = EUR:0.01
|
|
||||||
fee_refresh = EUR:0.03
|
|
||||||
fee_refund = EUR:0.01
|
|
||||||
CIPHER = CS
|
|
||||||
|
@ -1,156 +1,4 @@
|
|||||||
# This file is in the public domain.
|
# This file is in the public domain.
|
||||||
[PATHS]
|
@INLINE@ test_exchange_api-rsa.conf
|
||||||
# Persistent data storage for the testcase
|
@INLINE@ test_exchange_api-twisted.conf
|
||||||
TALER_TEST_HOME = test_exchange_api_home/
|
|
||||||
TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/${USER:-}/taler-system-runtime/
|
|
||||||
|
|
||||||
[taler-exchange-secmod-rsa]
|
|
||||||
# Reduce from 1 year to speed up test
|
|
||||||
LOOKAHEAD_SIGN = 24 days
|
|
||||||
|
|
||||||
[taler-exchange-secmod-eddsa]
|
|
||||||
# Reduce from 1 year to speed up test
|
|
||||||
LOOKAHEAD_SIGN = 24 days
|
|
||||||
# Reduce from 12 weeks to ensure we have multiple
|
|
||||||
DURATION = 14 days
|
|
||||||
|
|
||||||
[taler]
|
|
||||||
# Currency supported by the exchange (can only be one)
|
|
||||||
CURRENCY = EUR
|
|
||||||
CURRENCY_ROUND_UNIT = EUR:0.01
|
|
||||||
|
|
||||||
[exchange]
|
|
||||||
# HTTP port the exchange listens to
|
|
||||||
PORT = 8081
|
|
||||||
|
|
||||||
# Master public key used to sign the exchange's various keys
|
|
||||||
MASTER_PUBLIC_KEY = 98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG
|
|
||||||
|
|
||||||
# How to access our database
|
|
||||||
DB = postgres
|
|
||||||
|
|
||||||
# Base URL of the exchange ('S PROXY). This URL is where the
|
|
||||||
# twister listens at, so that it will be able to get all the
|
|
||||||
# connection addressed to the exchange. In fact, the presence
|
|
||||||
# of the twister is 100% transparent to the test case, as it
|
|
||||||
# only seeks the exchange/BASE_URL URL to connect to the exchange.
|
|
||||||
BASE_URL = "http://localhost:8888/"
|
|
||||||
|
|
||||||
[exchangedb-postgres]
|
|
||||||
CONFIG = "postgres:///talercheck"
|
|
||||||
|
|
||||||
[auditor]
|
|
||||||
BASE_URL = "http://localhost:8083/"
|
|
||||||
PORT = 8083
|
|
||||||
|
|
||||||
[auditordb-postgres]
|
|
||||||
CONFIG = "postgres:///talercheck"
|
|
||||||
|
|
||||||
[exchange-account-1]
|
|
||||||
# What is the URL of our account?
|
|
||||||
PAYTO_URI = "payto://x-taler-bank/localhost/42?receiver-name=42"
|
|
||||||
|
|
||||||
[exchange-accountcredentials-1]
|
|
||||||
WIRE_GATEWAY_URL = "http://localhost:9081/42/"
|
|
||||||
WIRE_GATEWAY_AUTH_METHOD = NONE
|
|
||||||
|
|
||||||
[exchange-account-2]
|
|
||||||
PAYTO_URI = "payto://x-taler-bank/localhost/2?receiver-name=2"
|
|
||||||
ENABLE_DEBIT = YES
|
|
||||||
ENABLE_CREDIT = YES
|
|
||||||
|
|
||||||
[exchange-accountcredentials-2]
|
|
||||||
WIRE_GATEWAY_URL = "http://localhost:8082/2/"
|
|
||||||
WIRE_GATEWAY_AUTH_METHOD = BASIC
|
|
||||||
USERNAME = user
|
|
||||||
PASSWORD = pass
|
|
||||||
|
|
||||||
[bank]
|
|
||||||
HTTP_PORT = 8082
|
|
||||||
|
|
||||||
[twister]
|
|
||||||
# HTTP listen port for twister
|
|
||||||
HTTP_PORT = 8888
|
|
||||||
SERVE = tcp
|
|
||||||
|
|
||||||
# HTTP Destination for twister. The test-Webserver needs
|
|
||||||
# to listen on the port used here. Note: no trailing '/'!
|
|
||||||
DESTINATION_BASE_URL = "http://localhost:8081"
|
|
||||||
|
|
||||||
# Control port for TCP
|
|
||||||
# PORT = 8889
|
|
||||||
HOSTNAME = localhost
|
|
||||||
ACCEPT_FROM = 127.0.0.1;
|
|
||||||
ACCEPT_FROM6 = ::1;
|
|
||||||
|
|
||||||
# Control port for UNIX
|
|
||||||
UNIXPATH = /tmp/taler-service-twister.sock
|
|
||||||
UNIX_MATCH_UID = NO
|
|
||||||
UNIX_MATCH_GID = YES
|
|
||||||
|
|
||||||
# Launching of twister by ARM
|
|
||||||
# BINARY = taler-service-twister
|
|
||||||
# AUTOSTART = NO
|
|
||||||
# FORCESTART = NO
|
|
||||||
|
|
||||||
|
|
||||||
[coin_eur_ct_1]
|
|
||||||
value = EUR:0.01
|
|
||||||
duration_withdraw = 7 days
|
|
||||||
duration_spend = 2 years
|
|
||||||
duration_legal = 3 years
|
|
||||||
fee_withdraw = EUR:0.00
|
|
||||||
fee_deposit = EUR:0.00
|
|
||||||
fee_refresh = EUR:0.01
|
|
||||||
fee_refund = EUR:0.01
|
|
||||||
rsa_keysize = 1024
|
|
||||||
CIPHER = RSA
|
|
||||||
|
|
||||||
|
|
||||||
[coin_eur_ct_10]
|
|
||||||
value = EUR:0.10
|
|
||||||
duration_withdraw = 7 days
|
|
||||||
duration_spend = 2 years
|
|
||||||
duration_legal = 3 years
|
|
||||||
fee_withdraw = EUR:0.01
|
|
||||||
fee_deposit = EUR:0.01
|
|
||||||
fee_refresh = EUR:0.03
|
|
||||||
fee_refund = EUR:0.01
|
|
||||||
rsa_keysize = 1024
|
|
||||||
CIPHER = RSA
|
|
||||||
|
|
||||||
[coin_eur_1]
|
|
||||||
value = EUR:1
|
|
||||||
duration_withdraw = 7 days
|
|
||||||
duration_spend = 2 years
|
|
||||||
duration_legal = 3 years
|
|
||||||
fee_withdraw = EUR:0.01
|
|
||||||
fee_deposit = EUR:0.01
|
|
||||||
fee_refresh = EUR:0.03
|
|
||||||
fee_refund = EUR:0.01
|
|
||||||
rsa_keysize = 1024
|
|
||||||
CIPHER = RSA
|
|
||||||
|
|
||||||
[coin_eur_5]
|
|
||||||
value = EUR:5
|
|
||||||
duration_withdraw = 7 days
|
|
||||||
duration_spend = 2 years
|
|
||||||
duration_legal = 3 years
|
|
||||||
fee_withdraw = EUR:0.01
|
|
||||||
fee_deposit = EUR:0.01
|
|
||||||
fee_refresh = EUR:0.03
|
|
||||||
fee_refund = EUR:0.01
|
|
||||||
rsa_keysize = 1024
|
|
||||||
CIPHER = RSA
|
|
||||||
|
|
||||||
[coin_eur_10]
|
|
||||||
value = EUR:10
|
|
||||||
duration_withdraw = 7 days
|
|
||||||
duration_spend = 2 years
|
|
||||||
duration_legal = 3 years
|
|
||||||
fee_withdraw = EUR:0.01
|
|
||||||
fee_deposit = EUR:0.01
|
|
||||||
fee_refresh = EUR:0.03
|
|
||||||
fee_refund = EUR:0.01
|
|
||||||
rsa_keysize = 1024
|
|
||||||
CIPHER = RSA
|
|
||||||
|
33
src/testing/test_exchange_api_twisted.conf
Normal file
33
src/testing/test_exchange_api_twisted.conf
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# This file is in the public domain.
|
||||||
|
|
||||||
|
[exchange]
|
||||||
|
# Base URL of the exchange ('S PROXY). This URL is where the
|
||||||
|
# twister listens at, so that it will be able to get all the
|
||||||
|
# connection addressed to the exchange. In fact, the presence
|
||||||
|
# of the twister is 100% transparent to the test case, as it
|
||||||
|
# only seeks the exchange/BASE_URL URL to connect to the exchange.
|
||||||
|
BASE_URL = "http://localhost:8888/"
|
||||||
|
|
||||||
|
[bank]
|
||||||
|
HTTP_PORT = 8082
|
||||||
|
|
||||||
|
[twister]
|
||||||
|
# HTTP listen port for twister
|
||||||
|
HTTP_PORT = 8888
|
||||||
|
SERVE = tcp
|
||||||
|
|
||||||
|
# HTTP Destination for twister. The test-Webserver needs
|
||||||
|
# to listen on the port used here. Note: no trailing '/'!
|
||||||
|
DESTINATION_BASE_URL = "http://localhost:8081"
|
||||||
|
|
||||||
|
# Control port for TCP
|
||||||
|
# PORT = 8889
|
||||||
|
HOSTNAME = localhost
|
||||||
|
ACCEPT_FROM = 127.0.0.1;
|
||||||
|
ACCEPT_FROM6 = ::1;
|
||||||
|
|
||||||
|
# Control port for UNIX
|
||||||
|
UNIXPATH = /tmp/taler-service-twister.sock
|
||||||
|
UNIX_MATCH_UID = NO
|
||||||
|
UNIX_MATCH_GID = YES
|
||||||
|
|
@ -21,6 +21,7 @@ DURATION = 14 days
|
|||||||
# Currency supported by the exchange (can only be one)
|
# Currency supported by the exchange (can only be one)
|
||||||
CURRENCY = EUR
|
CURRENCY = EUR
|
||||||
CURRENCY_ROUND_UNIT = EUR:0.01
|
CURRENCY_ROUND_UNIT = EUR:0.01
|
||||||
|
AML_THRESHOLD = EUR:1000000
|
||||||
|
|
||||||
[auditor]
|
[auditor]
|
||||||
BASE_URL = "http://localhost:8083/"
|
BASE_URL = "http://localhost:8083/"
|
||||||
|
Loading…
Reference in New Issue
Block a user