taler-exchange.conf.5.rst (27112B)
1 .. 2 This file is part of GNU TALER. 3 Copyright (C) 2014-2024 Taler Systems SA 4 5 TALER is free software; you can redistribute it and/or modify it under the 6 terms of the GNU Affero General Public License as published by the Free Software 7 Foundation; either version 2.1, or (at your option) any later version. 8 9 TALER is distributed in the hope that it will be useful, but WITHOUT ANY 10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 11 A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 12 13 You should have received a copy of the GNU Affero General Public License along with 14 TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> 15 16 @author Florian Dold 17 @author Benedikt Muller 18 @author Sree Harsha Totakura 19 @author Marcello Stanisci 20 @author Christian Grothoff 21 @author Javier Sepulveda 22 23 24 taler-exchange.conf(5) 25 ###################### 26 27 .. only:: html 28 29 Name 30 ==== 31 32 **taler-exchange.conf** - Taler exchange configuration file 33 34 35 Description 36 =========== 37 38 .. include:: ../frags/common-conf-syntax.rst 39 40 Files containing default values for many of the options described below 41 are installed under ``$TALER_EXCHANGE_PREFIX/share/taler-exchange/config.d/``. 42 The configuration file given with **-c** to Taler binaries 43 overrides these defaults. 44 45 A configuration file may include another, by using the ``@INLINE@`` directive, 46 for example, in ``main.conf``, you could write ``@INLINE@ sub.conf`` to 47 include the entirety of ``sub.conf`` at that point in ``main.conf``. 48 49 Be extra careful when using ``taler-exchange-config -V VALUE`` to change configuration 50 values: it will destroy all uses of ``@INLINE@`` and furthermore remove all 51 comments from the configuration file! 52 53 54 GLOBAL OPTIONS 55 -------------- 56 57 The “[PATHS]” section is special in that it contains paths that can be 58 referenced using “$” in other configuration values that specify 59 filenames. For Taler exchange, it commonly contains the following paths: 60 61 TALER_HOME 62 Home directory of the user, usually “${HOME}”. Can be overwritten by 63 testcases by setting ${TALER_TEST_HOME}. 64 65 TALER_DATA_HOME 66 Where should Taler store its long-term data. 67 Usually “${TALER_HOME}/.local/share/taler-exchange/”. 68 69 TALER_CONFIG_HOME 70 Where is the Taler configuration kept. 71 Usually “${TALER_HOME}/.config/taler-exchange/”. 72 73 TALER_CACHE_HOME 74 Where should Taler store cached data. 75 Usually “${TALER_HOME}/.cache/taler-exchange/”. 76 77 TALER_RUNTIME_DIR 78 Where should Taler store system runtime data (like UNIX domain 79 sockets). Usually “${TMP}/taler-exchange-runtime”. 80 81 82 .. include:: frags/currency-spec.rst 83 84 EXCHANGE OPTIONS 85 ---------------- 86 87 The following options are from the “[exchange]” section and used by most 88 exchange tools. 89 90 CURRENCY 91 Name of the currency, e.g. “EUR” for Euro. 92 93 CURRENCY_ROUND_UNIT 94 Smallest amount in this currency that can be transferred using the 95 underlying RTGS. For example: "EUR:0.01" or "JPY:1". 96 97 DB 98 Plugin to use for the database, e.g. “postgres”. 99 100 ATTRIBUTE_ENCRYPTION_KEY 101 Attribute encryption key for storing attributes encrypted 102 in the database. Should be a high-entropy nonce. 103 104 SERVE 105 Should the HTTP server listen on a UNIX domain socket (set option to "unix"), or on a TCP socket (set option to "tcp"), or be activated via systemd (set option to "systemd"). 106 107 UNIXPATH 108 Path to listen on if we "SERVE" is set to "unix". 109 110 UNIXPATH_MODE 111 Access permission mask to use for the "UNIXPATH". 112 113 PORT 114 Port on which the HTTP server listens, e.g. 8080. 115 116 BIND_TO 117 Hostname to which the exchange HTTP server should be bound to, e.g. "localhost". 118 119 MASTER_PUBLIC_KEY 120 Crockford Base32-encoded master public key, public version of the 121 exchange's long-time offline signing key. This configuration option 122 is also used by the **auditor** to determine the public key of the 123 exchange which it is auditing. 124 125 TINY_AMOUNT 126 Small amount that can be transferred to the exchange for the 127 KYC authentication wire transfers. Must be given as a hint 128 for merchants what amount they need to transfer to begin the 129 KYC transfer. 130 131 SHOPPING_URL 132 Web URL where users can discover shops that accept digital cash 133 offered by this exchange. Optional, but highly recommended. 134 135 AML_SPA_DIALECT 136 Determines the variant of the AML SPA that should be shown. This 137 will determine the set of forms shown to AML staff, statistics to 138 be displayed on the main page, and influence the default set of 139 properties/events the AML forms show when AML staff makes decisions. 140 Possible values for now include "gls", "tops" and "magnet". 141 Optional. The AML SPA will only show certain default forms and 142 generic decisions if this option is not set. 143 144 GLOBAL_PDF_FORM_DATA 145 Set to a JSON object that should be provided as additional input 146 to the PDF form generation logic when generating AML records in 147 PDF format. Useful to specify global attributes for the Typst forms. 148 Optional, global PDF form data injection will simply be off if 149 this option is not specified. 150 151 BANK_COMPLIANCE_LANGUAGE 152 Determines the legal language (and possibly other UI/UX aspects) 153 wallets should use when providing the user interface for this bank. 154 Allows banks to communicate the desired compliance language they 155 want to see used to the wallet. Wallets SHOULD follow the guidance 156 provided by the bank, but some wallets MAY not understand all compliance 157 languages. Optional, if not set wallets will use their default UI/UX. 158 159 STEFAN_ABS 160 Absolute amount to add as an offset in the STEFAN fee approximation 161 curve (see DD47). Defaults to CURRENCY:0 if not specified. 162 163 STEFAN_LOG 164 Amount to multiply by the base-2 logarithm of the total amount 165 divided by the amount of the smallest denomination 166 in the STEFAN fee approximation curve (see DD47). 167 Defaults to CURRENCY:0 if not specified. 168 169 STEFAN_LIN 170 Linear floating point factor to be multiplied by the total amount 171 to use in the STEFAN fee approximation curve (see DD47). 172 Defaults to 0.0 if not specified. 173 174 BASE_URL 175 The base URL under which the exchange can be reached. 176 Added to wire transfers to enable tracking by merchants. 177 Used by the KYC logic when interacting with OAuth 2.0. 178 179 TOPLEVEL_REDIRECT_URL 180 Where to redirect visitors that access the top-level 181 "/" endpoint of the exchange. Should point users to 182 information about the exchange operator. 183 Optional setting, defaults to "/terms". 184 185 AGGREGATOR_IDLE_SLEEP_INTERVAL 186 For how long should the taler-exchange-aggregator sleep when it is idle 187 before trying to look for more work? Default is 60 seconds. 188 189 CLOSER_IDLE_SLEEP_INTERVAL 190 For how long should the taler-exchange-closer sleep when it is idle 191 before trying to look for more work? Default is 60 seconds. 192 193 TRANSFER_IDLE_SLEEP_INTERVAL 194 For how long should the taler-exchange-transfer sleep when it is idle 195 before trying to look for more work? Default is 60 seconds. 196 197 WIREWATCH_IDLE_SLEEP_INTERVAL 198 For how long should the taler-exchange-wirewatch sleep when it is idle 199 before trying to look for more work? Default is 60 seconds. 200 201 AGGREGATOR_SHARD_SIZE 202 Which share of the range from [0,..2147483648] should be processed by one of the shards of the aggregator. Useful only for Taler exchanges with ultra high-performance needs. When changing this value, you must stop all aggregators and run "taler-exchange-dbinit -s" before resuming. Default is 2147483648 (no sharding). 203 204 SIGNKEY_LEGAL_DURATION 205 For how long are signatures with signing keys legally valid? 206 207 MAX_KEYS_CACHING 208 For how long should clients cache ``/keys`` responses at most? 209 210 MAX_REQUESTS 211 How many requests should the HTTP server process at most before committing suicide? 212 213 TERMS_DIR 214 Directory where the terms of service of the exchange operator can be fund. 215 The directory must contain sub-directories for every supported language, 216 using the two-character language code in lower case, e.g. "en/" or "fr/". 217 Each subdirectory must then contain files with the terms of service in 218 various formats. The basename of the file of the current policy must be 219 specified under ``TERMS_ETAG``. The extension defines the mime type. 220 Supported extensions include "html", "htm", "txt", "pdf", "jpg", "jpeg", 221 "png" and "gif". For example, using a ``TERMS_ETAG`` of "0", the structure 222 could be the following: 223 224 - $TERMS_DIR/en/0.pdf 225 - $TERMS_DIR/en/0.html 226 - $TERMS_DIR/en/0.txt 227 - $TERMS_DIR/fr/0.pdf 228 - $TERMS_DIR/fr/0.html 229 - $TERMS_DIR/de/0.txt 230 231 TERMS_ETAG 232 Basename of the file(s) in the ``TERMS_DIR`` with the current terms of service. 233 The value is also used for the "Etag" in the HTTP request to control 234 caching. Whenever the terms of service change, the ``TERMS_ETAG`` MUST also 235 change, and old values MUST NOT be repeated. For example, the date or 236 version number of the terms of service SHOULD be used for the Etag. If 237 there are minor (e.g. spelling) fixes to the terms of service, the 238 ``TERMS_ETAG`` probably SHOULD NOT be changed. However, whenever users must 239 approve the new terms, the ``TERMS_ETAG`` MUST change. 240 241 PRIVACY_DIR 242 Works the same as ``TERMS_DIR``, just for the privacy policy. 243 244 PRIVACY_ETAG 245 Works the same as ``TERMS_ETAG``, just for the privacy policy. 246 247 ENABLE_KYC 248 Must be set to ``YES`` to enable AML/KYC rule enforcement. Note that the administrative endpoints will always work, even if the flag is set to ``NO``. 249 250 DISABLE_DIRECT_DEPOSIT 251 Set to ``YES`` to indicate to wallets that deposits by non-merchants 252 are not supported. Defaults to ``NO``. 253 254 255 EXCHANGE KYC PROVIDER OPTIONS 256 ----------------------------- 257 258 The following options must be in the section "[kyc-provider-$PROVIDER_NAME]" sections. 259 260 LOGIC 261 API type of the KYC provider. 262 263 Additional logic-specific options may be given in the 264 section. 265 266 267 EXCHANGE KYC OAUTH2 OPTIONS 268 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 269 270 The following options must be in the section "[kyc-provider-XXX]" sections with "LOGIC = oauth2". 271 272 273 KYC_OAUTH2_VALIDITY 274 Duration (e.g. "12 months") of the validity of the performed KYC check. Can be "forever". 275 276 KYC_OAUTH2_AUTHORIZE_URL 277 URL of the OAuth2 endpoint to be used for KYC checks. The authorize URL is where the exchange will redirect the client to begin the authorization process. Example: "http://localhost:8888/oauth/v2/authorize". To use the plugin in combination with the Challenger service's ``/setup`` step, append "#setup", thus "https://challenger.example.com/authorize#setup". Here, "#setup" is not a fragment but merely a hint to the logic to determine the full authorization URL via the ``/setup/$CLIENT_ID`` handler. 278 279 KYC_OAUTH2_TOKEN_URL 280 URL of the OAuth2 endpoint to be used for KYC checks. This is where the server will ultimately send the authorization token from the client and obtain its access token (which currently must be a "bearer" token). Example: "http://localhost:8888/oauth/v2/token" (or just "/token") 281 282 KYC_OAUTH2_INFO_URL 283 URL of the OAuth2-protected resource endpoint, where the OAuth 2.0 token can be used to download information about the user that has undergone the KYC process. The exchange will use the access token obtained from the KYC_AUTH2_AUTH_URL to show that it is authorized to obtain the details. Example: "http://localhost:8888/api/user/me" or "http://localhost:8888/oauth/v2/info" 284 285 KYC_OAUTH2_CLIENT_ID 286 Client ID of the exchange when it talks to the KYC OAuth2 endpoint. 287 288 KYC_OAUTH2_CLIENT_SECRET 289 Client secret of the exchange to use when talking to the KYC Oauth2 endpoint. 290 291 KYC_OAUTH2_SCOPE 292 Scope argument to pass in the Oauth2 /authorize request. 293 Optional, if not given no scope will be provided. 294 295 KYC_OAUTH2_POST_URL 296 URL to which the exchange will redirect the client's browser after successful authorization/login for the KYC process. Example: "http://example.com/thank-you" 297 298 KYC_OAUTH2_CONVERTER_HELPER 299 Helper to convert JSON with KYC data returned by the OAuth2.0 info endpoint into GNU Taler internal format. Specific to the OAuth 2.0 provider. 300 301 KYC_OAUTH2_DEBUG_MODE 302 Set to YES to allow error responses to include potentially 303 sensitive private information (such as full responses 304 from the OAuth 2.0 server) that might aid in debugging 305 problems. Should be set to "NO" in production. 306 307 308 EXCHANGE KYC KYCAID OPTIONS 309 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 310 311 The following options must be in the section "[kyc-provider-XXX]" sections with "LOGIC = kycaid". 312 313 314 KYC_KYCAID_VALIDITY 315 Duration (e.g. "12 months") of the validity of the performed KYC check. Can be "forever". 316 317 KYC_KYCAID_AUTH_TOKEN 318 Authentication token to access the KYC service. 319 320 KYC_KYCAID_CONVERTER_HELPER 321 Helper to convert JSON with KYC data returned by KYCAID into GNU Taler internal format. Should probably always be set to "taler-exchange-kyc-kycaid-converter.sh". 322 323 KYC_KYCAID_FORM_ID 324 ID that specifies the form to use for the KYC process. 325 326 KYC_KYCAID_POST_URL 327 URL to which the exchange will redirect the client's browser after successful authorization/login for the KYC process. 328 329 330 EXCHANGE KYC PERSONA OPTIONS 331 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 332 333 The following options must be in the section "[kyc-provider-XXX]" sections with "LOGIC = persona". 334 335 336 KYC_PERSONA_VALIDITY 337 Duration (e.g. "12 months") of the validity of the performed KYC check. Can be "forever". 338 339 KYC_PERSONA_AUTH_TOKEN 340 Authentication token to access the KYC service. 341 342 KYC_PERSONA_SALT 343 Salt value to use for request idempotency. Optional, generated at random per process if not given. 344 345 KYC_PERSONA_SUBDOMAIN 346 Subdomain to use under Persona. 347 348 KYC_PERSONA_CONVERTER_HELPER 349 Helper to convert JSON with KYC data returned by Persona into GNU Taler internal format. Should probably always be set to "taler-exchange-kyc-persona-converter.sh". 350 351 KYC_PERSONA_POST_URL 352 URL to which the exchange will redirect the client's browser after successful authorization/login for the KYC process. 353 354 KYC_PERSONA_TEMPLATE_ID 355 ID of the Persona template to use. 356 357 EXCHANGE KYC PERSONA GLOBAL OPTIONS 358 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 359 360 The following option must be in the section "[kyclogic-persona]". 361 362 363 WEBHOOK_AUTH_TOKEN 364 Authentication token Persona must supply to our webhook. This is an optional setting. 365 366 367 EXCHANGE KYC CHECK OPTIONS 368 -------------------------- 369 370 The following options must be in "[kyc-check-$CHECK_NAME]" sections. 371 372 TYPE 373 Which type of check is this? Also determines 374 the SPA form to show to the user for this check. 375 376 * INFO: wait for staff or contact staff out-of band 377 (only information shown, no SPA action) 378 * FORM: SPA should show an inline (HTML) form 379 * LINK: SPA may start external KYC process or upload 380 381 PROVIDER_ID 382 Provider id, present only if type is LINK. 383 Refers to a ``kyc-provider-$PROVIDER_ID`` section. 384 385 FORM_NAME 386 Name of the SPA form, if type is FORM 387 "INFO" and "LINK" are reserved and must not be used. 388 The exchange server and the SPA must agree on a list 389 of supported forms and the resulting attributes. 390 The SPA should include a JSON resource file 391 "forms.json" mapping form names to arrays of 392 attribute names each form provides. 393 The list of possible FORM names is fixed in the SPA 394 for a particular exchange release. 395 396 DESCRIPTION 397 Descriptions to use in the SPA to display the check. 398 399 DESCRIPTION_I18N 400 JSON with internationalized descriptions to use 401 in the SPA to display the check. 402 403 REQUIRES 404 ';'-separated list of fields that the CONTEXT must 405 provide as inputs to this check. For example, 406 for a FORM of type CHOICE, this might state 407 ``choices: string[];``. The type after the ":" 408 is for now purely for documentation and is 409 not checked. However, it may be shown to AML staff 410 when they configure measures. 411 412 OUTPUTS = "business_name street city country registration" 413 Description of the outputs provided by the check. 414 Basically, the check's output is expected to 415 provide the following fields as attribute inputs into 416 a subsequent AML program. INFO never has any outputs. 417 418 FALLBACK 419 Name of an **original** measure to take if the check fails 420 (for any reason, e.g. provider or form fail to 421 satisfy constraints or provider signals user error) 422 Usually should point to a measure that requests 423 AML staff to investigate. The fallback measure 424 context always includes the reasons for the 425 failure. 426 427 EXCHANGE KYC RULES 428 ------------------ 429 430 The following options must be in "[kyc-rule-$RULE_NAME]" sections. 431 432 OPERATION_TYPE = WITHDRAW 433 Operation that triggers this rule. 434 Must be one of AGGREGATE, BALANCE, CLOSE, DEPOSIT, MERGE, 435 REFUND, TRANSACTION or WITHDRAW 436 See the Exchange KYC/AML Operator Manual for the 437 operations these refer to. 438 439 NEXT_MEASURES 440 Space-separated list of next measures to be performed. 441 The SPA should display *all* of these measures to the user. 442 (They have a choice of either which ones, or in 443 which order they are to be performed.) 444 A special measure name "verboten" is used if the 445 specified threshold may never be crossed 446 (under this set of rules). This option is equivalent 447 to the "new_measure" string in an AmlDecisionRequest 448 (with IS_AND_COMBINATOR replacing the "+"-prefix). 449 450 IS_AND_COMBINATOR 451 "YES" if all NEXT_MEASURES will eventually need 452 to be satisfied, "NO" the user has a choice between 453 them. Not actually enforced by the exchange, but 454 primarily used to inform the user whether this is 455 an "and" or "or". YES for "and". 456 457 EXPOSED 458 YES if the rule (specifically, operation type, 459 threshold, timeframe) and the general nature of 460 the next measure (verboten or approval required) 461 should be exposed to the client. 462 Defaults to NO if not set. 463 464 THRESHOLD 465 Threshold amount above which the rule is 466 triggered. The total must be exceeded in the given 467 timeframe. 468 469 TIMEFRAME 470 Timeframe over which the amount to be compared to 471 the THRESHOLD is calculated (for example, "30 days"). 472 Ignored for BALANCE. Can be 'forever'. 473 474 ENABLED = NO 475 Set to YES to enable the rule (default is NO). 476 477 478 EXCHANGE AML PROGRAMS 479 --------------------- 480 481 The following options must be in "[aml-program-$PROG_NAME]" sections. 482 483 COMMAND 484 Name of the program to run. Must match a binary 485 on the local machine where the exchange is running. 486 487 DESCRIPTION 488 Human-readable description of what this 489 AML helper program will do. Used to show 490 to the AML staff. 491 492 ENABLED 493 True if this AML program is enabled (and thus can be 494 used in measures and exposed to AML staff). 495 Optional, default is NO. 496 497 FALLBACK 498 Name of an **original** measure to take if COMMAND fails 499 Usually points to a measure that asks AML staff 500 to contact the systems administrator. The fallback measure 501 context always includes the reasons for the 502 failure. 503 504 EXCHANGE KYC MEASURES 505 --------------------- 506 507 The following options must be in "[kyc-measure-$MEASURE_NAME]" sections. 508 These sections define the **original** measures. 509 510 CHECK_NAME 511 Name of a possible check for this measure. Optional. 512 If not given or set to ``SKIP``, PROGRAM should be run immediately 513 (on an empty set of attributes). 514 515 CONTEXT = {"choices":["individual","business"]} 516 Context for the check. The context can be 517 just an empty JSON object if there is none. 518 519 PROGRAM 520 Program to run on the context and check data to 521 determine the outcome and next measure. 522 Refers to a ``[aml-program-$PROG_NAME]`` section name. 523 524 VOLUNTARY 525 Optional. Set to YES to allow this measure to be 526 done voluntarily by a client. Used to offer the 527 SPA to display measures even if they are 528 not required. Default is NO. 529 530 531 532 EXCHANGE EXTENSIONS OPTIONS 533 --------------------------- 534 535 The functionality of the exchange can be extended by extensions. Those are 536 shared libraries which implement the extension-API of the exchange and are 537 located under ``$LIBDIR``, starting with prefix ``libtaler_extension_``. Each 538 extension can be enabled by adding a dedicated section 539 "[exchange-extension-<extensionname>]" and the following option: 540 541 ENABLED 542 If set to ``YES`` the extension ``<extensionsname>`` is enabled. Extension-specific 543 options might be set in the same section. 544 545 546 EXCHANGE EXTENSION FOR AGE RESTRICTION 547 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 548 549 The extension for age restriction support can be enabled by adding a section 550 "[exchange-extension-age_restriction]" with the following options: 551 552 ENABLE 553 Must be set to ``YES`` in order to activate the extension. 554 555 AGE_GROUPS 556 A colon-seperated string of increasing non-negative integers, defining the 557 buckets of age groups supported by the exchange. Each integer marks the 558 beginning of the next age group. The zero'th age group implicitly starts 559 with 0. For example, the string "10:18" would define three age groups: 560 561 1. Group 0: ages 0 through 9 (including) 562 2. Group 1: ages 10 through 17 (including) 563 3. Group 2: ages 18 and above 564 565 If not provided, the default value is "8:10:12:14:16:18:21". 566 567 **Note**: Age restriction is bound to specific denominations and must be 568 enabled for each selected denomination in the corresponding section by adding 569 the option ``AGE_RESTRICTED = YES``, see `EXCHANGE COIN OPTIONS`_. However, the 570 age groups are defined globally for all denominations. 571 572 573 574 EXCHANGE OFFLINE SIGNING OPTIONS 575 -------------------------------- 576 577 The following options must be in the section "[exchange-offline]". 578 579 MASTER_PRIV_FILE 580 Location of the master private key on disk. Only used by tools that 581 can be run offline (as the master key is for offline signing). 582 Mandatory. 583 584 SECM_TOFU_FILE 585 Where to store the public keys of both crypto helper modules. 586 Used to persist the keys after the first invocation of the tool, 587 so that if they ever change in the future, this is detected and 588 the tool can abort. 589 Mandatory. 590 591 SECM_DENOM_PUBKEY 592 Public key of the (RSA) crypto helper module. Optional. If not given, 593 we will rely on TOFU. Note that once TOFU has been established, 594 this option will also be ignored. 595 596 SECM_ESIGN_PUBKEY 597 Public key of the (EdDSA) crypto helper module. Optional. If not given, 598 we will rely on TOFU. Note that once TOFU has been established, 599 this option will also be ignored. 600 601 602 EXCHANGE RSA CRYPTO HELPER OPTIONS 603 ---------------------------------- 604 605 The following options must be in the section "[taler-exchange-secmod-rsa]". 606 607 LOOKAHEAD_SIGN 608 How long do we generate denomination and signing keys ahead of time? 609 610 OVERLAP_DURATION 611 How much should validity periods for coins overlap? 612 Should be long enough to avoid problems with 613 wallets picking one key and then due to network latency 614 another key being valid. The ``DURATION_WITHDRAW`` period 615 must be longer than this value. 616 617 SM_PRIV_KEY 618 Where should the security module store its long-term private key? 619 620 KEY_DIR 621 Where should the security module store the private keys it manages? 622 623 UNIXPATH 624 On which path should the security module listen for signing requests? 625 626 Note that the **taler-exchange-secmod-rsa** also evaluates the ``[coin_*]`` 627 configuration sections described below. 628 629 630 EXCHANGE CS CRYPTO HELPER OPTIONS 631 --------------------------------- 632 633 The following options must be in the section "[taler-exchange-secmod-cs]". 634 635 LOOKAHEAD_SIGN 636 How long do we generate denomination and signing keys ahead of time? 637 638 OVERLAP_DURATION 639 How much should validity periods for coins overlap? 640 Should be long enough to avoid problems with 641 wallets picking one key and then due to network latency 642 another key being valid. The ``DURATION_WITHDRAW`` period 643 must be longer than this value. 644 645 SM_PRIV_KEY 646 Where should the security module store its long-term private key? 647 648 KEY_DIR 649 Where should the security module store the private keys it manages? 650 651 UNIXPATH 652 On which path should the security module listen for signing requests? 653 654 Note that the **taler-exchange-secmod-cs** also evaluates the ``[coin_*]`` 655 configuration sections described below. 656 657 658 659 EXCHANGE EDDSA CRYPTO HELPER OPTIONS 660 ------------------------------------ 661 662 The following options must be in the section "[taler-exchange-secmod-eddsa]". 663 664 LOOKAHEAD_SIGN 665 How long do we generate denomination and signing keys ahead of time? 666 667 OVERLAP_DURATION 668 How much should validity periods for coins overlap? 669 Should be long enough to avoid problems with 670 wallets picking one key and then due to network latency 671 another key being valid. The ``DURATION_WITHDRAW`` period 672 must be longer than this value. 673 674 DURATION 675 For how long should EdDSA keys be valid for signing? 676 677 SM_PRIV_KEY 678 Where should the security module store its long-term private key? 679 680 KEY_DIR 681 Where should the security module store the private keys it manages? 682 683 UNIXPATH 684 On which path should the security module listen for signing requests? 685 686 .. include:: frags/exchange-database.rst 687 .. include:: frags/exchange-account.rst 688 .. include:: frags/exchange-coin.rst 689 690 EXCHANGE SANCTIONSCHECK OPTIONS 691 ------------------------------- 692 693 This section configures the taler-exchange-sanctionlist tool to enforce 694 sanctions. The tool scores KYC records in two dimensions, the quality 695 of the match (rating) and the number of attributes that were found in 696 both sets (confidence). 697 698 The following options must be in the section "[exchange-sanctionscheck]". 699 700 RATER_COMMAND 701 Program (and command-line arguments) for the helper program to 702 execute to compare sanction list records. Usually set to 703 something like "robocop $SANCTIONLIST.json", but can be any 704 program that reads KYC attributes in JSON line-by-line and 705 outputs a rating (0-1), confidence (0-1) and free-form sanction list 706 identifier for each JSON input received. 707 708 MIN_ROW_FILENAME 709 Name of the file where taler-exchange-sanctionscheck will store the 710 last row process during sanction list evaluation. Not in thed atabase 711 as we frequently need to reset it when we get a new list, so no 712 transactionality is needed or even desirable. There should be no 713 need to change the default. 714 715 FREEZE_RATING_LIMIT 716 Match quality rating (on a scale of [0,1]) that must be exceeded 717 for the exchange to automatically freeze an account. The account 718 must satisfy both the rating limit and the confidence limit to be 719 frozen. 720 721 FREEZE_CONFIDENCE_LIMIT 722 Match confidence rating (on a scale of [0,1]) that must be exceeded 723 for the exchange to automatically freeze an account. A rating of 0 724 means no attributes were available, while a rating of 1 indicates that 725 we could compare the acconts across all dimensions. 726 727 INVESTIGATION_LIMIT 728 Limit (on a scale of [0,1]) that must be exceeded for an account to 729 be flagged for manual investigation. Only applies of the account 730 is not automatically frozen. The limit given is compared against 731 the quality rating divided by the confidence score. 732 If set at 0.95, a modest 0.8 match with low 0.5 confidence will 733 trigger (1.6 > 0.95), but a good 0.9 match with a super-high 1.0 734 confidence would not (0.9 < 0.95). On the other hand, a bad 0.2 match 735 with super-low 0.1 confidence would again trigger (2.0 > 0.95). 736 737 738 SEE ALSO 739 ======== 740 741 taler-exchange-dbinit(1), taler-exchange-httpd(1), taler-exchange-offline(1), taler-exchange-sanctionscheck(1) 742 743 BUGS 744 ==== 745 746 Report bugs by using https://bugs.taler.net/ or by sending electronic 747 mail to <taler@gnu.org>.