exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

test_exchange_api.conf (12083B)


      1 # This file is in the public domain.
      2 #
      3 
      4 [PATHS]
      5 TALER_TEST_HOME = test_exchange_api_home
      6 TALER_HOME = ${TALER_TEST_HOME:-${HOME:-${USERPROFILE}}}
      7 TALER_EXCHANGE_DATA_HOME = ${XDG_DATA_HOME:-${TALER_HOME}/.local/share}/taler-exchange/
      8 TALER_AUDITOR_DATA_HOME = ${XDG_DATA_HOME:-${TALER_HOME}/.local/share}/taler-auditor/
      9 TALER_EXCHANGE_CONFIG_HOME = ${XDG_CONFIG_HOME:-${TALER_HOME}/.config}/taler-exchange/
     10 TALER_AUDITOR_CONFIG_HOME = ${XDG_CONFIG_HOME:-${TALER_HOME}/.config}/taler-auditor/
     11 TALER_EXCHANGE_CACHE_HOME = ${XDG_CACHE_HOME:-${TALER_HOME}/.cache}/taler-exchange/
     12 TALER_AUDITOR_CACHE_HOME = ${XDG_CACHE_HOME:-${TALER_HOME}/.cache}/taler-auditor/
     13 TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/${USER:-}/taler-runtime/
     14 
     15 [libeufin-bank]
     16 CURRENCY = EUR
     17 DEFAULT_CUSTOMER_DEBT_LIMIT = EUR:200
     18 DEFAULT_ADMIN_DEBT_LIMIT = EUR:2000
     19 REGISTRATION_BONUS_ENABLED = yes
     20 REGISTRATION_BONUS = EUR:100
     21 SUGGESTED_WITHDRAWAL_EXCHANGE = http://localhost:8081/
     22 WIRE_TYPE = x-taler-bank
     23 X_TALER_BANK_PAYTO_HOSTNAME = localhost
     24 ALLOW_REGISTRATION = YES
     25 IBAN_PAYTO_BIC = SANDBOXX
     26 SERVE = tcp
     27 PORT = 8082
     28 PWD_HASH_CONFIG = { "cost": 4 }
     29 PWD_AUTH_COMPAT = yes
     30 BASE_URL = http://localhost:8082/
     31 
     32 [libeufin-bankdb-postgres]
     33 CONFIG = postgresql:///talercheck
     34 
     35 [auditor]
     36 BASE_URL = "http://localhost:8083/"
     37 PORT = 8083
     38 PUBLIC_KEY = D9ZMEJCFV92GRQ29ES2MM31HEKHQXCFAACG3Q70G42X9FMWM7S50
     39 TINY_AMOUNT = EUR:0.01
     40 TALER_AUDITOR_SALT = "salt"
     41 DB = postgres
     42 
     43 # Where do we store the auditor's private key?
     44 AUDITOR_PRIV_FILE = ${TALER_AUDITOR_DATA_HOME}offline-keys/auditor.priv
     45 
     46 [auditordb-postgres]
     47 CONFIG = "postgres:///talercheck"
     48 SQL_DIR = ${DATADIR}sql/
     49 
     50 [bank]
     51 HTTP_PORT = 8082
     52 
     53 [exchange]
     54 # A purse must not outlive the denominations of the coins in it, see the
     55 # comment on PURSE_EXPIRATION_LIMIT in exchange.conf.
     56 PURSE_EXPIRATION_LIMIT = 3 years
     57 CURRENCY = EUR
     58 CURRENCY_ROUND_UNIT = EUR:0.01
     59 TINY_AMOUNT = EUR:0.01
     60 SERVE = tcp
     61 TERMS_ETAG = exchange-tos-tops-v0
     62 PRIVACY_ETAG = 0
     63 PORT = 8081
     64 MASTER_PUBLIC_KEY = S2PF0H375EQC7C0SQ6T8VH09GA1EVFBDXKS5KRBQAW8XW5KBHT9G
     65 DB = postgres
     66 BASE_URL = "http://localhost:8081/"
     67 EXPIRE_SHARD_SIZE ="300 ms"
     68 EXPIRE_IDLE_SLEEP_INTERVAL ="1 s"
     69 STEFAN_ABS = EUR:0
     70 STEFAN_LOG = EUR:0.005
     71 ENABLE_KYC = YES
     72 DISABLE_DIRECT_DEPOSIT = NO
     73 DB = postgres
     74 BASE_URL = http://localhost:8081/
     75 AGE_RESTRICTION_ENABLED = YES
     76 #AGE_GROUPS = "8:10:12:14:16:18:21"
     77 
     78 [exchangedb-postgres]
     79 CONFIG = "postgres:///talercheck"
     80 SQL_DIR = ${DATADIR}sql/
     81 DEFAULT_PURSE_LIMIT = 1
     82 
     83 [exchangedb]
     84 IDLE_RESERVE_EXPIRATION_TIME = 4 weeks
     85 LEGAL_RESERVE_EXPIRATION_TIME = 7 years
     86 AGGREGATOR_SHIFT = 1 s
     87 DEFAULT_PURSE_LIMIT = 1
     88 MAX_AML_PROGRAM_RUNTIME = 60 s
     89 
     90 [taler-exchange-secmod-cs]
     91 LOOKAHEAD_SIGN = "24 days"
     92 
     93 [taler-exchange-secmod-rsa]
     94 LOOKAHEAD_SIGN = "24 days"
     95 
     96 [taler-exchange-secmod-eddsa]
     97 LOOKAHEAD_SIGN = "24 days"
     98 DURATION = "14 days"
     99 
    100 
    101 [exchange-account-1]
    102 PAYTO_URI = "payto://x-taler-bank/localhost/2?receiver-name=2"
    103 ENABLE_DEBIT = YES
    104 ENABLE_CREDIT = YES
    105 
    106 [exchange-accountcredentials-1]
    107 WIRE_GATEWAY_AUTH_METHOD = none
    108 WIRE_GATEWAY_URL = "http://localhost:8082/accounts/2/taler-wire-gateway/"
    109 
    110 [admin-accountcredentials-1]
    111 WIRE_GATEWAY_AUTH_METHOD = none
    112 WIRE_GATEWAY_URL = "http://localhost:8082/accounts/2/taler-wire-gateway/"
    113 
    114 [exchange-account-2]
    115 PAYTO_URI = "payto://x-taler-bank/localhost/2?receiver-name=2"
    116 ENABLE_DEBIT = YES
    117 ENABLE_CREDIT = YES
    118 
    119 [exchange-accountcredentials-2]
    120 WIRE_GATEWAY_AUTH_METHOD = basic
    121 USERNAME = Exchange
    122 PASSWORD = password
    123 WIRE_GATEWAY_URL = "http://localhost:8082/accounts/2/taler-wire-gateway/"
    124 CORE_BANK_URL = "http://localhost:8082/accounts/2/"
    125 
    126 [admin-accountcredentials-2]
    127 WIRE_GATEWAY_AUTH_METHOD = basic
    128 # For now, fakebank still checks against the Exchange account...
    129 USERNAME = Exchange
    130 PASSWORD = password
    131 WIRE_GATEWAY_URL = "http://localhost:8082/accounts/2/taler-wire-gateway/"
    132 
    133 [exchange-account-3]
    134 PAYTO_URI = "payto://x-taler-bank/localhost/exchange?receiver-name=Exchange"
    135 ENABLE_DEBIT = YES
    136 ENABLE_CREDIT = YES
    137 
    138 [exchange-accountcredentials-3]
    139 WIRE_GATEWAY_AUTH_METHOD = basic
    140 USERNAME = exchange
    141 PASSWORD = password
    142 WIRE_GATEWAY_URL = "http://localhost:8082/accounts/exchange/taler-wire-gateway/"
    143 CORE_BANK_URL = "http://localhost:8082/accounts/exchange/"
    144 
    145 [admin-accountcredentials-3]
    146 WIRE_GATEWAY_AUTH_METHOD = basic
    147 USERNAME = exchange
    148 PASSWORD = password
    149 WIRE_GATEWAY_URL = "http://localhost:8082/accounts/exchange/taler-wire-gateway/"
    150 
    151 
    152 [exchange-offline]
    153 
    154 # Where do we store the offline master private key of the exchange?
    155 MASTER_PRIV_FILE = ${TALER_EXCHANGE_DATA_HOME}offline/master.priv
    156 
    157 # Where do we store the TOFU key material?
    158 SECM_TOFU_FILE = ${TALER_EXCHANGE_DATA_HOME}offline/secm_tofus.pub
    159 
    160 # Base32-encoded public key of the RSA helper.
    161 # SECM_DENOM_PUBKEY =
    162 
    163 # Base32-encoded public key of the EdDSA helper.
    164 # SECM_ESIGN_PUBKEY =
    165 
    166 
    167 [taler-exchange-secmod-cs]
    168 
    169 # How long should generated coins overlap in their validity
    170 # periods. Should be long enough to avoid problems with
    171 # wallets picking one key and then due to network latency
    172 # another key being valid.  The DURATION_WITHDRAW period
    173 # must be longer than this value.
    174 OVERLAP_DURATION = 5 m
    175 
    176 # Where do we store the generated private keys.
    177 KEY_DIR = ${TALER_EXCHANGE_DATA_HOME}secmod-cs/keys
    178 
    179 # Where does the helper listen for requests?
    180 UNIXPATH = ${TALER_RUNTIME_DIR}secmod-cs/server.sock
    181 
    182 # Directory for clients.
    183 CLIENT_DIR = ${TALER_RUNTIME_DIR}secmod-cs/clients
    184 
    185 # Where should the security module store its own private key?
    186 SM_PRIV_KEY = ${TALER_EXCHANGE_DATA_HOME}secmod-cs/secmod-private-key
    187 
    188 
    189 [taler-exchange-secmod-rsa]
    190 
    191 # How long should generated coins overlap in their validity
    192 # periods. Should be long enough to avoid problems with
    193 # wallets picking one key and then due to network latency
    194 # another key being valid.  The DURATION_WITHDRAW period
    195 # must be longer than this value.
    196 OVERLAP_DURATION = 0 m
    197 
    198 # Where do we store the generated private keys.
    199 KEY_DIR = ${TALER_EXCHANGE_DATA_HOME}secmod-rsa/keys
    200 
    201 # Where does the helper listen for requests?
    202 UNIXPATH = ${TALER_RUNTIME_DIR}secmod-rsa/server.sock
    203 
    204 # Directory for clients.
    205 CLIENT_DIR = ${TALER_RUNTIME_DIR}secmod-rsa/clients
    206 
    207 # Where should the security module store its own private key?
    208 SM_PRIV_KEY = ${TALER_EXCHANGE_DATA_HOME}secmod-rsa/secmod-private-key
    209 
    210 # Round the key validity period to calendar intervals (0: disabled).
    211 ANCHOR_ROUND = 0
    212 
    213 [taler-exchange-secmod-eddsa]
    214 
    215 # How long should generated coins overlap in their validity
    216 # periods. Should be long enough to avoid problems with
    217 # wallets picking one key and then due to network latency
    218 # another key being valid.  The DURATION_WITHDRAW period
    219 # must be longer than this value.
    220 OVERLAP_DURATION = 5m
    221 
    222 # Where do we store the private keys.
    223 KEY_DIR = ${TALER_EXCHANGE_DATA_HOME}secmod-eddsa/keys
    224 
    225 # Where does the helper listen for requests?
    226 UNIXPATH = ${TALER_RUNTIME_DIR}secmod-eddsa/server.sock
    227 
    228 # Directory for clients.
    229 CLIENT_DIR = ${TALER_RUNTIME_DIR}secmod-eddsa/clients
    230 
    231 # Where should the security module store its own private key?
    232 SM_PRIV_KEY = ${TALER_EXCHANGE_DATA_HOME}secmod-eddsa/secmod-private-key
    233 
    234 # For how long are signing keys valid?
    235 DURATION = 12 weeks
    236 
    237 [kyc-provider-test-oauth2]
    238 LOGIC = oauth2
    239 KYC_OAUTH2_VALIDITY = forever
    240 KYC_OAUTH2_TOKEN_URL = http://localhost:6666/oauth/v2/token
    241 KYC_OAUTH2_AUTHORIZE_URL = http://localhost:6666/oauth/v2/login
    242 KYC_OAUTH2_INFO_URL = http://localhost:6666/api/user/me
    243 KYC_OAUTH2_CLIENT_ID = taler-exchange
    244 KYC_OAUTH2_CLIENT_SECRET = exchange-secret
    245 KYC_OAUTH2_POST_URL = http://example.com/
    246 KYC_OAUTH2_CONVERTER_HELPER = taler-exchange-kyc-oauth2-test-converter.sh
    247 # The test OAuth 2.0 service listens on plaintext http://localhost.
    248 KYC_OAUTH2_DEBUG_MODE = YES
    249 
    250 [kyc-check-oauth-test-id]
    251 VOLUNTARY = NO
    252 # We use an external provider
    253 TYPE = LINK
    254 DESCRIPTION = "Oauth2 dummy authentication"
    255 DESCRIPTION_I18N = {}
    256 # No context requirements
    257 REQUIRES =
    258 # Measure to execute if check failed.
    259 FALLBACK = manual-freeze
    260 # This check runs on oauth2
    261 PROVIDER_ID = test-oauth2
    262 # Outputs from this check
    263 OUTPUTS = FULL_NAME DATE_OF_BIRTH
    264 
    265 
    266 [kyc-check-test-form]
    267 VOLUNTARY = NO
    268 # We use an external provider
    269 TYPE = FORM
    270 DESCRIPTION = "Test form"
    271 DESCRIPTION_I18N = {}
    272 # No context requirements
    273 REQUIRES =
    274 # Measure to execute if check failed.
    275 FALLBACK = manual-freeze
    276 # This check runs on oauth2
    277 FORM_NAME = full_name_and_birthdate
    278 # Outputs from this check
    279 OUTPUTS = FULL_NAME DATE_OF_BIRTH
    280 
    281 
    282 # This is the "default" setting for an account if
    283 # it has not yet triggered anything.
    284 [kyc-check-default]
    285 VOLUNTARY = NO
    286 TYPE = INFO
    287 DESCRIPTION = "Your account is operating normally"
    288 DESCRIPTION_I18N = {}
    289 # No context requirements
    290 REQUIRES =
    291 # Measure to execute if check failed. Well,
    292 # this check cannot really fail, but the
    293 # conservative answer is to freeze.
    294 FALLBACK = manual-freeze
    295 
    296 # If this "check" is triggered, we merely inform
    297 # the user that their account has been frozen. The
    298 # user cannot proceed manually.
    299 [kyc-check-info-frozen]
    300 VOLUNTARY = NO
    301 TYPE = INFO
    302 DESCRIPTION = "Your account is frozen pending investigation"
    303 DESCRIPTION_I18N = {}
    304 # No context requirements
    305 REQUIRES =
    306 # Measure to execute if check failed. Well,
    307 # this check cannot really fail, but we stay
    308 # where we are: frozen.
    309 FALLBACK = manual-freeze
    310 
    311 [kyc-measure-info-frozen]
    312 CHECK_NAME = info-frozen
    313 # No context
    314 CONTEXT = {}
    315 # Command if INFO check will never be run.
    316 PROGRAM = none
    317 
    318 # If this "check" is triggered, we merely inform
    319 # the user that we got their oauth-test data on file.
    320 [kyc-check-info-oauth-test-passed]
    321 VOLUNTARY = NO
    322 TYPE = INFO
    323 DESCRIPTION = "You passed the OAuth2 check. Thank you."
    324 DESCRIPTION_I18N = {}
    325 # No context requirements
    326 REQUIRES =
    327 # Measure to execute if check failed. Well,
    328 # this check cannot really fail, but we stay
    329 # where we are: frozen.
    330 FALLBACK = manual-freeze
    331 
    332 
    333 [kyc-measure-info-oauth-test-passed]
    334 CHECK_NAME = info-oauth-test-passed
    335 # No context
    336 CONTEXT = {}
    337 # Command if INFO check will never be run.
    338 PROGRAM = none
    339 
    340 [aml-program-none]
    341 DESCRIPTION = "Dummy AML program used for INFO checks, always fails"
    342 COMMAND = taler-exchange-helper-measure-none
    343 FALLBACK = manual-freeze
    344 
    345 [aml-program-freeze]
    346 DESCRIPTION = "Freeze the account"
    347 COMMAND = taler-exchange-helper-measure-freeze
    348 FALLBACK = manual-freeze
    349 
    350 [aml-program-oauth-output-check]
    351 DESCRIPTION = "Validates the output from OAauth2 and then increases all limits to EUR:1000"
    352 # Command that runs on the output of the OAuth provider
    353 # to decide what rules should apply next.
    354 COMMAND = taler-exchange-helper-measure-test-oauth
    355 # What measure to take if the COMMAND failed.
    356 FALLBACK = manual-freeze
    357 
    358 
    359 [aml-program-test-form-check]
    360 DESCRIPTION = "Validates the output from the test-form and then increases all limits to EUR:1000"
    361 # Command that runs on the output of the form
    362 # to decide what rules should apply next.
    363 COMMAND = taler-exchange-helper-measure-test-form
    364 # What measure to take if the COMMAND failed.
    365 FALLBACK = manual-freeze
    366 
    367 
    368 [kyc-measure-run-oauth]
    369 # Get client ID via the OAuth test provider
    370 CHECK_NAME = oauth-test-id
    371 # AML program to run on the output of the OAuth provider
    372 # to decide what rules should apply next.
    373 PROGRAM = oauth-output-check
    374 # Context to provide for check and program; empty.
    375 CONTEXT = {}
    376 
    377 # This is a base-measure that is being triggered
    378 # whenever something goes wrong. We freeze the
    379 # account and ask AML staff to investigate.
    380 [kyc-measure-manual-freeze]
    381 CHECK_NAME = skip
    382 # AML program that freezes the account and flags
    383 # it for investigation.
    384 PROGRAM = freeze
    385 # Context to provide for check and program; empty.
    386 CONTEXT = {}
    387 
    388 # This rule requests that the users passes KYC
    389 # when closing the reserve.
    390 [kyc-rule-close]
    391 ENABLED = YES
    392 # This is a public rule.
    393 EXPOSED = YES
    394 # All checks listed must be done (well, there is only one...)
    395 IS_AND_COMBINATOR = YES
    396 # This happens if the reserve is closed.
    397 OPERATION_TYPE = CLOSE
    398 # Threshold is 0, so any amount.
    399 THRESHOLD = EUR:0
    400 # Timeframe doesn't exactly matter with a threshold of EUR:0.
    401 TIMEFRAME = 1d
    402 # If the rule is triggered, ask the user to provide
    403 # personal data via OAuth2
    404 NEXT_MEASURES = run-oauth
    405