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