taler-exchange.conf.5.rst (26514B)
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 KYC_SWAP_TOS_ACCEPTANCE 251 Set to ``YES`` to signal to the merchant backend that it should 252 swap the terms-of-service and KYC auth authentication steps in 253 the user experience. Optional, defaults to ``NO``. 254 255 DISABLE_DIRECT_DEPOSIT 256 Set to ``YES`` to indicate to wallets that deposits by non-merchants 257 are not supported. Defaults to ``NO``. 258 259 260 EXCHANGE KYC PROVIDER OPTIONS 261 ----------------------------- 262 263 The following options must be in the section "[kyc-provider-$PROVIDER_NAME]" sections. 264 265 LOGIC 266 API type of the KYC provider. 267 268 Additional logic-specific options may be given in the 269 section. 270 271 272 EXCHANGE KYC OAUTH2 OPTIONS 273 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 274 275 The following options must be in the section "[kyc-provider-XXX]" sections with "LOGIC = oauth2". 276 277 278 KYC_OAUTH2_VALIDITY 279 Duration (e.g. "12 months") of the validity of the performed KYC check. Can be "forever". 280 281 KYC_OAUTH2_AUTHORIZE_URL 282 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. 283 284 KYC_OAUTH2_TOKEN_URL 285 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") 286 287 KYC_OAUTH2_INFO_URL 288 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" 289 290 KYC_OAUTH2_CLIENT_ID 291 Client ID of the exchange when it talks to the KYC OAuth2 endpoint. 292 293 KYC_OAUTH2_CLIENT_SECRET 294 Client secret of the exchange to use when talking to the KYC Oauth2 endpoint. 295 296 KYC_OAUTH2_SCOPE 297 Scope argument to pass in the Oauth2 /authorize request. 298 Optional, if not given no scope will be provided. 299 300 KYC_OAUTH2_POST_URL 301 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" 302 303 KYC_OAUTH2_CONVERTER_HELPER 304 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. 305 306 KYC_OAUTH2_DEBUG_MODE 307 Set to YES to allow error responses to include potentially 308 sensitive private information (such as full responses 309 from the OAuth 2.0 server) that might aid in debugging 310 problems. Should be set to "NO" in production. 311 312 313 EXCHANGE KYC KYCAID OPTIONS 314 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 315 316 The following options must be in the section "[kyc-provider-XXX]" sections with "LOGIC = kycaid". 317 318 319 KYC_KYCAID_VALIDITY 320 Duration (e.g. "12 months") of the validity of the performed KYC check. Can be "forever". 321 322 KYC_KYCAID_AUTH_TOKEN 323 Authentication token to access the KYC service. 324 325 KYC_KYCAID_CONVERTER_HELPER 326 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". 327 328 KYC_KYCAID_FORM_ID 329 ID that specifies the form to use for the KYC process. 330 331 KYC_KYCAID_POST_URL 332 URL to which the exchange will redirect the client's browser after successful authorization/login for the KYC process. 333 334 335 EXCHANGE KYC PERSONA OPTIONS 336 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 337 338 The following options must be in the section "[kyc-provider-XXX]" sections with "LOGIC = persona". 339 340 341 KYC_PERSONA_VALIDITY 342 Duration (e.g. "12 months") of the validity of the performed KYC check. Can be "forever". 343 344 KYC_PERSONA_AUTH_TOKEN 345 Authentication token to access the KYC service. 346 347 KYC_PERSONA_SALT 348 Salt value to use for request idempotency. Optional, generated at random per process if not given. 349 350 KYC_PERSONA_SUBDOMAIN 351 Subdomain to use under Persona. 352 353 KYC_PERSONA_CONVERTER_HELPER 354 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". 355 356 KYC_PERSONA_POST_URL 357 URL to which the exchange will redirect the client's browser after successful authorization/login for the KYC process. 358 359 KYC_PERSONA_TEMPLATE_ID 360 ID of the Persona template to use. 361 362 EXCHANGE KYC PERSONA GLOBAL OPTIONS 363 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 364 365 The following option must be in the section "[kyclogic-persona]". 366 367 368 WEBHOOK_AUTH_TOKEN 369 Authentication token Persona must supply to our webhook. This is an optional setting. 370 371 372 EXCHANGE KYC CHECK OPTIONS 373 -------------------------- 374 375 The following options must be in "[kyc-check-$CHECK_NAME]" sections. 376 377 TYPE 378 Which type of check is this? Also determines 379 the SPA form to show to the user for this check. 380 381 * INFO: wait for staff or contact staff out-of band 382 (only information shown, no SPA action) 383 * FORM: SPA should show an inline (HTML) form 384 * LINK: SPA may start external KYC process or upload 385 386 PROVIDER_ID 387 Provider id, present only if type is LINK. 388 Refers to a ``kyc-provider-$PROVIDER_ID`` section. 389 390 FORM_NAME 391 Name of the SPA form, if type is FORM 392 "INFO" and "LINK" are reserved and must not be used. 393 The exchange server and the SPA must agree on a list 394 of supported forms and the resulting attributes. 395 The SPA should include a JSON resource file 396 "forms.json" mapping form names to arrays of 397 attribute names each form provides. 398 The list of possible FORM names is fixed in the SPA 399 for a particular exchange release. 400 401 DESCRIPTION 402 Descriptions to use in the SPA to display the check. 403 404 DESCRIPTION_I18N 405 JSON with internationalized descriptions to use 406 in the SPA to display the check. 407 408 REQUIRES 409 ';'-separated list of fields that the CONTEXT must 410 provide as inputs to this check. For example, 411 for a FORM of type CHOICE, this might state 412 ``choices: string[];``. The type after the ":" 413 is for now purely for documentation and is 414 not checked. However, it may be shown to AML staff 415 when they configure measures. 416 417 OUTPUTS = "business_name street city country registration" 418 Description of the outputs provided by the check. 419 Basically, the check's output is expected to 420 provide the following fields as attribute inputs into 421 a subsequent AML program. INFO never has any outputs. 422 423 FALLBACK 424 Name of an **original** measure to take if the check fails 425 (for any reason, e.g. provider or form fail to 426 satisfy constraints or provider signals user error) 427 Usually should point to a measure that requests 428 AML staff to investigate. The fallback measure 429 context always includes the reasons for the 430 failure. 431 432 EXCHANGE KYC RULES 433 ------------------ 434 435 The following options must be in "[kyc-rule-$RULE_NAME]" sections. 436 437 OPERATION_TYPE = WITHDRAW 438 Operation that triggers this rule. 439 Must be one of AGGREGATE, BALANCE, CLOSE, DEPOSIT, MERGE, 440 REFUND, TRANSACTION or WITHDRAW 441 See the Exchange KYC/AML Operator Manual for the 442 operations these refer to. 443 444 NEXT_MEASURES 445 Space-separated list of next measures to be performed. 446 The SPA should display *all* of these measures to the user. 447 (They have a choice of either which ones, or in 448 which order they are to be performed.) 449 A special measure name "verboten" is used if the 450 specified threshold may never be crossed 451 (under this set of rules). This option is equivalent 452 to the "new_measure" string in an AmlDecisionRequest 453 (with IS_AND_COMBINATOR replacing the "+"-prefix). 454 455 IS_AND_COMBINATOR 456 "YES" if all NEXT_MEASURES will eventually need 457 to be satisfied, "NO" the user has a choice between 458 them. Not actually enforced by the exchange, but 459 primarily used to inform the user whether this is 460 an "and" or "or". YES for "and". 461 462 EXPOSED 463 YES if the rule (specifically, operation type, 464 threshold, timeframe) and the general nature of 465 the next measure (verboten or approval required) 466 should be exposed to the client. 467 Defaults to NO if not set. 468 469 THRESHOLD 470 Threshold amount above which the rule is 471 triggered. The total must be exceeded in the given 472 timeframe. 473 474 TIMEFRAME 475 Timeframe over which the amount to be compared to 476 the THRESHOLD is calculated (for example, "30 days"). 477 Ignored for BALANCE. Can be 'forever'. 478 479 ENABLED = NO 480 Set to YES to enable the rule (default is NO). 481 482 483 EXCHANGE AML PROGRAMS 484 --------------------- 485 486 The following options must be in "[aml-program-$PROG_NAME]" sections. 487 488 COMMAND 489 Name of the program to run. Must match a binary 490 on the local machine where the exchange is running. 491 492 DESCRIPTION 493 Human-readable description of what this 494 AML helper program will do. Used to show 495 to the AML staff. 496 497 ENABLED 498 True if this AML program is enabled (and thus can be 499 used in measures and exposed to AML staff). 500 Optional, default is NO. 501 502 FALLBACK 503 Name of an **original** measure to take if COMMAND fails 504 Usually points to a measure that asks AML staff 505 to contact the systems administrator. The fallback measure 506 context always includes the reasons for the 507 failure. 508 509 EXCHANGE KYC MEASURES 510 --------------------- 511 512 The following options must be in "[kyc-measure-$MEASURE_NAME]" sections. 513 These sections define the **original** measures. 514 515 CHECK_NAME 516 Name of a possible check for this measure. Optional. 517 If not given or set to ``SKIP``, PROGRAM should be run immediately 518 (on an empty set of attributes). 519 520 CONTEXT = {"choices":["individual","business"]} 521 Context for the check. The context can be 522 just an empty JSON object if there is none. 523 524 PROGRAM 525 Program to run on the context and check data to 526 determine the outcome and next measure. 527 Refers to a ``[aml-program-$PROG_NAME]`` section name. 528 529 VOLUNTARY 530 Optional. Set to YES to allow this measure to be 531 done voluntarily by a client. Used to offer the 532 SPA to display measures even if they are 533 not required. Default is NO. 534 535 536 537 AGE_RESTRICTION_ENABLED 538 Set to ``YES`` to enable age restriction on coins. When age restriction is 539 active, certain denominations can be marked with ``AGE_RESTRICTED = YES`` 540 (see `EXCHANGE COIN OPTIONS`_) and wallets must include an age commitment 541 when withdrawing or spending such coins. Default is ``NO``. 542 543 AGE_GROUPS 544 Only meaningful when ``AGE_RESTRICTION_ENABLED = YES``. 545 A colon-separated string of increasing non-negative integers defining the 546 age-group boundaries. Each integer marks the start of the next group; the 547 zero'th group begins implicitly at 0. For example ``"10:18"`` defines three 548 groups: 549 550 1. Group 0: ages 0 through 9 (inclusive) 551 2. Group 1: ages 10 through 17 (inclusive) 552 3. Group 2: ages 18 and above 553 554 If not given the default value ``"8:10:12:14:16:18:21"`` is used. 555 556 557 EXCHANGE OFFLINE SIGNING OPTIONS 558 -------------------------------- 559 560 The following options must be in the section "[exchange-offline]". 561 562 MASTER_PRIV_FILE 563 Location of the master private key on disk. Only used by tools that 564 can be run offline (as the master key is for offline signing). 565 Mandatory. 566 567 SECM_TOFU_FILE 568 Where to store the public keys of both crypto helper modules. 569 Used to persist the keys after the first invocation of the tool, 570 so that if they ever change in the future, this is detected and 571 the tool can abort. 572 Mandatory. 573 574 SECM_DENOM_PUBKEY 575 Public key of the (RSA) crypto helper module. Optional. If not given, 576 we will rely on TOFU. Note that once TOFU has been established, 577 this option will also be ignored. 578 579 SECM_ESIGN_PUBKEY 580 Public key of the (EdDSA) crypto helper module. Optional. If not given, 581 we will rely on TOFU. Note that once TOFU has been established, 582 this option will also be ignored. 583 584 585 EXCHANGE RSA CRYPTO HELPER OPTIONS 586 ---------------------------------- 587 588 The following options must be in the section "[taler-exchange-secmod-rsa]". 589 590 LOOKAHEAD_SIGN 591 How long do we generate denomination and signing keys ahead of time? 592 593 OVERLAP_DURATION 594 How much should validity periods for coins overlap? 595 Should be long enough to avoid problems with 596 wallets picking one key and then due to network latency 597 another key being valid. The ``DURATION_WITHDRAW`` period 598 must be longer than this value. 599 600 SM_PRIV_KEY 601 Where should the security module store its long-term private key? 602 603 KEY_DIR 604 Where should the security module store the private keys it manages? 605 606 UNIXPATH 607 On which path should the security module listen for signing requests? 608 609 Note that the **taler-exchange-secmod-rsa** also evaluates the ``[coin_*]`` 610 configuration sections described below. 611 612 613 EXCHANGE CS CRYPTO HELPER OPTIONS 614 --------------------------------- 615 616 The following options must be in the section "[taler-exchange-secmod-cs]". 617 618 LOOKAHEAD_SIGN 619 How long do we generate denomination and signing keys ahead of time? 620 621 OVERLAP_DURATION 622 How much should validity periods for coins overlap? 623 Should be long enough to avoid problems with 624 wallets picking one key and then due to network latency 625 another key being valid. The ``DURATION_WITHDRAW`` period 626 must be longer than this value. 627 628 SM_PRIV_KEY 629 Where should the security module store its long-term private key? 630 631 KEY_DIR 632 Where should the security module store the private keys it manages? 633 634 UNIXPATH 635 On which path should the security module listen for signing requests? 636 637 Note that the **taler-exchange-secmod-cs** also evaluates the ``[coin_*]`` 638 configuration sections described below. 639 640 641 642 EXCHANGE EDDSA CRYPTO HELPER OPTIONS 643 ------------------------------------ 644 645 The following options must be in the section "[taler-exchange-secmod-eddsa]". 646 647 LOOKAHEAD_SIGN 648 How long do we generate denomination and signing keys ahead of time? 649 650 OVERLAP_DURATION 651 How much should validity periods for coins overlap? 652 Should be long enough to avoid problems with 653 wallets picking one key and then due to network latency 654 another key being valid. The ``DURATION_WITHDRAW`` period 655 must be longer than this value. 656 657 DURATION 658 For how long should EdDSA keys be valid for signing? 659 660 SM_PRIV_KEY 661 Where should the security module store its long-term private key? 662 663 KEY_DIR 664 Where should the security module store the private keys it manages? 665 666 UNIXPATH 667 On which path should the security module listen for signing requests? 668 669 .. include:: frags/exchange-database.rst 670 .. include:: frags/exchange-account.rst 671 .. include:: frags/exchange-coin.rst 672 673 EXCHANGE SANCTIONSCHECK OPTIONS 674 ------------------------------- 675 676 This section configures the taler-exchange-sanctionlist tool to enforce 677 sanctions. The tool scores KYC records in two dimensions, the quality 678 of the match (rating) and the number of attributes that were found in 679 both sets (confidence). 680 681 The following options must be in the section "[exchange-sanctionscheck]". 682 683 RATER_COMMAND 684 Program (and command-line arguments) for the helper program to 685 execute to compare sanction list records. Usually set to 686 something like "robocop $SANCTIONLIST.json", but can be any 687 program that reads KYC attributes in JSON line-by-line and 688 outputs a rating (0-1), confidence (0-1) and free-form sanction list 689 identifier for each JSON input received. 690 691 MIN_ROW_FILENAME 692 Name of the file where taler-exchange-sanctionscheck will store the 693 last row process during sanction list evaluation. Not in thed atabase 694 as we frequently need to reset it when we get a new list, so no 695 transactionality is needed or even desirable. There should be no 696 need to change the default. 697 698 FREEZE_RATING_LIMIT 699 Match quality rating (on a scale of [0,1]) that must be exceeded 700 for the exchange to automatically freeze an account. The account 701 must satisfy both the rating limit and the confidence limit to be 702 frozen. 703 704 FREEZE_CONFIDENCE_LIMIT 705 Match confidence rating (on a scale of [0,1]) that must be exceeded 706 for the exchange to automatically freeze an account. A rating of 0 707 means no attributes were available, while a rating of 1 indicates that 708 we could compare the acconts across all dimensions. 709 710 INVESTIGATION_LIMIT 711 Limit (on a scale of [0,1]) that must be exceeded for an account to 712 be flagged for manual investigation. Only applies of the account 713 is not automatically frozen. The limit given is compared against 714 the quality rating divided by the confidence score. 715 If set at 0.95, a modest 0.8 match with low 0.5 confidence will 716 trigger (1.6 > 0.95), but a good 0.9 match with a super-high 1.0 717 confidence would not (0.9 < 0.95). On the other hand, a bad 0.2 match 718 with super-low 0.1 confidence would again trigger (2.0 > 0.95). 719 720 721 SEE ALSO 722 ======== 723 724 taler-exchange-dbinit(1), taler-exchange-httpd(1), taler-exchange-offline(1), taler-exchange-sanctionscheck(1) 725 726 BUGS 727 ==== 728 729 Report bugs by using https://bugs.taler.net/ or by sending electronic 730 mail to <taler@gnu.org>.