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 (11822B)


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