summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2024-03-07 10:10:48 +0100
committerChristian Grothoff <christian@grothoff.org>2024-03-07 10:10:48 +0100
commitcc7826233a726fa2a4faae47731309198ef79442 (patch)
tree3c8401ae01ee377accc52a79675d2a70367d4d7a
parent60ccf04bb3579c249a899c4ae88e120acda13c83 (diff)
downloaddocs-cc7826233a726fa2a4faae47731309198ef79442.tar.gz
docs-cc7826233a726fa2a4faae47731309198ef79442.tar.bz2
docs-cc7826233a726fa2a4faae47731309198ef79442.zip
update prebuilt manuals
-rw-r--r--man/challenger-admin.130
-rw-r--r--man/challenger-config.160
-rw-r--r--man/challenger-dbconfig.12
-rw-r--r--man/challenger-dbinit.128
-rw-r--r--man/challenger-httpd.124
-rw-r--r--man/challenger.conf.55
-rw-r--r--man/libeufin-nexus.196
-rw-r--r--man/libeufin-nexus.conf.58
-rw-r--r--man/libeufin-sandbox.122
-rw-r--r--man/sync-config.160
-rw-r--r--man/sync-dbconfig.12
-rw-r--r--man/sync-dbinit.128
-rw-r--r--man/sync-httpd.140
-rw-r--r--man/sync.conf.52
-rw-r--r--man/taler-aggregator-benchmark.134
-rw-r--r--man/taler-auditor-dbconfig.12
-rw-r--r--man/taler-auditor-dbinit.134
-rw-r--r--man/taler-auditor-exchange.126
-rw-r--r--man/taler-auditor-httpd.130
-rw-r--r--man/taler-auditor-offline.140
-rw-r--r--man/taler-auditor-sync.132
-rw-r--r--man/taler-auditor.140
-rw-r--r--man/taler-bank-benchmark.150
-rw-r--r--man/taler-config.160
-rw-r--r--man/taler-exchange-aggregator.136
-rw-r--r--man/taler-exchange-benchmark.150
-rw-r--r--man/taler-exchange-closer.130
-rw-r--r--man/taler-exchange-dbconfig.12
-rw-r--r--man/taler-exchange-dbinit.132
-rw-r--r--man/taler-exchange-drain.126
-rw-r--r--man/taler-exchange-expire.130
-rw-r--r--man/taler-exchange-httpd.150
-rw-r--r--man/taler-exchange-kyc-aml-pep-trigger.14
-rw-r--r--man/taler-exchange-kyc-tester.156
-rw-r--r--man/taler-exchange-offline.194
-rw-r--r--man/taler-exchange-router.130
-rw-r--r--man/taler-exchange-secmod-cs.134
-rw-r--r--man/taler-exchange-secmod-eddsa.134
-rw-r--r--man/taler-exchange-secmod-rsa.134
-rw-r--r--man/taler-exchange-transfer.130
-rw-r--r--man/taler-exchange-wire-gateway-client.166
-rw-r--r--man/taler-exchange-wirewatch.140
-rw-r--r--man/taler-fakebank-run.134
-rw-r--r--man/taler-helper-auditor-aggregation.134
-rw-r--r--man/taler-helper-auditor-coins.134
-rw-r--r--man/taler-helper-auditor-deposits.134
-rw-r--r--man/taler-helper-auditor-purses.134
-rw-r--r--man/taler-helper-auditor-reserves.134
-rw-r--r--man/taler-helper-auditor-wire.136
-rw-r--r--man/taler-mdb.138
-rw-r--r--man/taler-merchant-benchmark.124
-rw-r--r--man/taler-merchant-dbconfig.12
-rw-r--r--man/taler-merchant-dbinit.124
-rw-r--r--man/taler-merchant-depositcheck.136
-rw-r--r--man/taler-merchant-exchange.130
-rw-r--r--man/taler-merchant-httpd.144
-rw-r--r--man/taler-merchant-passwd.126
-rw-r--r--man/taler-merchant-webhook.128
-rw-r--r--man/taler-merchant-wirewatch.134
-rw-r--r--man/taler-terms-generator.114
-rw-r--r--man/taler-unified-setup.16
-rw-r--r--man/taler.conf.5148
-rw-r--r--texinfo/challenger.texi284
-rw-r--r--texinfo/taler-auditor.texi204
-rw-r--r--texinfo/taler-developer-manual.texi1259
-rw-r--r--texinfo/taler-exchange.texi682
-rw-r--r--texinfo/taler-merchant-api-tutorial.texi22
-rw-r--r--texinfo/taler-merchant.texi252
68 files changed, 3090 insertions, 1740 deletions
diff --git a/man/challenger-admin.1 b/man/challenger-admin.1
index df3ab0a7..423d8c68 100644
--- a/man/challenger-admin.1
+++ b/man/challenger-admin.1
@@ -27,20 +27,20 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "CHALLENGER-ADMIN" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "CHALLENGER-ADMIN" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
challenger-admin \- manipulate list of authorized Challenger clients
.SH SYNOPSIS
.sp
\fBchallenger\-admin\fP
-[\fB\-a\fP \fICLIENT_SECRET\fP\ |\ \fB–add=\fP\fICLIENT_SECRET\fP]
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-d\fP\ |\ \fB–delete\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–log=\fP\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP\fIFILENAME\fP]
-[\fB\-q\fP\ |\ \fB–quiet\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-a\fP \fICLIENT_SECRET\fP\ |\ \fB\-\-add=\fP\fICLIENT_SECRET\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-d\fP\ |\ \fB\-\-delete\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-log=\fP\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP\fIFILENAME\fP]
+[\fB\-q\fP\ |\ \fB\-\-quiet\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
CLIENT_URL
.SH DESCRIPTION
.sp
@@ -49,23 +49,23 @@ CLIENT_URL
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-a\fP \fISECRET\fP | \fB–add=\fP‌\fISECRET\fP
+\fB\-a\fP \fISECRET\fP | \fB\-\-add=\fP‌\fISECRET\fP
Add the client with the given \fICLIENT_URL setting the client secret to *SECRET\fP\&. Prints the CLIENT_ID of the added client.
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the Challenger commands
to operate from \fIFILENAME\fP\&.
.TP
-\fB\-d\fP | \fB–delete\fP
+\fB\-d\fP | \fB\-\-delete\fP
Delete the client with the given \fICLIENT_URL\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–log=\fP\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-log=\fP\fILOGLEVEL\fP
Configure logging to use \fILOGLEVEL\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP\fIFILENAME\fP
Configure logging to write logs to \fIFILENAME\fP\&.
.TP
\fB\-q\fP | \fB–\-quiet\fP
diff --git a/man/challenger-config.1 b/man/challenger-config.1
index a03108d8..35bfb3a0 100644
--- a/man/challenger-config.1
+++ b/man/challenger-config.1
@@ -27,75 +27,75 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "CHALLENGER-CONFIG" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "CHALLENGER-CONFIG" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
challenger-config \- manipulate Challenger configuration files
.SH SYNOPSIS
.sp
\fBchallenger\-config\fP
-[\fB\-b\fP\ \fIbackend\fP\ |\ \fB–supported\-backend=\fP\fIbackend\fP]
-[\fB\-c\fP\ \fIfilename\fP\ |\ \fB–config=\fP\fIfilename\fP]
-[\fB\-f\fP\ |\ \fB–filename\fP]
-[\fB\-F\fP\ |\ \fB–full\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fIloglevel\fP\ |\ \fB–loglevel=\fP\fIloglevel\fP]
-[\fB\-l\fP\ \fIfilename\fP\ |\ \fB–logfile=\fP‌\fIfilename\fP]
-[\fB\-o\fP\ \fIoption\fP\ |\ \fB–option=\fP\fIoption\fP]
-[\fB\-r\fP\ |\ \fB–rewrite\fP]
-[\fB\-S\fP\ |\ \fB–list\-sections\fP]
-[\fB\-s\fP\ \fIsection\fP\ |\ \fB–section=\fP\fIsection\fP]
-[\fB\-V\fP\ \fIvalue\fP\ |\ \fB–value=\fP\fIvalue\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-b\fP\ \fIbackend\fP\ |\ \fB\-\-supported\-backend=\fP\fIbackend\fP]
+[\fB\-c\fP\ \fIfilename\fP\ |\ \fB\-\-config=\fP\fIfilename\fP]
+[\fB\-f\fP\ |\ \fB\-\-filename\fP]
+[\fB\-F\fP\ |\ \fB\-\-full\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fIloglevel\fP\ |\ \fB\-\-loglevel=\fP\fIloglevel\fP]
+[\fB\-l\fP\ \fIfilename\fP\ |\ \fB\-\-logfile=\fP‌\fIfilename\fP]
+[\fB\-o\fP\ \fIoption\fP\ |\ \fB\-\-option=\fP\fIoption\fP]
+[\fB\-r\fP\ |\ \fB\-\-rewrite\fP]
+[\fB\-S\fP\ |\ \fB\-\-list\-sections\fP]
+[\fB\-s\fP\ \fIsection\fP\ |\ \fB\-\-section=\fP\fIsection\fP]
+[\fB\-V\fP\ \fIvalue\fP\ |\ \fB\-\-value=\fP\fIvalue\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBchallenger\-config\fP can be used to read or modify Challenger configuration files.
.INDENT 0.0
.TP
-\fB\-b\fP \fIBACKEND\fP | \fB–supported\-backend=\fP\fIBACKEND\fP
+\fB\-b\fP \fIBACKEND\fP | \fB\-\-supported\-backend=\fP\fIBACKEND\fP
Tests whether the specified \fIBACKEND\fP is supported by the current installation.
-The backend must match the name of a plugin, i.e. “namestore_postgres” for
-the PostgreSQL database backend of the “NAMESTORE” service. If \fIBACKEND\fP is
+The backend must match the name of a plugin, i.e. \(dqnamestore_postgres\(dq for
+the PostgreSQL database backend of the \(dqNAMESTORE\(dq service. If \fIBACKEND\fP is
supported, challenger\-config will return a status code of 0 (success), otherwise
77 (unsupported). When this option is specified, no other options may be
specified. Specifying this option together with other options will cause
challenger\-config to return a status code of 1 (error).
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP\fIFILENAME\fP
Use the configuration file \fIFILENAME\fP\&.
.TP
-\fB\-f\fP | \fB–filename\fP
+\fB\-f\fP | \fB\-\-filename\fP
Try to perform expansions as if the option values represent filenames (will
also be applied even if the option is not really a filename).
.TP
-\fB\-F\fP | \fB–full\fP
+\fB\-F\fP | \fB\-\-full\fP
Write the full configuration file, not just the differences to the defaults.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP\fILOGLEVEL\fP
Use \fILOGLEVEL\fP for logging.
Valid values are \fBDEBUG\fP, \fBINFO\fP, \fBWARNING\fP, and \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-o\fP \fIOPTION\fP | \fB–option=\fP\fIOPTION\fP
+\fB\-o\fP \fIOPTION\fP | \fB\-\-option=\fP\fIOPTION\fP
Which configuration option should be accessed or edited. Required to set a
value. If not given, all values of a given section will be printed in the
-format “OPTION = VALUE”.
+format \(dqOPTION = VALUE\(dq.
.TP
-\fB\-r\fP | \fB–rewrite\fP
+\fB\-r\fP | \fB\-\-rewrite\fP
Write the configuration file even if nothing changed. Will remove all comments!
.TP
-\fB\-S\fP | \fB–list\-sections\fP
+\fB\-S\fP | \fB\-\-list\-sections\fP
List available configuration sections for use with \fB\-\-section\fP\&.
.TP
-\fB\-s\fP \fISECTION\fP | \fB–section=\fP\fISECTION\fP
+\fB\-s\fP \fISECTION\fP | \fB\-\-section=\fP\fISECTION\fP
Which configuration section should be accessed or edited.
Required option.
.TP
-\fB\-V\fP \fIVALUE\fP | \fB–value=\fP\fIVALUE\fP
+\fB\-V\fP \fIVALUE\fP | \fB\-\-value=\fP\fIVALUE\fP
Configuration value to store in the given section under the given option.
Must only be given together with \fB\-s\fP and \fB\-o\fP options.
.INDENT 7.0
@@ -105,7 +105,7 @@ Changing the configuration file with \fB\-V\fP will remove comments
and may reorder sections and remove \fB@INLINE@\fP directives.
.UNINDENT
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print GNU Taler version number.
.UNINDENT
.SH SEE ALSO
diff --git a/man/challenger-dbconfig.1 b/man/challenger-dbconfig.1
index fc47548c..042580b1 100644
--- a/man/challenger-dbconfig.1
+++ b/man/challenger-dbconfig.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "CHALLENGER-DBCONFIG" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "CHALLENGER-DBCONFIG" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
challenger-dbconfig \- configure challenger database
.SH SYNOPSIS
diff --git a/man/challenger-dbinit.1 b/man/challenger-dbinit.1
index 951b1be4..41475318 100644
--- a/man/challenger-dbinit.1
+++ b/man/challenger-dbinit.1
@@ -27,19 +27,19 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "CHALLENGER-DBINIT" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "CHALLENGER-DBINIT" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
challenger-dbinit \- initialize the Challenger database
.SH SYNOPSIS
.sp
\fBchallenger\-dbinit\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-g\fP\ |\ \fB–garbagecollect\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–log=\fP\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP\fIFILENAME\fP]
-[\fB\-r\fP\ |\ \fB–reset\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-g\fP\ |\ \fB\-\-garbagecollect\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-log=\fP\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP\fIFILENAME\fP]
+[\fB\-r\fP\ |\ \fB\-\-reset\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBchallenger\-dbinit\fP is a command\-line tool to initialize the Challenger database.
@@ -47,23 +47,23 @@ challenger-dbinit \- initialize the Challenger database
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the Challenger commands
to operate from \fIFILENAME\fP\&.
.TP
-\fB\-g\fP | \fB–garbagecollect\fP
+\fB\-g\fP | \fB\-\-garbagecollect\fP
Remove state data from database.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–log=\fP\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-log=\fP\fILOGLEVEL\fP
Configure logging to use \fILOGLEVEL\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP\fIFILENAME\fP
Configure logging to write logs to \fIFILENAME\fP\&.
.TP
-\fB\-r\fP | \fB–reset\fP
+\fB\-r\fP | \fB\-\-reset\fP
Reset database. (\fBDANGEROUS\fP: All existing data is lost!)
.TP
\fB\-v\fP | \fB–version\fP
diff --git a/man/challenger-httpd.1 b/man/challenger-httpd.1
index bc94da85..d9a0b556 100644
--- a/man/challenger-httpd.1
+++ b/man/challenger-httpd.1
@@ -27,18 +27,18 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "CHALLENGER-HTTPD" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "CHALLENGER-HTTPD" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
challenger-httpd \- provide the Challenger HTTP interface
.SH SYNOPSIS
.sp
\fBchallenger\-httpd\fP
-[\fB\-C\fP\ |\ \fB–connection\-close\fP]
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–log=\fP\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP\fIFILENAME\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-C\fP\ |\ \fB\-\-connection\-close\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-log=\fP\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP\fIFILENAME\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBchallenger\-httpd\fP is a command\-line tool to provide the Challenger HTTP interface.
@@ -46,20 +46,20 @@ challenger-httpd \- provide the Challenger HTTP interface
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-C\fP | \fB–connection\-close\fP
+\fB\-C\fP | \fB\-\-connection\-close\fP
Force HTTP connections to be closed after each request.
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the Challenger commands
to operate from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–log=\fP\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-log=\fP\fILOGLEVEL\fP
Configure logging to use \fILOGLEVEL\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP\fIFILENAME\fP
Configure logging to write logs to \fIFILENAME\fP\&.
.TP
\fB\-v\fP | \fB–version\fP
diff --git a/man/challenger.conf.5 b/man/challenger.conf.5
index 7a198958..92b5d256 100644
--- a/man/challenger.conf.5
+++ b/man/challenger.conf.5
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "CHALLENGER.CONF" "5" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "CHALLENGER.CONF" "5" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
challenger.conf \- Challenger configuration file
.SH DESCRIPTION
@@ -160,6 +160,9 @@ Which command should we execute to transmit the challenge code to the address. T
.TP
.B ADDRESS_TYPE
Type of the address that is being collected, returned as part of the \fBaddress_type\fP in the \fB/info\fP endpoint. Examples include \fBemail\fP or \fBphone\fP\&.
+.TP
+.B ADDRESS_RESTRICTIONS
+JSON object with a map of keys (names of the fields of the address to be entered by the user) to objects with a \(dqregex\(dq (string) containing an extended Posix regular expression for allowed address field values, and a \(dqhint\(dq/\(dqhint_i18n\(dq giving a human\-readable explanation to display if the value entered by the user does not match the regex. Keys that are not mapped to such an object have no restriction on the value provided by the user. Examples would be \(aq{\(dqemail\(dq:{\(dqhint\(dq:\(dqvalid e\-mail address required\(dq,\(dqregex\(dq:\(dq^[a\-zA\-Z0\-9_.+\-]+@[a\-zA\-Z0\-9\-]+.[a\-zA\-Z0\-9\-.]+$\(dq}\(aq or \(aq{\(dqzip\(dq:{\(dqhint\(dq:\(dqnumeric zip code required\(dq,\(dqregex\(dq:\(dq^[0\-9]+$\(dq}\(aq.
.UNINDENT
.SH SEE ALSO
.sp
diff --git a/man/libeufin-nexus.1 b/man/libeufin-nexus.1
index ecc3e9e7..a4f0d2ac 100644
--- a/man/libeufin-nexus.1
+++ b/man/libeufin-nexus.1
@@ -27,15 +27,15 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "LIBEUFIN-NEXUS" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "LIBEUFIN-NEXUS" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
libeufin-nexus \- service to interface to various bank access APIs
.SH SYNOPSIS
.sp
\fBlibeufin\-nexus\fP
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB–version\fP]
-COMMAND [ARGS…]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-\-version\fP]
+COMMAND [ARGS...]
.sp
Subcommands: \fBdbinit\fP, \fBebics\-setup\fP, \fBebics\-submit\fP, \fBebics\-fetch\fP, \fBconfig\fP
.SH DESCRIPTION
@@ -46,7 +46,7 @@ various bank access APIs
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
\fB–version\fP
@@ -60,28 +60,28 @@ In order to operate any EBICS communication with \fBlibeufin\-nexus\fP, it is ne
The following sections describe each command in detail.
.SS ebics\-setup
.sp
-This command creates the client keys, if they aren’t found already on the disk, and sends them to the bank if they were not sent yet. In case of sending, it ejects the PDF document that contains the keys fingerprints, so that the user can send it to the bank to confirm their keys. The process continues by checking if the bank keys exist already on disk, and proceeds with downloading them in case they are not. It checks then if the bank keys were accepted by the user; if yes, the setup terminates, otherwise it interactively asks the user to mark the keys as accepted. By accepting the bank keys, the setup terminates successfully.
+This command creates the client keys, if they aren\(aqt found already on the disk, and sends them to the bank if they were not sent yet. In case of sending, it ejects the PDF document that contains the keys fingerprints, so that the user can send it to the bank to confirm their keys. The process continues by checking if the bank keys exist already on disk, and proceeds with downloading them in case they are not. It checks then if the bank keys were accepted by the user; if yes, the setup terminates, otherwise it interactively asks the user to mark the keys as accepted. By accepting the bank keys, the setup terminates successfully.
.sp
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-c\fP | \fB–config\fP \fIFILENAME\fP
+\fB\-c\fP | \fB\-\-config\fP \fIFILENAME\fP
Specifies the configuration file.
.TP
-\fB\-L\fP | \fB–log\fP \fILOGLEVEL\fP
+\fB\-L\fP | \fB\-\-log\fP \fILOGLEVEL\fP
Configure logging to use LOGLEVEL.
.TP
-\fB–force\-keys\-resubmission\fP
+\fB\-\-force\-keys\-resubmission\fP
Resubmits the client keys. If no keys were found, it creates and submits them.
.TP
-\fB–auto\-accept\-keys\fP
+\fB\-\-auto\-accept\-keys\fP
Accepts the bank keys without interactively asking the user.
.TP
-\fB–generate\-registration\-pdf\fP
-Generates the PDF with the client keys fingerprints, if the keys have the submitted state. That’s useful in case the PDF went lost after the first submission and the user needs a new PDF.
+\fB\-\-generate\-registration\-pdf\fP
+Generates the PDF with the client keys fingerprints, if the keys have the submitted state. That\(aqs useful in case the PDF went lost after the first submission and the user needs a new PDF.
.UNINDENT
.SS dbinit
.sp
@@ -90,16 +90,16 @@ This subcommand defines the database schema for Nexus. It is mandatory to run t
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-c\fP | \fB–config\fP \fIFILENAME\fP
+\fB\-c\fP | \fB\-\-config\fP \fIFILENAME\fP
Specifies the configuration file.
.TP
-\fB\-L\fP | \fB–log\fP \fILOGLEVEL\fP
+\fB\-L\fP | \fB\-\-log\fP \fILOGLEVEL\fP
Configure logging to use LOGLEVEL.
.TP
-\fB\-r\fP | \fB–reset\fP
+\fB\-r\fP | \fB\-\-reset\fP
If present, deletes any database table (WARNING: potential data loss)
.UNINDENT
.SS ebics\-submit
@@ -109,17 +109,17 @@ This subcommand submits any initiated payment that was not already sent to the b
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-c\fP | \fB–config\fP \fIFILENAME\fP
+\fB\-c\fP | \fB\-\-config\fP \fIFILENAME\fP
Specifies the configuration file.
.TP
-\fB\-L\fP | \fB–log\fP \fILOGLEVEL\fP
+\fB\-L\fP | \fB\-\-log\fP \fILOGLEVEL\fP
Configure logging to use LOGLEVEL.
Uploaded documents will be stored \fIbefore\fP being submitted to the bank. This directory would contain several directories, each named after the \fBYYYY\-MM\-DD/submit\fP format. The pain.001 file would then be named in the following schema: \fB$microseconds_pain.001.xml\fP\&.
.TP
-\fB–transient\fP
+\fB\-\-transient\fP
This flag, enabled by default, causes the command to check the database and submit only once, and then return.
.UNINDENT
.SS ebics\-fetch
@@ -137,48 +137,48 @@ The files type can be given as an argument to select what will be fetched. If no
.UNINDENT
.INDENT 0.0
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-c\fP | \fB–config\fP \fIFILENAME\fP
+\fB\-c\fP | \fB\-\-config\fP \fIFILENAME\fP
Specifies the configuration file.
.TP
-\fB\-L\fP | \fB–log\fP \fILOGLEVEL\fP
+\fB\-L\fP | \fB\-\-log\fP \fILOGLEVEL\fP
Configure logging to use LOGLEVEL.
.TP
-\fB–debug\-ebics\fP \fISAVEDIR\fP
+\fB\-\-debug\-ebics\fP \fISAVEDIR\fP
Log EBICS content at SAVEDIR.
Downloaded documents will be stored \fIbefore\fP being ingested in the database. This directory would contain several directories, each named after the \fBYYYY\-MM\-DD/fetch\fP format. The stored files would then be named after the following schema: \fB$microseconds_$filename\fP\&. Exception to this naming scheme are the HAC responses, since they do not get any filename assigned by the ZIP archive (they are sent unzipped). Their naming scheme is: \fB$microseconds_HAC_response.pain.002.xml\fP\&.
.TP
-\fB–transient\fP
+\fB\-\-transient\fP
This flag, enabled by default, causes the command to perform one download and return.
.TP
-\fB–pinned\-start\fP
-Only supported in –transient mode, this option lets specify the earliest timestamp of the downloaded documents. The latest timestamp is always the current time.
+\fB\-\-pinned\-start\fP
+Only supported in \-\-transient mode, this option lets specify the earliest timestamp of the downloaded documents. The latest timestamp is always the current time.
.UNINDENT
.SS initiate\-payment
.sp
This subcommand initiates an outgoing payment. The pending payment is stored in the database and will be performed the next time \fBebics\-submit\fP run.
.sp
-It takes one argument, the creditor IBAN payto URI, which must contain a ‘receiver\-name’ and may contain an ‘amount’ and a ‘message’ if they have not been defined using CLI options.
+It takes one argument, the creditor IBAN payto URI, which must contain a \(aqreceiver\-name\(aq and may contain an \(aqamount\(aq and a \(aqmessage\(aq if they have not been defined using CLI options.
.INDENT 0.0
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-c\fP | \fB–config\fP \fIFILENAME\fP
+\fB\-c\fP | \fB\-\-config\fP \fIFILENAME\fP
Specifies the configuration file.
.TP
-\fB\-L\fP | \fB–log\fP \fILOGLEVEL\fP
+\fB\-L\fP | \fB\-\-log\fP \fILOGLEVEL\fP
Configure logging to use LOGLEVEL.
.TP
-\fB–amount\fP \fIAMOUNT\fP
-The amount to transfer, payto ‘amount’ parameter takes the precedence
+\fB\-\-amount\fP \fIAMOUNT\fP
+The amount to transfer, payto \(aqamount\(aq parameter takes the precedence
.TP
-\fB–subject\fP \fITEXT\fP
-The payment subject, payto ‘message’ parameter takes the precedence
+\fB\-\-subject\fP \fITEXT\fP
+The payment subject, payto \(aqmessage\(aq parameter takes the precedence
.TP
-\fB–request\-uid\fP \fITEXT\fP
+\fB\-\-request\-uid\fP \fITEXT\fP
The payment request UID, will be randomly generated if missing.
.UNINDENT
.SS config
@@ -186,7 +186,7 @@ The payment request UID, will be randomly generated if missing.
This command inspect or change the configuration.
.INDENT 0.0
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.UNINDENT
.sp
@@ -198,16 +198,16 @@ This command lookup config value.
It takes two arguments, the section name and the option name
.INDENT 0.0
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-c\fP | \fB–config\fP \fIFILENAME\fP
+\fB\-c\fP | \fB\-\-config\fP \fIFILENAME\fP
Specifies the configuration file.
.TP
-\fB\-L\fP | \fB–log\fP \fILOGLEVEL\fP
+\fB\-L\fP | \fB\-\-log\fP \fILOGLEVEL\fP
Configure logging to use LOGLEVEL.
.TP
-\fB\-f\fP | \fB–filename\fP
+\fB\-f\fP | \fB\-\-filename\fP
Interpret value as path with dollar\-expansion.
.UNINDENT
.SS config dump
@@ -215,13 +215,13 @@ Interpret value as path with dollar\-expansion.
This command dump the configuration.
.INDENT 0.0
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-c\fP | \fB–config\fP \fIFILENAME\fP
+\fB\-c\fP | \fB\-\-config\fP \fIFILENAME\fP
Specifies the configuration file.
.TP
-\fB\-L\fP | \fB–log\fP \fILOGLEVEL\fP
+\fB\-L\fP | \fB\-\-log\fP \fILOGLEVEL\fP
Configure logging to use LOGLEVEL.
.UNINDENT
.SS config pathsub
@@ -231,13 +231,13 @@ This command substitute variables in a path.
It takes one argument, a path expression.
.INDENT 0.0
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-c\fP | \fB–config\fP \fIFILENAME\fP
+\fB\-c\fP | \fB\-\-config\fP \fIFILENAME\fP
Specifies the configuration file.
.TP
-\fB\-L\fP | \fB–log\fP \fILOGLEVEL\fP
+\fB\-L\fP | \fB\-\-log\fP \fILOGLEVEL\fP
Configure logging to use LOGLEVEL.
.UNINDENT
.SH SEE ALSO
diff --git a/man/libeufin-nexus.conf.5 b/man/libeufin-nexus.conf.5
index f9f09a53..51ea5f4c 100644
--- a/man/libeufin-nexus.conf.5
+++ b/man/libeufin-nexus.conf.5
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "LIBEUFIN-NEXUS.CONF" "5" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "LIBEUFIN-NEXUS.CONF" "5" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
libeufin-nexus.conf \- LibEuFin Nexus configuration file
.SH DESCRIPTION
@@ -49,7 +49,7 @@ escape characters in such strings; all characters between the double quotes
(including other double quotes) are taken verbatim.
.sp
Durations must be expressed with a number followed by the time unit. The following
-time units are supported: ‘s’ (seconds), ‘m’ (minutes), ‘h’ (hours). For example,
+time units are supported: \(aqs\(aq (seconds), \(aqm\(aq (minutes), \(aqh\(aq (hours). For example,
the value \fI5m\fP denotes a duration of \fIfive minutes\fP\&.
.sp
Values that represent filenames can begin with a \fB/bin/sh\fP\-like variable
@@ -144,13 +144,13 @@ the \fBlibeufin\-nexus ebics\-setup\fP command.
.B CURRENCY
Name of the currency, e.g.\ “EUR” for Euro.
.TP
-.B HOST_BASE_URL = \fI\%http://bank.example.com/\fP
+.B HOST_BASE_URL
URL of the EBICS server
.TP
.B BANK_DIALECT
Name of the following combination: EBICS version and ISO20022 recommendations
that Nexus would honor in the communication with the bank. Currently only the
-‘postfinance’ value is supported.
+\(aqpostfinance\(aq value is supported.
.TP
.B HOST_ID
EBICS specific: name of the EBICS host
diff --git a/man/libeufin-sandbox.1 b/man/libeufin-sandbox.1
index 35c2d8b8..295f2879 100644
--- a/man/libeufin-sandbox.1
+++ b/man/libeufin-sandbox.1
@@ -27,15 +27,15 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "LIBEUFIN-SANDBOX" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "LIBEUFIN-SANDBOX" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
libeufin-sandbox \- simulate core banking system with EBICS access to bank accounts
.SH SYNOPSIS
.sp
\fBlibeufin\-sandbox\fP
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB–version\fP]
-COMMAND [ARGS…]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-\-version\fP]
+COMMAND [ARGS...]
.sp
Commands: serve, reset\-tables, config, make\-transaction, camt053tick
default\-exchange
@@ -49,12 +49,12 @@ requests either over the network or via a Unix domain socket.
Related program \fBlibeufin\-cli\fP is the preferred front end
for that mode of operation.
There is also a mode where \fBlibeufin\-sandbox\fP accepts commands directly,
-useful for configuring one or more “demobank” (simulated bank) instances.
+useful for configuring one or more \(dqdemobank\(dq (simulated bank) instances.
.sp
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
\fB–version\fP
@@ -88,10 +88,10 @@ Option \fB\-\-captcha\-url $URL\fP specifies where the wallet user is going
to be redirected to confirm the withdrawal operation. This $URL should
point to the bank frontend. More precisely to the UI that let the user
finish a withdrawal operation that needs to be confirmed. Example of
-this value may be “\fI\%https://bank.domain/#/operation\fP/{wopid}” where
-“\fI\%https://bank.domain\fP” returns the demobank SPA and the demobank view under
-the route “/operation/{wopid}” will show the status of the operation id {wopid}.
-Note that “{wopid}” is literally in the –captcha\-url config and replaced at
+this value may be \(dq\fI\%https://bank.domain/#/operation\fP/{wopid}\(dq where
+\(dq\fI\%https://bank.domain\fP\(dq returns the demobank SPA and the demobank view under
+the route \(dq/operation/{wopid}\(dq will show the status of the operation id {wopid}.
+Note that \(dq{wopid}\(dq is literally in the \-\-captcha\-url config and replaced at
runtime by the sandbox server.
Option \fB\-\-bank\-debt\-limit N\fP (default: 1000000) specifies that
the bank debt limit should be N (units of currency).
@@ -141,7 +141,7 @@ This sets the default exchange for demobank \fBbank01\fP\&.
It is an error if the demobank does not exist.
.SS make\-transaction
.sp
-This is a “legacy” command, useful in a previous iteration of LibEuFin
+This is a \(dqlegacy\(dq command, useful in a previous iteration of LibEuFin
and for internal testing.
It creates and records a wire transfer transaction in the database.
.sp
diff --git a/man/sync-config.1 b/man/sync-config.1
index 891e8980..fce36b53 100644
--- a/man/sync-config.1
+++ b/man/sync-config.1
@@ -27,75 +27,75 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "SYNC-CONFIG" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "SYNC-CONFIG" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
sync-config \- manipulate Sync configuration files
.SH SYNOPSIS
.sp
\fBsync\-config\fP
-[\fB\-b\fP\ \fIbackend\fP\ |\ \fB–supported\-backend=\fP\fIbackend\fP]
-[\fB\-c\fP\ \fIfilename\fP\ |\ \fB–config=\fP\fIfilename\fP]
-[\fB\-f\fP\ |\ \fB–filename\fP]
-[\fB\-F\fP\ |\ \fB–full\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fIloglevel\fP\ |\ \fB–loglevel=\fP\fIloglevel\fP]
-[\fB\-l\fP\ \fIfilename\fP\ |\ \fB–logfile=\fP‌\fIfilename\fP]
-[\fB\-o\fP\ \fIoption\fP\ |\ \fB–option=\fP\fIoption\fP]
-[\fB\-r\fP\ |\ \fB–rewrite\fP]
-[\fB\-S\fP\ |\ \fB–list\-sections\fP]
-[\fB\-s\fP\ \fIsection\fP\ |\ \fB–section=\fP\fIsection\fP]
-[\fB\-V\fP\ \fIvalue\fP\ |\ \fB–value=\fP\fIvalue\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-b\fP\ \fIbackend\fP\ |\ \fB\-\-supported\-backend=\fP\fIbackend\fP]
+[\fB\-c\fP\ \fIfilename\fP\ |\ \fB\-\-config=\fP\fIfilename\fP]
+[\fB\-f\fP\ |\ \fB\-\-filename\fP]
+[\fB\-F\fP\ |\ \fB\-\-full\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fIloglevel\fP\ |\ \fB\-\-loglevel=\fP\fIloglevel\fP]
+[\fB\-l\fP\ \fIfilename\fP\ |\ \fB\-\-logfile=\fP‌\fIfilename\fP]
+[\fB\-o\fP\ \fIoption\fP\ |\ \fB\-\-option=\fP\fIoption\fP]
+[\fB\-r\fP\ |\ \fB\-\-rewrite\fP]
+[\fB\-S\fP\ |\ \fB\-\-list\-sections\fP]
+[\fB\-s\fP\ \fIsection\fP\ |\ \fB\-\-section=\fP\fIsection\fP]
+[\fB\-V\fP\ \fIvalue\fP\ |\ \fB\-\-value=\fP\fIvalue\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBsync\-config\fP can be used to read or modify Sync configuration files.
.INDENT 0.0
.TP
-\fB\-b\fP \fIBACKEND\fP | \fB–supported\-backend=\fP\fIBACKEND\fP
+\fB\-b\fP \fIBACKEND\fP | \fB\-\-supported\-backend=\fP\fIBACKEND\fP
Tests whether the specified \fIBACKEND\fP is supported by the current installation.
-The backend must match the name of a plugin, i.e. “namestore_postgres” for
-the PostgreSQL database backend of the “NAMESTORE” service. If \fIBACKEND\fP is
+The backend must match the name of a plugin, i.e. \(dqnamestore_postgres\(dq for
+the PostgreSQL database backend of the \(dqNAMESTORE\(dq service. If \fIBACKEND\fP is
supported, sync\-config will return a status code of 0 (success), otherwise
77 (unsupported). When this option is specified, no other options may be
specified. Specifying this option together with other options will cause
sync\-config to return a status code of 1 (error).
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP\fIFILENAME\fP
Use the configuration file \fIFILENAME\fP\&.
.TP
-\fB\-f\fP | \fB–filename\fP
+\fB\-f\fP | \fB\-\-filename\fP
Try to perform expansions as if the option values represent filenames (will
also be applied even if the option is not really a filename).
.TP
-\fB\-F\fP | \fB–full\fP
+\fB\-F\fP | \fB\-\-full\fP
Write the full configuration file, not just the differences to the defaults.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP\fILOGLEVEL\fP
Use \fILOGLEVEL\fP for logging.
Valid values are \fBDEBUG\fP, \fBINFO\fP, \fBWARNING\fP, and \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-o\fP \fIOPTION\fP | \fB–option=\fP\fIOPTION\fP
+\fB\-o\fP \fIOPTION\fP | \fB\-\-option=\fP\fIOPTION\fP
Which configuration option should be accessed or edited. Required to set a
value. If not given, all values of a given section will be printed in the
-format “OPTION = VALUE”.
+format \(dqOPTION = VALUE\(dq.
.TP
-\fB\-r\fP | \fB–rewrite\fP
+\fB\-r\fP | \fB\-\-rewrite\fP
Write the configuration file even if nothing changed. Will remove all comments!
.TP
-\fB\-S\fP | \fB–list\-sections\fP
+\fB\-S\fP | \fB\-\-list\-sections\fP
List available configuration sections for use with \fB\-\-section\fP\&.
.TP
-\fB\-s\fP \fISECTION\fP | \fB–section=\fP\fISECTION\fP
+\fB\-s\fP \fISECTION\fP | \fB\-\-section=\fP\fISECTION\fP
Which configuration section should be accessed or edited.
Required option.
.TP
-\fB\-V\fP \fIVALUE\fP | \fB–value=\fP\fIVALUE\fP
+\fB\-V\fP \fIVALUE\fP | \fB\-\-value=\fP\fIVALUE\fP
Configuration value to store in the given section under the given option.
Must only be given together with \fB\-s\fP and \fB\-o\fP options.
.INDENT 7.0
@@ -105,7 +105,7 @@ Changing the configuration file with \fB\-V\fP will remove comments
and may reorder sections and remove \fB@INLINE@\fP directives.
.UNINDENT
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print GNU Taler version number.
.UNINDENT
.SH SEE ALSO
diff --git a/man/sync-dbconfig.1 b/man/sync-dbconfig.1
index d031683f..2fb51b91 100644
--- a/man/sync-dbconfig.1
+++ b/man/sync-dbconfig.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "SYNC-DBCONFIG" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "SYNC-DBCONFIG" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
sync-dbconfig \- configure sync database
.SH SYNOPSIS
diff --git a/man/sync-dbinit.1 b/man/sync-dbinit.1
index 7b650724..6f34f31d 100644
--- a/man/sync-dbinit.1
+++ b/man/sync-dbinit.1
@@ -27,19 +27,19 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "SYNC-DBINIT" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "SYNC-DBINIT" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
sync-dbinit \- initialize the Sync database
.SH SYNOPSIS
.sp
\fBsync\-dbinit\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-g\fP\ |\ \fB–garbagecollect\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–log=\fP\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP\fIFILENAME\fP]
-[\fB\-r\fP\ |\ \fB–reset\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-g\fP\ |\ \fB\-\-garbagecollect\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-log=\fP\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP\fIFILENAME\fP]
+[\fB\-r\fP\ |\ \fB\-\-reset\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBsync\-dbinit\fP is a command\-line tool to initialize the Sync database.
@@ -47,23 +47,23 @@ sync-dbinit \- initialize the Sync database
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the Sync commands
to operate from \fIFILENAME\fP\&.
.TP
-\fB\-g\fP | \fB–garbagecollect\fP
+\fB\-g\fP | \fB\-\-garbagecollect\fP
Remove state data from database.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–log=\fP\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-log=\fP\fILOGLEVEL\fP
Configure logging to use \fILOGLEVEL\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP\fIFILENAME\fP
Configure logging to write logs to \fIFILENAME\fP\&.
.TP
-\fB\-r\fP | \fB–reset\fP
+\fB\-r\fP | \fB\-\-reset\fP
Reset database. (\fBDANGEROUS\fP: All existing data is lost!)
.TP
\fB\-v\fP | \fB–version\fP
diff --git a/man/sync-httpd.1 b/man/sync-httpd.1
index 425961cb..eed1cfa4 100644
--- a/man/sync-httpd.1
+++ b/man/sync-httpd.1
@@ -27,22 +27,22 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "SYNC-HTTPD" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "SYNC-HTTPD" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
sync-httpd \- provide the Sync HTTP interface
.SH SYNOPSIS
.sp
\fBsync\-httpd\fP
-[\fB\-A\fP\ \fIUSERNAME:PASSWORD\fP\ |\ \fB–auth=\fP\fIUSERNAME:PASSWORD\fP]
-[\fB\-C\fP\ |\ \fB–connection\-close\fP]
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-k\fP\ \fIKEYFILE\fP\ |\ \fB–key=\fP\fIKEYFILE\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–log=\fP\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP\fIFILENAME\fP]
-[\fB\-p\fP\ \fIKEYFILEPASSPHRASE\fP\ |\ \fB–pass=\fP\fIKEYFILEPASSPHRASE\fP]
-[\fB\-t\fP\ \fICERTTYPE\fP\ |\ \fB–type=\fP\fICERTTYPE\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-A\fP\ \fIUSERNAME:PASSWORD\fP\ |\ \fB\-\-auth=\fP\fIUSERNAME:PASSWORD\fP]
+[\fB\-C\fP\ |\ \fB\-\-connection\-close\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-k\fP\ \fIKEYFILE\fP\ |\ \fB\-\-key=\fP\fIKEYFILE\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-log=\fP\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP\fIFILENAME\fP]
+[\fB\-p\fP\ \fIKEYFILEPASSPHRASE\fP\ |\ \fB\-\-pass=\fP\fIKEYFILEPASSPHRASE\fP]
+[\fB\-t\fP\ \fICERTTYPE\fP\ |\ \fB\-\-type=\fP\fICERTTYPE\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBsync\-httpd\fP is a command\-line tool to provide the Sync HTTP interface.
@@ -50,32 +50,32 @@ sync-httpd \- provide the Sync HTTP interface
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-A\fP \fIUSERNAME:PASSWORD\fP | \fB–auth=\fP\fIUSERNAME:PASSWORD\fP
+\fB\-A\fP \fIUSERNAME:PASSWORD\fP | \fB\-\-auth=\fP\fIUSERNAME:PASSWORD\fP
Use the given \fIUSERNAME\fP and \fIPASSWORD\fP for client authentication.
.TP
-\fB\-C\fP | \fB–connection\-close\fP
+\fB\-C\fP | \fB\-\-connection\-close\fP
Force HTTP connections to be closed after each request.
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the Sync commands
to operate from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-k\fP \fIKEYFILE\fP | \fB–key=\fP\fIKEYFILE\fP
+\fB\-k\fP \fIKEYFILE\fP | \fB\-\-key=\fP\fIKEYFILE\fP
Consult \fIKEYFILE\fP for the private TLS key for TLS client authentication.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–log=\fP\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-log=\fP\fILOGLEVEL\fP
Configure logging to use \fILOGLEVEL\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP\fIFILENAME\fP
Configure logging to write logs to \fIFILENAME\fP\&.
.TP
-\fB\-p\fP \fIKEYFILEPASSPHRASE\fP | \fB–pass=\fP\fIKEYFILEPASSPHRASE\fP
+\fB\-p\fP \fIKEYFILEPASSPHRASE\fP | \fB\-\-pass=\fP\fIKEYFILEPASSPHRASE\fP
Use \fIKEYFILEPASSPHRASE\fP to decrypt the TLS client private key file.
.TP
-\fB\-t\fP \fICERTTYPE\fP | \fB–type=\fP\fICERTTYPE\fP
+\fB\-t\fP \fICERTTYPE\fP | \fB\-\-type=\fP\fICERTTYPE\fP
Use \fICERTTYPE\fP as the type of the TLS client certificate.
If unspecified, defaults to PEM.
.TP
diff --git a/man/sync.conf.5 b/man/sync.conf.5
index 38ea1eb7..bf56c33b 100644
--- a/man/sync.conf.5
+++ b/man/sync.conf.5
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "SYNC.CONF" "5" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "SYNC.CONF" "5" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
sync.conf \- Sync configuration file
.SH DESCRIPTION
diff --git a/man/taler-aggregator-benchmark.1 b/man/taler-aggregator-benchmark.1
index 2bc29d88..5f7d8a0b 100644
--- a/man/taler-aggregator-benchmark.1
+++ b/man/taler-aggregator-benchmark.1
@@ -27,20 +27,20 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-AGGREGATOR-BENCHMARK" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-AGGREGATOR-BENCHMARK" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-aggregator-benchmark \- generate database to measure aggregator performance
.SH SYNOPSIS
.sp
\fBtaler\-aggregator\-benchmark\fP
-[\fB\-c\fP\ \fICONFIG_FILENAME\fP\ |\ \fB–config=\fP‌\fICONFIG_FILENAME\fP]
-[\fB\-d\fP\ \fIDN\fP\ |\ \fB–deposits=\fP\fIDN\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–log\-level=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-m\fP\ \fIDM\fP\ |\ \fB–merchants=\fP‌\fIDM\fP]
-[\fB\-r\fP\ \fIRATE\fP\ |\ \fB–refunds=\fP\fIRATE\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fICONFIG_FILENAME\fP\ |\ \fB\-\-config=\fP‌\fICONFIG_FILENAME\fP]
+[\fB\-d\fP\ \fIDN\fP\ |\ \fB\-\-deposits=\fP\fIDN\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-log\-level=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-m\fP\ \fIDM\fP\ |\ \fB\-\-merchants=\fP‌\fIDM\fP]
+[\fB\-r\fP\ \fIRATE\fP\ |\ \fB\-\-refunds=\fP\fIRATE\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-aggregator\-benchmark\fP is a command\-line tool to fill an exchange
@@ -51,30 +51,30 @@ starting multiple \fBtaler\-exchange\-aggregator\fP processes) and instead only
prepares the database with synthetic work.
.INDENT 0.0
.TP
-\fB\-c\fP \fICONFIG_FILENAME\fP | \fB–config=\fP‌\fICONFIG_FILENAME\fP
+\fB\-c\fP \fICONFIG_FILENAME\fP | \fB\-\-config=\fP‌\fICONFIG_FILENAME\fP
(Mandatory) Use CONFIG_FILENAME as the name for the configuration file.
.TP
-\fB\-d\fP \fIDN\fP | \fB–deposits=\fP‌\fIDN\fP
+\fB\-d\fP \fIDN\fP | \fB\-\-deposits=\fP‌\fIDN\fP
How many deposits should be instantiated \fIper merchant\fP\&.
Defaults to 1.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Prints a compiled\-in help text.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–log\-level=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-log\-level=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-m\fP \fIDM\fP | \fB–merchants=\fP‌\fIDM\fP
+\fB\-m\fP \fIDM\fP | \fB\-\-merchants=\fP‌\fIDM\fP
How many different merchants should we create. Defaults to 1.
.TP
-\fB\-r\fP \fIRATE\fP | \fB–refunds=\fP\fIRATE\fP
+\fB\-r\fP \fIRATE\fP | \fB\-\-refunds=\fP\fIRATE\fP
Probability of a deposit having a refund (as an integer between 0\-100).
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-auditor-dbconfig.1 b/man/taler-auditor-dbconfig.1
index 9e24bc3f..ae0f67c0 100644
--- a/man/taler-auditor-dbconfig.1
+++ b/man/taler-auditor-dbconfig.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-AUDITOR-DBCONFIG" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-AUDITOR-DBCONFIG" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-auditor-dbconfig \- configure Taler auditor database
.SH SYNOPSIS
diff --git a/man/taler-auditor-dbinit.1 b/man/taler-auditor-dbinit.1
index f2364e20..69ffbb3e 100644
--- a/man/taler-auditor-dbinit.1
+++ b/man/taler-auditor-dbinit.1
@@ -27,20 +27,20 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-AUDITOR-DBINIT" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-AUDITOR-DBINIT" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-auditor-dbinit \- setup auditor database
.SH SYNOPSIS
.sp
\fBtaler\-auditor\-dbinit\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-g\fP\ |\ \fB–gc\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-R\fP\ |\ \fB–reset\fP]
-[\fB\-r\fP\ |\ \fB–restart\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-g\fP\ |\ \fB\-\-gc\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-R\fP\ |\ \fB\-\-reset\fP]
+[\fB\-r\fP\ |\ \fB\-\-restart\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-exchange\-dbinit\fP is a command\-line tool to initialize the Taler
@@ -50,32 +50,32 @@ Taler exchange to operate.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the exchange to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-g\fP | \fB–gc\fP
+\fB\-g\fP | \fB\-\-gc\fP
Garbage collect database. Deletes all unnecessary data in the
database.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-R\fP | \fB–reset\fP
+\fB\-R\fP | \fB\-\-reset\fP
Drop tables. Dangerous, will delete all existing data in the database.
.TP
-\fB\-r\fP | \fB–restart\fP
+\fB\-r\fP | \fB\-\-restart\fP
Restart all auditors from the beginning. Useful for
testing.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-auditor-exchange.1 b/man/taler-auditor-exchange.1
index 0e5084b1..b1438c8c 100644
--- a/man/taler-auditor-exchange.1
+++ b/man/taler-auditor-exchange.1
@@ -27,18 +27,18 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-AUDITOR-EXCHANGE" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-AUDITOR-EXCHANGE" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-auditor-exchange \- add or remove exchange from auditor’s list
.SH SYNOPSIS
.sp
\fBtaler\-auditor\-exchange\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-m\fP\ \fIMASTERKEY\fP\ |\ \fB–exchange\-key=\fP‌\fIMASTERKEY\fP]
-[\fB\-r\fP\ |\ \fB–remove\fP]
-[\fB\-u\fP\ \fIEXCHANGE_URL\fP\ |\ \fB–auditor\-url=\fP‌\fIEXCHANGE_URL\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-m\fP\ \fIMASTERKEY\fP\ |\ \fB\-\-exchange\-key=\fP‌\fIMASTERKEY\fP]
+[\fB\-r\fP\ |\ \fB\-\-remove\fP]
+[\fB\-u\fP\ \fIEXCHANGE_URL\fP\ |\ \fB\-\-auditor\-url=\fP‌\fIEXCHANGE_URL\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-auditor\-exchange\fP is a command\-line tool to be used by an
@@ -49,27 +49,27 @@ taler\-auditor or taler\-wire\-auditor. Afterwards the exchange will be
visible via the /exchanges API of the taler\-auditor\-httpd.
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the exchange to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-m\fP \fIMASTERKEY\fP | \fB–exchange\-key=\fP‌\fIMASTERKEY\fP
+\fB\-m\fP \fIMASTERKEY\fP | \fB\-\-exchange\-key=\fP‌\fIMASTERKEY\fP
Public key of the exchange in Crockford base32 encoding, for example
as generated by \fBtaler\-auditor\-offline setup\fP\&.
.TP
-\fB\-r\fP | \fB–remove\fP
+\fB\-r\fP | \fB\-\-remove\fP
Instead of adding the exchange, remove it. Note that this will drop
ALL data associated with that exchange, including existing auditing
information. So use with extreme care!
.TP
-\fB\-u\fP \fIEXCHANGE_URL\fP | \fB–auditor\-url=\fP‌\fIEXCHANGE_URL\fP
+\fB\-u\fP \fIEXCHANGE_URL\fP | \fB\-\-auditor\-url=\fP‌\fIEXCHANGE_URL\fP
URL of the exchange. The exchange’s HTTP API must be available at
this address.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH DIAGNOSTICS
diff --git a/man/taler-auditor-httpd.1 b/man/taler-auditor-httpd.1
index 194bf2e2..389830f7 100644
--- a/man/taler-auditor-httpd.1
+++ b/man/taler-auditor-httpd.1
@@ -27,19 +27,19 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-AUDITOR-HTTPD" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-AUDITOR-HTTPD" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-auditor-httpd \- HTTP server providing a RESTful API to access a Taler auditor
.SH SYNOPSIS
.sp
\fBtaler\-auditor\-httpd\fP
-[\fB\-C\fP\ |\ \fB–connection\-close\fP]
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-t\fP\ \fISECONDS\fP\ |\ \fB–timeout\fP\fISECONDS\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-C\fP\ |\ \fB\-\-connection\-close\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-t\fP\ \fISECONDS\fP\ |\ \fB\-\-timeout\fP\fISECONDS\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-auditor\-httpd\fP is a command\-line tool to run the Taler auditor
@@ -48,30 +48,30 @@ before running this command.
.SH OPTIONS
.INDENT 0.0
.TP
-\fB\-C\fP | \fB–connection\-close\fP
+\fB\-C\fP | \fB\-\-connection\-close\fP
Force each HTTP connection to be closed after each request
(useful in combination with \-f to avoid having to wait for nc to
time out).
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP\fIFILENAME\fP
Use the configuration and other resources for the auditor to
operate from FILENAME.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-t\fP \fISECONDS\fP | \fB–timeout=\fP\fISECONDS\fP
+\fB\-t\fP \fISECONDS\fP | \fB\-\-timeout=\fP\fISECONDS\fP
Specifies the number of \fISECONDS\fP after which the HTTPD should close
(idle) HTTP connections.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SIGNALS
diff --git a/man/taler-auditor-offline.1 b/man/taler-auditor-offline.1
index dd3822ab..47bb6712 100644
--- a/man/taler-auditor-offline.1
+++ b/man/taler-auditor-offline.1
@@ -27,18 +27,18 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-AUDITOR-OFFLINE" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-AUDITOR-OFFLINE" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-auditor-offline \- Taler auditor certifies that it audits a Taler exchange
.SH SYNOPSIS
.sp
\fBtaler\-auditor\-offline\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
-[subcommand …]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
+[subcommand ...]
.SH DESCRIPTION
.sp
\fBtaler\-auditor\-offline\fP is a command\-line tool to be used by an auditor to
@@ -47,7 +47,7 @@ signature, the auditor affirms that he will verify that the exchange is
properly accounting for coins of those denominations. The tool takes a list
of subcommands as arguments which are then processed sequentially.
.sp
-The tool includes two subcommands to interact \fIonline\fP with the exchange’s
+The tool includes two subcommands to interact \fIonline\fP with the exchange\(aqs
REST APIs. The \fBdownload\fP subcommand downloads current public keys from the
running exchange. Note that this only includes keys that the exchange
operator has previously validated using the \fBtaler\-exchange\-offline\fP tool.
@@ -55,10 +55,10 @@ The resulting data serves as input to the \fBsign\fP and \fBshow\fP subcommands.
.sp
The \fBupload\fP subcommand uploads the signatures created with the private key to
the exchange. It handles the output of all subcommands (except \fBdownload\fP).
-The \fBdownload\fP and \fBupload\fP subcommands must naturally be run “online” and do not
-require access to the auditor’s private key, which should be kept offline.
+The \fBdownload\fP and \fBupload\fP subcommands must naturally be run \(dqonline\(dq and do not
+require access to the auditor\(aqs private key, which should be kept offline.
.sp
-All other subcommands are intended to be run “offline”. However, especially
+All other subcommands are intended to be run \(dqoffline\(dq. However, especially
when testing, it is of course possible to run the subcommands online as well.
Generally, subcommands read inputs (beyond command\-line arguments)
from \fBstdin\fP\&. However, they may also consume outputs of previous
@@ -68,28 +68,28 @@ and if not consumed the final output is printed to \fBstdout\fP\&.
The general options for \fBtaler\-auditor\-offline\fP are:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the merchant to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH CONFIGURATION
.sp
The exchange and the \fBtaler\-auditor\-httpd\fP must both be provided with
-the auditor’s public key, such that they can validate messages signed
-by the auditor. To obtain the auditor’s public key, use:
+the auditor\(aqs public key, such that they can validate messages signed
+by the auditor. To obtain the auditor\(aqs public key, use:
.INDENT 0.0
.INDENT 3.5
.sp
@@ -102,13 +102,13 @@ $ taler\-auditor\-offline setup
.UNINDENT
.sp
Note that if the private key file already exists, the above will simply output
-the existing key. Passing additional arguments after setup (including “\-“)
+the existing key. Passing additional arguments after setup (including \(dq\-\(dq)
will cause the output to be encapsulated in JSON.
.sp
Relevant configuration options for \fBtaler\-auditor\-offline\fP are:
.INDENT 0.0
.IP \(bu 2
-\fB[auditor/AUDITOR_PRIV_FILE]\fP — where to store the private key
+\fB[auditor/AUDITOR_PRIV_FILE]\fP \-\-\- where to store the private key
.UNINDENT
.SH SUBCOMMANDS
.SS setup
diff --git a/man/taler-auditor-sync.1 b/man/taler-auditor-sync.1
index 1b58870e..44ff5694 100644
--- a/man/taler-auditor-sync.1
+++ b/man/taler-auditor-sync.1
@@ -27,23 +27,23 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-AUDITOR-SYNC" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-AUDITOR-SYNC" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-auditor-sync \- tool to safely synchronize auditor database
.SH SYNOPSIS
.sp
\fBtaler\-auditor\-sync\fP
-[\fB\-s\fP\ \fIFILENAME\fP\ |\ \fB–source\-configuration=\fP‌\fIFILENAME\fP]
-[\fB\-d\fP\ \fIFILENAME\fP\ |\ \fB–destination\-configuration=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-b\fP\ \fISIZE\fP\ |\ \fB–batch=\fP‌\fISIZE\fP]
-[\fB\-t\fP\ |\ \fB–terminate\-when\-synchronized\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-s\fP\ \fIFILENAME\fP\ |\ \fB\-\-source\-configuration=\fP‌\fIFILENAME\fP]
+[\fB\-d\fP\ \fIFILENAME\fP\ |\ \fB\-\-destination\-configuration=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-b\fP\ \fISIZE\fP\ |\ \fB\-\-batch=\fP‌\fISIZE\fP]
+[\fB\-t\fP\ |\ \fB\-\-terminate\-when\-synchronized\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
.SH DESCRIPTION
.sp
\fBtaler\-auditor\-sync\fP is a command\-line tool to synchronize the
-Taler auditor’s database in a safe way from a Taler exchange
+Taler auditor\(aqs database in a safe way from a Taler exchange
database. If the exchange database violates the assumed database
invariants (as expressed by database constraints) or attempts to
DELETE or UPDATE tables (at least those that the auditor relies
@@ -53,31 +53,31 @@ and instead halt with an error.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-s\fP \fIFILENAME\fP | \fB–source\-configuration=\fP‌\fIFILENAME\fP
+\fB\-s\fP \fIFILENAME\fP | \fB\-\-source\-configuration=\fP‌\fIFILENAME\fP
Use the configuration in \fIFILENAME\fP to access the original (source) exchange
database to copy records from.
.TP
-\fB\-d\fP \fIFILENAME\fP | \fB–destination\-configuration=\fP‌\fIFILENAME\fP
+\fB\-d\fP \fIFILENAME\fP | \fB\-\-destination\-configuration=\fP‌\fIFILENAME\fP
Use the configuration in \fIFILENAME\fP to access the target (destination) exchange
database to copy records to.
.TP
-\fB\-t\fP | \fB–terminate\-when\-synchronized\fP
+\fB\-t\fP | \fB\-\-terminate\-when\-synchronized\fP
The program should exit once the two databases are in sync, instead of continuously
copying more records when the source database is updated.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-b\fP \fISIZE\fP | \fB–batch=\fP‌\fISIZE\fP
+\fB\-b\fP \fISIZE\fP | \fB\-\-batch=\fP‌\fISIZE\fP
Target number of records to copy in one transaction. Once the databases are
in sync, the batch size is used to determine how long the process sleeps before
trying to again synchronize the two databases. Not useful if \fB\-t\fP is used.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-auditor.1 b/man/taler-auditor.1
index 84d38d2a..15ce797a 100644
--- a/man/taler-auditor.1
+++ b/man/taler-auditor.1
@@ -27,21 +27,21 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-AUDITOR" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-AUDITOR" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-auditor \- audit exchange
.SH SYNOPSIS
.sp
\fBtaler\-auditor\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-i**_|_\fP–internal**]
-[\fB\-I**_|_\fP–ignore\-not\-found**]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-m\fP\ \fIMASTER_KEY\fP\ |\ \fB–exchange\-key=\fP‌\fIMASTER_KEY\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel\fP\fIUSEC\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-i**_|_\fP\-\-internal**]
+[\fB\-I**_|_\fP\-\-ignore\-not\-found**]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-m\fP\ \fIMASTER_KEY\fP\ |\ \fB\-\-exchange\-key=\fP‌\fIMASTER_KEY\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel\fP\fIUSEC\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-auditor\fP is a command\-line tool to be used by an auditor to
@@ -55,40 +55,40 @@ incoming and outgoing wire transfers that the bank claims to have
matches the exchange’s database. Its options are as follows.
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the merchant to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-i\fP | \fB–internal\fP
+\fB\-i\fP | \fB\-\-internal\fP
Run additional checks that can only performed on the exchange\-internal
-database and not the “safe” replicated database at the auditor.
+database and not the \(dqsafe\(dq replicated database at the auditor.
.TP
-\fB\-I\fP | \fB–ignore\-not\-found\fP
+\fB\-I\fP | \fB\-\-ignore\-not\-found\fP
Do not fail if the bank says that the exchange bank account does not (yet) exist.
Keep trying.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-m\fP \fIKEY\fP | \fB–exchange\-key=\fP‌\fIKEY\fP
+\fB\-m\fP \fIKEY\fP | \fB\-\-exchange\-key=\fP‌\fIKEY\fP
Public master key of the exchange in Crockford base32 encoding, for
example as generated by \fBtaler\-auditor\-offline setup\fP\&. If this option is missing,
taler\-auditor will use the MASTER_PUBLIC_KEY value from the
“exchange” section of the configuration.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-bank-benchmark.1 b/man/taler-bank-benchmark.1
index b66caef5..072b6c9d 100644
--- a/man/taler-bank-benchmark.1
+++ b/man/taler-bank-benchmark.1
@@ -27,68 +27,68 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-BANK-BENCHMARK" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-BANK-BENCHMARK" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-bank-benchmark \- measure bank performance
.SH SYNOPSIS
.sp
\fBtaler\-bank\-benchmark\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-f\fP\ |\ \fB–fakebank\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-p\fP\ \fINPROCS\fP\ |\ \fB–worker\-parallelism=\fP\fINPROCS\fP]
-[\fB\-r\fP\ \fINRESERVES\fP\ |\ \fB–reserves=\fP\fINRESERVES\fP]
-[\fB\-u\fP\ \fISECTION\fP\ |\ \fB–exchange\-account\-section=\fP\fISECTION\fP]
-[\fB\-V\fP\ |\ \fB–verbose\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
-[\fB\-w**_*NPROC*\ |\ **–wirewatch=\fP\fINPROC\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-f\fP\ |\ \fB\-\-fakebank\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-p\fP\ \fINPROCS\fP\ |\ \fB\-\-worker\-parallelism=\fP\fINPROCS\fP]
+[\fB\-r\fP\ \fINRESERVES\fP\ |\ \fB\-\-reserves=\fP\fINRESERVES\fP]
+[\fB\-u\fP\ \fISECTION\fP\ |\ \fB\-\-exchange\-account\-section=\fP\fISECTION\fP]
+[\fB\-V\fP\ |\ \fB\-\-verbose\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
+[\fB\-w**_*NPROC*\ |\ **\-\-wirewatch=\fP\fINPROC\fP]
.SH DESCRIPTION
.sp
-\fBtaler\-bank\-benchmark\fP is a command\-line tool to benchmark only the “bank”
+\fBtaler\-bank\-benchmark\fP is a command\-line tool to benchmark only the \(dqbank\(dq
and the \fBtaler\-exchange\-wirewatch\fP tool.
.sp
The options for \fBtaler\-bank\-benchmark\fP are:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the merchant to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-f\fP | \fB–fakebank\fP
+\fB\-f\fP | \fB\-\-fakebank\fP
Expect to be run against a fakebank (instead of against libeufin)
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-m\fP \fIMODE\fP | \fB–mode=\fP\fIMODE\fP
+\fB\-m\fP \fIMODE\fP | \fB\-\-mode=\fP\fIMODE\fP
Run as \fBbank\fP, \fBclient\fP or \fBboth\fP\&.
If unspecified, \fIMODE\fP defaults to \fBboth\fP\&.
.TP
-\fB\-p\fP \fINPROCS\fP | \fB–worker\-parallelism=\fP\fINPROCS\fP
+\fB\-p\fP \fINPROCS\fP | \fB\-\-worker\-parallelism=\fP\fINPROCS\fP
Run with \fINPROCS\fP client processes.
.TP
-\fB\-r\fP \fINRESERVES\fP | \fB–reserves=\fP\fINRESERVES\fP
+\fB\-r\fP \fINRESERVES\fP | \fB\-\-reserves=\fP\fINRESERVES\fP
Create \fINRESERVES\fP reserves per client.
.TP
-\fB\-u\fP \fISECTION\fP | \fB–exchange\-account\-section=\fP\fISECTION\fP
+\fB\-u\fP \fISECTION\fP | \fB\-\-exchange\-account\-section=\fP\fISECTION\fP
Use \fISECTION\fP as the name of the configuration section which specifies the exchange bank account.
.TP
-\fB\-V\fP | \fB–verbose\fP
+\fB\-V\fP | \fB\-\-verbose\fP
Display more output than usual.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.TP
-\fB\-w\fP \fINPROC\fP | \fB–wirewatch=\fP\fINPROC\fP
+\fB\-w\fP \fINPROC\fP | \fB\-\-wirewatch=\fP\fINPROC\fP
Run \fINPROC\fP processes of the \fBtaler\-exchange\-wirewatch\fP tool.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-config.1 b/man/taler-config.1
index b95b6f6f..3d3e218b 100644
--- a/man/taler-config.1
+++ b/man/taler-config.1
@@ -27,75 +27,75 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-CONFIG" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-CONFIG" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-config \- Taler configuration inspection and editing
.SH SYNOPSIS
.sp
\fBtaler\-config\fP
-[\fB\-b\fP\ \fIbackend\fP\ |\ \fB–supported\-backend=\fP\fIbackend\fP]
-[\fB\-c\fP\ \fIfilename\fP\ |\ \fB–config=\fP\fIfilename\fP]
-[\fB\-f\fP\ |\ \fB–filename\fP]
-[\fB\-F\fP\ |\ \fB–full\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fIloglevel\fP\ |\ \fB–loglevel=\fP\fIloglevel\fP]
-[\fB\-l\fP\ \fIfilename\fP\ |\ \fB–logfile=\fP‌\fIfilename\fP]
-[\fB\-o\fP\ \fIoption\fP\ |\ \fB–option=\fP\fIoption\fP]
-[\fB\-r\fP\ |\ \fB–rewrite\fP]
-[\fB\-S\fP\ |\ \fB–list\-sections\fP]
-[\fB\-s\fP\ \fIsection\fP\ |\ \fB–section=\fP\fIsection\fP]
-[\fB\-V\fP\ \fIvalue\fP\ |\ \fB–value=\fP\fIvalue\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-b\fP\ \fIbackend\fP\ |\ \fB\-\-supported\-backend=\fP\fIbackend\fP]
+[\fB\-c\fP\ \fIfilename\fP\ |\ \fB\-\-config=\fP\fIfilename\fP]
+[\fB\-f\fP\ |\ \fB\-\-filename\fP]
+[\fB\-F\fP\ |\ \fB\-\-full\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fIloglevel\fP\ |\ \fB\-\-loglevel=\fP\fIloglevel\fP]
+[\fB\-l\fP\ \fIfilename\fP\ |\ \fB\-\-logfile=\fP‌\fIfilename\fP]
+[\fB\-o\fP\ \fIoption\fP\ |\ \fB\-\-option=\fP\fIoption\fP]
+[\fB\-r\fP\ |\ \fB\-\-rewrite\fP]
+[\fB\-S\fP\ |\ \fB\-\-list\-sections\fP]
+[\fB\-s\fP\ \fIsection\fP\ |\ \fB\-\-section=\fP\fIsection\fP]
+[\fB\-V\fP\ \fIvalue\fP\ |\ \fB\-\-value=\fP\fIvalue\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-config\fP can be used to read or modify GNU Taler configuration files.
.INDENT 0.0
.TP
-\fB\-b\fP \fIBACKEND\fP | \fB–supported\-backend=\fP\fIBACKEND\fP
+\fB\-b\fP \fIBACKEND\fP | \fB\-\-supported\-backend=\fP\fIBACKEND\fP
Tests whether the specified \fIBACKEND\fP is supported by the current installation.
-The backend must match the name of a plugin, i.e. “namestore_postgres” for
-the PostgreSQL database backend of the “NAMESTORE” service. If \fIBACKEND\fP is
+The backend must match the name of a plugin, i.e. \(dqnamestore_postgres\(dq for
+the PostgreSQL database backend of the \(dqNAMESTORE\(dq service. If \fIBACKEND\fP is
supported, taler\-config will return a status code of 0 (success), otherwise
77 (unsupported). When this option is specified, no other options may be
specified. Specifying this option together with other options will cause
taler\-config to return a status code of 1 (error).
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP\fIFILENAME\fP
Use the configuration file \fIFILENAME\fP\&.
.TP
-\fB\-f\fP | \fB–filename\fP
+\fB\-f\fP | \fB\-\-filename\fP
Try to perform expansions as if the option values represent filenames (will
also be applied even if the option is not really a filename).
.TP
-\fB\-F\fP | \fB–full\fP
+\fB\-F\fP | \fB\-\-full\fP
Write the full configuration file, not just the differences to the defaults.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP\fILOGLEVEL\fP
Use \fILOGLEVEL\fP for logging.
Valid values are \fBDEBUG\fP, \fBINFO\fP, \fBWARNING\fP, and \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-o\fP \fIOPTION\fP | \fB–option=\fP\fIOPTION\fP
+\fB\-o\fP \fIOPTION\fP | \fB\-\-option=\fP\fIOPTION\fP
Which configuration option should be accessed or edited. Required to set a
value. If not given, all values of a given section will be printed in the
-format “OPTION = VALUE”.
+format \(dqOPTION = VALUE\(dq.
.TP
-\fB\-r\fP | \fB–rewrite\fP
+\fB\-r\fP | \fB\-\-rewrite\fP
Write the configuration file even if nothing changed. Will remove all comments!
.TP
-\fB\-S\fP | \fB–list\-sections\fP
+\fB\-S\fP | \fB\-\-list\-sections\fP
List available configuration sections for use with \fB\-\-section\fP\&.
.TP
-\fB\-s\fP \fISECTION\fP | \fB–section=\fP\fISECTION\fP
+\fB\-s\fP \fISECTION\fP | \fB\-\-section=\fP\fISECTION\fP
Which configuration section should be accessed or edited.
Required option.
.TP
-\fB\-V\fP \fIVALUE\fP | \fB–value=\fP\fIVALUE\fP
+\fB\-V\fP \fIVALUE\fP | \fB\-\-value=\fP\fIVALUE\fP
Configuration value to store in the given section under the given option.
Must only be given together with \fB\-s\fP and \fB\-o\fP options.
.INDENT 7.0
@@ -106,7 +106,7 @@ and may reorder sections and remove \fB@INLINE@\fP directives.
Using \fB\-V\fP is thus dangerous! Use with extreme caution!
.UNINDENT
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print GNU Taler version number.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-exchange-aggregator.1 b/man/taler-exchange-aggregator.1
index 4649cd2e..f9913356 100644
--- a/man/taler-exchange-aggregator.1
+++ b/man/taler-exchange-aggregator.1
@@ -27,20 +27,20 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-AGGREGATOR" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-AGGREGATOR" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-aggregator \- aggregate deposits into wire transfers
.SH SYNOPSIS
.sp
\fBtaler\-exchange\-aggregator\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel\fP\fIUSEC\fP]
-[\fB\-t\fP\ |\ \fB–test\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
-[\fB\-y**_|_\fP–kyc\-off**]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel\fP\fIUSEC\fP]
+[\fB\-t\fP\ |\ \fB\-\-test\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
+[\fB\-y**_|_\fP\-\-kyc\-off**]
.SH DESCRIPTION
.sp
\fBtaler\-exchange\-aggregator\fP is a command\-line tool to run aggregate deposits
@@ -49,35 +49,35 @@ done by \fBtaler\-exchange\-transfer\fP\&.
.sp
The AGGREGATOR_SHARD_SIZE option can be used to allow multiple aggregator processes to run in parallel and share the load. This is only recommended if a single aggregator is insufficient for the workload.
.sp
-The aggregator uses a special table to lock shards it is working on. If an aggregator process dies (say due to a power failure), these shard locks may prevent the aggregator from resuming normally. In this case, you must run “taler\-exchange\-dbinit \-s” to release the shard locks before restarting the aggregator.
+The aggregator uses a special table to lock shards it is working on. If an aggregator process dies (say due to a power failure), these shard locks may prevent the aggregator from resuming normally. In this case, you must run \(dqtaler\-exchange\-dbinit \-s\(dq to release the shard locks before restarting the aggregator.
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the exchange to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-t\fP | \fB–test\fP
+\fB\-t\fP | \fB\-\-test\fP
Run in test mode and exit when idle.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.TP
-\fB\-y\fP | \fB–kyc\-off\fP
+\fB\-y\fP | \fB\-\-kyc\-off\fP
Run without KYC checks. Talk with your regulator before using this option.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-exchange-benchmark.1 b/man/taler-exchange-benchmark.1
index ed9966be..1e9ec168 100644
--- a/man/taler-exchange-benchmark.1
+++ b/man/taler-exchange-benchmark.1
@@ -27,24 +27,24 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-BENCHMARK" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-BENCHMARK" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-benchmark \- measure exchange performance
.SH SYNOPSIS
.sp
\fBtaler\-exchange\-benchmark\fP
-[\fB\-c\fP\ \fICONFIG_FILENAME\fP\ |\ \fB–config=\fP‌\fICONFIG_FILENAME\fP]
-[\fB\-F\fP\ |\ \fB–reserves\-first\fP]
-[\fB\-f\fP\ |\ \fB–fakebank\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–log\-level=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-n\fP\ \fIHOWMANY_COINS\fP\ |\ \fB–coins\-number=\fP‌\fIHOWMANY_COINS\fP]
-[\fB\-p\fP\ \fINPROCS\fP\ |\ \fB–parallelism=\fP\fINPROCS\fP]
-[\fB\-R\fP\ \fIRATE\fP\ |\ \fB–refresh\-rate=\fP\fIRATE\fP]
-[\fB\-r\fP\ \fIN\fP\ |\ \fB–reserves=\fP\fIN\fP]
-[\fB\-u\fP\ \fISECTION\fP\ |\ \fB–exchange\-account\-section=\fP\fISECTION\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fICONFIG_FILENAME\fP\ |\ \fB\-\-config=\fP‌\fICONFIG_FILENAME\fP]
+[\fB\-F\fP\ |\ \fB\-\-reserves\-first\fP]
+[\fB\-f\fP\ |\ \fB\-\-fakebank\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-log\-level=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-n\fP\ \fIHOWMANY_COINS\fP\ |\ \fB\-\-coins\-number=\fP‌\fIHOWMANY_COINS\fP]
+[\fB\-p\fP\ \fINPROCS\fP\ |\ \fB\-\-parallelism=\fP\fINPROCS\fP]
+[\fB\-R\fP\ \fIRATE\fP\ |\ \fB\-\-refresh\-rate=\fP\fIRATE\fP]
+[\fB\-r\fP\ \fIN\fP\ |\ \fB\-\-reserves=\fP\fIN\fP]
+[\fB\-u\fP\ \fISECTION\fP\ |\ \fB\-\-exchange\-account\-section=\fP\fISECTION\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-exchange\-benchmark\fP is a command\-line tool to measure the time
@@ -52,44 +52,44 @@ spent to serve withdrawals/deposits/refreshes. Before running the benchmark,
the GNU Taler services must already be running at the configured addresses.
.INDENT 0.0
.TP
-\fB\-c\fP \fICONFIG_FILENAME\fP | \fB–config=\fP‌\fICONFIG_FILENAME\fP
+\fB\-c\fP \fICONFIG_FILENAME\fP | \fB\-\-config=\fP‌\fICONFIG_FILENAME\fP
(Mandatory) Use CONFIG_FILENAME.
.TP
-\fB\-F\fP | \fB–reserves\-first\fP
+\fB\-F\fP | \fB\-\-reserves\-first\fP
Create all reserves first, before starting normal operations.
.TP
-\fB\-f\fP | \fB–fakebank\fP
+\fB\-f\fP | \fB\-\-fakebank\fP
Expect to interact with a fakebank instead of libeufin.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Prints a compiled\-in help text.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–log\-level=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-log\-level=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-n\fP \fIHOWMANY_COINS\fP | \fB–coins\-number=\fP‌\fIHOWMANY_COINS\fP
+\fB\-n\fP \fIHOWMANY_COINS\fP | \fB\-\-coins\-number=\fP‌\fIHOWMANY_COINS\fP
Defaults to 1. Specifies how many coins this benchmark should
withdraw and spend. After being spent, each coin will be refreshed
with a probability RATE (see option \fB\-\-refresh\-rate\fP).
.TP
-\fB\-p\fP \fINPROCS\fP | \fB–parallelism=\fP\fINPROCS\fP
+\fB\-p\fP \fINPROCS\fP | \fB\-\-parallelism=\fP\fINPROCS\fP
Run with \fINPROCS\fP client processes.
.TP
-\fB\-R\fP \fIRATE\fP | \fB–refresh\-rate=\fP\fIRATE\fP
+\fB\-R\fP \fIRATE\fP | \fB\-\-refresh\-rate=\fP\fIRATE\fP
Defaults to 10. Probability of refresh per coin (0\-100).
.TP
-\fB\-r\fP \fIN\fP | \fB–reserves=\fP\fIN\fP
+\fB\-r\fP \fIN\fP | \fB\-\-reserves=\fP\fIN\fP
Create \fIN\fP reserves per client.
.TP
-\fB\-u\fP \fISECTION\fP | \fB–exchange\-account\-section=\fP\fISECTION\fP
+\fB\-u\fP \fISECTION\fP | \fB\-\-exchange\-account\-section=\fP\fISECTION\fP
Which configuration section should be used for the bank account
of the exchange.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-exchange-closer.1 b/man/taler-exchange-closer.1
index 969ca07c..e12885eb 100644
--- a/man/taler-exchange-closer.1
+++ b/man/taler-exchange-closer.1
@@ -27,19 +27,19 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-CLOSER" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-CLOSER" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-closer \- close idle reserves
.SH SYNOPSIS
.sp
\fBtaler\-exchange\-closer\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel=\fP\fIUSEC\fP]
-[\fB\-t\fP\ |\ \fB–test\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel=\fP\fIUSEC\fP]
+[\fB\-t\fP\ |\ \fB\-\-test\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-exchange\-closer\fP is a command\-line tool to run close
@@ -47,29 +47,29 @@ reserves that have been idle for too long, causing transfers
to the originating bank account to be scheduled.
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the exchange to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-t\fP | \fB–test\fP
+\fB\-t\fP | \fB\-\-test\fP
Run in test mode and exit when idle.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-exchange-dbconfig.1 b/man/taler-exchange-dbconfig.1
index 9f3b7d97..63bc1780 100644
--- a/man/taler-exchange-dbconfig.1
+++ b/man/taler-exchange-dbconfig.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-DBCONFIG" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-DBCONFIG" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-dbconfig \- configure Taler exchange database
.SH SYNOPSIS
diff --git a/man/taler-exchange-dbinit.1 b/man/taler-exchange-dbinit.1
index a5a2ec8a..5b4f8167 100644
--- a/man/taler-exchange-dbinit.1
+++ b/man/taler-exchange-dbinit.1
@@ -27,20 +27,20 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-DBINIT" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-DBINIT" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-dbinit \- initialize Taler exchange database
.SH SYNOPSIS
.sp
\fBtaler\-exchange\-dbinit\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-g\fP\ |\ \fB–gc\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-r\fP\ |\ \fB–reset\fP]
-[\fB\-s\fP\ |\ \fB–shardunlock\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-g\fP\ |\ \fB\-\-gc\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-r\fP\ |\ \fB\-\-reset\fP]
+[\fB\-s\fP\ |\ \fB\-\-shardunlock\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-exchange\-dbinit\fP is a command\-line tool to initialize the Taler
@@ -50,29 +50,29 @@ Taler exchange to operate.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the exchange to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-g\fP | \fB–gc\fP
+\fB\-g\fP | \fB\-\-gc\fP
Garbage collect database. Deletes all unnecessary data in the
database.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-r\fP | \fB–reset\fP
+\fB\-r\fP | \fB\-\-reset\fP
Drop tables. Dangerous, will delete all existing data in the database
before creating the tables.
.TP
-\fB\-s\fP | \fB–shardunlock\fP
+\fB\-s\fP | \fB\-\-shardunlock\fP
Clears the (revolving) shards table. Needed to clear locks that may be held after a crash (of taler\-exchange\-aggregator or the operating system, say due to power outage) or if the AGGREGATOR_SHARD_SIZE option is changed in the configuration file.
.TP
\fB\-v\fP | \fB–version\fP
diff --git a/man/taler-exchange-drain.1 b/man/taler-exchange-drain.1
index 073409ce..4b682f23 100644
--- a/man/taler-exchange-drain.1
+++ b/man/taler-exchange-drain.1
@@ -27,40 +27,40 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-DRAIN" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-DRAIN" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-drain \- drain profits from exchange
.SH SYNOPSIS
.sp
\fBtaler\-exchange\-drain\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
-\fBtaler\-exchange\-drain\fP is used to trigger a wire transfer from the exchange’s escrow account to a normal (non\-escrowed) bank account of the exchange. The entire drain process is necessary to ensure that the auditor is aware of the
+\fBtaler\-exchange\-drain\fP is used to trigger a wire transfer from the exchange\(aqs escrow account to a normal (non\-escrowed) bank account of the exchange. The entire drain process is necessary to ensure that the auditor is aware of the
balance changes arising from an exchange making profits from fees.
.sp
-To use it, you must first create an upload a ‘drain’ command using \fBtaler\-exchange\-offline\fP\&. Afterwards this command should be run to actually queue the drain. The actual drain will then be executed by \fBtaler\-exchange\-transfer\fP\&.
+To use it, you must first create an upload a \(aqdrain\(aq command using \fBtaler\-exchange\-offline\fP\&. Afterwards this command should be run to actually queue the drain. The actual drain will then be executed by \fBtaler\-exchange\-transfer\fP\&.
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the exchange to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-exchange-expire.1 b/man/taler-exchange-expire.1
index 35ca93ac..9c003f88 100644
--- a/man/taler-exchange-expire.1
+++ b/man/taler-exchange-expire.1
@@ -27,19 +27,19 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-EXPIRE" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-EXPIRE" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-expire \- refund expired purses
.SH SYNOPSIS
.sp
\fBtaler\-exchange\-expire\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel=\fP\fIUSEC\fP]
-[\fB\-t\fP\ |\ \fB–test\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel=\fP\fIUSEC\fP]
+[\fB\-t\fP\ |\ \fB\-\-test\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-exchange\-expire\fP is a command\-line tool to run refund
@@ -48,29 +48,29 @@ This allows the wallet to recover the funds deposited into the
purse using a refresh operation.
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the exchange to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-t\fP | \fB–test\fP
+\fB\-t\fP | \fB\-\-test\fP
Run in test mode and exit when idle.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-exchange-httpd.1 b/man/taler-exchange-httpd.1
index 655c0264..4889740c 100644
--- a/man/taler-exchange-httpd.1
+++ b/man/taler-exchange-httpd.1
@@ -27,24 +27,24 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-HTTPD" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-HTTPD" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-httpd \- run Taler exchange (with RESTful API)
.SH SYNOPSIS
.sp
\fBtaler\-exchange\-httpd\fP
-[\fB\-a\fP\ |\ \fB–allow\-timetravel\fP]
-[\fB\-C\fP\ |\ \fB–connection\-close\fP]
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-f\fP\ \fIFILENAME\fP\ |\ \fB–file\-input=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-n\fP\ \fIN\fP\ |\ \fB–num\-threads=\fP\fIN\fP]
-[\fB\-r**|\fP–allow\-reuse\-address**]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel=\fP\fIUSEC\fP]
-[\fB\-t\fP\ \fISECONDS\fP\ |\ \fB–timeout=\fP‌\fISECONDS\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-a\fP\ |\ \fB\-\-allow\-timetravel\fP]
+[\fB\-C\fP\ |\ \fB\-\-connection\-close\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-f\fP\ \fIFILENAME\fP\ |\ \fB\-\-file\-input=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-n\fP\ \fIN\fP\ |\ \fB\-\-num\-threads=\fP\fIN\fP]
+[\fB\-r**|\fP\-\-allow\-reuse\-address**]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel=\fP\fIUSEC\fP]
+[\fB\-t\fP\ \fISECONDS\fP\ |\ \fB\-\-timeout=\fP‌\fISECONDS\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-exchange\-httpd\fP is a command\-line tool to run the Taler
@@ -54,24 +54,24 @@ must exist before running this command.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-a\fP | \fB–allow\-timetravel\fP
+\fB\-a\fP | \fB\-\-allow\-timetravel\fP
Allow clients to request /keys for arbitrary timestamps.
This should only be enabled for testing and development,
as clients could abuse this in denial of service attacks,
as it makes the /keys response generation much more expensive.
.TP
-\fB\-C\fP | \fB–connection\-close\fP
+\fB\-C\fP | \fB\-\-connection\-close\fP
Force each HTTP connection to be closed after each request (useful in
combination with \fB\-f\fP to avoid having to wait for
netcat (nc) to time out).
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the merchant to operate
from FILENAME.
.TP
-\fB\-f\fP \fIFILENAME\fP | \fB–file\-input=\fP‌\fIFILENAME\fP
+\fB\-f\fP \fIFILENAME\fP | \fB\-\-file\-input=\fP‌\fIFILENAME\fP
This option is only available if the exchange was compiled with the
-configure option –enable\-developer\-mode. It is used for generating
+configure option \-\-enable\-developer\-mode. It is used for generating
test cases against the exchange using AFL. When this option is
present, the HTTP server will
.INDENT 7.0
@@ -89,31 +89,31 @@ input from an HTTP client and then immediately exit. This is useful
to test taler\-exchange\-httpd against many different possible inputs
in a controlled way.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-r\fP | \fB–allow\-reuse\-address\fP
+\fB\-r\fP | \fB\-\-allow\-reuse\-address\fP
Allow the exchange to re\-use the listen port even if another service
is already using it. Useful if multiple processes are used to increase
processing capacity.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-t\fP \fISECONDS\fP | \fB–timeout=\fP‌\fISECONDS\fP
+\fB\-t\fP \fISECONDS\fP | \fB\-\-timeout=\fP‌\fISECONDS\fP
Specifies the number of SECONDS after which the HTTPD should close
(idle) HTTP connections.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SIGNALS
diff --git a/man/taler-exchange-kyc-aml-pep-trigger.1 b/man/taler-exchange-kyc-aml-pep-trigger.1
index b628349d..e3be6bcf 100644
--- a/man/taler-exchange-kyc-aml-pep-trigger.1
+++ b/man/taler-exchange-kyc-aml-pep-trigger.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-KYC-AML-PEP-TRIGGER" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-KYC-AML-PEP-TRIGGER" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-kyc-aml-pep-trigger \- Taler KYC_AML_TRIGGER example
.SH SYNOPSIS
@@ -35,7 +35,7 @@ taler-exchange-kyc-aml-pep-trigger \- Taler KYC_AML_TRIGGER example
\fBtaler\-exchange\-kyc\-aml\-pep\-trigger\fP
.SH DESCRIPTION
.sp
-\fBtaler\-exchange\-kyc\-aml\-pep\-trigger\fP is a trivial shell script to illustrate how to trigger an AML process when the KYC process sets the “PEP” flag in the attribute data.
+\fBtaler\-exchange\-kyc\-aml\-pep\-trigger\fP is a trivial shell script to illustrate how to trigger an AML process when the KYC process sets the \(dqPEP\(dq flag in the attribute data.
.sp
The script is mostly an example (or starting point) for
writing programs for the KYC_AML_TRIGGER option of the
diff --git a/man/taler-exchange-kyc-tester.1 b/man/taler-exchange-kyc-tester.1
index 40dbd2bb..26ed737a 100644
--- a/man/taler-exchange-kyc-tester.1
+++ b/man/taler-exchange-kyc-tester.1
@@ -27,24 +27,24 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-KYC-TESTER" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-KYC-TESTER" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-kyc-tester \- test KYC service integration
.SH SYNOPSIS
.sp
\fBtaler\-exchange\-kyc\-tester\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-i\fP\ \fISECTION_NAME\fP\ |\ \fB–initiate=\fP‌\fISECTION_NAME\fP]
-[\fB\-u\fP\ \fIID\fP\ |\ \fB–user=\fP‌\fIID\fP]
-[\fB\-U\fP\ \fIID\fP\ |\ \fB–legitimization=\fP‌\fIID\fP]
-[\fB\-P\fP\ |\ \fB–print\-payto\-hash\fP]
-[\fB\-p\fP\ \fIHASH\fP\ |\ \fB–payto\-hash=\fP‌\fIHASH\fP]
-[\fB\-r\fP\ \fINUMBER\fP\ |\ \fB–rowid=\fP‌\fINUMBER\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
-[\fB\-w\fP\ |\ \fB–run\-webservice\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-i\fP\ \fISECTION_NAME\fP\ |\ \fB\-\-initiate=\fP‌\fISECTION_NAME\fP]
+[\fB\-u\fP\ \fIID\fP\ |\ \fB\-\-user=\fP‌\fIID\fP]
+[\fB\-U\fP\ \fIID\fP\ |\ \fB\-\-legitimization=\fP‌\fIID\fP]
+[\fB\-P\fP\ |\ \fB\-\-print\-payto\-hash\fP]
+[\fB\-p\fP\ \fIHASH\fP\ |\ \fB\-\-payto\-hash=\fP‌\fIHASH\fP]
+[\fB\-r\fP\ \fINUMBER\fP\ |\ \fB\-\-rowid=\fP‌\fINUMBER\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
+[\fB\-w\fP\ |\ \fB\-\-run\-webservice\fP]
.SH DESCRIPTION
.sp
\fBtaler\-exchange\-kyc\-tester\fP is used to test the interaction between a Taler exchange and a KYC service. The tool can be used to manually trigger the various steps of a KYC process and to observe the interaction with the respective KYC service. It is supposted to help test the configuration of the integration, and \fInot\fP required at all during production.
@@ -53,48 +53,48 @@ To use it, you must first provide a configuration file with at least one KYC ser
.sp
Begin with a first invocation of taler\-exchange\-kyc\-tester using the options \fB\-i\fP for an individual or business and use \fB\-R\fP to specify a list of checks required from the process. The output will be an URL to visit with the browser, as well as \fB\-p\fP, \fB\-u\fP, \fB\-U\fP options to use in future invocations of the tool.
.sp
-Next, run taler\-exchange\-kyc\-tester again, but this time using \fB\-w\fP (to run the Webserver) and using the \fB\-u\fP and \fB\-U\fP options output by the previous call, as well as the \fB\-p\fP option with the payto hash. Then visit the Web site from the link output by the previous invocation and “pass” (or “fail”) the KYC check.
+Next, run taler\-exchange\-kyc\-tester again, but this time using \fB\-w\fP (to run the Webserver) and using the \fB\-u\fP and \fB\-U\fP options output by the previous call, as well as the \fB\-p\fP option with the payto hash. Then visit the Web site from the link output by the previous invocation and \(dqpass\(dq (or \(dqfail\(dq) the KYC check.
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the exchange to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-i\fP \fIUSERTYPE\fP | \fB–initiate=\fP‌\fIUSERTYPE\fP
-Specifies the type of user for which we are starting a fresh KYC process. USERTYPE must be either “individual” or “business”.
+\fB\-i\fP \fIUSERTYPE\fP | \fB\-\-initiate=\fP‌\fIUSERTYPE\fP
+Specifies the type of user for which we are starting a fresh KYC process. USERTYPE must be either \(dqindividual\(dq or \(dqbusiness\(dq.
.TP
-\fB\-u\fP \fIID\fP | \fB–user=\fP‌\fIID\fP
+\fB\-u\fP \fIID\fP | \fB\-\-user=\fP‌\fIID\fP
Run the process with ID for the user identifier at the KYC provider. Not useful in conjunction with \fB\-i\fP and \fB\-R\fP as that option will override whatever value is provided here.
.TP
-\fB\-U\fP \fIID\fP | \fB–legitimization=\fP‌\fIID\fP
+\fB\-U\fP \fIID\fP | \fB\-\-legitimization=\fP‌\fIID\fP
Run the process with ID for the legitimization process identifier at the KYC provider. Not useful in conjunction with \fB\-R\fP / \fB\-i\fP as that option will override whatever value is provided here.
.TP
-\fB\-p\fP \fIHASH\fP | \fB–payto\-hash=\fP‌\fIHASH\fP
+\fB\-p\fP \fIHASH\fP | \fB\-\-payto\-hash=\fP‌\fIHASH\fP
Run the process with HASH as the hash of the payto://\-URI that identifies the account or wallet triggering the KYC requirement. If not given, a fresh random value is used. Rarely useful.
.TP
-\fB\-P\fP | \fB–print\-payto\-hash\fP
+\fB\-P\fP | \fB\-\-print\-payto\-hash\fP
Print the HASH of the payto://\-URI used for the KYC simulation this time. Useful if the hash is needed for a subsequent use in conjunction with \fB\-p\fP\&.
.TP
-\fB\-r\fP \fINUMBER\fP | \fB–rowid=\fP‌\fINUMBER\fP
+\fB\-r\fP \fINUMBER\fP | \fB\-\-rowid=\fP‌\fINUMBER\fP
Run the process with NUMBER as the database row for the legitimization operation. Rarely useful, except maybe for debugging. Defaults to 42.
.TP
-\fB\-R\fP \fICHECKS\fP | \fB–requirements=\fP‌\fICHECKS\fP
+\fB\-R\fP \fICHECKS\fP | \fB\-\-requirements=\fP‌\fICHECKS\fP
Start a fresh KYC process for the given list of CHECKS. CHECKS must be a space\-separated list of checks that must be in the configuration under \fIPROVIDED_CHECKS\fP for some of the providers. The exchange will determine which provider to use for KYC based on the CHECKS given. The tool will output the HTTP URL where the user has to begin the KYC process to the command\-line. This is usually the first thing to do when using this tool. Outputs the KYC\-logic specific user and legitimization IDs, or NULL if not used by the KYC\-logic at the initiation stage. You may want to use the \fB\-P\fP option to also obtain the Payto\-Hash for use with \fBp\fP later.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.TP
-\fB\-w\fP | \fB–run\-webservice\fP
+\fB\-w\fP | \fB\-\-run\-webservice\fP
Run a simulated Taler exchange HTTP service on the configured port with the \fB/kyc\-proof/\fP and \fB/kyc\-webhook/\fP endpoints.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-exchange-offline.1 b/man/taler-exchange-offline.1
index 09272da6..88eb1978 100644
--- a/man/taler-exchange-offline.1
+++ b/man/taler-exchange-offline.1
@@ -27,27 +27,27 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-OFFLINE" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-OFFLINE" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-offline \- operations using the offline key of a Taler exchange
.SH SYNOPSIS
.sp
\fBtaler\-exchange\-offline\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
-[subcommand …]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
+[subcommand ...]
.SH DESCRIPTION
.sp
\fBtaler\-exchange\-offline\fP is a command\-line tool to interact with the Taler
-exchange’s master private key. Most operations of this tool require access to
+exchange\(aqs master private key. Most operations of this tool require access to
the exchange’s long\-term offline signing key and should be run in a secure
(offline) environment under strict controls. The tool takes a list of
subcommands as arguments which are then processed sequentially.
.sp
-The tool includes two subcommands to interact \fIonline\fP with the exchange’s
+The tool includes two subcommands to interact \fIonline\fP with the exchange\(aqs
REST APIs. To determine how to talk to the exchange, these two subcommands
rely on the \fBBASE_URL\fP configuration option from the \fB[exchange]\fP section
of the configuration file. The \fBdownload\fP subcommand downloads the future
@@ -55,10 +55,10 @@ public keys from the running exchange. The resulting data serves as input to
the \fBsign\fP and \fBshow\fP subcommands. The \fBupload\fP subcommand uploads the
signatures created with the private master key to the exchange. It handles
the output of all subcommands (except \fBdownload\fP). The \fBdownload\fP and
-\fBupload\fP subcommands must naturally be run “online” and do not require
+\fBupload\fP subcommands must naturally be run \(dqonline\(dq and do not require
access to the offline key.
.sp
-All other subcommands are intended to be run “offline”. However, especially
+All other subcommands are intended to be run \(dqoffline\(dq. However, especially
when testing, it is of course possible to run the subcommands online as well.
Generally, subcommands read inputs (beyond command\-line arguments)
from \fBstdin\fP\&. However, they may also consume outputs of previous
@@ -68,21 +68,21 @@ and if not consumed the final output is printed to \fBstdout\fP\&.
The general options for \fBtaler\-exchange\-offline\fP are:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the merchant to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH CONFIGURATION
@@ -102,17 +102,17 @@ $ taler\-exchange\-offline setup
.UNINDENT
.sp
Note that if the private key file already exists, the above will simply output
-the existing key. Passing additional arguments after setup (including “\-“)
+the existing key. Passing additional arguments after setup (including \(dq\-\(dq)
will cause the output to be encapsulated in JSON.
.sp
Relevant configuration options for \fBtaler\-exchange\-offline\fP are:
.INDENT 0.0
.IP \(bu 2
-\fB[exchange/BASE_URL]\fP — how to reach the exchange (for download/upload)
+\fB[exchange/BASE_URL]\fP \-\-\- how to reach the exchange (for download/upload)
.IP \(bu 2
-\fB[exchange\-offline/MASTER_PRIV_FILE]\fP — where to store the private keys
+\fB[exchange\-offline/MASTER_PRIV_FILE]\fP \-\-\- where to store the private keys
.IP \(bu 2
-\fB[exchange\-offline/SECM_TOFU_FILE]\fP — where to store TOFU data
+\fB[exchange\-offline/SECM_TOFU_FILE]\fP \-\-\- where to store TOFU data
.UNINDENT
.SH SUBCOMMANDS
.SS setup
@@ -164,7 +164,7 @@ configuration of extensions, in a format suitable for the \fBupload\fP
subcommand.
.sp
Note that an extension on the exchange will only become activated at runtime
-\fIafter\fP the extension’s configurations has been signed by the offline tool with
+\fIafter\fP the extension\(aqs configurations has been signed by the offline tool with
the signing key and the signed configuration been uploaded to the exchange.
.SS drain
.sp
@@ -208,23 +208,23 @@ in a format suitable for the \fBupload\fP subcommand.
.sp
This subcommand
informs an exchange that an auditor is to be activated. Afterwards, the
-exchange will accept inputs from that auditor’s \fBtaler\-auditor\-offline\fP
+exchange will accept inputs from that auditor\(aqs \fBtaler\-auditor\-offline\fP
tool. Note that the auditor also must add the exchange to the list of
exchanges that it audits via \fBtaler\-auditor\-exchange\fP\&. Furthermore, the
-exchange’s database will need to be provided to the auditor. This subcommand
+exchange\(aqs database will need to be provided to the auditor. This subcommand
only informs the exchange about the auditor, but does not perform those
additional mandatory steps for a working auditor.
.sp
-The auditor’s public key must be given in the usual base32\-encoding as the
+The auditor\(aqs public key must be given in the usual base32\-encoding as the
first argument.
.sp
-The auditor’s REST API base URL must be given as the second argument. The tool
-performs a minimal sanity check, namely that the URL begins with “http”
-(this also allows “https”), but as it runs offline does not perform any further
+The auditor\(aqs REST API base URL must be given as the second argument. The tool
+performs a minimal sanity check, namely that the URL begins with \(dqhttp\(dq
+(this also allows \(dqhttps\(dq), but as it runs offline does not perform any further
validation!
.sp
The third argument must be a human\-readable name for the auditor. This may
-be shown to users and should identify the auditor’s business entity. If
+be shown to users and should identify the auditor\(aqs business entity. If
the name includes spaces, the argument should be quoted.
.sp
The subcommand takes no inputs from \fBstdin\fP or other subcommands.
@@ -235,10 +235,10 @@ in a format suitable for the \fBupload\fP subcommand.
.sp
This subcommand
informs an exchange that an auditor is to be deactivated. Afterwards, the
-exchange will refuse inputs from that auditor’s \fBtaler\-auditor\-offline\fP
+exchange will refuse inputs from that auditor\(aqs \fBtaler\-auditor\-offline\fP
tool.
.sp
-The auditor’s public key must be given in the usual base32\-encoding as the
+The auditor\(aqs public key must be given in the usual base32\-encoding as the
first argument.
.sp
The subcommand takes no inputs from \fBstdin\fP or other subcommands.
@@ -256,7 +256,7 @@ account information advertised could theoretically differ from that which
these tool actually use, for example if the public bank account is only a
front for the actual internal business accounts.
.sp
-The \fBpayto://\fP URI (RFC 8905) of the exchange’s bank account must be given
+The \fBpayto://\fP URI (RFC 8905) of the exchange\(aqs bank account must be given
as the first argument to the subcommand.
.sp
Afterwards, optional arguments can be given:
@@ -294,7 +294,7 @@ The following types of credit\- and debit\-restrictions are supported:
\fBdeny\fP: A $TYPE of \fBdeny\fP means that this bank account cannot be used
for the given operation. \fBdeny\fP takes no further arguments.
.IP \(bu 2
-\fBregex\fP $EXPR $HINT $JSON: A $TYPE of \fBregex\fP means that the partner’s
+\fBregex\fP $EXPR $HINT $JSON: A $TYPE of \fBregex\fP means that the partner\(aqs
bank account \fBpayto\fP\-URI representation must follow a certain regular
expression given in $EXPR where the syntax follows posix\-egrep, but
without support for character classes, GNU extensions, back\-references or
@@ -317,7 +317,7 @@ This subcommand
informs an exchange that it should stop advertising a bank account as
belonging to the exchange on its \fB/keys\fP endpoint.
.sp
-The \fBpayto://\fP URI (RFC 8905) of the exchange’s (former) bank account must be
+The \fBpayto://\fP URI (RFC 8905) of the exchange\(aqs (former) bank account must be
given as the first argument to the subcommand.
.sp
The subcommand takes no inputs from \fBstdin\fP or other subcommands.
@@ -371,11 +371,11 @@ Partner exchange base URL.
.IP 2. 3
Partner exchange master public key.
.IP 3. 3
-Calendar year for which the fee applies, ‘now’ for the current year.
+Calendar year for which the fee applies, \(aqnow\(aq for the current year.
.IP 4. 3
-Wad frequency, in minutes (for example, ‘30’).
+Wad frequency, in minutes (for example, \(aq30\(aq).
.IP 5. 3
-Wad fee (for example, ‘KUDOS:0.1’).
+Wad fee (for example, \(aqKUDOS:0.1\(aq).
.UNINDENT
.UNINDENT
.UNINDENT
@@ -388,7 +388,7 @@ The arguments provided must include:
.INDENT 3.5
.INDENT 0.0
.IP 1. 3
-Calendar year for which the fee applies, ‘now’ for the current year.
+Calendar year for which the fee applies, \(aqnow\(aq for the current year.
.IP 2. 3
KYC timeout. How long does the exchange keep a reserve open that is waiting for the KYC.
.IP 3. 3
@@ -410,8 +410,8 @@ History fee charged when inquiring about non\-recent account history.
.UNINDENT
.SS aml\-enable
.sp
-Enable AML officer’s account, granting them access to AML data and,
-if ‘rw’ is given, the power to make AML decisions.
+Enable AML officer\(aqs account, granting them access to AML data and,
+if \(aqrw\(aq is given, the power to make AML decisions.
.sp
The arguments provided must include:
.INDENT 0.0
@@ -422,13 +422,13 @@ AML staff member public key (in base32 encoding)
.IP 2. 3
AML staff member legal name
.IP 3. 3
-‘ro’ or ‘rw’ to set access to read\-only or read\-write
+\(aqro\(aq or \(aqrw\(aq to set access to read\-only or read\-write
.UNINDENT
.UNINDENT
.UNINDENT
.SS aml\-disable
.sp
-Disable AML officer’s account. Also updates the legal name.
+Disable AML officer\(aqs account. Also updates the legal name.
.sp
The arguments provided must include:
.INDENT 0.0
@@ -459,7 +459,7 @@ Wad fee to charge.
.IP 4. 3
Wad transfer frequency.
.IP 5. 3
-Year for which the above options are to be configured, ‘now’ for the current year.
+Year for which the above options are to be configured, \(aqnow\(aq for the current year.
.UNINDENT
.UNINDENT
.UNINDENT
@@ -522,7 +522,7 @@ $ taler\-exchange\-offline upload < sigs.json
.SS Download, sign and upload, all in one (online)
.sp
Note that doing this is only recommended in non\-production deployments,
-as this requires putting the “offline” key onto a system that is actually
+as this requires putting the \(dqoffline\(dq key onto a system that is actually
online!
.INDENT 0.0
.INDENT 3.5
@@ -658,7 +658,7 @@ $ taler\-exchange\-offline \e
.UNINDENT
.UNINDENT
.sp
-The outputs (“revoke.json”, “mix.json”) must be uploaded using the \fBupload\fP
+The outputs (\(dqrevoke.json\(dq, \(dqmix.json\(dq) must be uploaded using the \fBupload\fP
subcommand to the exchange to actually revoke the keys.
.SH SECURITY CONSIDERATIONS
.sp
@@ -667,8 +667,8 @@ system with \fImonotonic time\fP\&. The time does not have to precisely match th
of the exchange, but it must be monotonic across tool invocations. The clock
of the offline system is used in the enable/disable signatures to communicate
an order of the events to the exchange. This prevents someone from replaying
-an older “enable” (or “disable”) message after a more recent “disable” (or
-“enable”) message has been provided to the exchange. Thus, there is no need
+an older \(dqenable\(dq (or \(dqdisable\(dq) message after a more recent \(dqdisable\(dq (or
+\(dqenable\(dq) message has been provided to the exchange. Thus, there is no need
to keep the actual files exchanged with the offline tool secret.
.sp
The \fBtaler\-exchange\-offline\fP tool tries to make sure that the online signing
@@ -678,7 +678,7 @@ but \fInot\fP the security modules from providing attacker\-controlled keys to t
offline signing process.
.sp
For this, the \fBtaler\-exchange\-offline\fP signing subcommand always
-automatically learns the security module’s public signing key and \fItrusts it
+automatically learns the security module\(aqs public signing key and \fItrusts it
on first use\fP (TOFU), but stores it to disk (see the \fBSECM_TOFU_FILE\fP option
in the \fB[exchange\-offline]\fP section of the configuration). If the keys
change subsequently, the tool will refuse to sign.
diff --git a/man/taler-exchange-router.1 b/man/taler-exchange-router.1
index af4fdb6b..729b4e75 100644
--- a/man/taler-exchange-router.1
+++ b/man/taler-exchange-router.1
@@ -27,19 +27,19 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-ROUTER" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-ROUTER" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-router \- route payments to partner exchanges
.SH SYNOPSIS
.sp
\fBtaler\-exchange\-router\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel=\fP\fIUSEC\fP]
-[\fB\-t\fP\ |\ \fB–test\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel=\fP\fIUSEC\fP]
+[\fB\-t\fP\ |\ \fB\-\-test\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-exchange\-router\fP is a NOT YET IMPLEMENTED command\-line
@@ -49,29 +49,29 @@ wallets where the recipient has performed the KYC at a different
exchange than the sender. This is currently not supported.
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the exchange to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-t\fP | \fB–test\fP
+\fB\-t\fP | \fB\-\-test\fP
Run in test mode and exit when idle.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-exchange-secmod-cs.1 b/man/taler-exchange-secmod-cs.1
index 991c7a67..f826996e 100644
--- a/man/taler-exchange-secmod-cs.1
+++ b/man/taler-exchange-secmod-cs.1
@@ -27,20 +27,20 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-SECMOD-CS" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-SECMOD-CS" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-secmod-cs \- handle private CS key operations for a Taler exchange
.SH SYNOPSIS
.sp
\fBtaler\-exchange\-secmod\-cs\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-p\fP\ \fIN\fP\ |\ ,**–parallelism=**\fIN\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel=\fP\fIUSEC\fP]
-[\fB\-t\fP\ \fITIMESTAMP\fP\ |\ \fB–time=\fP\fITIMESTAMP\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-p\fP\ \fIN\fP\ |\ ,**\-\-parallelism=**\fIN\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel=\fP\fIUSEC\fP]
+[\fB\-t\fP\ \fITIMESTAMP\fP\ |\ \fB\-\-time=\fP\fITIMESTAMP\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-exchange\-secmod\-cs\fP is a command\-line tool to
@@ -51,33 +51,33 @@ FIXME: More details.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the merchant to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fBp\fP \fIN\fP | \fB–parallelism=\fP\fIN\fP
+\fBp\fP \fIN\fP | \fB\-\-parallelism=\fP\fIN\fP
Run with \fIN\fP worker threads.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-t\fP \fITIMESTAMP\fP | \fB–time=\fP\fITIMESTAMP\fP
+\fB\-t\fP \fITIMESTAMP\fP | \fB\-\-time=\fP\fITIMESTAMP\fP
Pretend it is \fITIMESTAMP\fP for the update.
\fITIMESTAMP\fP is a human\-readable string (e.g., \fBYYYY\-MM\-DD HH:MM:SS\fP).
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-exchange-secmod-eddsa.1 b/man/taler-exchange-secmod-eddsa.1
index c639d04b..765e0d26 100644
--- a/man/taler-exchange-secmod-eddsa.1
+++ b/man/taler-exchange-secmod-eddsa.1
@@ -27,20 +27,20 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-SECMOD-EDDSA" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-SECMOD-EDDSA" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-secmod-eddsa \- handle private EDDSA key operations for a Taler exchange
.SH SYNOPSIS
.sp
\fBtaler\-exchange\-secmod\-eddsa\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-p\fP\ \fIN\fP\ |\ ,**–parallelism=**\fIN\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel=\fP\fIUSEC\fP]
-[\fB\-t\fP\ \fITIMESTAMP\fP\ |\ \fB–time=\fP\fITIMESTAMP\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-p\fP\ \fIN\fP\ |\ ,**\-\-parallelism=**\fIN\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel=\fP\fIUSEC\fP]
+[\fB\-t\fP\ \fITIMESTAMP\fP\ |\ \fB\-\-time=\fP\fITIMESTAMP\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-exchange\-secmod\-eddsa\fP is a command\-line tool to
@@ -51,33 +51,33 @@ FIXME: More details.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the merchant to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fBp\fP \fIN\fP | \fB–parallelism=\fP\fIN\fP
+\fBp\fP \fIN\fP | \fB\-\-parallelism=\fP\fIN\fP
Run with \fIN\fP worker threads.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-t\fP \fITIMESTAMP\fP | \fB–time=\fP\fITIMESTAMP\fP
+\fB\-t\fP \fITIMESTAMP\fP | \fB\-\-time=\fP\fITIMESTAMP\fP
Pretend it is \fITIMESTAMP\fP for the update.
\fITIMESTAMP\fP is a human\-readable string (e.g., \fBYYYY\-MM\-DD HH:MM:SS\fP).
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-exchange-secmod-rsa.1 b/man/taler-exchange-secmod-rsa.1
index 9d6d7221..8e24c1e2 100644
--- a/man/taler-exchange-secmod-rsa.1
+++ b/man/taler-exchange-secmod-rsa.1
@@ -27,20 +27,20 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-SECMOD-RSA" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-SECMOD-RSA" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-secmod-rsa \- handle private RSA key operations for a Taler exchange
.SH SYNOPSIS
.sp
\fBtaler\-exchange\-secmod\-rsa\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-p\fP\ \fIN\fP\ |\ ,**–parallelism=**\fIN\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel=\fP\fIUSEC\fP]
-[\fB\-t\fP\ \fITIMESTAMP\fP\ |\ \fB–time=\fP\fITIMESTAMP\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-p\fP\ \fIN\fP\ |\ ,**\-\-parallelism=**\fIN\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel=\fP\fIUSEC\fP]
+[\fB\-t\fP\ \fITIMESTAMP\fP\ |\ \fB\-\-time=\fP\fITIMESTAMP\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-exchange\-secmod\-rsa\fP is a command\-line tool to
@@ -51,33 +51,33 @@ FIXME: More details.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the merchant to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fBp\fP \fIN\fP | \fB–parallelism=\fP\fIN\fP
+\fBp\fP \fIN\fP | \fB\-\-parallelism=\fP\fIN\fP
Run with \fIN\fP worker threads.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-t\fP \fITIMESTAMP\fP | \fB–time=\fP\fITIMESTAMP\fP
+\fB\-t\fP \fITIMESTAMP\fP | \fB\-\-time=\fP\fITIMESTAMP\fP
Pretend it is \fITIMESTAMP\fP for the update.
\fITIMESTAMP\fP is a human\-readable string (e.g., \fBYYYY\-MM\-DD HH:MM:SS\fP).
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-exchange-transfer.1 b/man/taler-exchange-transfer.1
index d5c37380..20aa354b 100644
--- a/man/taler-exchange-transfer.1
+++ b/man/taler-exchange-transfer.1
@@ -27,48 +27,48 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-TRANSFER" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-TRANSFER" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-transfer \- execute wire transfers
.SH SYNOPSIS
.sp
\fBtaler\-exchange\-transfer\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel\fP\fIUSEC\fP]
-[\fB\-t\fP\ |\ \fB–test\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel\fP\fIUSEC\fP]
+[\fB\-t\fP\ |\ \fB\-\-test\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-exchange\-transfer\fP is a command\-line tool to actually execute scheduled wire transfers (using the bank/wire gateway).
The transfers are prepared by the \fBtaler\-exchange\-aggregator\fP and \fBtaler\-exchange\-closer\fP tools.
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the exchange to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-t\fP | \fB–test\fP
+\fB\-t\fP | \fB\-\-test\fP
Run in test mode and exit when idle.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-exchange-wire-gateway-client.1 b/man/taler-exchange-wire-gateway-client.1
index f7e6b4be..aca0ecf1 100644
--- a/man/taler-exchange-wire-gateway-client.1
+++ b/man/taler-exchange-wire-gateway-client.1
@@ -27,28 +27,28 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-WIRE-GATEWAY-CLIENT" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-WIRE-GATEWAY-CLIENT" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-wire-gateway-client \- trigger a transfer at the bank
.SH SYNOPSIS
.sp
\fBtaler\-exchange\-wire\-gateway\-client\fP
-[\fB\-a\fP\ \fIVALUE\fP\ |\ \fB–amount=\fP‌\fIVALUE\fP]
-[\fB\-b\fP\ \fIURL\fP\ |\ \fB–bank=\fP‌\fIURL\fP]
-[\fB\-C\fP\ \fIACCOUNT\fP\ |\ \fB–credit=\fP‌\fIACCOUNT\fP]
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-D\fP\ \fIACCOUNT\fP\ |\ \fB–debit=\fP‌\fIACCOUNT\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-i\fP\ |\ \fB–credit\-history\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-o\fP\ |\ \fB–debit\-history\fP]
-[\fB\-p\fP\ \fIPASSPHRASE\fP\ |\ \fB–pass=\fP‌\fIPASSPHRASE\fP]
-[\fB\-S\fP\ \fISTRING\fP\ |\ \fB–subject=\fP‌\fISTRING\fP]
-[\fB\-s\fP\ \fIACCOUNT\-SECTION\fP\ |\ \fB–section=\fP‌\fIACCOUNT\-SECTION\fP]
-[\fB\-u\fP\ \fIUSERNAME\fP\ |\ \fB–user=\fP‌\fIUSERNAME\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
-[\fB\-w\fP\ \fIROW\fP\ |\ \fB–since\-when=\fP‌\fIROW\fP]
+[\fB\-a\fP\ \fIVALUE\fP\ |\ \fB\-\-amount=\fP‌\fIVALUE\fP]
+[\fB\-b\fP\ \fIURL\fP\ |\ \fB\-\-bank=\fP‌\fIURL\fP]
+[\fB\-C\fP\ \fIACCOUNT\fP\ |\ \fB\-\-credit=\fP‌\fIACCOUNT\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-D\fP\ \fIACCOUNT\fP\ |\ \fB\-\-debit=\fP‌\fIACCOUNT\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-i\fP\ |\ \fB\-\-credit\-history\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-o\fP\ |\ \fB\-\-debit\-history\fP]
+[\fB\-p\fP\ \fIPASSPHRASE\fP\ |\ \fB\-\-pass=\fP‌\fIPASSPHRASE\fP]
+[\fB\-S\fP\ \fISTRING\fP\ |\ \fB\-\-subject=\fP‌\fISTRING\fP]
+[\fB\-s\fP\ \fIACCOUNT\-SECTION\fP\ |\ \fB\-\-section=\fP‌\fIACCOUNT\-SECTION\fP]
+[\fB\-u\fP\ \fIUSERNAME\fP\ |\ \fB\-\-user=\fP‌\fIUSERNAME\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
+[\fB\-w\fP\ \fIROW\fP\ |\ \fB\-\-since\-when=\fP‌\fIROW\fP]
.SH DESCRIPTION
.sp
\fBtaler\-exchange\-wire\-gateway\-client\fP is a command\-line tool to trigger bank transfers or
@@ -77,58 +77,58 @@ on transaction history operations.
.SH OPTIONS
.INDENT 0.0
.TP
-\fB\-a\fP \fIVALUE\fP | \fB–amount=\fP‌\fIVALUE\fP
+\fB\-a\fP \fIVALUE\fP | \fB\-\-amount=\fP‌\fIVALUE\fP
Amount to transfer. Given in the Taler\-typical format of
CURRENCY:VALUE.FRACTION.
.TP
-\fB\-b\fP \fIURL\fP | \fB–bank=\fP‌\fIURL\fP
+\fB\-b\fP \fIURL\fP | \fB\-\-bank=\fP‌\fIURL\fP
URL at which the bank is operation. Conflicts with \fB\-s\fP\&.
.TP
-\fB\-C\fP \fIACCOUNT\fP | \fB–credit=\fP‌\fIACCOUNT\fP
+\fB\-C\fP \fIACCOUNT\fP | \fB\-\-credit=\fP‌\fIACCOUNT\fP
When doing a wire transfer from the exchange, the money should be credited to \fIACCOUNT\fP\&.
Specifies the payto:// URI of the account. Can also be used as a filter by credit
account when looking at transaction histories.
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the given configuration file.
.TP
-\fB\-D\fP \fIACCOUNT\fP | \fB–debit=\fP‌\fIACCOUNT\fP
+\fB\-D\fP \fIACCOUNT\fP | \fB\-\-debit=\fP‌\fIACCOUNT\fP
When doing a wire transfer to the exchange, the \fIACCOUNT\fP is to be debited.
Specifies the payto:// URI of the account. Can also be used as a filter by debit
account when looking at transaction histories.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-i\fP | \fB–credit\-history\fP
+\fB\-i\fP | \fB\-\-credit\-history\fP
Obtain credit history of the exchange. Conflicts with \fB\-o\fP\&.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-o\fP | \fB–debit\-history\fP
+\fB\-o\fP | \fB\-\-debit\-history\fP
Obtain debit history of the exchange. Conflicts with \fB\-i\fP\&.
.TP
-\fB\-p\fP \fIPASSPHRASE\fP | \fB–pass=\fP‌\fIPASSPHRASE\fP
+\fB\-p\fP \fIPASSPHRASE\fP | \fB\-\-pass=\fP‌\fIPASSPHRASE\fP
Specifies the pass phrase for authentication. Conflicts with \fB\-s\fP\&.
.TP
-\fB\-S\fP \fISUBJECT\fP | \fB–subject=\fP‌\fISUBJECT\fP
+\fB\-S\fP \fISUBJECT\fP | \fB\-\-subject=\fP‌\fISUBJECT\fP
Use \fISUBJECT\fP for the wire transfer subject. Must be a reserve public key for credit operations and a wire transfer identifier for debit operations. If not specified, a random value will be generated instead.
.TP
-\fB\-s\fP \fIACCOUNT_SECTION\fP | \fB–section=\fP‌\fIACCOUNT\-SECTION\fP
+\fB\-s\fP \fIACCOUNT_SECTION\fP | \fB\-\-section=\fP‌\fIACCOUNT\-SECTION\fP
Obtain exchange account information from the \fIACCOUNT\-SECTION\fP of the configuration. The argument must be a \fB[exchange\-accountcredentials\-$NAME]\fP section name and thus start with the \fBexchange\-accountcredentials\-\fP prefix. Conflicts with \fB\-u\fP, \fB\-p\fP and \fB\-b\fP\&. Note that either \fB\-b\fP or \fB\-s\fP must be specified.
.TP
-\fB\-u\fP \fIUSERNAME\fP | \fB–user=\fP‌\fIUSERNAME\fP
+\fB\-u\fP \fIUSERNAME\fP | \fB\-\-user=\fP‌\fIUSERNAME\fP
Specifies the username for authentication. Optional and conflicts with \fB\-s\fP\&. If neither \fB\-u\fP nor \fB\-s\fP are used, we will attempt to talk to the bank without authentication.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.TP
-\fB\-w\fP \fIROW\fP | \fB–since\-when=\fP‌\fIROW\fP
+\fB\-w\fP \fIROW\fP | \fB\-\-since\-when=\fP‌\fIROW\fP
Specifies a \fIROW\fP from which the history should be obtained. If not given, the 10 youngest transactions are returned.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-exchange-wirewatch.1 b/man/taler-exchange-wirewatch.1
index 86fda4c3..ef19315f 100644
--- a/man/taler-exchange-wirewatch.1
+++ b/man/taler-exchange-wirewatch.1
@@ -27,21 +27,21 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-EXCHANGE-WIREWATCH" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-EXCHANGE-WIREWATCH" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-exchange-wirewatch \- watch for incoming wire transfers
.SH SYNOPSIS
.sp
\fBtaler\-exchange\-wirewatch\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-I**_|_\fP–ignore\-not\-found**]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-r\fP\ |\ \fB–reset\fP]
-[\fB\-T\fP\ |\ \fB–test\fP]
-[\fB\-t\fP\ \fIPLUGINNAME\fP\ |\ \fB–type=\fP‌\fIPLUGINNAME\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-I**_|_\fP\-\-ignore\-not\-found**]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-r\fP\ |\ \fB\-\-reset\fP]
+[\fB\-T\fP\ |\ \fB\-\-test\fP]
+[\fB\-t\fP\ \fIPLUGINNAME\fP\ |\ \fB\-\-type=\fP‌\fIPLUGINNAME\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-exchange\-wirewatch\fP is a command\-line tool to import wire
@@ -50,40 +50,40 @@ transactions into the Taler exchange database.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the exchange to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-f\fP \fIDELAY\fP| \fB–longpoll\-timeout=\fP\fIDELAY\fP
+\fB\-f\fP \fIDELAY\fP| \fB\-\-longpoll\-timeout=\fP\fIDELAY\fP
How long do we wait for a response for bank transactions from the bank. This is both the timeout for the long polling as well as the maximum frequency at which we would query the bank. Specified with unit (e.g. 30s, 1d, 2w), if no unit is given the number is interpreted in microseconds. Default is 60s.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-I\fP | \fB–ignore\-not\-found\fP
+\fB\-I\fP | \fB\-\-ignore\-not\-found\fP
Do not fail if the bank says that the exchange bank account does not (yet) exist.
Keep trying.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-r\fP | \fB–reset\fP
+\fB\-r\fP | \fB\-\-reset\fP
Ignore our own database and start with transactions from the
beginning of time.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-t\fP | \fB–test\fP
+\fB\-t\fP | \fB\-\-test\fP
Run in test mode and exit when idle.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-fakebank-run.1 b/man/taler-fakebank-run.1
index 0b4bc91a..9a767d3c 100644
--- a/man/taler-fakebank-run.1
+++ b/man/taler-fakebank-run.1
@@ -27,53 +27,53 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-FAKEBANK-RUN" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-FAKEBANK-RUN" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-fakebank-run \- run in-memory bank service for testing and benchmarking
.SH SYNOPSIS
.sp
\fBtaler\-fakebank\-run\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-n\fP\ \fIN\fP\ |\ \fB–num\-threads=\fP\fIN\fP]
-[\fB\-s\fP\ \fIAMOUNT\fP\ |\ \fB–signup\-bonus=\fP\fIAMOUNT\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-n\fP\ \fIN\fP\ |\ \fB\-\-num\-threads=\fP\fIN\fP]
+[\fB\-s\fP\ \fIAMOUNT\fP\ |\ \fB\-\-signup\-bonus=\fP\fIAMOUNT\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
-\fBtaler\-fakebank\-run\fP is a command\-line tool to run a Taler “bank” API (HTTP REST service). The program is useful to provide the bank functionality for benchmarking or testing when LibEuFin is unavailable or otherwise unsuitable.
+\fBtaler\-fakebank\-run\fP is a command\-line tool to run a Taler \(dqbank\(dq API (HTTP REST service). The program is useful to provide the bank functionality for benchmarking or testing when LibEuFin is unavailable or otherwise unsuitable.
.sp
It should be noted that the fakebank will keep a configured number of transactions in memory. If the number of transactions exceeds the configured memory limit, the fakebank will simply discard and overwrite the old entries. At that point, any requests involving such overwritten transactions will fail. Users of the fakebank are responsible for ensuring that the transaction history kept in memory is long enough for the purpose the bank is used for. The default limit is 128k entries.
.sp
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-C\fP | \fB–connection\-close\fP
+\fB\-C\fP | \fB\-\-connection\-close\fP
Force each HTTP connection to be closed after each request (useful in
combination with \fB\-f\fP to avoid having to wait for nc to time out).
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the merchant to operate
from FILENAME.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-n\fP \fIN\fP | \fB–num\-threads=\fP\fIN\fP
+\fB\-n\fP \fIN\fP | \fB\-\-num\-threads=\fP\fIN\fP
Use \fIN\fP threads in the thread pool.
.TP
-\fB\-s\fP \fIAMOUNT\fP | \fB–signup\-bonus=\fP\fIAMOUNT\fP
+\fB\-s\fP \fIAMOUNT\fP | \fB\-\-signup\-bonus=\fP\fIAMOUNT\fP
Credit newly registered accounts with a balance of \fIAMOUNT\fP\&. Unlike other banks, this initial balance will be created out of thin air and not via a wire transfer from some bank\-internal account.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-helper-auditor-aggregation.1 b/man/taler-helper-auditor-aggregation.1
index 08256de3..558dc77b 100644
--- a/man/taler-helper-auditor-aggregation.1
+++ b/man/taler-helper-auditor-aggregation.1
@@ -27,20 +27,20 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-HELPER-AUDITOR-AGGREGATION" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-HELPER-AUDITOR-AGGREGATION" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-helper-auditor-aggregation \- audit Taler exchange aggregation activity
.SH SYNOPSIS
.sp
\fBtaler\-helper\-auditor\-aggregation\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fBi\fP\ |\ \fB–internal\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-m\fP\ \fIKEY\fP\ |\ \fB–exchange\-key=\fP\fIKEY\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel=\fP\fIUSEC\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fBi\fP\ |\ \fB\-\-internal\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-m\fP\ \fIKEY\fP\ |\ \fB\-\-exchange\-key=\fP\fIKEY\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel=\fP\fIUSEC\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-helper\-auditor\-aggregation\fP is a command\-line tool to
@@ -51,32 +51,32 @@ FIXME: More detail.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the auditor to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-i\fP | \fB–internal\fP
+\fB\-i\fP | \fB\-\-internal\fP
Perform checks only applicable for exchange\-internal audits.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-m\fP \fIKEY\fP | \fB–exchange\-key=\fP\fIKEY\fP
+\fB\-m\fP \fIKEY\fP | \fB\-\-exchange\-key=\fP\fIKEY\fP
Use \fIKEY\fP (Crockford base32 encoded) as the public key of the exchange.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-helper-auditor-coins.1 b/man/taler-helper-auditor-coins.1
index 06103839..8b06c487 100644
--- a/man/taler-helper-auditor-coins.1
+++ b/man/taler-helper-auditor-coins.1
@@ -27,20 +27,20 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-HELPER-AUDITOR-COINS" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-HELPER-AUDITOR-COINS" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-helper-auditor-coins \- audit Taler coin processing
.SH SYNOPSIS
.sp
\fBtaler\-helper\-auditor\-coins\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fBi\fP\ |\ \fB–internal\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-m\fP\ \fIKEY\fP\ |\ \fB–exchange\-key=\fP\fIKEY\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel=\fP\fIUSEC\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fBi\fP\ |\ \fB\-\-internal\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-m\fP\ \fIKEY\fP\ |\ \fB\-\-exchange\-key=\fP\fIKEY\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel=\fP\fIUSEC\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-helper\-auditor\-coins\fP is a command\-line tool to
@@ -51,32 +51,32 @@ FIXME: More detail.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the auditor to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-i\fP | \fB–internal\fP
+\fB\-i\fP | \fB\-\-internal\fP
Perform checks only applicable for exchange\-internal audits.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-m\fP \fIKEY\fP | \fB–exchange\-key=\fP\fIKEY\fP
+\fB\-m\fP \fIKEY\fP | \fB\-\-exchange\-key=\fP\fIKEY\fP
Use \fIKEY\fP (Crockford base32 encoded) as the public key of the exchange.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-helper-auditor-deposits.1 b/man/taler-helper-auditor-deposits.1
index dd99f680..e0cc2aa9 100644
--- a/man/taler-helper-auditor-deposits.1
+++ b/man/taler-helper-auditor-deposits.1
@@ -27,20 +27,20 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-HELPER-AUDITOR-DEPOSITS" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-HELPER-AUDITOR-DEPOSITS" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-helper-auditor-deposits \- audit Taler exchange database for deposit confirmation consistency
.SH SYNOPSIS
.sp
\fBtaler\-helper\-auditor\-deposits\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fBi\fP\ |\ \fB–internal\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-m\fP\ \fIKEY\fP\ |\ \fB–exchange\-key=\fP\fIKEY\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel=\fP\fIUSEC\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fBi\fP\ |\ \fB\-\-internal\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-m\fP\ \fIKEY\fP\ |\ \fB\-\-exchange\-key=\fP\fIKEY\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel=\fP\fIUSEC\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-helper\-auditor\-deposits\fP is a command\-line tool to
@@ -51,32 +51,32 @@ FIXME: More detail.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the auditor to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-i\fP | \fB–internal\fP
+\fB\-i\fP | \fB\-\-internal\fP
Perform checks only applicable for exchange\-internal audits.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-m\fP \fIKEY\fP | \fB–exchange\-key=\fP\fIKEY\fP
+\fB\-m\fP \fIKEY\fP | \fB\-\-exchange\-key=\fP\fIKEY\fP
Use \fIKEY\fP (Crockford base32 encoded) as the public key of the exchange.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-helper-auditor-purses.1 b/man/taler-helper-auditor-purses.1
index f8998ede..b5753eda 100644
--- a/man/taler-helper-auditor-purses.1
+++ b/man/taler-helper-auditor-purses.1
@@ -27,20 +27,20 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-HELPER-AUDITOR-PURSES" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-HELPER-AUDITOR-PURSES" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-helper-auditor-purses \- audit Taler exchange purse handling
.SH SYNOPSIS
.sp
\fBtaler\-helper\-auditor\-purses\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fBi\fP\ |\ \fB–internal\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-m\fP\ \fIKEY\fP\ |\ \fB–exchange\-key=\fP\fIKEY\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel=\fP\fIUSEC\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fBi\fP\ |\ \fB\-\-internal\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-m\fP\ \fIKEY\fP\ |\ \fB\-\-exchange\-key=\fP\fIKEY\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel=\fP\fIUSEC\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-helper\-auditor\-purses\fP is a command\-line tool to
@@ -51,32 +51,32 @@ FIXME: More detail.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the auditor to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-i\fP | \fB–internal\fP
+\fB\-i\fP | \fB\-\-internal\fP
Perform checks only applicable for exchange\-internal audits.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-m\fP \fIKEY\fP | \fB–exchange\-key=\fP\fIKEY\fP
+\fB\-m\fP \fIKEY\fP | \fB\-\-exchange\-key=\fP\fIKEY\fP
Use \fIKEY\fP (Crockford base32 encoded) as the public key of the exchange.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-helper-auditor-reserves.1 b/man/taler-helper-auditor-reserves.1
index b0feff15..14d43e12 100644
--- a/man/taler-helper-auditor-reserves.1
+++ b/man/taler-helper-auditor-reserves.1
@@ -27,20 +27,20 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-HELPER-AUDITOR-RESERVES" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-HELPER-AUDITOR-RESERVES" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-helper-auditor-reserves \- audit Taler exchange reserve handling
.SH SYNOPSIS
.sp
\fBtaler\-helper\-auditor\-reserves\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fBi\fP\ |\ \fB–internal\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-m\fP\ \fIKEY\fP\ |\ \fB–exchange\-key=\fP\fIKEY\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel=\fP\fIUSEC\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fBi\fP\ |\ \fB\-\-internal\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-m\fP\ \fIKEY\fP\ |\ \fB\-\-exchange\-key=\fP\fIKEY\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel=\fP\fIUSEC\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-helper\-auditor\-reserves\fP is a command\-line tool to
@@ -51,32 +51,32 @@ FIXME: More detail.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the auditor to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-i\fP | \fB–internal\fP
+\fB\-i\fP | \fB\-\-internal\fP
Perform checks only applicable for exchange\-internal audits.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-m\fP \fIKEY\fP | \fB–exchange\-key=\fP\fIKEY\fP
+\fB\-m\fP \fIKEY\fP | \fB\-\-exchange\-key=\fP\fIKEY\fP
Use \fIKEY\fP (Crockford base32 encoded) as the public key of the exchange.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-helper-auditor-wire.1 b/man/taler-helper-auditor-wire.1
index f23add53..c081ee79 100644
--- a/man/taler-helper-auditor-wire.1
+++ b/man/taler-helper-auditor-wire.1
@@ -27,56 +27,56 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-HELPER-AUDITOR-WIRE" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-HELPER-AUDITOR-WIRE" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-helper-auditor-wire \- audit exchange database for consistency with the bank's wire transfers
.SH SYNOPSIS
.sp
\fBtaler\-helper\-auditor\-wire\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fBi\fP\ |\ \fB–internal\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-m\fP\ \fIKEY\fP\ |\ \fB–exchange\-key=\fP\fIKEY\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel=\fP\fIUSEC\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fBi\fP\ |\ \fB\-\-internal\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-m\fP\ \fIKEY\fP\ |\ \fB\-\-exchange\-key=\fP\fIKEY\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel=\fP\fIUSEC\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-helper\-auditor\-wire\fP is a command\-line tool to
-audit exchange database for consistency with the bank’s wire transfers.
+audit exchange database for consistency with the bank\(aqs wire transfers.
.sp
FIXME: More detail.
.sp
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the auditor to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-i\fP | \fB–internal\fP
+\fB\-i\fP | \fB\-\-internal\fP
Perform checks only applicable for exchange\-internal audits.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-m\fP \fIKEY\fP | \fB–exchange\-key=\fP\fIKEY\fP
+\fB\-m\fP \fIKEY\fP | \fB\-\-exchange\-key=\fP\fIKEY\fP
Use \fIKEY\fP (Crockford base32 encoded) as the public key of the exchange.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-mdb.1 b/man/taler-mdb.1
index 562023d5..93fbdac3 100644
--- a/man/taler-mdb.1
+++ b/man/taler-mdb.1
@@ -27,21 +27,21 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-MDB" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-MDB" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-mdb \- operate multi drop bus (MDB) based vending machines with Taler payments
.SH SYNOPSIS
.sp
\fBtaler\-mdb\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-d\fP\ |\ \fB–disable\-mdb\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-i\fP\ |\ \fB–backlight\-invert\fP]
-[\fB\-L\fP _*LOGLEVEL*\ |\ \fB–log=\fP\fILOGLEVEL\fP]
-[\fB\-l\fP _*FILENAME*\ |\ \fB–logfile=\fP\fIFILENAME\fP]
-[\fB\-s\fP\ |\ \fB–enable\-soldout\fP]
-[\fB\-t\fP\ |\ \fB–disable\-tty\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-d\fP\ |\ \fB\-\-disable\-mdb\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-i\fP\ |\ \fB\-\-backlight\-invert\fP]
+[\fB\-L\fP _*LOGLEVEL*\ |\ \fB\-\-log=\fP\fILOGLEVEL\fP]
+[\fB\-l\fP _*FILENAME*\ |\ \fB\-\-logfile=\fP\fIFILENAME\fP]
+[\fB\-s\fP\ |\ \fB\-\-enable\-soldout\fP]
+[\fB\-t\fP\ |\ \fB\-\-disable\-tty\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-mdb\fP is a command\-line tool to operate a vending machine using GNU Taler for payments.
@@ -49,29 +49,29 @@ taler-mdb \- operate multi drop bus (MDB) based vending machines with Taler paym
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the Sync commands
to operate from \fIFILENAME\fP\&.
.TP
-\fB\-d\fP | \fB–disable\-mdb\fP
+\fB\-d\fP | \fB\-\-disable\-mdb\fP
Disable interaction with the MDB bus (for testing).
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-i\fP | \fB–backlight\-invert\fP
+\fB\-i\fP | \fB\-\-backlight\-invert\fP
Invert the bit for turning on/off the backlight.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–log=\fP\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-log=\fP\fILOGLEVEL\fP
Configure logging to use \fILOGLEVEL\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP\fIFILENAME\fP
Configure logging to write logs to \fIFILENAME\fP\&.
.TP
-\fB\-s\fP | \fB–enable\-soldout\fP
-When the machine fails to dispense a product, internally set the product to “sold out” and refuse future orders until restarted.
+\fB\-s\fP | \fB\-\-enable\-soldout\fP
+When the machine fails to dispense a product, internally set the product to \(dqsold out\(dq and refuse future orders until restarted.
.TP
-\fB\-t\fP | \fB–disable\-tty\fP
+\fB\-t\fP | \fB\-\-disable\-tty\fP
Disable interactive command\-line use.
.TP
\fB\-v\fP | \fB–version\fP
diff --git a/man/taler-merchant-benchmark.1 b/man/taler-merchant-benchmark.1
index c336e48c..88afaa92 100644
--- a/man/taler-merchant-benchmark.1
+++ b/man/taler-merchant-benchmark.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-MERCHANT-BENCHMARK" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-MERCHANT-BENCHMARK" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-merchant-benchmark \- generate Taler-style benchmarking payments
.SH SYNOPSIS
@@ -46,7 +46,7 @@ default instance) and aggregated by the exchange. Takes the following
option:
.INDENT 7.0
.TP
-\fB\-p\fP \fIPN\fP | \fB–payments\-number=\fP\fIPN\fP
+\fB\-p\fP \fIPN\fP | \fB\-\-payments\-number=\fP\fIPN\fP
Perform PN many payments, defaults to 1.
.UNINDENT
.TP
@@ -56,11 +56,11 @@ leaving payments unaggregated, or using a non\-default merchant
instance. Takes the following options:
.INDENT 7.0
.TP
-\fB\-t\fP \fITC\fP | \fB–two\-coins=\fP\fITC\fP
+\fB\-t\fP \fITC\fP | \fB\-\-two\-coins=\fP\fITC\fP
Perform TC many payments that use two coins (normally, all the
payments use only one coin). TC defaults to 1.
.TP
-\fB\-u\fP \fIUN\fP | \fB–unaggregated\-number=\fP\fIUN\fP
+\fB\-u\fP \fIUN\fP | \fB\-\-unaggregated\-number=\fP\fIUN\fP
Generate UN payments that will be left unaggregated. Note that
subsequent invocations of the generator may pick those
unaggregated payments and actually aggregated them.
@@ -69,27 +69,27 @@ unaggregated payments and actually aggregated them.
.SH COMMON OPTIONS
.INDENT 0.0
.TP
-\fB\-a\fP \fIAPIKEY\fP | \fB–apikey=\fP\fIAPIKEY\fP
-HTTP ‘Authorization’ header to send to the merchant.
+\fB\-a\fP \fIAPIKEY\fP | \fB\-\-apikey=\fP\fIAPIKEY\fP
+HTTP \(aqAuthorization\(aq header to send to the merchant.
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP\fIFILENAME\fP
Use the configuration and other resources for the merchant to
operate from FILENAME.
.TP
-\fB\-u\fP \fISECTION\fP | \fB–exchange\-account\-section=\fP\fISECTION\fP
+\fB\-u\fP \fISECTION\fP | \fB\-\-exchange\-account\-section=\fP\fISECTION\fP
Configuration \fISECTION\fP specifying the exchange account to use.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-merchant-dbconfig.1 b/man/taler-merchant-dbconfig.1
index 2b231f6a..a7b641e8 100644
--- a/man/taler-merchant-dbconfig.1
+++ b/man/taler-merchant-dbconfig.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-MERCHANT-DBCONFIG" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-MERCHANT-DBCONFIG" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-merchant-dbconfig \- configure Taler merchant database
.SH SYNOPSIS
diff --git a/man/taler-merchant-dbinit.1 b/man/taler-merchant-dbinit.1
index e1fc6f16..2a2d16c9 100644
--- a/man/taler-merchant-dbinit.1
+++ b/man/taler-merchant-dbinit.1
@@ -27,18 +27,18 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-MERCHANT-DBINIT" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-MERCHANT-DBINIT" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-merchant-dbinit \- initialize Taler merchant database
.SH SYNOPSIS
.sp
\fBtaler\-merchant\-dbinit\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-r\fP\ |\ \fB–reset\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-r\fP\ |\ \fB\-\-reset\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-merchant\-dbinit\fP is a command\-line tool to initialize the Taler
@@ -48,21 +48,21 @@ Taler merchant to operate.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the merchant to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-r\fP | \fB–reset\fP
+\fB\-r\fP | \fB\-\-reset\fP
Drop tables. Dangerous, will delete all existing data in the database
before creating the tables.
.TP
diff --git a/man/taler-merchant-depositcheck.1 b/man/taler-merchant-depositcheck.1
index acb7c47b..7fb5fd27 100644
--- a/man/taler-merchant-depositcheck.1
+++ b/man/taler-merchant-depositcheck.1
@@ -27,20 +27,20 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-MERCHANT-DEPOSITCHECK" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-MERCHANT-DEPOSITCHECK" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-merchant-depositcheck \- check status of deposits with exchange
.SH SYNOPSIS
.sp
\fBtaler\-merchant\-depositcheck\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-e\fP \fIBASE_URL\fP\ |\ \fB–exchange=\fP\fIBASE_URL\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel\fP\fIUSEC\fP]
-[\fB\-t\fP\ |\ \fB–test\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-e\fP \fIBASE_URL\fP\ |\ \fB\-\-exchange=\fP\fIBASE_URL\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel\fP\fIUSEC\fP]
+[\fB\-t\fP\ |\ \fB\-\-test\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-merchant\-depositcheck\fP is a command\-line tool to inquire with exchanges about whether they completed
@@ -51,34 +51,34 @@ a wire transfer.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the merchant to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-e\fP \fIBASE_URL\fP | \fB–exchange=\fP‌\fIBASE_URL\fP
-Base URL of the exchange to monitor. If not given, a worker process will be spawned for each exchange in the configuration (“merchant\-exchange\-” sections).
+\fB\-e\fP \fIBASE_URL\fP | \fB\-\-exchange=\fP‌\fIBASE_URL\fP
+Base URL of the exchange to monitor. If not given, a worker process will be spawned for each exchange in the configuration (\(dqmerchant\-exchange\-\(dq sections).
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-s\fP \fISECTION\fP | \fB–section=\fP\fISECTION\fP
+\fB\-s\fP \fISECTION\fP | \fB\-\-section=\fP\fISECTION\fP
Configuration section to use. Default is taler\-merchant\-depositcheck. Needed
if different processes are used to watch multiple bank accounts (for the
same instance or different instances).
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-t\fP | \fB–test\fP
+\fB\-t\fP | \fB\-\-test\fP
Run in test mode. Only runs until the current list of bank
transactions are all imported.
.TP
diff --git a/man/taler-merchant-exchange.1 b/man/taler-merchant-exchange.1
index 0a51e05b..818a21dd 100644
--- a/man/taler-merchant-exchange.1
+++ b/man/taler-merchant-exchange.1
@@ -27,23 +27,23 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-MERCHANT-EXCHANGE" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-MERCHANT-EXCHANGE" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-merchant-exchange \- ask exchange which deposits were aggregated for a particular wire transfer that credited a merchant account
.SH SYNOPSIS
.sp
\fBtaler\-merchant\-exchange\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel\fP\fIUSEC\fP]
-[\fB\-t\fP\ |\ \fB–test\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel\fP\fIUSEC\fP]
+[\fB\-t\fP\ |\ \fB\-\-test\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-merchant\-exchange\fP is a background job that reconciles
-wire transfers that credit the merchant’s bank account with
+wire transfers that credit the merchant\(aqs bank account with
the respective contracts that have been paid by asking the
exchange to provide a list of all deposits that were aggregated
into a wire transfer.
@@ -54,26 +54,26 @@ validate that the exchange paid the merchant correctly.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the merchant to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-t\fP | \fB–test\fP
+\fB\-t\fP | \fB\-\-test\fP
Run in test mode. Only runs until the current list of bank
transactions have all been checked.
.TP
diff --git a/man/taler-merchant-httpd.1 b/man/taler-merchant-httpd.1
index fe78b2f8..1a34057c 100644
--- a/man/taler-merchant-httpd.1
+++ b/man/taler-merchant-httpd.1
@@ -27,20 +27,20 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-MERCHANT-HTTPD" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-MERCHANT-HTTPD" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-merchant-httpd \- run Taler merchant backend (with RESTful API)
.SH SYNOPSIS
.sp
\fBtaler\-merchant\-httpd\fP
-[\fB\-a**_|_\fP–auth**]
-[\fB\-C\fP\ |\ \fB–connection\-close\fP]
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel\fP\fIUSEC\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-a**_|_\fP\-\-auth**]
+[\fB\-C\fP\ |\ \fB\-\-connection\-close\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel\fP\fIUSEC\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-merchant\-httpd\fP is a command\-line tool to run the Taler merchant
@@ -49,44 +49,44 @@ before running this command.
.SH OPTIONS
.INDENT 0.0
.TP
-\fB\-a\fP \fITOKEN\fP | \fB–auth=\fP\fITOKEN\fP
-Use TOKEN for initial access control to the merchant backend. TOKEN must start with the “secret\-token:” prefix, as per RFC 8959. The value
+\fB\-a\fP \fITOKEN\fP | \fB\-\-auth=\fP\fITOKEN\fP
+Use TOKEN for initial access control to the merchant backend. TOKEN must start with the \(dqsecret\-token:\(dq prefix, as per RFC 8959. The value
given in TOKEN must appear in backoffice requests to the default instance
-of the merchant, i.e. “Authorization: Bearer TOKEN” to obtain
+of the merchant, i.e. \(dqAuthorization: Bearer TOKEN\(dq to obtain
access to the merchant backend. Note that setting a passphrase for the
default instance by any means will block future access via TOKEN. This
is basically a way to reset the passphrase protecting access. TOKEN
-should be a “pchar” as per RFC 8959, but this is NOT checked. Note that
-TOKEN will only grant access to the ‘default’ instance, not other instances.
+should be a \(dqpchar\(dq as per RFC 8959, but this is NOT checked. Note that
+TOKEN will only grant access to the \(aqdefault\(aq instance, not other instances.
Instead of using the command\-line, which exposes TOKEN to users on the
system, you may want to consider setting the
TALER_MERCHANT_TOKEN environment variable instead.
.TP
-\fB\-C\fP | \fB–connection\-close\fP
+\fB\-C\fP | \fB\-\-connection\-close\fP
Force each HTTP connection to be closed after each request
(useful in combination with \-f to avoid having to wait for nc to
time out).
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP\fIFILENAME\fP
Use the configuration and other resources for the merchant to
operate from FILENAME.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-v\fP | \fB–version\fP
+\fB\-v\fP | \fB\-\-version\fP
Print version information.
.UNINDENT
.SH SIGNALS
@@ -100,7 +100,7 @@ cleanly.
.INDENT 0.0
.TP
.B TALER_MERCHANT_TOKEN
-Like the “\-a” option, resets the access token for the default
+Like the \(dq\-a\(dq option, resets the access token for the default
instance to the given value.
.UNINDENT
.SH SEE ALSO
diff --git a/man/taler-merchant-passwd.1 b/man/taler-merchant-passwd.1
index 1c53d124..4ecccf95 100644
--- a/man/taler-merchant-passwd.1
+++ b/man/taler-merchant-passwd.1
@@ -27,18 +27,18 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-MERCHANT-PASSWD" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-MERCHANT-PASSWD" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-merchant-passwd \- change Taler merchant instance password
.SH SYNOPSIS
.sp
\fBtaler\-merchant\-passwd\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-i**_*NAME*\ |\ **–instance\fP\fINAME\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-i**_*NAME*\ |\ **\-\-instance\fP\fINAME\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
[PASSWORD]
.SH DESCRIPTION
.sp
@@ -50,22 +50,22 @@ environment variable.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the merchant to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-i\fP \fINAME\fP | \fB–instance\fP\fINAME\fP
+\fB\-i\fP \fINAME\fP | \fB\-\-instance\fP\fINAME\fP
Specifies the name of the instance for which the password should be
-updated. If not given, the “default” instance is modified.
+updated. If not given, the \(dqdefault\(dq instance is modified.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
\fB\-v\fP | \fB–version\fP
diff --git a/man/taler-merchant-webhook.1 b/man/taler-merchant-webhook.1
index 193cb9ef..7e132b61 100644
--- a/man/taler-merchant-webhook.1
+++ b/man/taler-merchant-webhook.1
@@ -27,19 +27,19 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-MERCHANT-WEBHOOK" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-MERCHANT-WEBHOOK" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-merchant-webhook \- execute webhooks of the Taler merchant backend (optional service)
.SH SYNOPSIS
.sp
\fBtaler\-merchant\-webhook\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel\fP\fIUSEC\fP]
-[\fB\-t\fP\ |\ \fB–test\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel\fP\fIUSEC\fP]
+[\fB\-t\fP\ |\ \fB\-\-test\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-merchant\-webhook\fP is a command\-line tool to trigger webhooks
@@ -49,26 +49,26 @@ requests and updates the Taler merchant database accordingly.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the merchant to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-t\fP | \fB–test\fP
+\fB\-t\fP | \fB\-\-test\fP
Run in test mode. Only runs until there are no more webhooks
to be executed.
.TP
diff --git a/man/taler-merchant-wirewatch.1 b/man/taler-merchant-wirewatch.1
index 99aadae0..8905de9e 100644
--- a/man/taler-merchant-wirewatch.1
+++ b/man/taler-merchant-wirewatch.1
@@ -27,20 +27,20 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-MERCHANT-WIREWATCH" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-MERCHANT-WIREWATCH" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-merchant-wirewatch \- import credit transactions from a merchant bank account into merchant backend (optional)
.SH SYNOPSIS
.sp
\fBtaler\-merchant\-wirewatch\fP
-[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB–config=\fP‌\fIFILENAME\fP]
-[\fB\-h\fP\ |\ \fB–help\fP]
-[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB–loglevel=\fP‌\fILOGLEVEL\fP]
-[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB–logfile=\fP‌\fIFILENAME\fP]
-[\fB\-p\fP\ |\ \fB–persist\fP]
-[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB–timetravel\fP\fIUSEC\fP]
-[\fB\-t\fP\ |\ \fB–test\fP]
-[\fB\-v\fP\ |\ \fB–version\fP]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB\-\-config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB\-\-help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB\-\-logfile=\fP‌\fIFILENAME\fP]
+[\fB\-p\fP\ |\ \fB\-\-persist\fP]
+[\fB\-T\fP\ \fIUSEC\fP\ |\ \fB\-\-timetravel\fP\fIUSEC\fP]
+[\fB\-t\fP\ |\ \fB\-\-test\fP]
+[\fB\-v\fP\ |\ \fB\-\-version\fP]
.SH DESCRIPTION
.sp
\fBtaler\-merchant\-wirewatch\fP is a command\-line tool to import
@@ -51,34 +51,34 @@ the exchange paid the merchant correctly.
Its options are as follows:
.INDENT 0.0
.TP
-\fB\-c\fP \fIFILENAME\fP | \fB–config=\fP‌\fIFILENAME\fP
+\fB\-c\fP \fIFILENAME\fP | \fB\-\-config=\fP‌\fIFILENAME\fP
Use the configuration and other resources for the merchant to operate
from \fIFILENAME\fP\&.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Print short help on options.
.TP
-\fB\-L\fP \fILOGLEVEL\fP | \fB–loglevel=\fP‌\fILOGLEVEL\fP
+\fB\-L\fP \fILOGLEVEL\fP | \fB\-\-loglevel=\fP‌\fILOGLEVEL\fP
Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
\fBWARNING\fP, \fBERROR\fP\&.
.TP
-\fB\-l\fP \fIFILENAME\fP | \fB–logfile=\fP‌\fIFILENAME\fP
+\fB\-l\fP \fIFILENAME\fP | \fB\-\-logfile=\fP‌\fIFILENAME\fP
Send logging output to \fIFILENAME\fP\&.
.TP
-\fB\-p\fP | \fB–persist\fP
+\fB\-p\fP | \fB\-\-persist\fP
Run in persist mode. Does not exit when the account configuration changes. Useful when not running under systemd.
.TP
-\fB\-s\fP \fISECTION\fP | \fB–section=\fP\fISECTION\fP
+\fB\-s\fP \fISECTION\fP | \fB\-\-section=\fP\fISECTION\fP
Configuration section to use. Default is taler\-merchant\-wirewatch. Needed
if different processes are used to watch multiple bank accounts (for the
same instance or different instances).
.TP
-\fB\-T\fP \fIUSEC\fP | \fB–timetravel=\fP\fIUSEC\fP
+\fB\-T\fP \fIUSEC\fP | \fB\-\-timetravel=\fP\fIUSEC\fP
Modify the system time by \fIUSEC\fP microseconds.
\fIUSEC\fP may be prefixed with \fB+\fP or \fB\-\fP (e.g. \fB\-T +300\fP).
This option is intended for debugging/testing only.
.TP
-\fB\-t\fP | \fB–test\fP
+\fB\-t\fP | \fB\-\-test\fP
Run in test mode. Only runs until the current list of bank
transactions are all imported.
.TP
diff --git a/man/taler-terms-generator.1 b/man/taler-terms-generator.1
index bba14d63..b630aa7d 100644
--- a/man/taler-terms-generator.1
+++ b/man/taler-terms-generator.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-TERMS-GENERATOR" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-TERMS-GENERATOR" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-terms-generator \- create legal policy documents for services
.SH SYNOPSIS
@@ -46,7 +46,7 @@ taler-terms-generator \- create legal policy documents for services
.TP
\fBtaler\-terms\-generator\fP is a command\-line tool to create terms of service
and privacy policy files in various file formats and languages from a
-reStructuredText (“.rst”) input. It can be used to generate the responses
+reStructuredText (\(dq.rst\(dq) input. It can be used to generate the responses
various GNU Taler services serve under the \fB/terms\fP and \fB/pp\fP endpoints.
.TP
\fB\-a\fP \fIAUTHOR\fP
@@ -55,26 +55,26 @@ set the author information to the given AUTHOR in the meta\-data of various gene
\fB\-C\fP \fICOPYRIGHT\fP
set the copyright information to the given COPYRIGHT in the meta\-data of various generated outputs.
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Prints a compiled\-in help text.
.TP
\fB\-i\fP \fIINPUT\fP
Name of the input (.rst) file with the terms of service or privacy policy to convert.
.TP
\fB\-l\fP \fILANGUAGE\fP
-Add the given \fILANGUAGE\fP to the list of translations for the current \fIINPUT\fP\&. \fILANGUAGE\fP must be a two\-letter language code (like “de” or “it”). This will generate or update the respective “.po” files to translate the \fIINPUT\fP terms to this \fILANGUAGE\fP\&.
+Add the given \fILANGUAGE\fP to the list of translations for the current \fIINPUT\fP\&. \fILANGUAGE\fP must be a two\-letter language code (like \(dqde\(dq or \(dqit\(dq). This will generate or update the respective \(dq.po\(dq files to translate the \fIINPUT\fP terms to this \fILANGUAGE\fP\&.
.TP
\fB\-L\fP \fILOCALE_DIR\fP
-Specify locale/ directory where GNU gettext resources for translating the input are located. If “\-l” is given, this directory is where fresh or updated “.po” files will be placed, and otherwise this directory will be scanned for translations of the “.rst” input file.
+Specify locale/ directory where GNU gettext resources for translating the input are located. If \(dq\-l\(dq is given, this directory is where fresh or updated \(dq.po\(dq files will be placed, and otherwise this directory will be scanned for translations of the \(dq.rst\(dq input file.
.TP
\fB\-o\fP \fIOUTPUT\fP
Specifies where to write the output. This should be the directory where the service expects to find the generated resources. Unless you changed the default configuration, you probably do not have to specify this value.
.TP
\fB\-p\fP \fIPAPER\fP
-Specifies the paper format for generated PDF documents. Can be “a4” or “letter”.
+Specifies the paper format for generated PDF documents. Can be \(dqa4\(dq or \(dqletter\(dq.
.TP
\fB\-t\fP \fITITLE\fP
-Overrides the document title. By default, the title will be set to the contents of the first line of the \fIINPUT\fP “.rst” file.
+Overrides the document title. By default, the title will be set to the contents of the first line of the \fIINPUT\fP \(dq.rst\(dq file.
.UNINDENT
.SH SEE ALSO
.sp
diff --git a/man/taler-unified-setup.1 b/man/taler-unified-setup.1
index a1b89790..b535e794 100644
--- a/man/taler-unified-setup.1
+++ b/man/taler-unified-setup.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER-UNIFIED-SETUP" "1" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER-UNIFIED-SETUP" "1" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler-unified-setup \- conveniently start and stop various GNU Taler services
.SH SYNOPSIS
@@ -68,7 +68,7 @@ Start backup/sync service
(Mandatory) Use CONFIG_FILENAME.
.TP
\fB\-d\fP \fIMETHOD\fP
-use the given wire method. Default is ‘x\-taler\-bank’.
+use the given wire method. Default is \(aqx\-taler\-bank\(aq.
.TP
\fB\-e\fP
Start exchange
@@ -79,7 +79,7 @@ Start fakebank
\fB\-g\fP
Start aggregator
.TP
-\fB\-h\fP | \fB–help\fP
+\fB\-h\fP | \fB\-\-help\fP
Prints a compiled\-in help text.
.TP
\fB\-k\fP
diff --git a/man/taler.conf.5 b/man/taler.conf.5
index 908a9486..3ca1d3c4 100644
--- a/man/taler.conf.5
+++ b/man/taler.conf.5
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "TALER.CONF" "5" "Feb 10, 2024" "0.9" "GNU Taler"
+.TH "TALER.CONF" "5" "Mar 07, 2024" "0.9" "GNU Taler"
.SH NAME
taler.conf \- Taler configuration file
.SH DESCRIPTION
@@ -130,7 +130,7 @@ Name of the currency, e.g.\ “EUR” for Euro.
.TP
.B CURRENCY_ROUND_UNIT
Smallest amount in this currency that can be transferred using the
-underlying RTGS. For example: “EUR:0.01” or “JPY:1”.
+underlying RTGS. For example: \(dqEUR:0.01\(dq or \(dqJPY:1\(dq.
.UNINDENT
.sp
The “[PATHS]” section is special in that it contains paths that can be
@@ -160,7 +160,7 @@ sockets). Usually “${TMP}/taler\-system\-runtime”.
.UNINDENT
.SS CURRENCY SPECIFICATIONS
.sp
-Sections with a name of the form “[currency\-$NAME]” (where “$NAME” could
+Sections with a name of the form “[currency\-$NAME]” (where \(dq$NAME\(dq could
be any unique string) are used to specify details about how currencies
should be handled (and in particularly rendered) by the user interface.
A detailed motivation for this section can be found in DD51.
@@ -206,10 +206,10 @@ JSON map determining how to encode very large or very tiny
amounts in this currency. Maps a base10 logarithm to the
respective currency symbol. Must include at least an
entry for 0 (currency unit). For example, use
-{“0”:”€”} for Euros or “{“0”:”$”} for Dollars. You could
-additionally use {“0”:”€”,”3”:”k€”} to render 3000 EUR
+{\(dq0\(dq:\(dq€\(dq} for Euros or \(dq{\(dq0\(dq:\(dq$\(dq} for Dollars. You could
+additionally use {\(dq0\(dq:\(dq€\(dq,\(dq3\(dq:\(dqk€\(dq} to render 3000 EUR
as 3k€. For BTC a typical map would be
-{“0”:”BTC”,”\-3”:”mBTC”}, informing the UI to render small
+{\(dq0\(dq:\(dqBTC\(dq,\(dq\-3\(dq:\(dqmBTC\(dq}, informing the UI to render small
amounts in milli\-Bitcoin (mBTC).
.UNINDENT
.SS EXCHANGE OPTIONS
@@ -222,29 +222,29 @@ exchange tools.
Plugin to use for the database, e.g.\ “postgres”.
.TP
.B SERVE
-Should the HTTP server listen on a UNIX domain socket (set option to “unix”) or on a TCP socket (set option to “tcp”)?
+Should the HTTP server listen on a UNIX domain socket (set option to \(dqunix\(dq) or on a TCP socket (set option to \(dqtcp\(dq)?
.TP
.B UNIXPATH
-Path to listen on if we “SERVE” is set to “unix”.
+Path to listen on if we \(dqSERVE\(dq is set to \(dqunix\(dq.
.TP
.B UNIXPATH_MODE
-Access permission mask to use for the “UNIXPATH”.
+Access permission mask to use for the \(dqUNIXPATH\(dq.
.TP
.B PORT
Port on which the HTTP server listens, e.g.\ 8080.
.TP
.B BIND_TO
-Hostname to which the exchange HTTP server should be bound to, e.g. “localhost”.
+Hostname to which the exchange HTTP server should be bound to, e.g. \(dqlocalhost\(dq.
.TP
.B MASTER_PUBLIC_KEY
Crockford Base32\-encoded master public key, public version of the
-exchange’s long\-time offline signing key. This configuration option
+exchange\(aqs long\-time offline signing key. This configuration option
is also used by the \fBauditor\fP to determine the public key of the
exchange which it is auditing.
.TP
.B AML_THRESHOLD
Largest amount in this currency that can be transferred per month without
-an AML staff member doing a (manual) AML check. For example: “USD:1000000”.
+an AML staff member doing a (manual) AML check. For example: \(dqUSD:1000000\(dq.
.TP
.B KYC_AML_TRIGGER
Program to run on KYC attribute data to decide whether we should immediately flag an account for AML review. Program must return 0 if a manual AML review is not needed, and non\-zero to trigger an AML review. The KYC attribute data of the new user will be passed on standard\-input.
@@ -269,6 +269,12 @@ The base URL under which the exchange can be reached.
Added to wire transfers to enable tracking by merchants.
Used by the KYC logic when interacting with OAuth 2.0.
.TP
+.B TOPLEVEL_REDIRECT_URL
+Where to redirect visitors that access the top\-level
+\(dq/\(dq endpoint of the exchange. Should point users to
+information about the exchange operator.
+Optional setting, defaults to \(dq/terms\(dq.
+.TP
.B AGGREGATOR_IDLE_SLEEP_INTERVAL
For how long should the taler\-exchange\-aggregator sleep when it is idle
before trying to look for more work? Default is 60 seconds.
@@ -286,7 +292,7 @@ For how long should the taler\-exchange\-wirewatch sleep when it is idle
before trying to look for more work? Default is 60 seconds.
.TP
.B AGGREGATOR_SHARD_SIZE
-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).
+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 \(dqtaler\-exchange\-dbinit \-s\(dq before resuming. Default is 2147483648 (no sharding).
.TP
.B SIGNKEY_LEGAL_DURATION
For how long are signatures with signing keys legally valid?
@@ -300,12 +306,12 @@ How many requests should the HTTP server process at most before committing suici
.B TERMS_DIR
Directory where the terms of service of the exchange operator can be fund.
The directory must contain sub\-directories for every supported language,
-using the two\-character language code in lower case, e.g. “en/” or “fr/”.
+using the two\-character language code in lower case, e.g. \(dqen/\(dq or \(dqfr/\(dq.
Each subdirectory must then contain files with the terms of service in
various formats. The basename of the file of the current policy must be
specified under \fBTERMS_ETAG\fP\&. The extension defines the mime type.
-Supported extensions include “html”, “htm”, “txt”, “pdf”, “jpg”, “jpeg”,
-“png” and “gif”. For example, using a \fBTERMS_ETAG\fP of “0”, the structure
+Supported extensions include \(dqhtml\(dq, \(dqhtm\(dq, \(dqtxt\(dq, \(dqpdf\(dq, \(dqjpg\(dq, \(dqjpeg\(dq,
+\(dqpng\(dq and \(dqgif\(dq. For example, using a \fBTERMS_ETAG\fP of \(dq0\(dq, the structure
could be the following:
.INDENT 7.0
.IP \(bu 2
@@ -324,7 +330,7 @@ $TERMS_DIR/de/0.txt
.TP
.B TERMS_ETAG
Basename of the file(s) in the \fBTERMS_DIR\fP with the current terms of service.
-The value is also used for the “Etag” in the HTTP request to control
+The value is also used for the \(dqEtag\(dq in the HTTP request to control
caching. Whenever the terms of service change, the \fBTERMS_ETAG\fP MUST also
change, and old values MUST NOT be repeated. For example, the date or
version number of the terms of service SHOULD be used for the Etag. If
@@ -340,7 +346,7 @@ Works the same as \fBTERMS_ETAG\fP, just for the privacy policy.
.UNINDENT
.SS EXCHANGE KYC PROVIDER OPTIONS
.sp
-The following options must be in the section “[kyc\-provider\-XXX]” sections.
+The following options must be in the section \(dq[kyc\-provider\-XXX]\(dq sections.
.INDENT 0.0
.TP
.B COST
@@ -357,20 +363,20 @@ List of checks performed by this provider. Space\-separated names of checks, mus
.UNINDENT
.SS EXCHANGE KYC OAUTH2 OPTIONS
.sp
-The following options must be in the section “[kyc\-provider\-XXX]” sections with “LOGIC = oauth2”.
+The following options must be in the section \(dq[kyc\-provider\-XXX]\(dq sections with \(dqLOGIC = oauth2\(dq.
.INDENT 0.0
.TP
.B KYC_OAUTH2_VALIDITY
-Duration (e.g. “12 months”) of the validity of the performed KYC check. Can be “forever”.
+Duration (e.g. \(dq12 months\(dq) of the validity of the performed KYC check. Can be \(dqforever\(dq.
.TP
.B KYC_OAUTH2_AUTHORIZE_URL
-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: “\fI\%http://localhost:8888/oauth/v2/authorize\fP”. To use the plugin in combination with the Challenger service’s \fB/setup\fP step, append “#setup”, thus “\fI\%https://challenger.example.com/authorize#setup\fP”. Here, “#setup” is not a fragment but merely a hint to the logic to determine the full authorization URL via the \fB/setup/$CLIENT_ID\fP handler.
+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: \(dq\fI\%http://localhost:8888/oauth/v2/authorize\fP\(dq. To use the plugin in combination with the Challenger service\(aqs \fB/setup\fP step, append \(dq#setup\(dq, thus \(dq\fI\%https://challenger.example.com/authorize#setup\fP\(dq. Here, \(dq#setup\(dq is not a fragment but merely a hint to the logic to determine the full authorization URL via the \fB/setup/$CLIENT_ID\fP handler.
.TP
.B KYC_OAUTH2_TOKEN_URL
-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: “\fI\%http://localhost:8888/oauth/v2/token\fP” (or just “/token”)
+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 \(dqbearer\(dq token). Example: \(dq\fI\%http://localhost:8888/oauth/v2/token\fP\(dq (or just \(dq/token\(dq)
.TP
.B KYC_OAUTH2_INFO_URL
-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: “\fI\%http://localhost:8888/api/user/me\fP” or “\fI\%http://localhost:8888/oauth/v2/info\fP”
+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: \(dq\fI\%http://localhost:8888/api/user/me\fP\(dq or \(dq\fI\%http://localhost:8888/oauth/v2/info\fP\(dq
.TP
.B KYC_OAUTH2_CLIENT_ID
Client ID of the exchange when it talks to the KYC OAuth2 endpoint.
@@ -379,18 +385,24 @@ Client ID of the exchange when it talks to the KYC OAuth2 endpoint.
Client secret of the exchange to use when talking to the KYC Oauth2 endpoint.
.TP
.B KYC_OAUTH2_POST_URL
-URL to which the exchange will redirect the client’s browser after successful authorization/login for the KYC process. Example: “\fI\%http://example.com/thank\-you\fP”
+URL to which the exchange will redirect the client\(aqs browser after successful authorization/login for the KYC process. Example: \(dq\fI\%http://example.com/thank\-you\fP\(dq
.TP
.B KYC_OAUTH2_CONVERTER_HELPER
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.
+.TP
+.B KYC_OAUTH2_DEBUG_MODE
+Set to YES to allow error responses to include potentially
+sensitive private information (such as full responses
+from the OAuth 2.0 server) that might aid in debugging
+problems. Should be set to \(dqNO\(dq in production.
.UNINDENT
.SS EXCHANGE KYC KYCAID OPTIONS
.sp
-The following options must be in the section “[kyc\-provider\-XXX]” sections with “LOGIC = kycaid”.
+The following options must be in the section \(dq[kyc\-provider\-XXX]\(dq sections with \(dqLOGIC = kycaid\(dq.
.INDENT 0.0
.TP
.B KYC_KYCAID_VALIDITY
-Duration (e.g. “12 months”) of the validity of the performed KYC check. Can be “forever”.
+Duration (e.g. \(dq12 months\(dq) of the validity of the performed KYC check. Can be \(dqforever\(dq.
.TP
.B KYC_KYCAID_AUTH_TOKEN
Authentication token to access the KYC service.
@@ -399,15 +411,15 @@ Authentication token to access the KYC service.
ID that specifies the form to use for the KYC process.
.TP
.B KYC_KYCAID_POST_URL
-URL to which the exchange will redirect the client’s browser after successful authorization/login for the KYC process.
+URL to which the exchange will redirect the client\(aqs browser after successful authorization/login for the KYC process.
.UNINDENT
.SS EXCHANGE KYC PERSONA OPTIONS
.sp
-The following options must be in the section “[kyc\-provider\-XXX]” sections with “LOGIC = persona”.
+The following options must be in the section \(dq[kyc\-provider\-XXX]\(dq sections with \(dqLOGIC = persona\(dq.
.INDENT 0.0
.TP
.B KYC_PERSONA_VALIDITY
-Duration (e.g. “12 months”) of the validity of the performed KYC check. Can be “forever”.
+Duration (e.g. \(dq12 months\(dq) of the validity of the performed KYC check. Can be \(dqforever\(dq.
.TP
.B KYC_PERSONA_AUTH_TOKEN
Authentication token to access the KYC service.
@@ -419,17 +431,17 @@ Salt value to use for request idempotency. Optional, generated at random per pro
Subdomain to use under Persona.
.TP
.B KYC_PERSONA_CONVERTER_HELPER
-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”.
+Helper to convert JSON with KYC data returned by Persona into GNU Taler internal format. Should probably always be set to \(dqtaler\-exchange\-kyc\-persona\-converter.sh\(dq.
.TP
.B KYC_PERSONA_POST_URL
-URL to which the exchange will redirect the client’s browser after successful authorization/login for the KYC process.
+URL to which the exchange will redirect the client\(aqs browser after successful authorization/login for the KYC process.
.TP
.B KYC_PERSONA_TEMPLATE_ID
ID of the Persona template to use.
.UNINDENT
.SS EXCHANGE KYC PERSONA GLOBAL OPTIONS
.sp
-The following option must be in the section “[kyclogic\-persona]”.
+The following option must be in the section \(dq[kyclogic\-persona]\(dq.
.INDENT 0.0
.TP
.B WEBHOOK_AUTH_TOKEN
@@ -441,7 +453,7 @@ The functionality of the exchange can be extended by extensions. Those are
shared libraries which implement the extension\-API of the exchange and are
located under \fB$LIBDIR\fP, starting with prefix \fBlibtaler_extension_\fP\&. Each
extension can be enabled by adding a dedicated section
-“[exchange\-extension\-<extensionname>]” and the following option:
+\(dq[exchange\-extension\-<extensionname>]\(dq and the following option:
.INDENT 0.0
.TP
.B ENABLED
@@ -451,7 +463,7 @@ options might be set in the same section.
.SS EXCHANGE EXTENSION FOR AGE RESTRICTION
.sp
The extension for age restriction support can be enabled by adding a section
-“[exchange\-extension\-age_restriction]” with the following options:
+\(dq[exchange\-extension\-age_restriction]\(dq with the following options:
.INDENT 0.0
.TP
.B ENABLE
@@ -460,8 +472,8 @@ Must be set to \fBYES\fP in order to activate the extension.
.B AGE_GROUPS
A colon\-seperated string of increasing non\-negative integers, defining the
buckets of age groups supported by the exchange. Each integer marks the
-beginning of the next age group. The zero’th age group implicitly starts
-with 0. For example, the string “10:18” would define three age groups:
+beginning of the next age group. The zero\(aqth age group implicitly starts
+with 0. For example, the string \(dq10:18\(dq would define three age groups:
.INDENT 7.0
.INDENT 3.5
.INDENT 0.0
@@ -475,7 +487,7 @@ Group 2: ages 18 and above
.UNINDENT
.UNINDENT
.sp
-If not provided, the default value is “8:10:12:14:16:18:21”.
+If not provided, the default value is \(dq8:10:12:14:16:18:21\(dq.
.UNINDENT
.sp
\fBNote\fP: Age restriction is bound to specific denominations and must be
@@ -484,7 +496,7 @@ the option \fBAGE_RESTRICTED = YES\fP, see \fI\%EXCHANGE COIN OPTIONS\fP\&. Howe
age groups are defined globally for all denominations.
.SS EXCHANGE OFFLINE SIGNING OPTIONS
.sp
-The following options must be in the section “[exchange\-offline]”.
+The following options must be in the section \(dq[exchange\-offline]\(dq.
.INDENT 0.0
.TP
.B MASTER_PRIV_FILE
@@ -511,7 +523,7 @@ this option will also be ignored.
.UNINDENT
.SS EXCHANGE RSA CRYPTO HELPER OPTIONS
.sp
-The following options must be in the section “[taler\-exchange\-secmod\-rsa]”.
+The following options must be in the section \(dq[taler\-exchange\-secmod\-rsa]\(dq.
.INDENT 0.0
.TP
.B LOOKAHEAD_SIGN
@@ -538,7 +550,7 @@ Note that the \fBtaler\-exchange\-secmod\-rsa\fP also evaluates the \fB[coin_*]\
configuration sections described below.
.SS EXCHANGE CS CRYPTO HELPER OPTIONS
.sp
-The following options must be in the section “[taler\-exchange\-secmod\-cs]”.
+The following options must be in the section \(dq[taler\-exchange\-secmod\-cs]\(dq.
.INDENT 0.0
.TP
.B LOOKAHEAD_SIGN
@@ -565,7 +577,7 @@ Note that the \fBtaler\-exchange\-secmod\-cs\fP also evaluates the \fB[coin_*]\f
configuration sections described below.
.SS EXCHANGE EDDSA CRYPTO HELPER OPTIONS
.sp
-The following options must be in the section “[taler\-exchange\-secmod\-eddsa]”.
+The following options must be in the section \(dq[taler\-exchange\-secmod\-eddsa]\(dq.
.INDENT 0.0
.TP
.B LOOKAHEAD_SIGN
@@ -592,7 +604,7 @@ On which path should the security module listen for signing requests?
.UNINDENT
.SS EXCHANGE DATABASE OPTIONS
.sp
-The following options must be in the section “[exchangedb]”.
+The following options must be in the section \(dq[exchangedb]\(dq.
.INDENT 0.0
.TP
.B IDLE_RESERVE_EXPIRATION_TIME
@@ -653,7 +665,7 @@ URL of the wire gateway. Typically of the form
\fBhttps://$HOSTNAME[:$PORT]/taler\-wire\-gateway/$USERNAME/\fP
where $HOSTNAME is the hostname of the system running the bank
(such as the Taler Python bank or the Nexus) and \fB$USERNAME\fP is
-the username of the exchange’s bank account (usually matching
+the username of the exchange\(aqs bank account (usually matching
the \fBUSERNAME\fP option used for authentication). Example:
\fBhttps://bank.demo.taler.net/taler\-wire\-gateway/Exchange/\fP\&.
.TP
@@ -708,12 +720,12 @@ What fee is charged for refunds? When a coin is refunded, the deposit
fee is returned. Instead, the refund fee is charged to the customer.
.TP
.B CIPHER
-What cryptosystem should be used? Must be set to either “CS” or “RSA”.
+What cryptosystem should be used? Must be set to either \(dqCS\(dq or \(dqRSA\(dq.
The respective crypto\-helper will then generate the keys for this
denomination.
.TP
.B RSA_KEYSIZE
-What is the RSA keysize modulos (in bits)? Only used if “CIPHER=RSA”.
+What is the RSA keysize modulos (in bits)? Only used if \(dqCIPHER=RSA\(dq.
.TP
.B AGE_RESTRICTED
Setting this option to \fBYES\fP marks the denomination as age restricted
@@ -730,22 +742,22 @@ merchant backend.
Plugin to use for the database, e.g._“postgres”.
.TP
.B SERVE
-Should the HTTP server listen on a UNIX domain socket (set option to “unix”) or on a TCP socket (set option to “tcp”)?
+Should the HTTP server listen on a UNIX domain socket (set option to \(dqunix\(dq) or on a TCP socket (set option to \(dqtcp\(dq)?
.TP
.B BASE_URL
Which base URL should the merchant backend assume for itself in the protocol. Optional. If not given, the base URL will be constructed from X\-Forwarded\-Host, X\-Forwarded\-Port and X\-Forwarded\-Prefix headers that a reverse\-proxy should be setting.
.TP
.B UNIXPATH
-Path to listen on if we “SERVE” is set to “unix”.
+Path to listen on if we \(dqSERVE\(dq is set to \(dqunix\(dq.
.TP
.B UNIXPATH_MODE
-Access permission mask to use for the “UNIXPATH”.
+Access permission mask to use for the \(dqUNIXPATH\(dq.
.TP
.B PORT
Port on which the HTTP server listens, e.g.\ 8080.
.TP
.B BIND_TO
-Hostname to which the merchant HTTP server should be bound to, e.g. “localhost”.
+Hostname to which the merchant HTTP server should be bound to, e.g. \(dqlocalhost\(dq.
.TP
.B LEGAL_PRESERVATION
How long do we keep data in the database for tax audits after the
@@ -780,7 +792,7 @@ Base URL of the exchange, e.g.\ “\fI\%https://exchange.demo.taler.net/\fP”
.TP
.B MASTER_KEY
Crockford Base32 encoded master public key, public version of the
-exchange’s long\-time offline signing key. Can be omitted, in that
+exchange\(aqs long\-time offline signing key. Can be omitted, in that
case the exchange will NOT be trusted unless it is audited by
a known auditor.
Omitting \fBMASTER_KEY\fP can be useful if we do not trust the exchange
@@ -816,19 +828,19 @@ processes that do not have access to the (offline) auditor private key file.
Base URL of the auditor, e.g.\ “\fI\%https://auditor.demo.taler.net/\fP”
.TP
.B SERVE
-Should the HTTP server listen on a UNIX domain socket (set option to “unix”) or on a TCP socket (set option to “tcp”)?
+Should the HTTP server listen on a UNIX domain socket (set option to \(dqunix\(dq) or on a TCP socket (set option to \(dqtcp\(dq)?
.TP
.B UNIXPATH
-Path to listen on if we “SERVE” is set to “unix”.
+Path to listen on if we \(dqSERVE\(dq is set to \(dqunix\(dq.
.TP
.B UNIXPATH_MODE
-Access permission mask to use for the “UNIXPATH”.
+Access permission mask to use for the \(dqUNIXPATH\(dq.
.TP
.B PORT
Port on which the HTTP server listens, e.g.\ 8080.
.TP
.B BIND_TO
-Hostname to which the merchant HTTP server should be bound to, e.g. “localhost”.
+Hostname to which the merchant HTTP server should be bound to, e.g. \(dqlocalhost\(dq.
.UNINDENT
.SS AUDITOR POSTGRES BACKEND DATABASE OPTIONS
.sp
@@ -837,12 +849,12 @@ The following options must be in section “[auditordb\-postgres]” if the
.INDENT 0.0
.TP
.B CONFIG
-How to access the database, e.g.\ “postgres:///taler” to use the
-“taler” database. Testcases use “talercheck”.
+How to access the database, e.g.\ \(dqpostgres:///taler\(dq to use the
+\(dqtaler\(dq database. Testcases use “talercheck”.
.UNINDENT
.SS Bank Options
.sp
-The following options must be in section “[bank]” for the taler\-fakebank\-run(1) command. They are not used by the exchange or LibEuFin!
+The following options must be in section \(dq[bank]\(dq for the taler\-fakebank\-run(1) command. They are not used by the exchange or LibEuFin!
.INDENT 0.0
.TP
.B HTTP_PORT
@@ -866,28 +878,28 @@ Program to run while not vending, possibly useful to show advertisements on the
ESSID to advertise to wallets for use as an open WiFi to make payments (optional).
.TP
.B FULFILLMENT_MSG
-Message shown to users by their wallets upon successful payment. If “${PRODUCT_DESCRIPTION}” appears in the message, it will be replaced with the description of the product that was sold.
+Message shown to users by their wallets upon successful payment. If \(dq${PRODUCT_DESCRIPTION}\(dq appears in the message, it will be replaced with the description of the product that was sold.
.TP
.B BACKEND_BASE_URL
Base URL (possibly including instance) for the Taler merchant backend used to process payments.
.TP
.B BACKEND_AUTHORIZATION
-Full HTTP “Authorization” header (usually with a Bearer token) to be send to the merchant backend for authorization of requests. Mandatory.
+Full HTTP \(dqAuthorization\(dq header (usually with a Bearer token) to be send to the merchant backend for authorization of requests. Mandatory.
.TP
.B FRAMEBUFFER_BACKLIGHT
-Name of the file used to control brightness of the display. Optional. Defaults to “/sys/class/backlight/soc:backlight/brightness” if not given.
+Name of the file used to control brightness of the display. Optional. Defaults to \(dq/sys/class/backlight/soc:backlight/brightness\(dq if not given.
.TP
.B FRAMEBUFFER_DEVICE
-Name of the framebuffer device to use. Defaults to “/dev/fb1” if not given.
+Name of the framebuffer device to use. Defaults to \(dq/dev/fb1\(dq if not given.
.TP
.B UART_DEVICE
-Name of the UART device to use. Defaults to “/dev/ttyAMA0” if not given.
+Name of the UART device to use. Defaults to \(dq/dev/ttyAMA0\(dq if not given.
.TP
.B FAIL_COMMAND
Command to run to display a failure to the user. If not given, errors will not be properly shown.
.UNINDENT
.sp
-Each products being sold must be configured in a section where the name starts with “product\-“.
+Each products being sold must be configured in a section where the name starts with \(dqproduct\-\(dq.
In these sections, the options that must be provided are:
.INDENT 0.0
.TP
@@ -895,22 +907,22 @@ In these sections, the options that must be provided are:
Number identifying the slot in the vending machine that corresponds to this product.
.TP
.B INSTANCE
-Instance to use for the payment. Optional. If not given, the BACKEND_BASE_URL from “[taler\-mdb]” will be used.
+Instance to use for the payment. Optional. If not given, the BACKEND_BASE_URL from \(dq[taler\-mdb]\(dq will be used.
.TP
.B BACKEND_AUTHORIZATION
-Full HTTP “Authorization” header (usually with a Bearer token) to be send to the merchant backend for authorization of requests. Optional, will use global BACKEND_AUTHORIZATION setting from “[taler\-mdb]” if missing.
+Full HTTP \(dqAuthorization\(dq header (usually with a Bearer token) to be send to the merchant backend for authorization of requests. Optional, will use global BACKEND_AUTHORIZATION setting from \(dq[taler\-mdb]\(dq if missing.
.TP
.B DESCRIPTION
-Human\-readable description of the product. Use “empty” if the product is known to be sold out (only effective if selling out is enabled via command\-line).
+Human\-readable description of the product. Use \(dqempty\(dq if the product is known to be sold out (only effective if selling out is enabled via command\-line).
.TP
.B PRICE
-Actual price of the product, as a Taler amount (“$CURRENCY:$VALUE.$FRACTION”).
+Actual price of the product, as a Taler amount (\(dq$CURRENCY:$VALUE.$FRACTION\(dq).
.TP
.B KEY
Key used to select the product from the console during testing. Optional.
.TP
.B THUMBNAIL
-Name of a filename with a preview image of the product to be given to the wallet. Optional. Only “.png”, “.jpg”, “.jpeg” and “.svg” are supported at this time.
+Name of a filename with a preview image of the product to be given to the wallet. Optional. Only \(dq.png\(dq, \(dq.jpg\(dq, \(dq.jpeg\(dq and \(dq.svg\(dq are supported at this time.
.UNINDENT
.SH SEE ALSO
.sp
diff --git a/texinfo/challenger.texi b/texinfo/challenger.texi
index 53187060..bdc78e6f 100644
--- a/texinfo/challenger.texi
+++ b/texinfo/challenger.texi
@@ -19,7 +19,7 @@
@copying
@quotation
-GNU Taler 0.9.0, Feb 10, 2024
+GNU Taler 0.9.0, Mar 07, 2024
GNU Taler team
@@ -48,7 +48,7 @@ Copyright @copyright{} 2014-2022 Taler Systems SA (GPLv3+ or GFDL 1.3+)
@anchor{taler-challenger-manual doc}@anchor{0}
@c This file is part of GNU TALER.
@c
-@c Copyright (C) 2023 Taler Systems SA
+@c Copyright (C) 2023, 2024 Taler Systems SA
@c
@c TALER is free software; you can redistribute it and/or modify it under the
@c terms of the GNU Affero General Public License as published by the Free Software
@@ -69,6 +69,7 @@ Copyright @copyright{} 2014-2022 Taler Systems SA (GPLv3+ or GFDL 1.3+)
* Installation::
* Configuration Fundamentals::
* Deployment::
+* Template Customization::
@detailmenu
--- The Detailed Node Listing ---
@@ -113,11 +114,20 @@ Deployment
* OAuth 2.0 integration: OAuth 2 0 integration.
* Database management::
+Template Customization
+
+* enter-$ADDRESS_TYPE-form::
+* enter-tan-form::
+* invalid-pin::
+* validation-unknown::
+* invalid-request::
+* internal-error::
+
@end detailmenu
@end menu
@node Introduction,Installation,Top,Top
-@anchor{taler-challenger-manual gnu-taler-challenger-operator-manual}@anchor{1}@anchor{taler-challenger-manual introduction}@anchor{2}
+@anchor{taler-challenger-manual challenger-operator-manual}@anchor{1}@anchor{taler-challenger-manual introduction}@anchor{2}
@chapter Introduction
@@ -191,7 +201,7 @@ in a Postgres database by the Challenger service.
@chapter Installation
-In this guide’s shell-session fragments, the command prompt shows two pieces
+In this guide's shell-session fragments, the command prompt shows two pieces
of information:
@@ -237,7 +247,7 @@ backend:
@itemize -
@item
-“Sphinx RTD Theme” Python package aka @code{python3-sphinx-rtd-theme}
+"Sphinx RTD Theme" Python package aka @code{python3-sphinx-rtd-theme}
on Debian-based systems (for GNUnet documentation support, can be
omitted if GNUnet is configured with @code{--disable-documentation})
@@ -334,7 +344,7 @@ In any case, if @code{make check} fails, please consider filing a
bug report with the Taler bug tracker@footnote{https://bugs.taler.net}.
There is no need to actually run a GNUnet peer or a Taler exchange to use
-Challenger – all Challenger needs from GNUnet and Taler are a number of
+Challenger -- all Challenger needs from GNUnet and Taler are a number of
headers and libraries!
After installing GNUnet, unpack the GNU Taler exchange tarball,
@@ -753,7 +763,7 @@ setup and configure the legal conditions.
@section Terms of Service
-The service has an endpoint “/terms” to return the terms of service (in legal
+The service has an endpoint "/terms" to return the terms of service (in legal
language) of the service operator. Client software show these terms of
service to the user when the user is first interacting with the service.
Terms of service are optional for experimental deployments, if none are
@@ -767,7 +777,7 @@ in the configuration file for the service:
@itemize -
@item
-@code{TERMS_ETAG}: The current “Etag” to return for the terms of service.
+@code{TERMS_ETAG}: The current "Etag" to return for the terms of service.
This value must be changed whenever the terms of service are
updated. A common value to use would be a version number.
Note that if you change the @code{TERMS_ETAG}, you MUST also provide
@@ -784,7 +794,7 @@ process.
@section Privacy Policy
-The service has an endpoint “/pp” to return the terms privacy policy (in legal
+The service has an endpoint "/pp" to return the terms privacy policy (in legal
language) of the service operator. Clients should show the privacy policy to
the user when the user explicitly asks for it, but it should not be shown by
default. Privacy policies are optional for experimental deployments, if none
@@ -798,7 +808,7 @@ in the configuration file for the service:
@itemize -
@item
-@code{PRIVACY_ETAG}: The current “Etag” to return for the privacy policy.
+@code{PRIVACY_ETAG}: The current "Etag" to return for the privacy policy.
This value must be changed whenever the privacy policy is
updated. A common value to use would be a version number.
Note that if you change the @code{PRIVACY_ETAG}, you MUST also provide
@@ -819,7 +829,7 @@ The @code{TERMS_DIR} and @code{PRIVACY_DIR} directory structures must follow a
particular layout. You may use the same directory for both the terms of
service and the privacy policy, as long as you use different ETAGs. Inside of
the directory, there should be sub-directories using two-letter language codes
-like “en”, “de”, or “jp”. Each of these directories would then hold
+like "en", "de", or "jp". Each of these directories would then hold
translations of the current terms of service into the respective language.
Empty directories are permitted in case translations are not available.
@@ -827,7 +837,7 @@ Then, inside each language directory, files with the name of the value set as
the @code{TERMS_ETAG} or @code{PRIVACY_ETAG} must be provided. The extension of each
of the files should be typical for the respective mime type. The set of
supported mime types is currently hard-coded in the service, and includes
-“.epub”, “.html”, “.md”, “.pdf” and “.txt” files. If other files are present,
+".epub", ".html", ".md", ".pdf" and ".txt" files. If other files are present,
the service may show a warning on startup.
@menu
@@ -840,7 +850,7 @@ the service may show a warning on startup.
@subsection Example
-A sample file structure for a @code{TERMS_ETAG} of “tos-v0” would be:
+A sample file structure for a @code{TERMS_ETAG} of "tos-v0" would be:
@itemize -
@@ -876,8 +886,8 @@ TERMS_DIR/de/tos-v0.epub
TERMS_DIR/de/tos-v0.md
@end itemize
-If the user requests an HTML format with language preferences “fr” followed by
-“en”, the service would return @code{TERMS_DIR/en/tos-v0.html} lacking a version in
+If the user requests an HTML format with language preferences "fr" followed by
+"en", the service would return @code{TERMS_DIR/en/tos-v0.html} lacking a version in
French.
@node Generating the Legal Terms,Adding translations,Legal policies directory layout,Configuration Fundamentals
@@ -1032,7 +1042,7 @@ to be initialized with the following command:
information, see :doc:`manpages/challenger-dbinit.1`.
@end example
-@node Deployment,,Configuration Fundamentals,Top
+@node Deployment,Template Customization,Configuration Fundamentals,Top
@anchor{taler-challenger-manual deployment}@anchor{19}
@chapter Deployment
@@ -1277,5 +1287,247 @@ $ challenger-dbinit --reset
However, running this command will result in all data in the database
being lost.
+@node Template Customization,,Deployment,Top
+@anchor{taler-challenger-manual challengercustomization}@anchor{22}@anchor{taler-challenger-manual template-customization}@anchor{23}
+@chapter Template Customization
+
+
+The Challenger service comes with various HTML templates that are shown to
+guide users through the process. Challenger uses Mustach@footnote{https://gitlab.com/jbol/mustach} as the templating engine. This section
+describes the various templates. In general, the templates must be installed
+to the @code{share/challenger/templates/} directory. The file names must be of
+the form @code{$NAME.$LANG.must} where @code{$NAME} is the name of the template and
+@code{$LANG} is the 2-letter language code of the template. English templates
+must exist and will be used as a fallback. If the browser (user-agent) has
+provided language preferences in the HTTP header and the respective language
+exists, the correct language will be automatically served.
+
+The following subsections give details about each of the templates. The
+subsection title is the @code{$NAME} of the respective template.
+
+@menu
+* enter-$ADDRESS_TYPE-form::
+* enter-tan-form::
+* invalid-pin::
+* validation-unknown::
+* invalid-request::
+* internal-error::
+
+@end menu
+
+@node enter-$ADDRESS_TYPE-form,enter-tan-form,,Template Customization
+@anchor{taler-challenger-manual enter-address-type-form}@anchor{24}
+@section enter-$ADDRESS_TYPE-form
+
+
+These templates are used to ask the user to enter the address that challenger
+is expected to validate. Here, @code{$ADDRESS_TYPE} will be replaced by the
+@code{ADDRESS_TYPE} configuration option in the @code{[challenger]} section of the
+configuration file. Typical values include @code{address} (for physical mailing
+addresses), @code{phone} (for mobile phone numbers) and @code{email} (for email
+addresses). For testing, @code{file} (where the TAN code is written into a local
+file) is also supported.
+
+The template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+restrictions: Object; map of keys (names of the fields of the address to be entered by the user) to objects with a "regex" (string) containing an extended Posix regular expression for allowed address field values, and a "hint"/"hint_i18n" giving a human-readable explanation to display if the value entered by the user does not match the regex. Keys that are not mapped to such an object have no restriction on the value provided by the user. See "ADDRESS_RESTRICTIONS" in the challenger configuration.
+
+@item
+fix_address: boolean; indicates if the given address cannot be changed
+anymore, the form should be read-only if set to true.
+
+@item
+nonce: String; unique value identifying the challenge, should be shown
+to the user so that they can recognize it when they receive the TAN code
+
+@item
+last_address: Object; form values from the previous submission if available,
+details depend on the @code{ADDRESS_TYPE}, should be used to pre-populate the form
+
+@item
+changes_left: Integer; number of times the address can still be changed,
+may or may not be shown to the user
+@end itemize
+@end quotation
+
+@node enter-tan-form,invalid-pin,enter-$ADDRESS_TYPE-form,Template Customization
+@anchor{taler-challenger-manual enter-tan-form}@anchor{25}
+@section enter-tan-form
+
+
+This page should generate the HTML form for the user to enter the TAN code
+that they received at the respective address.
+
+The template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+nonce: String; unique value identifying the challenge, should be shown
+to the user so that they can match it to the TAN code they received
+
+@item
+attempts_left: Integer; how many more attempts are allowed, might be
+shown to the user, highlighting might be appropriate for low values
+such as 1 or 2 (the form will never be used if the value is zero)
+
+@item
+address: Object; the address that is being validated, might be shown
+or not
+
+@item
+transmitted: boolean; true if we just retransmitted the challenge,
+false if we sent a challenge recently and thus refused to transmit it
+again this time; might make a useful hint to the user
+
+@item
+next_tx_time: String; timestamp explaining when we would re-transmit
+the challenge the next time (at the earliest) if requested by the user
+@end itemize
+@end quotation
+
+@node invalid-pin,validation-unknown,enter-tan-form,Template Customization
+@anchor{taler-challenger-manual invalid-pin}@anchor{26}
+@section invalid-pin
+
+
+The user has provided an invalid TAN code (HTTP 403 Forbidden).
+
+The template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+addresses_left: Integer; how many times is the user still allowed to
+change the address; if 0, the user should not be shown a link to jump
+to the address entry form
+
+@item
+pin_transmissions_left: Integer; how many times might the PIN still
+be retransmitted
+
+@item
+auth_attempts_left: Integer; how many times might the user still try
+entering the PIN code
+
+@item
+exhausted: Bool; if true, the PIN was not even evaluated as the user previously exhausted the number of attempts
+
+@item
+no_challenge: Bool; if true, the PIN was not even evaluated as no challenge was ever issued (the user must have skipped the step of providing their address first!)
+@end itemize
+@end quotation
+
+If both `pin_transmissions_left' and `auth_attempts_left' are zero, the link
+to re-enter the PIN should be hidden and the user should only be allowed to
+specify a different address. The form will never be generated if all three
+values are zero. (Thus there is always at least one valid choice when the form
+is shown.)
+
+@node validation-unknown,invalid-request,invalid-pin,Template Customization
+@anchor{taler-challenger-manual validation-unknown}@anchor{27}
+@section validation-unknown
+
+
+The user has tried to access a validation process that is not known to the
+backend (HTTP 404 Not Found).
+
+The template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+detail: String; optional, extended human-readable text provided to elaborate
+on the error, should be shown to provide additional context
+@end itemize
+@end quotation
+
+@node invalid-request,internal-error,validation-unknown,Template Customization
+@anchor{taler-challenger-manual invalid-request}@anchor{28}
+@section invalid-request
+
+
+The request of the client is invalid (HTTP 400 Bad Request).
+
+The template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+detail: String; optional, extended human-readable text provided to elaborate
+on the error, should be shown to provide additional context
+@end itemize
+@end quotation
+
+@node internal-error,,invalid-request,Template Customization
+@anchor{taler-challenger-manual internal-error}@anchor{29}
+@section internal-error
+
+
+The service experienced an internal error (HTTP 500 Internal Server Error).
+
+The template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+detail: String; optional, extended human-readable text provided to elaborate
+on the error, should be shown to provide additional context
+@end itemize
+@end quotation
+
@c %**end of body
@bye
diff --git a/texinfo/taler-auditor.texi b/texinfo/taler-auditor.texi
index 55de427d..a443e536 100644
--- a/texinfo/taler-auditor.texi
+++ b/texinfo/taler-auditor.texi
@@ -19,7 +19,7 @@
@copying
@quotation
-GNU Taler 0.9.0, Feb 10, 2024
+GNU Taler 0.9.0, Mar 07, 2024
GNU Taler team
@@ -99,7 +99,7 @@ Configuration
* Configuration format::
* Initial configuration::
* Keys::
-* Configuring the auditor’s REST endpoint::
+* Configuring the auditor's REST endpoint::
* Bank account::
* Database::
* Legal conditions for using the service::
@@ -137,7 +137,7 @@ Operation
Auditor implementation guide
-* The auditor’s database::
+* The auditor's database::
* Invariants checked by the auditor::
* Testing the auditor::
@@ -153,7 +153,7 @@ Invariants checked by the auditor
@end menu
@node Introduction,Installation,Top,Top
-@anchor{taler-auditor-manual gnu-taler-auditor-operator-manual}@anchor{1}@anchor{taler-auditor-manual introduction}@anchor{2}
+@anchor{taler-auditor-manual auditor-operator-manual}@anchor{1}@anchor{taler-auditor-manual introduction}@anchor{2}
@chapter Introduction
@@ -220,7 +220,7 @@ to other parties.
To perform this duty, you will need at least (read-only) access to the bank
transactions of the exchange, as well as a continuously synchronized replica
-of the exchange’s database. The general assumption for running the auditor
+of the exchange's database. The general assumption for running the auditor
is that this is done on a separate system controlled by the auditor. After
all, the goal is to detect nerfarious activity of the exchange operator,
which cannot be effectively done on a machine controlled by the exchange
@@ -232,9 +232,9 @@ withdrawals made by consumers and income received by merchants. As a result,
the auditor is expected to provide high confidentiality for the database. In
general, the auditor does not have to offer high-availability: the exchange
operator can continue operations without the auditor, and the auditor can
-catch up with it later when the auditor’s systems are restored. However, of
+catch up with it later when the auditor's systems are restored. However, of
course any downtime would provide a window of opportunity for fraud and should
-thus be minimized. Finally, the auditor’s copy of the exchange’s database can
+thus be minimized. Finally, the auditor's copy of the exchange's database can
be useful as a backup to the exchange in case the exchange experiences a loss
of its own copies. Thus, business agreements between auditor and exchanges may
include availability requirements as well.
@@ -242,7 +242,7 @@ include availability requirements as well.
Then, with the software provided, auditors can verify the cryptographic proofs
collected by the exchange and detect if any improper bank transactions have been
made. There are additional tasks which an auditor should perform. While this
-manual only focuses on the audit of the exchange’s database and wire transfers
+manual only focuses on the audit of the exchange's database and wire transfers
with the existing tools, a proper auditor should also perform the following
tasks:
@@ -268,7 +268,7 @@ verification that the exchange properly implements the @code{/link} protocol
@item
verification that the exchange properly reports coins issued during
the refresh protocol (by irregularly refreshing coins withdrawn by
-the auditor and comparing against the exchange’s database — the
+the auditor and comparing against the exchange's database --- the
code required to support this is not yet implemented)
@end itemize
@@ -289,8 +289,8 @@ oversight function.
Auditors should generally be independent third parties that verify that the
exchange operates correctly. However, an exchange is likely to also run the
auditing logic, as it is also used to calculate the exchange’s profits, risk
-and liabilities. Furthermore, it’s usually a good idea to not only rely on
-third parties to verify one’s own work.
+and liabilities. Furthermore, it's usually a good idea to not only rely on
+third parties to verify one's own work.
The Taler software stack for an auditor consists of the following
components:
@@ -322,7 +322,7 @@ the auditor to detect if an exchange is underreporting deposits.
In the future, the Web service should be extended to allow customers and
merchants to automatically upload cryptographic proof of other violations
of the specification by the exchange. However, for now it is assumed that
-the respective cryptographic proofs are reported and verified manually —
+the respective cryptographic proofs are reported and verified manually ---
as with a well-behaved exchange this should obviously be a rare event.
The main binary of this component is the @code{taler-auditor-httpd}.
@@ -342,7 +342,7 @@ needs access to the wire gateway).
The @code{taler-helper-auditor-wire} auditor verifies that the bank
transactions performed by the exchange
were done properly. This component must have access to the bank account
-of the exchange, as well as to a copy of the exchange’s database.
+of the exchange, as well as to a copy of the exchange's database.
The @code{taler-auditor} script invokes the various helpers, each generating
a JSON report. It then invokes the @code{taler-helper-auditor-render.py}
@@ -388,7 +388,7 @@ Python3 module @code{jinja2}
@itemize -
@item
-“Sphinx RTD Theme” Python package aka @code{python3-sphinx-rtd-theme}
+"Sphinx RTD Theme" Python package aka @code{python3-sphinx-rtd-theme}
on Debian-based systems (for GNUnet documentation support, can be
omitted if GNUnet is configured with @code{--disable-documentation})
@@ -646,22 +646,22 @@ is not recommended for security. The recommended set of users includes:
@itemize *
@item
-auditor — runs the main auditing process and HTTP backend
+auditor --- runs the main auditing process and HTTP backend
@item
-sync — synchronizes the ingres database with the production database
+sync --- synchronizes the ingres database with the production database
@item
-helper — runs taler-auditor-offline download and upload commands
+helper --- runs taler-auditor-offline download and upload commands
@item
-auditor-ingres — imports database from exchange production system
+auditor-ingres --- imports database from exchange production system
@item
-auditor-wire — imports wire transfer data from bank production system
+auditor-wire --- imports wire transfer data from bank production system
@item
-offline — manages the offline key, on a separate `offline' machine
+offline --- manages the offline key, on a separate `offline' machine
@end itemize
@end quotation
@@ -681,10 +681,10 @@ distribution would typically create for you):
@itemize *
@item
-www-data — runs the HTTPS frontend (usually nginx or Apache)
+www-data --- runs the HTTPS frontend (usually nginx or Apache)
@item
-postgres — runs the PostgreSQL database
+postgres --- runs the PostgreSQL database
@end itemize
@end quotation
@@ -701,16 +701,16 @@ We recommend using the following databases for the auditor:
@itemize *
@item
-exchange-ingres — synchronized exchange database over the network
+exchange-ingres --- synchronized exchange database over the network
@item
-exchange-production — local copy of exchange database with trusted schema
+exchange-production --- local copy of exchange database with trusted schema
@item
-auditor — auditor production database with current state of the audit
+auditor --- auditor production database with current state of the audit
@item
-libeufin — local state of the auditor-wire tool for the bank transfer data import
+libeufin --- local state of the auditor-wire tool for the bank transfer data import
@end itemize
@end quotation
@@ -742,7 +742,7 @@ $ echo 'GRANT SELECT ON ALL TABLES IN SCHEMA public TO auditor;' | psql libeufin
@chapter Configuration
-The auditor’s configuration works the same way as the configuration of other
+The auditor's configuration works the same way as the configuration of other
Taler components.
This section discusses configuration options related to the auditor.
@@ -750,7 +750,7 @@ This section discusses configuration options related to the auditor.
* Configuration format::
* Initial configuration::
* Keys::
-* Configuring the auditor’s REST endpoint::
+* Configuring the auditor's REST endpoint::
* Bank account::
* Database::
* Legal conditions for using the service::
@@ -865,7 +865,7 @@ BASE_URL = https://auditor.example.com/
The @code{helper} user that is used to download information from the exchange
needs to know details about the exchange. Similarly, the @code{offline} user
-needs to check signatures signed with the exchange’s offline key. Hence, you
+needs to check signatures signed with the exchange's offline key. Hence, you
need to obtain the @code{MASTER_PUBLIC_KEY} from the exchange operator (they need
to run @code{taler-exchange-offline setup}) and the REST endpoint of the exchange
and configure these:
@@ -877,14 +877,14 @@ BASE_URL = https://exchange.example.com/
MASTER_PUBLIC_KEY = $SOMELONGBASE32VALUEHERE
@end example
-@node Keys,Configuring the auditor’s REST endpoint,Initial configuration,Configuration
+@node Keys,Configuring the auditor's REST endpoint,Initial configuration,Configuration
@anchor{taler-auditor-manual auditorkeys}@anchor{12}@anchor{taler-auditor-manual keys}@anchor{13}
@section Keys
The auditor works with one signing key to certify that it is auditing
-a particular exchange’s denomination keys. This key can and should
-be kept `offline' (and backed up adequately). As with the exchange’s
+a particular exchange's denomination keys. This key can and should
+be kept `offline' (and backed up adequately). As with the exchange's
offline key, it is only used for a few cryptographic signatures and
thus the respective code can be run on modest hardware, like a
Raspberry Pi.
@@ -926,9 +926,9 @@ You can set this configuration value using:
PUBLIC_KEY = $SOMELONGBASE32VALUEHERE
@end example
-@node Configuring the auditor’s REST endpoint,Bank account,Keys,Configuration
+@node Configuring the auditor's REST endpoint,Bank account,Keys,Configuration
@anchor{taler-auditor-manual auditorserving}@anchor{14}@anchor{taler-auditor-manual configuring-the-auditor-s-rest-endpoint}@anchor{15}
-@section Configuring the auditor’s REST endpoint
+@section Configuring the auditor's REST endpoint
The auditor can serve HTTP over both TCP and UNIX domain socket.
@@ -954,7 +954,7 @@ HTTP over a UNIX domain socket
for @code{unixpath} (i.e. 660 = @code{rw-rw----}).
@end itemize
-@node Bank account,Database,Configuring the auditor’s REST endpoint,Configuration
+@node Bank account,Database,Configuring the auditor's REST endpoint,Configuration
@anchor{taler-auditor-manual auditorbank-account}@anchor{16}@anchor{taler-auditor-manual bank-account}@anchor{17}
@section Bank account
@@ -997,14 +997,14 @@ CONFIG = postgres:///auditordemo
If an exchange runs its own auditor, it may use the same database for
the auditor and the exchange itself.
-The @code{taler-auditor-dbinit} tool is used to initialize the auditor’s
+The @code{taler-auditor-dbinit} tool is used to initialize the auditor's
tables. After running this tool, the rights to CREATE or DROP tables
are no longer required and should be removed.
Both the @code{taler-auditor-httpd} and the @code{taler-auditor} (and its helpers)
also need (read-only) access to a (recent, current, synchronized) copy of the
-exchange’s database. The configuration options are the same that are also
-used when configuring the exchange’ database:
+exchange's database. The configuration options are the same that are also
+used when configuring the exchange' database:
@quotation
@@ -1050,7 +1050,7 @@ setup and configure the legal conditions.
@section Terms of Service
-The service has an endpoint “/terms” to return the terms of service (in legal
+The service has an endpoint "/terms" to return the terms of service (in legal
language) of the service operator. Client software show these terms of
service to the user when the user is first interacting with the service.
Terms of service are optional for experimental deployments, if none are
@@ -1064,7 +1064,7 @@ in the configuration file for the service:
@itemize -
@item
-@code{TERMS_ETAG}: The current “Etag” to return for the terms of service.
+@code{TERMS_ETAG}: The current "Etag" to return for the terms of service.
This value must be changed whenever the terms of service are
updated. A common value to use would be a version number.
Note that if you change the @code{TERMS_ETAG}, you MUST also provide
@@ -1081,7 +1081,7 @@ process.
@section Privacy Policy
-The service has an endpoint “/pp” to return the terms privacy policy (in legal
+The service has an endpoint "/pp" to return the terms privacy policy (in legal
language) of the service operator. Clients should show the privacy policy to
the user when the user explicitly asks for it, but it should not be shown by
default. Privacy policies are optional for experimental deployments, if none
@@ -1095,7 +1095,7 @@ in the configuration file for the service:
@itemize -
@item
-@code{PRIVACY_ETAG}: The current “Etag” to return for the privacy policy.
+@code{PRIVACY_ETAG}: The current "Etag" to return for the privacy policy.
This value must be changed whenever the privacy policy is
updated. A common value to use would be a version number.
Note that if you change the @code{PRIVACY_ETAG}, you MUST also provide
@@ -1116,7 +1116,7 @@ The @code{TERMS_DIR} and @code{PRIVACY_DIR} directory structures must follow a
particular layout. You may use the same directory for both the terms of
service and the privacy policy, as long as you use different ETAGs. Inside of
the directory, there should be sub-directories using two-letter language codes
-like “en”, “de”, or “jp”. Each of these directories would then hold
+like "en", "de", or "jp". Each of these directories would then hold
translations of the current terms of service into the respective language.
Empty directories are permitted in case translations are not available.
@@ -1124,7 +1124,7 @@ Then, inside each language directory, files with the name of the value set as
the @code{TERMS_ETAG} or @code{PRIVACY_ETAG} must be provided. The extension of each
of the files should be typical for the respective mime type. The set of
supported mime types is currently hard-coded in the service, and includes
-“.epub”, “.html”, “.md”, “.pdf” and “.txt” files. If other files are present,
+".epub", ".html", ".md", ".pdf" and ".txt" files. If other files are present,
the service may show a warning on startup.
@menu
@@ -1137,7 +1137,7 @@ the service may show a warning on startup.
@subsection Example
-A sample file structure for a @code{TERMS_ETAG} of “tos-v0” would be:
+A sample file structure for a @code{TERMS_ETAG} of "tos-v0" would be:
@itemize -
@@ -1173,8 +1173,8 @@ TERMS_DIR/de/tos-v0.epub
TERMS_DIR/de/tos-v0.md
@end itemize
-If the user requests an HTML format with language preferences “fr” followed by
-“en”, the service would return @code{TERMS_DIR/en/tos-v0.html} lacking a version in
+If the user requests an HTML format with language preferences "fr" followed by
+"en", the service would return @code{TERMS_DIR/en/tos-v0.html} lacking a version in
French.
@node Generating the Legal Terms,Adding translations,Legal policies directory layout,Configuration
@@ -1264,7 +1264,7 @@ restart the service.
@anchor{taler-auditor-manual wallets}@anchor{24}
Before GNU Taler wallets will happily interact with an exchange, the
-respective auditor’s public key (as obtained via @code{taler-auditor-offline
+respective auditor's public key (as obtained via @code{taler-auditor-offline
setup} from the @code{offline} user) must be added under the respective currency
to the wallet. This is usually expected to be hard-coded into the Taler
wallet.
@@ -1272,7 +1272,7 @@ wallet.
Users can also manually add auditors for a particular currency via a
Web page offering the respective pairing.
-FIXME-DOLD: explain how that Web page works, once it works…
+FIXME-DOLD: explain how that Web page works, once it works...
@menu
* Exchange::
@@ -1286,13 +1286,13 @@ FIXME-DOLD: explain how that Web page works, once it works…
@section Exchange
-The next step is to add the exchange’s master public key and the base URL of
+The next step is to add the exchange's master public key and the base URL of
the exchange to the list of exchanges audited by the auditor. This is done
using the @code{taler-auditor-exchange} tool. The tool basically creates the
-respective record in the auditor’s database.
+respective record in the auditor's database.
If this step is skipped, the auditor will malfunction at all future stages
-with a foreign key violation, as it does not know the exchange’s master public
+with a foreign key violation, as it does not know the exchange's master public
key.
@example
@@ -1302,7 +1302,7 @@ $ taler-auditor-exchange -m $MASTER_PUB -u $EXCHANGE_BASE_URL
An equivalent step must be performed by the exchange operator. Here, the
exchange operator must use the @code{taler-exchange-offline} tool to add the
-auditor’s public key, base URL and (business) name to the list of approved
+auditor's public key, base URL and (business) name to the list of approved
auditors of the exchange. For details, see Auditor-configuration in the
exchange operator manual.
@@ -1340,7 +1340,7 @@ process that is outside of the scope of this document.
Note that the @code{input.json} does not contain any confidential data. However,
signing the wrong keys would be fatal in that it may allow an illegitimate
exchange to convince users that it is a trustworthy operator and subsequently
-betray the user’s trust that is anchored in the existence of a trustworthy
+betray the user's trust that is anchored in the existence of a trustworthy
auditor.
Given the verified JSON input, the auditor can then sign it (typically
@@ -1375,21 +1375,21 @@ command-line option, send logging output to standard error by default.
The next key step for the auditor is to configure replication of the
-`exchange'’s database in-house. This should be performed in two steps
+`exchange''s database in-house. This should be performed in two steps
as illustrated in the following figure:
@image{taler-auditor-figures/replication,,,,png}
First, the exchange should use standard PostgreSQL replication features to
-enable the auditor to obtain a full copy of the exchange’s database.
-Second, the auditor should make a “trusted” local copy, ensuring that it
+enable the auditor to obtain a full copy of the exchange's database.
+Second, the auditor should make a "trusted" local copy, ensuring that it
never replicates malicious changes using @code{taler-auditor-sync}. Both
of these steps are described in more detail below.
We note that as a result of these steps, the auditor will have three
databases: its own production primary database (as configured in
-@code{auditordb-postgres}), its on production copy of the exchange’s database
-(@code{exchangedb-postgress}), and a third, untrusted “ingres” copy of the
+@code{auditordb-postgres}), its on production copy of the exchange's database
+(@code{exchangedb-postgress}), and a third, untrusted "ingres" copy of the
exchange database. The untrusted database should run as a separate PostgreSQL
instance and is only accessed via @code{taler-auditor-sync} and the replication
mechanism driven by the exchange operator.
@@ -1405,7 +1405,7 @@ mechanism driven by the exchange operator.
@subsection Ingres replication of the exchange production database
-Ingres operation should be done using the @code{auditor-ingres} user — or
+Ingres operation should be done using the @code{auditor-ingres} user --- or
depending on the setup parts of the operation may be done by the @code{postgres}
user directly.
@@ -1418,10 +1418,10 @@ that asynchronous replication should suffice.
The resulting auditor database should be treated as read-only on the auditor
side. The @code{taler-exchange-dbinit} tool can be used to setup the schema, or
-the schema can be replicated using PostgreSQL’s standard mechanisms. The same
+the schema can be replicated using PostgreSQL's standard mechanisms. The same
applies for schema upgrades: if logical replication is used (which does not
replicate schema changes), @code{taler-exchange-dbinit} can be used to migrate
-the schema(s) in both the ingres and production copies of the exchange’s
+the schema(s) in both the ingres and production copies of the exchange's
database as well.
On the exchange side, a database user must be created that has the right
@@ -1435,7 +1435,7 @@ $ echo "CREATE PUBLICATION $NAME FOR ALL TABLES;" | psql taler-exchange
@end example
The exchange must share the password of the publication with the auditor. A
-good @code{$NAME} relates to the auditor’s business unit name. A secure tunnel
+good @code{$NAME} relates to the auditor's business unit name. A secure tunnel
must be setup between the exchange and the auditor, for example using SSH or
Wireguard.
@@ -1458,7 +1458,7 @@ PostgreSQL configuration:
wal_level= logical
@end example
-Next, the @code{postgres} user of the auditor’s system must first initialize the
+Next, the @code{postgres} user of the auditor's system must first initialize the
local tables:
@example
@@ -1474,7 +1474,7 @@ CONFIG = "postgres:///taler-ingress"
$ taler-exchange-dbinit
@end example
-To complete the replication, the @code{postgres} user of the auditor’s
+To complete the replication, the @code{postgres} user of the auditor's
system must subscribe:
@example
@@ -1491,7 +1491,7 @@ For details, we refer to the PostgreSQL manual.
Depending on the replication method used, the exchange may perform
unexpected changes to the schema or perform @code{UPDATE}, @code{DELETE} or
@code{DROP} operations on the tables. Hence, the auditor cannot rely upon the
-exchange’s primary copy to respect schema constraints, especially as we
+exchange's primary copy to respect schema constraints, especially as we
have to presume that the exchange could act maliciously. Furthermore, it
is unclear to what degree PostgreSQL database replication mechanisms are
robust against a malicious master database. Thus, the auditor should
@@ -1506,20 +1506,20 @@ process, from its actual operational data.
Using @code{taler-auditor-sync} as the @code{sync} user, the auditor should
-make a second “safe” copy of the exchange’s ingres database.
+make a second "safe" copy of the exchange's ingres database.
@code{taler-auditor-sync} basically reads from one exchange database and inserts
all records found into a second exchange database. If the source database
violates invariants, the tool halts with an error. This way, records violating
invariants are never even copied, and in particular schema changes and
-deletions or updates are not propagated into the auditor’s production
+deletions or updates are not propagated into the auditor's production
database.
While @code{taler-auditor-sync} could in theory be run directly against the
-exchange’s production system, this is likely a bad idea due to the high
+exchange's production system, this is likely a bad idea due to the high
latency from the network between auditor and exchange operator. Thus, we
-recommend first making an “untrusted” ingress copy of the exchange’s
+recommend first making an "untrusted" ingress copy of the exchange's
production database using standard PostgreSQL tooling, and then using
-@code{taler-auditor-sync} to create a second “safe” copy. The “safe” copy used
+@code{taler-auditor-sync} to create a second "safe" copy. The "safe" copy used
by the production system should also run under a different UID.
Before @code{taler-auditor-sync} can be used, the target database must be
@@ -1557,11 +1557,11 @@ $ taler-auditor-sync -s src.conf -d dst.cfg -t
When the exchange performs garbage collection to @code{DELETE} obsolete records,
this change should be automatically replicated to the auditors untrusted
-ingress database. However, as @code{taler-auditor-sync} tries to be “safe”,
-it will not replicate those deletions to the auditor’s production database.
+ingress database. However, as @code{taler-auditor-sync} tries to be "safe",
+it will not replicate those deletions to the auditor's production database.
Thus, it is necessary to (occasonally) run @code{taler-exchange-dbinit -g} on
-the auditor’s production database to garbage collect old data in the
-auditor’s production copy. We note that this does not have to be done
+the auditor's production database to garbage collect old data in the
+auditor's production copy. We note that this does not have to be done
at the same time when the exchange runs its garbage collection.
@node Operation,Auditor implementation guide,Deployment,Top
@@ -1587,7 +1587,7 @@ at the same time when the exchange runs its garbage collection.
The @code{taler-auditor-httpd} runs the required REST API for the auditor. The
service must have @code{INSERT} (and @code{SELECT}) rights on the
-@code{deposit_confirmations} table in the auditor’s database. We expect that in
+@code{deposit_confirmations} table in the auditor's database. We expect that in
future versions additional rights may be required.
For now, we recommend simply running the @code{taler-auditor-httpd} under the
@@ -1637,7 +1637,7 @@ anymore), this is not recommended in a production setup.
@section Reading the report
-The auditor’s report needs to be read carefully, as it includes
+The auditor's report needs to be read carefully, as it includes
several categories of failures of different severity:
@@ -1703,14 +1703,14 @@ completing a @code{taler-audit} run against the old schema
@item
migrating the exchange schema (@code{taler-exchange-dbinit}) of
the master database, possibly the ingres database and the
-auditor’s production copy
+auditor's production copy
@item
migrating the auditor database (@code{taler-auditor-dbinit})
@item
-resuming database replication between the exchange’s master
-database and the auditor’s ingres copy
+resuming database replication between the exchange's master
+database and the auditor's ingres copy
@item
resuming @code{taler-auditor-sync}
@@ -1755,7 +1755,7 @@ For more information, see Revocations in the exchange operator manual.
If all denominations of an exchange are revoked, the exchange includes logic
to wire back all returned funds to the bank accounts from which they
originate. If some denominations remain operational, wallets will generally
-exchange old coins of revoked denominations for new coins – while providing
+exchange old coins of revoked denominations for new coins -- while providing
additional information to demonstrate that these coins were not forged from
the compromised private key but obtained via a legitimate withdraw operation.
@@ -1764,12 +1764,12 @@ the compromised private key but obtained via a legitimate withdraw operation.
@section Failures
-Most audit failures are handled by the auditor’s regular reporting functionality,
+Most audit failures are handled by the auditor's regular reporting functionality,
creating a (hopefully descriptive) PDF report detailing the problems found.
However, there is one category of errors where this is not possible, which
-concerns arithmetic overflows for amounts. Taler’s specification limits amount
-values to at most 2^52. If, during the auditor’s calculations, amounts are
+concerns arithmetic overflows for amounts. Taler's specification limits amount
+values to at most 2^52. If, during the auditor's calculations, amounts are
encountered that exceed this threshold, the auditor will not generate a regular
report, but instead write a log statement explaining where the problem happened
and exit with a status code of `42'.
@@ -1801,15 +1801,15 @@ The auditor implementation is split into five main processes, called
@code{taler-helper-auditor-XXX}. The split was done to realize the principle of
least privilege and to enable independent logic to be possibly run in
parallel. Only the taler-wire-auditor must have (read-only) access to the
-exchange’s bank account, the other components only need access to the
+exchange's bank account, the other components only need access to the
database.
All auditor subsystems basically start their audit from a certain transaction
index (@code{BIG SERIAL}) in the auditor database which identifies where the last
audit concluded. They then check that the transactions claimed in the
-exchange’s database match up internally, including the cryptographic
+exchange's database match up internally, including the cryptographic
signatures and also with respect to amounts adding up. The auditor also
-calculates the exchange’s profits and expected bank balances. Once all
+calculates the exchange's profits and expected bank balances. Once all
existing transactions are processed, the auditor processes store the current
checkpoint in its database and generate a JSON report.
@@ -1818,22 +1818,22 @@ uses Jinja2 with a TeX template to convert the five individual
JSON reports into LaTeX and then into PDF.
@menu
-* The auditor’s database::
+* The auditor's database::
* Invariants checked by the auditor::
* Testing the auditor::
@end menu
-@node The auditor’s database,Invariants checked by the auditor,,Auditor implementation guide
+@node The auditor's database,Invariants checked by the auditor,,Auditor implementation guide
@anchor{taler-auditor-manual the-auditor-s-database}@anchor{3b}
-@section The auditor’s database
+@section The auditor's database
The database scheme used by the exchange looks as follows:
@image{taler-auditor-figures/auditor-db,,,,png}
-@node Invariants checked by the auditor,Testing the auditor,The auditor’s database,Auditor implementation guide
+@node Invariants checked by the auditor,Testing the auditor,The auditor's database,Auditor implementation guide
@anchor{taler-auditor-manual invariants-checked-by-the-auditor}@anchor{3c}
@section Invariants checked by the auditor
@@ -1858,7 +1858,7 @@ pass where it might seem applicable.
@subsection Invariants checked by the taler-helper-auditor-aggregation
-This is from CodeBlau’s analysis. A proper write-up is pending.
+This is from CodeBlau's analysis. A proper write-up is pending.
CodeBlau reports the following checks:
@@ -1970,7 +1970,7 @@ wire fee unavailable for given time
@subsection Invariants checked by the taler-helper-auditor-coins
-This is from CodeBlau’s analysis. A proper write-up is pending.
+This is from CodeBlau's analysis. A proper write-up is pending.
CodeBlau reports the following checks:
@@ -1978,9 +1978,9 @@ CodeBlau reports the following checks:
@item
check that all denominations used by the exchange have been signed using
-this auditor’s key. All denominations encountered in the database that
+this auditor's key. All denominations encountered in the database that
this auditor did not officially sign for are reported (but still included
-in the audit as they obviously may impact the exchange’s bank balance).
+in the audit as they obviously may impact the exchange's bank balance).
Depending on the business situation, this may be normal (say if an exchange
is changing auditors and newer denominations are no longer supported until
their end-of-life by the current auditor).
@@ -2076,7 +2076,7 @@ merchants by simply not reporting deposits to the auditor.
@subsection Invariants checked by the taler-helper-auditor-reserves
-This is from CodeBlau’s analysis. A proper write-up is pending.
+This is from CodeBlau's analysis. A proper write-up is pending.
CodeBlau reports the following checks:
@@ -2138,11 +2138,11 @@ target account does not match origin account
This auditor is special in that it is the only pass that is required to have
-`read-only' access to the exchange’s bank account (privilege separation). Its
-main role is to verify that the wire transfers in the exchange’s database and
+`read-only' access to the exchange's bank account (privilege separation). Its
+main role is to verify that the wire transfers in the exchange's database and
those reported by the bank are identical.
-This is from CodeBlau’s analysis. A proper write-up is pending.
+This is from CodeBlau's analysis. A proper write-up is pending.
CodeBlau reports the following checks:
@@ -2204,7 +2204,7 @@ closing fee above total amount
The main objective of the auditor is to detect inconsistencies. Thus, the
@code{test-auditor.sh} script deliberately introduces various inconsistencies into
-a synthetic exchange database. For this, an “normal” exchange database is
+a synthetic exchange database. For this, an "normal" exchange database is
first generated using the @code{taler-wallet-cli}. Then, various fields or rows
of that database are manipulated, and the auditor is let loose on the modified
database. Afterwards, the test verifies that the JSON contains values
@@ -2217,13 +2217,13 @@ cover as many code paths as possible in both the exchange and the auditor. It
should also ideally create all interesting possible variations of the exchange
database fields (within the constraints of the database schema).
-In general, @code{test-auditor.sh} runs the tests against an “old” database where
+In general, @code{test-auditor.sh} runs the tests against an "old" database where
some transactions are past the due-date (and hence the aggregator would trigger
wire transfers), as well as a freshly generated exchange database where the
auditor would not perform any transfers. Auditor interactions can be made
before or after the aggregator, depending on what is being tested.
-The current script also rudimentarily tests the auditor’s resume logic,
+The current script also rudimentarily tests the auditor's resume logic,
by re-starting the auditor once against a database that the auditor has
already seen.
diff --git a/texinfo/taler-developer-manual.texi b/texinfo/taler-developer-manual.texi
index 75d19865..51a1b9fa 100644
--- a/texinfo/taler-developer-manual.texi
+++ b/texinfo/taler-developer-manual.texi
@@ -19,7 +19,7 @@
@copying
@quotation
-GNU Taler 0.9.0, Feb 10, 2024
+GNU Taler 0.9.0, Mar 07, 2024
GNU Taler team
@@ -78,6 +78,18 @@ and related components. It is not intended for a general audience.
* Taler Deployment on gv.taler.net: Taler Deployment on gv taler net.
* Demo Upgrade Procedure::
* Environments and Builders on taler.net: Environments and Builders on taler net.
+* QA Plans::
+* Wallet Platforms::
+* Running Deployments::
+* Wallet Flows::
+* libeufin-bank Flows::
+* Merchant Backend SPA Flows::
+* Regio Deployment::
+* Android Merchant PoS::
+* Android Cashier App::
+* CI::
+* Debian Repository::
+* GNU Release::
* Releases::
* Continuous integration::
* Internationalization::
@@ -111,15 +123,15 @@ overview:
exchange: core payment processing logic with a REST API, plus various
helper processes for interaction with banks and cryptographic
computations. Also includes the logic for the auditor and an
-in-memory “bank” API implementation for testing.
+in-memory "bank" API implementation for testing.
@item
-libeufin: implementation of the “bank” API using the EBICS protocol
+libeufin: implementation of the "bank" API using the EBICS protocol
used by banks in the EU. Allows an exchange to interact with
European banks.
@item
-deploymerization: implementation of the “bank” API on top of
+deploymerization: implementation of the "bank" API on top of
blockchains, specifically Bitcoin and Ethereum. Allows an exchange
to interact with crypto-currencies.
@@ -178,7 +190,7 @@ sending invoices or payments to other wallets.
@item
taler-merchant-demos: various demonstration services operated at
-‘demo.taler.net’, including a simple shop and a donation page.
+'demo.taler.net', including a simple shop and a donation page.
@end itemize
@end quotation
@@ -351,7 +363,7 @@ A complete list of all the existing repositories is currently found at
Before you can obtain Git write access, you must sign the copyright
agreement. As we collaborate closely with GNUnet, we use their
-copyright agreement – with the understanding that your contributions
+copyright agreement -- with the understanding that your contributions
to GNU Taler are included in the assignment. You can find the
agreement on the GNUnet site@footnote{https://gnunet.org/en/copyright.html}.
Please sign and mail it to Christian Grothoff as he currently collects
@@ -624,7 +636,7 @@ $ curl -fsSL https://get.docker.com/rootless | sh
Upgrading the @code{demo} environment should be done with care, and ideally be
coordinated on the mailing list before. It is our goal for @code{demo} to always
-run a “working version” that is compatible with various published wallets.
+run a "working version" that is compatible with various published wallets.
Please use the demo upgrade checklist to make
sure everything is working.
Nginx is already configured to reach the services as exported by
@@ -726,7 +738,7 @@ taler-wallet-cli api 'runIntegrationTestV2' '@{"exchangeBaseUrl":"https://exchan
@subsection Wallets
-We consider the following published wallets to be “production wallets”:
+We consider the following published wallets to be "production wallets":
@itemize *
@@ -976,7 +988,7 @@ fulfillment page.
add product with 1 in stock and preview image
@item
- add “advanced” order with inventory product and a 2 minute wire delay
+ add "advanced" order with inventory product and a 2 minute wire delay
@item
claim order, check available stock goes down in inventory
@@ -1108,7 +1120,7 @@ fulfillment page.
specified bank account receives remaining balance
@end itemize
-@node Environments and Builders on taler net,Releases,Demo Upgrade Procedure,Top
+@node Environments and Builders on taler net,QA Plans,Demo Upgrade Procedure,Top
@anchor{taler-developer-manual environments-and-builders-on-taler-net}@anchor{22}
@chapter Environments and Builders on taler.net
@@ -1144,7 +1156,7 @@ The WORKER is the config that that lives on a shell account on a localhost (tale
The WORKER running buildbot-worker receives these commands by authenticating and communicating with the buildbot server using parameters that were specified when the worker was created in that shell account with the @code{buildbot-worker} command.
@item
-The buildbot server’s master.cfg file contains FACTORY declarations which specify the commands that the WORKER will run on localhost.
+The buildbot server's master.cfg file contains FACTORY declarations which specify the commands that the WORKER will run on localhost.
@item
The FACTORY is tied to the WORKER in master.cfg by a BUILDER.
@@ -1162,7 +1174,7 @@ Best Practices:
@itemize -
@item
-When creating a new WORKER in the @code{master.cfg} file, leave a comment specifying the server and user account that this WORKER is called from. (At this time, taler.net is the only server used by this implementation, but it’s still good practice.)
+When creating a new WORKER in the @code{master.cfg} file, leave a comment specifying the server and user account that this WORKER is called from. (At this time, taler.net is the only server used by this implementation, but it's still good practice.)
@item
Create a worker from a shell account with this command: @code{buildbot-worker create-worker <workername> localhost <username> <password>}
@@ -1286,7 +1298,7 @@ The results are then published at @code{https://lcov.taler.net/}.
@section Producing auditor reports
-Both ‘test’ and ‘demo’ setups get their auditor reports compiled
+Both 'test' and 'demo' setups get their auditor reports compiled
by a Buildbot worker. The following steps get the reports compiler
prepared.
@@ -1318,8 +1330,490 @@ environment), existing scripts MUST be immutable.
Developers and operators MUST NOT make changes to database schema
outside of this versioning. All tables of a GNU Taler component should live in their own schema.
-@node Releases,Continuous integration,Environments and Builders on taler net,Top
-@anchor{taler-developer-manual releases}@anchor{2b}
+@node QA Plans,Wallet Platforms,Environments and Builders on taler net,Top
+@anchor{taler-developer-manual qa-plans}@anchor{2b}
+@chapter QA Plans
+
+
+@node Wallet Platforms,Running Deployments,QA Plans,Top
+@anchor{taler-developer-manual wallet-platforms}@anchor{2c}
+@chapter Wallet Platforms
+
+
+Platforms listed here are the officially supported platforms for this release.
+
+
+@itemize *
+
+@item
+Overview / Installation Page
+
+
+@itemize *
+
+@item
+@indicateurl{https://taler.net/en/wallet.html}
+@end itemize
+
+@item
+Android
+
+
+@itemize *
+
+@item
+Google Play: @indicateurl{https://play.google.com/store/apps/details?id=net.taler.wallet}
+
+@item
+F-Droid: @indicateurl{https://f-droid.org/en/packages/net.taler.wallet.fdroid/}
+
+@item
+APK Download: TBD
+@end itemize
+
+@item
+Browser
+
+
+@itemize *
+
+@item
+Chrome: @indicateurl{https://chromewebstore.google.com/detail/gnu-taler-wallet/millncjiddlpgdmkklmhfadpacifaonc}
+
+@item
+Firefox: @indicateurl{https://addons.mozilla.org/en-US/firefox/addon/taler-wallet/}
+@end itemize
+
+@item
+iOS
+@end itemize
+
+@node Running Deployments,Wallet Flows,Wallet Platforms,Top
+@anchor{taler-developer-manual running-deployments}@anchor{2d}
+@chapter Running Deployments
+
+
+These deployments are maintained by us and should work for the release:
+
+
+@itemize *
+
+@item
+Sandcastle-based:
+
+
+@itemize *
+
+@item
+demo.taler.net
+
+@item
+test.taler.net
+@end itemize
+
+@item
+Regio-based:
+
+
+@itemize *
+
+@item
+regio-taler.fdold.eu
+@end itemize
+@end itemize
+
+@node Wallet Flows,libeufin-bank Flows,Running Deployments,Top
+@anchor{taler-developer-manual wallet-flows}@anchor{2e}
+@chapter Wallet Flows
+
+
+
+@itemize *
+
+@item
+Bank-integrated withdrawal
+
+
+@itemize *
+
+@item
+webext: "Continue with Mobile Wallet" flow
+@end itemize
+
+@item
+Manual withdrawal
+
+
+@itemize *
+
+@item
+@code{taler://withdraw-exchange} flow
+
+@item
+Currency conversion withdrawal
+@end itemize
+
+@item
+Peer push payments ("Send Money")
+
+@item
+Peer pull payments ("Receive Money")
+
+@item
+Deposit into bank account
+
+
+@itemize *
+
+@item
+Check that deposit arrived
+@end itemize
+
+@item
+Payment at merchant
+
+
+@itemize *
+
+@item
+on blog merchant
+
+@item
+on survey
+
+@item
+directly initiated via merchant SPA
+
+@item
+webext: "Pay with Mobile Wallet" flow
+@end itemize
+
+@item
+Pay templates
+
+
+@itemize *
+
+@item
+Payment TOTP codes
+@end itemize
+
+@item
+Exchange management
+
+
+@itemize *
+
+@item
+Reloading exchange keys
+
+@item
+Deleting an exchange
+@end itemize
+@end itemize
+
+@node libeufin-bank Flows,Merchant Backend SPA Flows,Wallet Flows,Top
+@anchor{taler-developer-manual libeufin-bank-flows}@anchor{2f}
+@chapter libeufin-bank Flows
+
+
+
+@itemize *
+
+@item
+Admin functionality
+
+
+@itemize *
+
+@item
+Login
+
+@item
+Credential change
+
+@item
+Conversion settings
+
+@item
+Bank account creation
+
+@item
+Test transfers
+@end itemize
+
+@item
+Normal account functionality
+
+
+@itemize *
+
+@item
+Transfers
+
+
+@itemize *
+
+@item
+Transfer to the exchange should bounce
+@end itemize
+
+@item
+Withdrawals
+
+@item
+(conversion-only): Test cash-in
+
+@item
+(conversion-only): Test cash-out
+
+
+@itemize *
+
+@item
+Lower cash-out limit enforced
+@end itemize
+
+@item
+2FA for withdrawals, cash-out
+@end itemize
+@end itemize
+
+@node Merchant Backend SPA Flows,Regio Deployment,libeufin-bank Flows,Top
+@anchor{taler-developer-manual merchant-backend-spa-flows}@anchor{30}
+@chapter Merchant Backend SPA Flows
+
+
+
+@itemize *
+
+@item
+Instance creation
+
+@item
+Simple bank account setup
+
+@item
+Order creation
+
+
+@itemize *
+
+@item
+Pay order (with short wire transfer deadline)
+
+@item
+Check that money from order arrive at the bank with the right subject
+@end itemize
+
+@item
+Extended bank account setup
+
+
+@itemize *
+
+@item
+Add Taler Bank Revenue API
+
+@item
+Check bank transfer list (for wire transfer of previously paid+wired order)
+
+@item
+Check order payment status goes to "final" automatically
+@end itemize
+
+@item
+TOTP Device Management
+
+
+@itemize *
+
+@item
+Add device
+
+@item
+Edit device (set new secret, export new secret as QR code)
+
+@item
+Delete device
+@end itemize
+
+@item
+Templates
+
+
+@itemize *
+
+@item
+Add template
+
+@item
+Edit template
+
+@item
+Add TOTP device to template
+
+@item
+Edit TOTP device associated with template
+
+@item
+Pay template
+
+@item
+Check TOTP code matches
+
+@item
+Remove TOTP device from template
+
+@item
+Delete template
+@end itemize
+@end itemize
+
+@node Regio Deployment,Android Merchant PoS,Merchant Backend SPA Flows,Top
+@anchor{taler-developer-manual regio-deployment}@anchor{31}
+@chapter Regio Deployment
+
+
+
+@itemize *
+
+@item
+Deployment Automation (deployment.git/regional-currency)
+
+
+@itemize *
+
+@item
+Test with Debian bookworm
+
+@item
+Test with Ubuntu mantic
+
+@item
+Check logs for errors
+
+@item
+Test with telesign (SMS)
+
+@item
+Set up EBICS integration
+
+@item
+Check that ToS is configured
+@end itemize
+
+@item
+Deployment Functionality
+
+
+@itemize *
+
+@item
+All flows of the wallet should work (see @code{Wallet Flows} above)
+
+@item
+All flows of libeufin-bank should work (see @code{libeufin-bank Flows} above)
+
+@item
+Merchant backend should work (see @code{Merchant Backend SPA Flows} above)
+
+@item
+Check logs
+@end itemize
+@end itemize
+
+@node Android Merchant PoS,Android Cashier App,Regio Deployment,Top
+@anchor{taler-developer-manual android-merchant-pos}@anchor{32}
+@chapter Android Merchant PoS
+
+
+
+@itemize *
+
+@item
+Test against demo.taler.net
+@end itemize
+
+@node Android Cashier App,CI,Android Merchant PoS,Top
+@anchor{taler-developer-manual android-cashier-app}@anchor{33}
+@chapter Android Cashier App
+
+
+
+@itemize *
+
+@item
+Test against demo.taler.net
+@end itemize
+
+@node CI,Debian Repository,Android Cashier App,Top
+@anchor{taler-developer-manual ci}@anchor{34}
+@chapter CI
+
+
+
+@itemize *
+
+@item
+@indicateurl{https://buildbot.taler.net/#/waterfall}
+
+@item
+CI should pass
+@end itemize
+
+@node Debian Repository,GNU Release,CI,Top
+@anchor{taler-developer-manual debian-repository}@anchor{35}
+@chapter Debian Repository
+
+
+
+@itemize *
+
+@item
+Debian
+
+
+@itemize *
+
+@item
+repo at @indicateurl{https://deb.taler.net/apt/debian/}
+
+@item
+supported codename(s): bookworm
+@end itemize
+
+@item
+Ubuntu:
+
+
+@itemize *
+
+@item
+repo at @indicateurl{https://deb.taler.net/apt/ubuntu/}
+
+@item
+supported codename(s): mantic
+@end itemize
+@end itemize
+
+@node GNU Release,Releases,Debian Repository,Top
+@anchor{taler-developer-manual gnu-release}@anchor{36}
+@chapter GNU Release
+
+
+
+@itemize *
+
+@item
+Release announcement
+
+@item
+FTP upload
+@end itemize
+
+@node Releases,Continuous integration,GNU Release,Top
+@anchor{taler-developer-manual releases}@anchor{37}
@chapter Releases
@@ -1336,7 +1830,7 @@ outside of this versioning. All tables of a GNU Taler component should live in
@end menu
@node GNU Taler Release Checklist,Release Process,,Releases
-@anchor{taler-developer-manual gnu-taler-release-checklist}@anchor{2c}
+@anchor{taler-developer-manual gnu-taler-release-checklist}@anchor{38}
@section GNU Taler Release Checklist
@@ -1346,10 +1840,10 @@ For exchange:
@itemize -
@item
- no compiler warnings at “-Wall” with gcc
+ no compiler warnings at "-Wall" with gcc
@item
- no compiler warnings at “-Wall” with clang
+ no compiler warnings at "-Wall" with clang
@item
ensure Coverity static analysis passes
@@ -1358,7 +1852,7 @@ For exchange:
make check.
@item
- make dist, make check on result of ‘make dist’.
+ make dist, make check on result of 'make dist'.
@item
Change version number in configure.ac.
@@ -1373,7 +1867,7 @@ For exchange:
verify dist builds from source
@item
- upgrade ‘demo.taler.net’
+ upgrade 'demo.taler.net'
@item
run demo upgrade checklist
@@ -1382,13 +1876,13 @@ For exchange:
tag repo.
@item
- use ‘deployment.git/packaging/*-docker/’ to build Debian and Ubuntu packages
+ use 'deployment.git/packaging/*-docker/' to build Debian and Ubuntu packages
@item
- upload packages to ‘deb.taler.net’ (note: only Florian/Christian can sign)
+ upload packages to 'deb.taler.net' (note: only Florian/Christian can sign)
@item
- change ‘demo.taler.net’ deployment to use new tag.
+ change 'demo.taler.net' deployment to use new tag.
@item
Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha
@@ -1400,10 +1894,10 @@ For merchant (C backend):
@itemize -
@item
- no compiler warnings at “-Wall” with gcc
+ no compiler warnings at "-Wall" with gcc
@item
- no compiler warnings at “-Wall” with clang
+ no compiler warnings at "-Wall" with clang
@item
ensure Coverity static analysis passes
@@ -1412,7 +1906,7 @@ For merchant (C backend):
make check.
@item
- make dist, make check on result of ‘make dist’.
+ make dist, make check on result of 'make dist'.
@item
update SPA (prebuilt branch)
@@ -1427,7 +1921,7 @@ For merchant (C backend):
verify dist builds from source
@item
- upgrade ‘demo.taler.net’
+ upgrade 'demo.taler.net'
@item
run demo upgrade checklist
@@ -1436,13 +1930,13 @@ For merchant (C backend):
tag repo.
@item
- use ‘deployment.git/packaging/*-docker/’ to build Debian and Ubuntu packages
+ use 'deployment.git/packaging/*-docker/' to build Debian and Ubuntu packages
@item
- upload packages to ‘deb.taler.net’ (note: only Florian/Christian can sign)
+ upload packages to 'deb.taler.net' (note: only Florian/Christian can sign)
@item
- change ‘demo.taler.net’ deployment to use new tag.
+ change 'demo.taler.net' deployment to use new tag.
@item
Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha
@@ -1454,10 +1948,10 @@ For sync:
@itemize -
@item
- no compiler warnings at “-Wall” with gcc
+ no compiler warnings at "-Wall" with gcc
@item
- no compiler warnings at “-Wall” with clang
+ no compiler warnings at "-Wall" with clang
@item
ensure Coverity static analysis passes
@@ -1466,7 +1960,7 @@ For sync:
make check.
@item
- make dist, make check on result of ‘make dist’.
+ make dist, make check on result of 'make dist'.
@item
Change version number in configure.ac.
@@ -1478,7 +1972,7 @@ For sync:
verify dist builds from source
@item
- upgrade ‘demo.taler.net’
+ upgrade 'demo.taler.net'
@item
run demo upgrade checklist
@@ -1487,13 +1981,13 @@ For sync:
tag repo.
@item
- use ‘deployment.git/packaging/*-docker/’ to build Debian and Ubuntu packages
+ use 'deployment.git/packaging/*-docker/' to build Debian and Ubuntu packages
@item
- upload packages to ‘deb.taler.net’ (note: only Florian/Christian can sign)
+ upload packages to 'deb.taler.net' (note: only Florian/Christian can sign)
@item
- change ‘demo.taler.net’ deployment to use new tag.
+ change 'demo.taler.net' deployment to use new tag.
@item
Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha
@@ -1505,7 +1999,7 @@ For taler-mdb:
@itemize -
@item
- no compiler warnings at “-Wall” with gcc
+ no compiler warnings at "-Wall" with gcc
@item
ensure Coverity static analysis passes
@@ -1520,10 +2014,10 @@ For taler-mdb:
tag repo.
@item
- use ‘deployment.git/packaging/*-docker/’ to build Debian and Ubuntu packages
+ use 'deployment.git/packaging/*-docker/' to build Debian and Ubuntu packages
@item
- upload packages to ‘deb.taler.net’ (note: only Florian/Christian can sign)
+ upload packages to 'deb.taler.net' (note: only Florian/Christian can sign)
@item
Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha
@@ -1535,10 +2029,10 @@ For taler-twister:
@itemize -
@item
- no compiler warnings at “-Wall” with gcc
+ no compiler warnings at "-Wall" with gcc
@item
- no compiler warnings at “-Wall” with clang
+ no compiler warnings at "-Wall" with clang
@item
ensure Coverity static analysis passes
@@ -1547,7 +2041,7 @@ For taler-twister:
make check.
@item
- make dist, make check on result of ‘make dist’.
+ make dist, make check on result of 'make dist'.
@item
Change version number in configure.ac.
@@ -1559,7 +2053,7 @@ For taler-twister:
verify dist builds from source
@item
- upgrade ‘demo.taler.net’
+ upgrade 'demo.taler.net'
@item
run demo upgrade checklist
@@ -1583,7 +2077,7 @@ For libeufin:
build libeufin
@item
- upgrade ‘demo.taler.net’
+ upgrade 'demo.taler.net'
@item
run demo upgrade checklist
@@ -1598,13 +2092,13 @@ For libeufin:
tag repo.
@item
- use ‘deployment.git/packaging/*-docker/’ to build Debian and Ubuntu packages
+ use 'deployment.git/packaging/*-docker/' to build Debian and Ubuntu packages
@item
- upload packages to ‘deb.taler.net’ (note: only Florian/Christian can sign)
+ upload packages to 'deb.taler.net' (note: only Florian/Christian can sign)
@item
- change ‘demo.taler.net’ deployment to use new tag.
+ change 'demo.taler.net' deployment to use new tag.
@item
Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha
@@ -1616,13 +2110,13 @@ For Python merchant frontend:
@itemize -
@item
- upgrade ‘demo.taler.net’
+ upgrade 'demo.taler.net'
@item
run demo upgrade checklist
@item
- change ‘demo.taler.net’ deployment to use new tag.
+ change 'demo.taler.net' deployment to use new tag.
@end itemize
Wallet-core:
@@ -1646,13 +2140,13 @@ Wallet-core:
tag repo.
@item
- use ‘deployment.git/packaging/*-docker/’ to build Debian and Ubuntu packages
+ use 'deployment.git/packaging/*-docker/' to build Debian and Ubuntu packages
@item
- upload packages to ‘deb.taler.net’ (note: only Florian/Christian can sign)
+ upload packages to 'deb.taler.net' (note: only Florian/Christian can sign)
@item
- change ‘demo.taler.net’ deployment to use new tag.
+ change 'demo.taler.net' deployment to use new tag.
@item
Upload triplet to ftp-upload.gnu.org/incoming/ftp or /incoming/alpha
@@ -1713,7 +2207,7 @@ Release announcement:
@end itemize
@node Release Process,Tagging,GNU Taler Release Checklist,Releases
-@anchor{taler-developer-manual release-process}@anchor{2d}
+@anchor{taler-developer-manual release-process}@anchor{39}
@section Release Process
@@ -1748,7 +2242,7 @@ wallet-core (wallet-core.git)
@end itemize
@node Tagging,Database for tests,Release Process,Releases
-@anchor{taler-developer-manual tagging}@anchor{2e}
+@anchor{taler-developer-manual tagging}@anchor{3a}
@section Tagging
@@ -1760,7 +2254,7 @@ $ git push origin v0.1.0
@end example
@node Database for tests,Exchange merchant,Tagging,Releases
-@anchor{taler-developer-manual database-for-tests}@anchor{2f}
+@anchor{taler-developer-manual database-for-tests}@anchor{3b}
@section Database for tests
@@ -1777,7 +2271,7 @@ secured from unauthorized access.
@end cartouche
@node Exchange merchant,Wallet WebExtension,Database for tests,Releases
-@anchor{taler-developer-manual exchange-merchant}@anchor{30}
+@anchor{taler-developer-manual exchange-merchant}@anchor{3c}
@section Exchange, merchant
@@ -1824,7 +2318,7 @@ For bootstrap, you will need to install
GNU Recutils@footnote{https://www.gnu.org/software/recutils/}.
For the exchange test cases to pass, @code{make install} must be run first.
-Without it, test cases will fail because plugins can’t be located.
+Without it, test cases will fail because plugins can't be located.
@example
$ ./bootstrap
@@ -1836,7 +2330,7 @@ $ make install check
@end example
@node Wallet WebExtension,Upload to GNU mirrors,Exchange merchant,Releases
-@anchor{taler-developer-manual wallet-webextension}@anchor{31}
+@anchor{taler-developer-manual wallet-webextension}@anchor{3d}
@section Wallet WebExtension
@@ -1850,7 +2344,7 @@ $ make dist
@end example
@node Upload to GNU mirrors,Creating Debian packages,Wallet WebExtension,Releases
-@anchor{taler-developer-manual upload-to-gnu-mirrors}@anchor{32}
+@anchor{taler-developer-manual upload-to-gnu-mirrors}@anchor{3e}
@section Upload to GNU mirrors
@@ -1868,7 +2362,7 @@ symlink: taler-exchange-0.1.0.tar.gz taler-exchange-latest.tar.gz
Upload the files in `binary mode' to the ftp servers.
@node Creating Debian packages,,Upload to GNU mirrors,Releases
-@anchor{taler-developer-manual creating-debian-packages}@anchor{33}
+@anchor{taler-developer-manual creating-debian-packages}@anchor{3f}
@section Creating Debian packages
@@ -1907,7 +2401,7 @@ Finally, make sure to clean up @code{~/incoming/} (by deleting the
now imported @code{*.deb} files).
@node Continuous integration,Internationalization,Releases,Top
-@anchor{taler-developer-manual continuous-integration}@anchor{34}
+@anchor{taler-developer-manual continuous-integration}@anchor{40}
@chapter Continuous integration
@@ -1915,21 +2409,21 @@ CI is done with Buildbot (@indicateurl{https://buildbot.net/}), and builds are
triggered by the means of Git hooks. The results are published at
@indicateurl{https://buildbot.taler.net/} .
-In order to avoid downtimes, CI uses a “blue/green” deployment
+In order to avoid downtimes, CI uses a "blue/green" deployment
technique. In detail, there are two users building code on the system,
-the “green” and the “blue” user; and at any given time, one is running
+the "green" and the "blue" user; and at any given time, one is running
Taler services and the other one is either building the code or waiting
for that.
There is also the possibility to trigger builds manually, but this is
-only reserved to “admin” users.
+only reserved to "admin" users.
@node Internationalization,iOS Apps,Continuous integration,Top
-@anchor{taler-developer-manual internationalization}@anchor{35}
+@anchor{taler-developer-manual internationalization}@anchor{41}
@chapter Internationalization
-Internationalization (a.k.a “Translation”) is handled with Weblate (@indicateurl{https://weblate.org}) via our instance at @indicateurl{https://weblate.taler.net/} .
+Internationalization (a.k.a "Translation") is handled with Weblate (@indicateurl{https://weblate.org}) via our instance at @indicateurl{https://weblate.taler.net/} .
At this time, this system is still very new for Taler.net and this documentation may be incorrect and is certainly incomplete.
@@ -1946,14 +2440,14 @@ At this time, this system is still very new for Taler.net and this documentation
@end menu
@node Who can Register,About Privilege Levels,,Internationalization
-@anchor{taler-developer-manual who-can-register}@anchor{36}
+@anchor{taler-developer-manual who-can-register}@anchor{42}
@section Who can Register
At this time, anyone can register an account at @indicateurl{https://weblate.taler.net/} to create translations. Registered users default to the `Users' and `Viewers' privilege level.
@node About Privilege Levels,Upgrading Privileges,Who can Register,Internationalization
-@anchor{taler-developer-manual about-privilege-levels}@anchor{37}
+@anchor{taler-developer-manual about-privilege-levels}@anchor{43}
@section About Privilege Levels
@@ -1976,21 +2470,21 @@ This is the breakdown of privilege levels in Weblate:
@end itemize
@node Upgrading Privileges,How to Create a Project,About Privilege Levels,Internationalization
-@anchor{taler-developer-manual upgrading-privileges}@anchor{38}
+@anchor{taler-developer-manual upgrading-privileges}@anchor{44}
@section Upgrading Privileges
To upgrade from `Users'/`Viewers', a superuser must manually augment your privileges. At this time, superusers are Christian, Florian, and Buck.
@node How to Create a Project,How to Create a Component,Upgrading Privileges,Internationalization
-@anchor{taler-developer-manual how-to-create-a-project}@anchor{39}
+@anchor{taler-developer-manual how-to-create-a-project}@anchor{45}
@section How to Create a Project
The `GNU Taler' project is probably the correct project for most Components and Translations falling under this guide. Please contact a superuser if you need another Project created.
@node How to Create a Component,How to Create a Translation,How to Create a Project,Internationalization
-@anchor{taler-developer-manual how-to-create-a-component}@anchor{3a}
+@anchor{taler-developer-manual how-to-create-a-component}@anchor{46}
@section How to Create a Component
@@ -2017,7 +2511,7 @@ Under `https://weblate.taler.net/create/component/vcs/':
`Repository push URL' - This is generally @code{git+ssh://git@@git.taler.net/<reponame>`} Check with @code{git remote -v}.
@item
-`Repository browser' - This is the www URL of the Git repo’s file browser. Example @code{https://git.taler.net/<repositoryname>.git/tree/@{@{filename@}@}?h=@{@{branch@}@}#n@{@{line@}@}} where @code{<repositoryname>} gets replaced but @code{@{@{filename@}@}} and other items in braces are actual variables in the string.
+`Repository browser' - This is the www URL of the Git repo's file browser. Example @code{https://git.taler.net/<repositoryname>.git/tree/@{@{filename@}@}?h=@{@{branch@}@}#n@{@{line@}@}} where @code{<repositoryname>} gets replaced but @code{@{@{filename@}@}} and other items in braces are actual variables in the string.
@item
`Merge style' - `Rebase', in line with GNU Taler development procedures
@@ -2030,7 +2524,7 @@ Under `https://weblate.taler.net/create/component/vcs/':
@end itemize
@node How to Create a Translation,Translation Standards and Practices,How to Create a Component,Internationalization
-@anchor{taler-developer-manual how-to-create-a-translation}@anchor{3b}
+@anchor{taler-developer-manual how-to-create-a-translation}@anchor{47}
@section How to Create a Translation
@@ -2042,34 +2536,34 @@ Under `https://weblate.taler.net/create/component/vcs/':
4 - Choose the `Component' you wish to contribute to.
-5 - Find the language you want to translate into. Click “Translate” on that line.
+5 - Find the language you want to translate into. Click "Translate" on that line.
6 - Find a phrase and translate it.
You may also wish to refer to @indicateurl{https://docs.weblate.org/} .
@node Translation Standards and Practices,GPG Signing of Translations,How to Create a Translation,Internationalization
-@anchor{taler-developer-manual translation-standards-and-practices}@anchor{3c}
+@anchor{taler-developer-manual translation-standards-and-practices}@anchor{48}
@section Translation Standards and Practices
-By default, our Weblate instance is set to accept translations in English, French, German, Italian, Russian, Spanish, and Portuguese. If you want to contribute a translation in a different language, navigate to the `Component' you want to translate for, and click “Start new translation” to begin. If you require a privilege upgrade, please contact a superuser with your request.
+By default, our Weblate instance is set to accept translations in English, French, German, Italian, Russian, Spanish, and Portuguese. If you want to contribute a translation in a different language, navigate to the `Component' you want to translate for, and click "Start new translation" to begin. If you require a privilege upgrade, please contact a superuser with your request.
When asked, set the license to GPLv3 or later.
Set commit/push to manual only.
@node GPG Signing of Translations,,Translation Standards and Practices,Internationalization
-@anchor{taler-developer-manual gpg-signing-of-translations}@anchor{3d}
+@anchor{taler-developer-manual gpg-signing-of-translations}@anchor{49}
@section GPG Signing of Translations
weblate.taler.net signs GPG commits with the GPG key CD33CE35801462FA5EB0B695F2664BF474BFE502, and the corresponding public key can be found at @indicateurl{https://weblate.taler.net/keys/}.
-This means that contributions made through weblate will not be signed with the individual contributor’s key when they are checked into the Git repository, but with the weblate key.
+This means that contributions made through weblate will not be signed with the individual contributor's key when they are checked into the Git repository, but with the weblate key.
@node iOS Apps,Android Apps,Internationalization,Top
-@anchor{taler-developer-manual ios-apps}@anchor{3e}
+@anchor{taler-developer-manual ios-apps}@anchor{4a}
@chapter iOS Apps
@@ -2079,7 +2573,7 @@ This means that contributions made through weblate will not be signed with the i
@end menu
@node Building Taler Wallet for iOS from source,,,iOS Apps
-@anchor{taler-developer-manual build-ios-from-source}@anchor{3f}@anchor{taler-developer-manual building-taler-wallet-for-ios-from-source}@anchor{40}
+@anchor{taler-developer-manual build-ios-from-source}@anchor{4b}@anchor{taler-developer-manual building-taler-wallet-for-ios-from-source}@anchor{4c}
@section Building Taler Wallet for iOS from source
@@ -2093,7 +2587,7 @@ the official Git repository@footnote{https://git.taler.net/taler-ios.git}.
@end menu
@node Compatibility,Building,,Building Taler Wallet for iOS from source
-@anchor{taler-developer-manual compatibility}@anchor{41}
+@anchor{taler-developer-manual compatibility}@anchor{4d}
@subsection Compatibility
@@ -2101,7 +2595,7 @@ The minimum version of iOS supported is 15.0.
This app runs on all iPhone models at least as new as the iPhone 6S.
@node Building,,Compatibility,Building Taler Wallet for iOS from source
-@anchor{taler-developer-manual building}@anchor{42}
+@anchor{taler-developer-manual building}@anchor{4e}
@subsection Building
@@ -2111,7 +2605,7 @@ and the
wallet-core repo@footnote{https://git.taler.net/wallet-core.git}.
Have all 3 local repos (wallet-core, quickjs-tart, and this one) adjacent at
-the same level (e.g. in a “GNU_Taler” folder)
+the same level (e.g. in a "GNU_Taler" folder)
Taler.xcworkspace expects the QuickJS framework sub-project to be at
@code{../quickjs-tart/QuickJS-rt.xcodeproj}.
@@ -2123,17 +2617,17 @@ $ make embedded
$ open packages/taler-wallet-embedded/dist
@end example
-then drag or move its product “taler-wallet-core-qjs.mjs”
+then drag or move its product "taler-wallet-core-qjs.mjs"
into your quickjs-tart folder right at the top level.
-Open Taler.xcworkspace, and set scheme / target to Taler_Wallet. Build&run…
+Open Taler.xcworkspace, and set scheme / target to Taler_Wallet. Build&run...
-Don’t open QuickJS-rt.xcodeproj or TalerWallet.xcodeproj and build anything
+Don't open QuickJS-rt.xcodeproj or TalerWallet.xcodeproj and build anything
there - all needed libraries and frameworks will be built automatically from
Taler.xcworkspace.
@node Android Apps,Code Coverage,iOS Apps,Top
-@anchor{taler-developer-manual android-apps}@anchor{43}
+@anchor{taler-developer-manual android-apps}@anchor{4f}
@chapter Android Apps
@@ -2146,7 +2640,7 @@ Taler.xcworkspace.
@end menu
@node Android App Nightly Builds,Building apps from source,,Android Apps
-@anchor{taler-developer-manual android-app-nightly-builds}@anchor{44}
+@anchor{taler-developer-manual android-app-nightly-builds}@anchor{50}
@section Android App Nightly Builds
@@ -2171,7 +2665,7 @@ Cashier
Their git repositories are mirrored at Gitlab@footnote{https://gitlab.com/gnu-taler/taler-android}
to utilize their CI
-and F-Droid@footnote{https://f-droid.org}’s Gitlab integration
+and F-Droid@footnote{https://f-droid.org}'s Gitlab integration
to publish automatic nightly builds@footnote{https://f-droid.org/docs/Publishing_Nightly_Builds/}
for each change on the @code{master} branch.
@@ -2197,7 +2691,7 @@ Use at your own risk!
@end cartouche
@node Building apps from source,Update translations,Android App Nightly Builds,Android Apps
-@anchor{taler-developer-manual build-apps-from-source}@anchor{45}@anchor{taler-developer-manual building-apps-from-source}@anchor{46}
+@anchor{taler-developer-manual build-apps-from-source}@anchor{51}@anchor{taler-developer-manual building-apps-from-source}@anchor{52}
@section Building apps from source
@@ -2221,7 +2715,7 @@ git
unzip
@end itemize
-Then you can get the app’s source code using git:
+Then you can get the app's source code using git:
@example
# Start by cloning the Android git repository
@@ -2238,12 +2732,12 @@ The last command will return something like @code{compileSdkVersion 29}.
So visit the Android Rebuilds@footnote{http://android-rebuilds.beuc.net/} project
and look for that version of the Android SDK there.
If the SDK version is not yet available as a free rebuild,
-you can try to lower the @code{compileSdkVersion} in the app’s @code{merchant-terminal/build.gradle} file.
+you can try to lower the @code{compileSdkVersion} in the app's @code{merchant-terminal/build.gradle} file.
Note that this might break things
or require you to also lower other versions such as @code{targetSdkVersion}.
In our example, the version is @code{29} which is available,
-so download the “SDK Platform” package of “Android 10.0.0 (API 29)”
+so download the "SDK Platform" package of "Android 10.0.0 (API 29)"
and unpack it:
@example
@@ -2276,18 +2770,18 @@ build-tools;29.0.3 Android SDK Build-Tools 29.0.3
@end table
@end quotation
-you can try changing the @code{buildToolsVersion} in the app’s @code{merchant-terminal/build.gradle} file
-to the latest “Android SDK build tools” version supported by the Android Rebuilds project.
+you can try changing the @code{buildToolsVersion} in the app's @code{merchant-terminal/build.gradle} file
+to the latest "Android SDK build tools" version supported by the Android Rebuilds project.
After the build finished successfully,
you will find your APK in @code{merchant-terminal/build/outputs/apk/release/}.
@node Update translations,Release process,Building apps from source,Android Apps
-@anchor{taler-developer-manual update-translations}@anchor{47}
+@anchor{taler-developer-manual update-translations}@anchor{53}
@section Update translations
-Translations are managed with Taler’s weblate instance:
+Translations are managed with Taler's weblate instance:
@indicateurl{https://weblate.taler.net/projects/gnu-taler/}
To update translations, enter the taler-android git repository
@@ -2317,7 +2811,7 @@ Afterwards, build the entire project from source and test the UI
to ensure that no erroneous translations (missing placeholders) are breaking things.
@node Release process,,Update translations,Android Apps
-@anchor{taler-developer-manual id1}@anchor{48}
+@anchor{taler-developer-manual id1}@anchor{54}
@section Release process
@@ -2348,12 +2842,12 @@ $ git tag -s $APP-$VERSION
@end menu
@node F-Droid,Google Play,,Release process
-@anchor{taler-developer-manual id2}@anchor{49}
+@anchor{taler-developer-manual id2}@anchor{55}
@subsection F-Droid
Nightly builds get published automatically (see above) after pushing code to the official repo.
-Actual releases get picked up by F-Droid’s official repository via git tags.
+Actual releases get picked up by F-Droid's official repository via git tags.
So ensure that all releases get tagged properly.
Some information for F-Droid official repository debugging:
@@ -2372,7 +2866,7 @@ PoS: [metadata@footnote{https://gitlab.com/fdroid/fdroiddata/-/blob/master/metad
@end itemize
@node Google Play,,F-Droid,Release process
-@anchor{taler-developer-manual google-play}@anchor{4a}
+@anchor{taler-developer-manual google-play}@anchor{56}
@subsection Google Play
@@ -2394,7 +2888,7 @@ All uploads are going to the beta track by default.
These can be promoted to production later or immediately after upload if you feel daring.
@node Code Coverage,Coding Conventions,Android Apps,Top
-@anchor{taler-developer-manual id3}@anchor{4b}@anchor{taler-developer-manual id4}@anchor{4c}
+@anchor{taler-developer-manual id3}@anchor{57}@anchor{taler-developer-manual id4}@anchor{58}
@chapter Code Coverage
@@ -2404,7 +2898,7 @@ nightly (once a day) by a Buildbot worker. The coverage results are
then published at @indicateurl{https://lcov.taler.net/} .
@node Coding Conventions,Testing library,Code Coverage,Top
-@anchor{taler-developer-manual coding-conventions}@anchor{4d}
+@anchor{taler-developer-manual coding-conventions}@anchor{59}
@chapter Coding Conventions
@@ -2421,7 +2915,7 @@ GNU Taler is developed primarily in C, Kotlin, Python, Swift and TypeScript.
@end menu
@node Components written in C,Shell Scripts,,Coding Conventions
-@anchor{taler-developer-manual components-written-in-c}@anchor{4e}
+@anchor{taler-developer-manual components-written-in-c}@anchor{5a}
@section Components written in C
@@ -2441,7 +2935,7 @@ by the GNUnet style: @indicateurl{https://docs.gnunet.org/handbook/gnunet.html#C
@end menu
@node Naming conventions,,,Components written in C
-@anchor{taler-developer-manual naming-conventions}@anchor{4f}
+@anchor{taler-developer-manual naming-conventions}@anchor{5b}
@subsection Naming conventions
@@ -2455,22 +2949,22 @@ include files (very similar to GNUnet):
@itemize *
@item
-if installed, must start with “@code{taler_}” (exception: platform.h),
+if installed, must start with "@code{taler_}" (exception: platform.h),
and MUST live in src/include/
@item
-if NOT installed, must NOT start with “@code{taler_}” and
+if NOT installed, must NOT start with "@code{taler_}" and
MUST NOT live in src/include/ and
SHOULD NOT be included from outside of their own directory
@item
-end in “_lib” for “simple” libraries
+end in "_lib" for "simple" libraries
@item
-end in “_plugin” for plugins
+end in "_plugin" for plugins
@item
-end in “_service” for libraries accessing a service, i.e. the exchange
+end in "_service" for libraries accessing a service, i.e. the exchange
@end itemize
@item
@@ -2503,22 +2997,22 @@ logging
@item
tools use their full name in GNUNET_log_setup
-(i.e. ‘taler-exchange-offline’) and log using plain ‘GNUNET_log’.
+(i.e. 'taler-exchange-offline') and log using plain 'GNUNET_log'.
@item
-pure libraries (without associated service) use ‘GNUNET_log_from’
-with the component set to their library name (without lib or ‘.so’),
-which should also be their directory name (i.e. ‘util’)
+pure libraries (without associated service) use 'GNUNET_log_from'
+with the component set to their library name (without lib or '.so'),
+which should also be their directory name (i.e. 'util')
@item
-plugin libraries (without associated service) use ‘GNUNET_log_from’
-with the component set to their type and plugin name (without lib or ‘.so’),
-which should also be their directory name (i.e. ‘exchangedb-postgres’)
+plugin libraries (without associated service) use 'GNUNET_log_from'
+with the component set to their type and plugin name (without lib or '.so'),
+which should also be their directory name (i.e. 'exchangedb-postgres')
@item
-libraries with associated service) use ‘GNUNET_log_from’
+libraries with associated service) use 'GNUNET_log_from'
with the name of the service, which should also be their
-directory name (i.e. ‘exchange’)
+directory name (i.e. 'exchange')
@item
for tools with @code{-l LOGFILE}, its absence means write logs to stderr
@@ -2560,14 +3054,14 @@ structs:
@itemize *
@item
-structs that are ‘packed’ and do not contain pointers and are
+structs that are 'packed' and do not contain pointers and are
thus suitable for hashing or similar operations are distinguished
-by adding a “P” at the end of the name. (NEW) Note that this
+by adding a "P" at the end of the name. (NEW) Note that this
convention does not hold for the GNUnet-structs (yet).
@item
structs that are used with a purpose for signatures, additionally
-get an “S” at the end of the name.
+get an "S" at the end of the name.
@end itemize
@item
@@ -2587,7 +3081,7 @@ testcases
@itemize *
@item
-must be called “test_module-under-test_case-description.c”
+must be called "test_module-under-test_case-description.c"
@end itemize
@item
@@ -2597,12 +3091,12 @@ performance tests
@itemize *
@item
-must be called “perf_module-under-test_case-description.c”
+must be called "perf_module-under-test_case-description.c"
@end itemize
@end itemize
@node Shell Scripts,Kotlin,Components written in C,Coding Conventions
-@anchor{taler-developer-manual shell-scripts}@anchor{50}
+@anchor{taler-developer-manual shell-scripts}@anchor{5c}
@section Shell Scripts
@@ -2629,7 +3123,7 @@ $ set -eu
@end example
@node Kotlin,Python,Shell Scripts,Coding Conventions
-@anchor{taler-developer-manual kotlin}@anchor{51}
+@anchor{taler-developer-manual kotlin}@anchor{5d}
@section Kotlin
@@ -2637,7 +3131,7 @@ We so far have no specific guidelines, please follow best practices
for the language.
@node Python,Swift,Kotlin,Coding Conventions
-@anchor{taler-developer-manual python}@anchor{52}
+@anchor{taler-developer-manual python}@anchor{5e}
@section Python
@@ -2649,14 +3143,14 @@ for the language.
@end menu
@node Supported Python Versions,Style,,Python
-@anchor{taler-developer-manual supported-python-versions}@anchor{53}
+@anchor{taler-developer-manual supported-python-versions}@anchor{5f}
@subsection Supported Python Versions
Python code should be written and build against version 3.7 of Python.
@node Style,Python for Scripting,Supported Python Versions,Python
-@anchor{taler-developer-manual style}@anchor{54}
+@anchor{taler-developer-manual style}@anchor{60}
@subsection Style
@@ -2666,7 +3160,7 @@ A reusable yapf style file can be found in @code{build-common},
which is intended to be used as a git submodule.
@node Python for Scripting,,Style,Python
-@anchor{taler-developer-manual python-for-scripting}@anchor{55}
+@anchor{taler-developer-manual python-for-scripting}@anchor{61}
@subsection Python for Scripting
@@ -2683,26 +3177,26 @@ are useful:
@code{pathlib} for path manipulation (part of the standard library)
@item
-@code{subprocess} for “shelling out” to other programs. Prefer @code{subprocess.run}
+@code{subprocess} for "shelling out" to other programs. Prefer @code{subprocess.run}
over the older APIs.
@end itemize
@node Swift,TypeScript,Python,Coding Conventions
-@anchor{taler-developer-manual swift}@anchor{56}
+@anchor{taler-developer-manual swift}@anchor{62}
@section Swift
Please follow best practices for the language.
@node TypeScript,,Swift,Coding Conventions
-@anchor{taler-developer-manual typescript}@anchor{57}
+@anchor{taler-developer-manual typescript}@anchor{63}
@section TypeScript
Please follow best practices for the language.
@node Testing library,User-Facing Terminology,Coding Conventions,Top
-@anchor{taler-developer-manual testing-library}@anchor{58}
+@anchor{taler-developer-manual testing-library}@anchor{64}
@chapter Testing library
@@ -2775,7 +3269,7 @@ Please refer to the Twister codebase (under the @code{test} directory) in
order to see how to configure it.
@node User-Facing Terminology,Developer Glossary,Testing library,Top
-@anchor{taler-developer-manual user-facing-terminology}@anchor{59}
+@anchor{taler-developer-manual user-facing-terminology}@anchor{65}
@chapter User-Facing Terminology
@@ -2789,7 +3283,7 @@ used in the user interface and help materials.
@end menu
@node Terms to Avoid,Terms to Use,,User-Facing Terminology
-@anchor{taler-developer-manual terms-to-avoid}@anchor{5a}
+@anchor{taler-developer-manual terms-to-avoid}@anchor{66}
@section Terms to Avoid
@@ -2801,21 +3295,21 @@ used in the user interface and help materials.
Refreshing is the internal technical terminology for the protocol to
give change for partially spent coins
-`Use instead': “Obtaining change”
+`Use instead': "Obtaining change"
@item Charge
Charge has two opposite meanings (charge to a credit card vs. charge a battery).
This can confuse users.
-`Use instead': “Obtain”, “Credit”, “Debit”, “Withdraw”, “Top up”
+`Use instead': "Obtain", "Credit", "Debit", "Withdraw", "Top up"
@item Coin
Coins are an internal construct, the user should never be aware that their balance
is represented by coins of different denominations.
-`Use instead': “(Digital) Cash” or “(Wallet) Balance”
+`Use instead': "(Digital) Cash" or "(Wallet) Balance"
@item Consumer
@@ -2830,7 +3324,7 @@ of the signed contract terms for an order.
`Avoid'. Generally events that relate to proposal downloads
should not be shown to normal users, only developers. Instead, use
-“communication with mechant failed” if a proposed order can’t be downloaded.
+"communication with mechant failed" if a proposed order can't be downloaded.
@item Anonymous E-Cash
@@ -2838,14 +3332,14 @@ Should be generally avoided, since Taler is only anonymous for
the customer. Also some people are scared of anonymity (which as
a term is also way too absolute, as anonymity is hardly ever perfect).
-`Use instead': “Privacy-preserving”, “Privacy-friendly”
+`Use instead': "Privacy-preserving", "Privacy-friendly"
@item Payment Replay
The process of proving to the merchant that the customer is entitled
to view a digital product again, as they already paid for it.
-`Use instead': In the event history, “re-activated digital content purchase”
+`Use instead': In the event history, "re-activated digital content purchase"
could be used. (FIXME: this is still not nice.)
@item Session ID
@@ -2865,7 +3359,7 @@ with their payment. Can also be something like a donation receipt.
@end table
@node Terms to Use,,Terms to Avoid,User-Facing Terminology
-@anchor{taler-developer-manual terms-to-use}@anchor{5b}
+@anchor{taler-developer-manual terms-to-use}@anchor{67}
@section Terms to Use
@@ -2881,16 +3375,16 @@ Regulatory entity that certifies exchanges and oversees their operation.
The entity/service that gives out digital cash in exchange for some
other means of payment.
-In some contexts, using “Issuer” could also be appropriate.
+In some contexts, using "Issuer" could also be appropriate.
When showing a balance breakdown,
-we can say “100 Eur (issued by exchange.euro.taler.net)”.
-Sometimes we may also use the more generic term “Payment Service Provider”
-when the concept of an “Exchange” is still unclear to the reader.
+we can say "100 Eur (issued by exchange.euro.taler.net)".
+Sometimes we may also use the more generic term "Payment Service Provider"
+when the concept of an "Exchange" is still unclear to the reader.
@item Refund
-A refund is given by a merchant to the customer (rather the customer’s wallet)
-and “undoes” a previous payment operation.
+A refund is given by a merchant to the customer (rather the customer's wallet)
+and "undoes" a previous payment operation.
@item Payment
@@ -2898,12 +3392,12 @@ The act of sending digital cash to a merchant to pay for an order.
@item Purchase
-Used to refer to the “result” of a payment, as in “view purchase”.
-Use sparsingly, as the word doesn’t fit for all payments, such as donations.
+Used to refer to the "result" of a payment, as in "view purchase".
+Use sparsingly, as the word doesn't fit for all payments, such as donations.
@item Contract Terms
-Partially machine-readable representation of the merchant’s obligation after the
+Partially machine-readable representation of the merchant's obligation after the
customer makes a payment.
@item Merchant
@@ -2912,12 +3406,12 @@ Party that receives a payment.
@item Wallet
-Also “Taler Wallet”. Software component that manages the user’s digital cash
+Also "Taler Wallet". Software component that manages the user's digital cash
and payments.
@end table
@node Developer Glossary,Developer Tools,User-Facing Terminology,Top
-@anchor{taler-developer-manual developer-glossary}@anchor{5c}
+@anchor{taler-developer-manual developer-glossary}@anchor{68}
@chapter Developer Glossary
@@ -2926,562 +3420,487 @@ use when talking to end users or even system administrators.
@table @asis
-@anchor{taler-developer-manual term-absolute-time}@anchor{5d}
+@anchor{taler-developer-manual term-absolute-time}@anchor{69}
@geindex absolute time
@item absolute time
-method of keeping time in @ref{5e,,GNUnet} where the time is represented
+method of keeping time in @ref{6a,,GNUnet} where the time is represented
as the number of microseconds since 1.1.1970 (UNIX epoch). Called
-absolute time in contrast to @ref{5f,,relative time}.
-@anchor{taler-developer-manual term-aggregate}@anchor{60}
+absolute time in contrast to @ref{6b,,relative time}.
+@anchor{taler-developer-manual term-aggregate}@anchor{6c}
@geindex aggregate
@item aggregate
-the @ref{61,,exchange} combines multiple payments received by the
-same @ref{62,,merchant} into one larger @ref{63,,wire transfer} to
-the respective merchant’s @ref{64,,bank} account
-@anchor{taler-developer-manual term-auditor}@anchor{65}
+the @ref{6d,,exchange} combines multiple payments received by the
+same @ref{6e,,merchant} into one larger @ref{6f,,wire transfer} to
+the respective merchant's @ref{70,,bank} account
+@anchor{taler-developer-manual term-auditor}@anchor{71}
@geindex auditor
@item auditor
-trusted third party that verifies that the @ref{61,,exchange} is operating correctly
-@anchor{taler-developer-manual term-bank}@anchor{64}
+trusted third party that verifies that the @ref{6d,,exchange} is operating correctly
+@anchor{taler-developer-manual term-bank}@anchor{70}
@geindex bank
@item bank
-traditional financial service provider who offers wire @ref{66,,transfers} between accounts
-@anchor{taler-developer-manual term-buyer}@anchor{67}
+traditional financial service provider who offers
+@ref{6f,,wire transfers} between accounts
+@anchor{taler-developer-manual term-buyer}@anchor{72}
@geindex buyer
@item buyer
-individual in control of a Taler @ref{68,,wallet}, usually using it to
-@ref{69,,spend} the @ref{6a,,coins} on @ref{6b,,contracts} (see also @ref{6c,,customer}).
-@anchor{taler-developer-manual term-close}@anchor{6d}
+individual in control of a Taler @ref{73,,wallet}, usually using it to
+@ref{74,,spend} the @ref{75,,coins} on @ref{76,,contracts} (see also @ref{77,,customer}).
+@anchor{taler-developer-manual term-close}@anchor{78}
@geindex close
-@item close@anchor{taler-developer-manual term-closes}@anchor{6e}
-@geindex closes
+@item close
-@itemx closes@anchor{taler-developer-manual term-closed}@anchor{6f}
-@geindex closed
-
-@itemx closed@anchor{taler-developer-manual term-closing}@anchor{70}
-@geindex closing
-
-@itemx closing
-
-operation an @ref{61,,exchange} performs on a @ref{71,,reserve} that has not been
-@ref{72,,drained} by @ref{73,,withdraw} operations. When closing a reserve, the
-exchange wires the remaining funds back to the customer, minus a @ref{74,,fee}
+operation an @ref{6d,,exchange} performs on a @ref{79,,reserve} that has not been
+@ref{7a,,emptied} by @ref{7b,,withdraw} operations. When closing a reserve, the
+exchange wires the remaining funds back to the customer, minus a @ref{7c,,fee}
for closing
@anchor{taler-developer-manual term-coin}@anchor{75}
@geindex coin
-@item coin@anchor{taler-developer-manual term-coins}@anchor{6a}
-@geindex coins
+@item coin
-@itemx coins
-
-coins are individual token representing a certain amount of value, also known as the @ref{76,,denomination} of the coin
-@anchor{taler-developer-manual term-commitment}@anchor{77}
-@geindex commitment
-
-@item commitment@anchor{taler-developer-manual term-refresh-commitment}@anchor{78}
-@geindex refresh commitment
-
-@itemx refresh commitment
-
-data that the wallet commits to during the @ref{79,,melt} stage of the
-@ref{7a,,refresh} protocol where it
-has to prove to the @ref{61,,exchange} that it is deriving the @ref{7b,,fresh}
-coins as specified by the Taler protocol. The commitment is verified
-probabilistically (see: @ref{7c,,kappa}) during the @ref{7d,,reveal} stage.
-@anchor{taler-developer-manual term-contract}@anchor{7e}
+coins are individual token representing a certain amount of value, also known as the @ref{7d,,denomination} of the coin
+@anchor{taler-developer-manual term-contract}@anchor{76}
@geindex contract
-@item contract@anchor{taler-developer-manual term-contracts}@anchor{6b}
-@geindex contracts
+@item contract
-@itemx contracts
-
-formal agreement between @ref{62,,merchant} and @ref{6c,,customer} specifying the
-@ref{7f,,contract terms} and signed by the merchant and the @ref{6a,,coins} of the
+formal agreement between @ref{6e,,merchant} and @ref{77,,customer} specifying the
+@ref{7e,,contract terms} and signed by the merchant and the @ref{75,,coins} of the
customer
-@anchor{taler-developer-manual term-contract-terms}@anchor{7f}
+@anchor{taler-developer-manual term-contract-terms}@anchor{7e}
@geindex contract terms
@item contract terms
the individual clauses specifying what the buyer is purchasing from the
-@ref{62,,merchant}
-@anchor{taler-developer-manual term-customer}@anchor{6c}
+@ref{6e,,merchant}
+@anchor{taler-developer-manual term-customer}@anchor{77}
@geindex customer
@item customer
individual that directs the buyer (perhaps the same individual) to make a purchase
-@anchor{taler-developer-manual term-denomination}@anchor{76}
+@anchor{taler-developer-manual term-denomination}@anchor{7d}
@geindex denomination
@item denomination
unit of currency, specifies both the currency and the face value of a @ref{75,,coin},
as well as associated fees and validity periods
-@anchor{taler-developer-manual term-denomination-key}@anchor{80}
+@anchor{taler-developer-manual term-denomination-key}@anchor{7f}
@geindex denomination key
@item denomination key
(RSA) key used by the exchange to certify that a given @ref{75,,coin} is valid and of a
-particular @ref{76,,denomination}
-@anchor{taler-developer-manual term-deposit}@anchor{81}
+particular @ref{7d,,denomination}
+@anchor{taler-developer-manual term-deposit}@anchor{80}
@geindex deposit
-@item deposit@anchor{taler-developer-manual term-deposits}@anchor{82}
-@geindex deposits
-
-@itemx deposits@anchor{taler-developer-manual term-depositing}@anchor{83}
-@geindex depositing
-
-@itemx depositing
+@item deposit
operation by which a merchant passes coins to an exchange, expecting the
exchange to credit his bank account in the future using an
-@ref{60,,aggregate} @ref{63,,wire transfer}
-@anchor{taler-developer-manual term-dirty}@anchor{84}
+@ref{6c,,aggregate} @ref{6f,,wire transfer}
+@anchor{taler-developer-manual term-dirty}@anchor{81}
@geindex dirty
-@item dirty@anchor{taler-developer-manual term-dirty-coin}@anchor{85}
-@geindex dirty coin
+@item dirty
-@itemx dirty coin
-
-a coin is dirty if its public key may be known to an entity other than
+a @ref{75,,coin} is dirty if its public key may be known to an entity other than
the customer, thereby creating the danger of some entity being able to
-link multiple transactions of coin’s owner if the coin is not refreshed
-@anchor{taler-developer-manual term-drain}@anchor{86}
+link multiple transactions of coin's owner if the coin is not refreshed
+@anchor{taler-developer-manual term-drain}@anchor{82}
@geindex drain
-@item drain@anchor{taler-developer-manual term-drained}@anchor{72}
-@geindex drained
+@item drain
+
+process by which an exchange operator takes the profits
+(from @ref{7c,,fees}) out of the escrow account and moves them into
+their regular business account
+@anchor{taler-developer-manual term-empty}@anchor{7a}
+@geindex empty
-@itemx drained
+@item empty
-a @ref{71,,reserve} is being drained when a @ref{68,,wallet} is using the
-reserve’s private key to @ref{73,,withdraw} coins from it. This reduces
+a @ref{79,,reserve} is being emptied when a @ref{73,,wallet} is using the
+reserve's private key to @ref{7b,,withdraw} coins from it. This reduces
the balance of the reserve. Once the balance reaches zero, we say that
-the reserve has been (fully) drained. Reserves that are not drained
-(which is the normal process) are @ref{6f,,closed} by the exchange.
-@anchor{taler-developer-manual term-exchange}@anchor{61}
+the reserve has been (fully) emptied. Reserves that are not emptied
+(which is the normal process) are @ref{78,,closed} by the exchange.
+@anchor{taler-developer-manual term-exchange}@anchor{6d}
@geindex exchange
@item exchange
-Taler’s payment service operator. Issues electronic coins during
+Taler's payment service operator. Issues electronic coins during
withdrawal and redeems them when they are deposited by merchants
-@anchor{taler-developer-manual term-expired}@anchor{87}
+@anchor{taler-developer-manual term-expired}@anchor{83}
@geindex expired
-@item expired@anchor{taler-developer-manual term-expiration}@anchor{88}
-@geindex expiration
-
-@itemx expiration
+@item expired
Various operations come with time limits. In particular, denomination keys
come with strict time limits for the various operations involving the
coin issued under the denomination. The most important limit is the
deposit expiration, which specifies until when wallets are allowed to
-use the coin in deposit or refreshing operations. There is also a “legal”
+use the coin in deposit or refreshing operations. There is also a "legal"
expiration, which specifies how long the exchange keeps records beyond the
deposit expiration time. This latter expiration matters for legal disputes
in courts and also creates an upper limit for refreshing operations on
special zombie coin
-@anchor{taler-developer-manual term-fakebank}@anchor{89}
+@anchor{taler-developer-manual term-fakebank}@anchor{84}
@geindex fakebank
@item fakebank
-implementation of the @ref{64,,bank} API in memory to be used only for test
+implementation of the @ref{70,,bank} API in memory to be used only for test
cases.
-@anchor{taler-developer-manual term-fee}@anchor{74}
+@anchor{taler-developer-manual term-fee}@anchor{7c}
@geindex fee
@item fee
-an @ref{61,,exchange} charges various fees for its service. The different
+an @ref{6d,,exchange} charges various fees for its service. The different
fees are specified in the protocol. There are fees per coin for
-@ref{8a,,withdrawing}, @ref{83,,depositing}, @ref{8b,,melting}, and
-@ref{8c,,refunding}. Furthermore, there are fees per wire transfer
-for @ref{70,,closing} a @ref{71,,reserve}: and for
-@ref{60,,aggregate} @ref{8d,,wire transfers} to the @ref{62,,merchant}.
-@anchor{taler-developer-manual term-fresh}@anchor{7b}
+@ref{7b,,withdrawing}, @ref{80,,depositing}, @ref{85,,melting}, and
+@ref{86,,refunding}. Furthermore, there are fees per wire transfer
+when a @ref{79,,reserve} is @ref{78,,closed}
+and for @ref{6c,,aggregate} @ref{6f,,wire transfers}
+to the @ref{6e,,merchant}.
+@anchor{taler-developer-manual term-fresh}@anchor{87}
@geindex fresh
-@item fresh@anchor{taler-developer-manual term-fresh-coin}@anchor{8e}
-@geindex fresh coin
+@item fresh
-@itemx fresh coin
-
-a coin is fresh if its public key is only known to the customer
-@anchor{taler-developer-manual term-GNUnet}@anchor{5e}
+a @ref{75,,coin} is fresh if its public key is only known to the customer
+@anchor{taler-developer-manual term-GNUnet}@anchor{6a}
@geindex GNUnet
@item GNUnet
Codebase of various libraries for a better Internet, some of which
GNU Taler depends upon.
-@anchor{taler-developer-manual term-json}@anchor{8f}
-@geindex json
-
-@item json@anchor{taler-developer-manual term-JSON}@anchor{90}
+@anchor{taler-developer-manual term-JSON}@anchor{88}
@geindex JSON
-@itemx JSON@anchor{taler-developer-manual term-JavaScript-Object-Notation}@anchor{91}
-@geindex JavaScript Object Notation
-
-@itemx JavaScript Object Notation
+@item JSON
+JavaScript Object Notation (JSON) is a
serialization format derived from the JavaScript language which is
commonly used in the Taler protocol as the payload of HTTP requests
and responses.
-@anchor{taler-developer-manual term-kappa}@anchor{7c}
+@anchor{taler-developer-manual term-kappa}@anchor{89}
@geindex kappa
@item kappa
-security parameter used in the @ref{7a,,refresh} protocol. Defined to be 3.
+security parameter used in the @ref{8a,,refresh} protocol. Defined to be 3.
The probability of successfully evading the income transparency with the
refresh protocol is 1:kappa.
-@anchor{taler-developer-manual term-LibEuFin}@anchor{92}
-@geindex LibEuFin
+@anchor{taler-developer-manual term-libeufin}@anchor{8b}
+@geindex libeufin
-@item LibEuFin
+@item libeufin
-FIXME: explain
-@anchor{taler-developer-manual term-link}@anchor{93}
+Kotlin component that implements a regional currency bank and an
+adapter to communicate via EBICS with European core banking systems.
+@anchor{taler-developer-manual term-link}@anchor{8c}
@geindex link
-@item link@anchor{taler-developer-manual term-linking}@anchor{94}
-@geindex linking
+@item link
-@itemx linking
-
-specific step in the @ref{7a,,refresh} protocol that an exchange must offer
-to prevent abuse of the @ref{7a,,refresh} mechanism. The link step is
+specific step in the @ref{8a,,refresh} protocol that an exchange must offer
+to prevent abuse of the @ref{8a,,refresh} mechanism. The link step is
not needed in normal operation, it just must be offered.
-@anchor{taler-developer-manual term-master-key}@anchor{95}
+@anchor{taler-developer-manual term-master-key}@anchor{8d}
@geindex master key
@item master key
offline key used by the exchange to certify denomination keys and
message signing keys
-@anchor{taler-developer-manual term-melt}@anchor{79}
+@anchor{taler-developer-manual term-melt}@anchor{85}
@geindex melt
-@item melt@anchor{taler-developer-manual term-melted}@anchor{96}
-@geindex melted
-
-@itemx melted@anchor{taler-developer-manual term-melting}@anchor{8b}
-@geindex melting
-
-@itemx melting
+@item melt
-step of the @ref{7a,,refresh} protocol where a @ref{85,,dirty coin}
-is invalidated to be reborn @ref{7b,,fresh} in a subsequent
-@ref{7d,,reveal} step.
-@anchor{taler-developer-manual term-merchant}@anchor{62}
+step of the @ref{8a,,refresh} protocol where a @ref{81,,dirty} @ref{75,,coin}
+is invalidated to be reborn @ref{87,,fresh} in a subsequent
+@ref{8e,,reveal} step.
+@anchor{taler-developer-manual term-merchant}@anchor{6e}
@geindex merchant
@item merchant
party receiving payments (usually in return for goods or services)
-@anchor{taler-developer-manual term-message-signing-key}@anchor{97}
+@anchor{taler-developer-manual term-message-signing-key}@anchor{8f}
@geindex message signing key
@item message signing key
key used by the exchange to sign online messages, other than coins
-@anchor{taler-developer-manual term-order}@anchor{98}
+@anchor{taler-developer-manual term-order}@anchor{90}
@geindex order
@item order
offer made by the merchant to a wallet; pre-cursor to
a contract where the wallet is not yet fixed. Turns
-into a @ref{7e,,contract} when a wallet claims the order.
-@anchor{taler-developer-manual term-owner}@anchor{99}
+into a @ref{76,,contract} when a wallet claims the order.
+@anchor{taler-developer-manual term-owner}@anchor{91}
@geindex owner
@item owner
a coin is owned by the entity that knows the private key of the coin
-@anchor{taler-developer-manual term-planchet}@anchor{9a}
+@anchor{taler-developer-manual term-planchet}@anchor{92}
@geindex planchet
@item planchet
-precursor data for a @ref{75,,coin}. A planchet includes the coin’s internal
+precursor data for a @ref{75,,coin}. A planchet includes the coin's internal
secrets (coin private key, blinding factor), but lacks the RSA signature
-of the @ref{61,,exchange}. When @ref{8a,,withdrawing}, a @ref{68,,wallet}
+of the @ref{6d,,exchange}. When @ref{7b,,withdrawing}, a @ref{73,,wallet}
creates and persists a planchet before asking the exchange to sign it to
get the coin.
-@anchor{taler-developer-manual term-privacy-policy}@anchor{9b}
+@anchor{taler-developer-manual term-privacy-policy}@anchor{93}
@geindex privacy policy
@item privacy policy
Statement of an operator how they will protect the privacy of users.
-@anchor{taler-developer-manual term-proof}@anchor{9c}
+@anchor{taler-developer-manual term-proof}@anchor{94}
@geindex proof
@item proof
Message that cryptographically demonstrates that a particular claim is correct.
-@anchor{taler-developer-manual term-proposal}@anchor{9d}
+@anchor{taler-developer-manual term-proposal}@anchor{95}
@geindex proposal
@item proposal
-a list of @ref{7f,,contract terms} that has been completed and signed by the
+a list of @ref{7e,,contract terms} that has been completed and signed by the
merchant backend.
-@anchor{taler-developer-manual term-purchase}@anchor{9e}
+@anchor{taler-developer-manual term-purchase}@anchor{96}
@geindex purchase
@item purchase
-Refers to the overall process of negotiating a @ref{7e,,contract} and then
-making a payment with @ref{6a,,coins} to a @ref{62,,merchant}.
-@anchor{taler-developer-manual term-recoup}@anchor{9f}
+Refers to the overall process of negotiating a @ref{76,,contract} and then
+making a payment with @ref{75,,coins} to a @ref{6e,,merchant}.
+@anchor{taler-developer-manual term-recoup}@anchor{97}
@geindex recoup
@item recoup
Operation by which an exchange returns the value of coins affected
-by a @ref{a0,,revocation} to their @ref{99,,owner}, either by allowing the owner to
-withdraw new coins or wiring funds back to the bank account of the @ref{99,,owner}.
-@anchor{taler-developer-manual term-refresh}@anchor{7a}
+by a @ref{98,,revocation} to their @ref{91,,owner}, either by allowing the owner to
+withdraw new coins or wiring funds back to the bank account of the @ref{91,,owner}.
+@anchor{taler-developer-manual term-refresh}@anchor{8a}
@geindex refresh
-@item refresh@anchor{taler-developer-manual term-refreshing}@anchor{a1}
-@geindex refreshing
+@item refresh
-@itemx refreshing
+operation by which a @ref{81,,dirty} @ref{75,,coin} is converted into one or more
+@ref{87,,fresh} coins. Involves @ref{85,,melting} the @ref{81,,dirty} coins and
+then @ref{8e,,revealing} so-called @ref{99,,transfer keys}.
+@anchor{taler-developer-manual term-refresh-commitment}@anchor{9a}
+@geindex refresh commitment
-operation by which a @ref{85,,dirty coin} is converted into one or more
-@ref{7b,,fresh} coins. Involves @ref{8b,,melting} the @ref{85,,dirty coin} and
-then @ref{a2,,revealing} so-called @ref{a3,,transfer keys}.
-@anchor{taler-developer-manual term-refund}@anchor{a4}
-@geindex refund
+@item refresh commitment
-@item refund@anchor{taler-developer-manual term-refunding}@anchor{8c}
-@geindex refunding
+data that the wallet commits to during the @ref{85,,melt} stage of the
+@ref{8a,,refresh} protocol where it
+has to prove to the @ref{6d,,exchange} that it is deriving the @ref{87,,fresh}
+coins as specified by the Taler protocol. The commitment is verified
+probabilistically (see: @ref{89,,kappa}) during the @ref{8e,,reveal} stage.
+@anchor{taler-developer-manual term-refund}@anchor{86}
+@geindex refund
-@itemx refunding
+@item refund
operation by which a merchant steps back from the right to funds that he
-obtained from a @ref{81,,deposit} operation, giving the right to the funds back
+obtained from a @ref{80,,deposit} operation, giving the right to the funds back
to the customer
-@anchor{taler-developer-manual term-refund-transaction-id}@anchor{a5}
+@anchor{taler-developer-manual term-refund-transaction-id}@anchor{9b}
@geindex refund transaction id
@item refund transaction id
-unique number by which a merchant identifies a @ref{a4,,refund}. Needed
+unique number by which a merchant identifies a @ref{86,,refund}. Needed
as refunds can be partial and thus there could be multiple refunds for
-the same @ref{9e,,purchase}.
-@anchor{taler-developer-manual term-relative-time}@anchor{5f}
+the same @ref{96,,purchase}.
+@anchor{taler-developer-manual term-relative-time}@anchor{6b}
@geindex relative time
@item relative time
-method of keeping time in @ref{5e,,GNUnet} where the time is represented
+method of keeping time in @ref{6a,,GNUnet} where the time is represented
as a relative number of microseconds. Thus, a relative time specifies
an offset or a duration, but not a date. Called relative time in
-contrast to @ref{5d,,absolute time}.
-@anchor{taler-developer-manual term-reserve}@anchor{71}
+contrast to @ref{69,,absolute time}.
+@anchor{taler-developer-manual term-reserve}@anchor{79}
@geindex reserve
@item reserve
accounting mechanism used by the exchange to track customer funds
-from incoming @ref{8d,,wire transfers}. A reserve is created whenever
+from incoming @ref{6f,,wire transfers}. A reserve is created whenever
a customer wires money to the exchange using a well-formed public key
-in the subject. The exchange then allows the customer’s @ref{68,,wallet}
-to @ref{73,,withdraw} up to the amount received in @ref{7b,,fresh}
-@ref{6a,,coins} from the reserve, thereby draining the reserve. If a
-reserve is not drained, the exchange eventually @ref{6e,,closes} it.
+in the subject. The exchange then allows the customer's @ref{73,,wallet}
+to @ref{7b,,withdraw} up to the amount received in @ref{87,,fresh}
+@ref{75,,coins} from the reserve, thereby emptying the reserve. If a
+reserve is not emptied, the exchange will eventually @ref{78,,close} it.
Other definition: Funds set aside for future use; either the balance of a customer at the
exchange ready for withdrawal, or the funds kept in the exchange;s bank
account to cover obligations from coins in circulation.
-@anchor{taler-developer-manual term-reveal}@anchor{7d}
+@anchor{taler-developer-manual term-reveal}@anchor{8e}
@geindex reveal
-@item reveal@anchor{taler-developer-manual term-revealing}@anchor{a2}
-@geindex revealing
-
-@itemx revealing
+@item reveal
-step in the @ref{7a,,refresh} protocol where some of the transfer private
+step in the @ref{8a,,refresh} protocol where some of the transfer private
keys are revealed to prove honest behavior on the part of the wallet.
-In the reveal step, the exchange returns the signed @ref{7b,,fresh} coins.
-@anchor{taler-developer-manual term-revoke}@anchor{a6}
+In the reveal step, the exchange returns the signed @ref{87,,fresh} coins.
+@anchor{taler-developer-manual term-revoke}@anchor{98}
@geindex revoke
-@item revoke@anchor{taler-developer-manual term-revocation}@anchor{a0}
-@geindex revocation
-
-@itemx revocation
+@item revoke
exceptional operation by which an exchange withdraws a denomination from
circulation, either because the signing key was compromised or because
the exchange is going out of operation; unspent coins of a revoked
denomination are subjected to recoup.
-@anchor{taler-developer-manual term-sharing}@anchor{a7}
+@anchor{taler-developer-manual term-sharing}@anchor{9c}
@geindex sharing
@item sharing
-users can share ownership of a @ref{75,,coin} by sharing access to the coin's
+users can share ownership of a @ref{75,,coin} by sharing access to the coin&#39;s
private key, thereby allowing all co-owners to spend the coin at any
time.
-@anchor{taler-developer-manual term-spend}@anchor{69}
+@anchor{taler-developer-manual term-spend}@anchor{74}
@geindex spend
-@item spend@anchor{taler-developer-manual term-spending}@anchor{a8}
-@geindex spending
-
-@itemx spending
+@item spend
operation by which a customer gives a merchant the right to deposit
coins in return for merchandise
-@anchor{taler-developer-manual term-terms}@anchor{a9}
+@anchor{taler-developer-manual term-terms}@anchor{9d}
@geindex terms
@item terms
the general terms of service of an operator, possibly including
-the @ref{9b,,privacy policy}. Not to be confused with the
-@ref{7f,,contract terms} which are about the specific purchase.
-@anchor{taler-developer-manual term-transaction}@anchor{aa}
+the @ref{93,,privacy policy}. Not to be confused with the
+@ref{7e,,contract terms} which are about the specific purchase.
+@anchor{taler-developer-manual term-transaction}@anchor{9e}
@geindex transaction
@item transaction
method by which ownership is exclusively transferred from one entity
-@anchor{taler-developer-manual term-transfer}@anchor{66}
-@geindex transfer
-
-@item transfer@anchor{taler-developer-manual term-transfers}@anchor{ab}
-@geindex transfers
-
-@itemx transfers@anchor{taler-developer-manual term-wire-transfer}@anchor{63}
-@geindex wire transfer
-
-@itemx wire transfer@anchor{taler-developer-manual term-wire-transfers}@anchor{8d}
-@geindex wire transfers
-
-@itemx wire transfers
-
-method of sending funds between @ref{64,,bank} accounts
-@anchor{taler-developer-manual term-transfer-key}@anchor{ac}
+@anchor{taler-developer-manual term-transfer-key}@anchor{99}
@geindex transfer key
-@item transfer key@anchor{taler-developer-manual term-transfer-keys}@anchor{a3}
-@geindex transfer keys
-
-@itemx transfer keys
+@item transfer key
-special cryptographic key used in the @ref{7a,,refresh} protocol, some of which
-are revealed during the @ref{7d,,reveal} step. Note that transfer keys have,
-despite the name, no relationship to @ref{8d,,wire transfers}. They merely
-help to transfer the value from a @ref{85,,dirty coin} to a @ref{8e,,fresh coin}
-@anchor{taler-developer-manual term-user}@anchor{ad}
+special cryptographic key used in the @ref{8a,,refresh} protocol, some of which
+are revealed during the @ref{8e,,reveal} step. Note that transfer keys have,
+despite the name, no relationship to @ref{6f,,wire transfers}. They merely
+help to transfer the value from a @ref{81,,dirty} coin to a @ref{87,,fresh} coin
+@anchor{taler-developer-manual term-user}@anchor{9f}
@geindex user
@item user
any individual using the Taler payment system
-(see @ref{6c,,customer}, @ref{67,,buyer}, @ref{62,,merchant}).
-@anchor{taler-developer-manual term-version}@anchor{ae}
+(see @ref{77,,customer}, @ref{72,,buyer}, @ref{6e,,merchant}).
+@anchor{taler-developer-manual term-version}@anchor{a0}
@geindex version
@item version
Taler uses various forms of versioning. There is a database
schema version (stored itself in the database, see *-0000.sql) describing
-the state of the table structure in the database of an @ref{61,,exchange},
-@ref{65,,auditor} or @ref{62,,merchant}. There is a protocol
+the state of the table structure in the database of an @ref{6d,,exchange},
+@ref{71,,auditor} or @ref{6e,,merchant}. There is a protocol
version (CURRENT:REVISION:AGE, see GNU libtool) which specifies
-the network protocol spoken by an @ref{61,,exchange} or @ref{62,,merchant}
+the network protocol spoken by an @ref{6d,,exchange} or @ref{6e,,merchant}
including backwards-compatibility. And finally there is the software
release version (MAJOR.MINOR.PATCH, see @indicateurl{https://semver.org/}) of
the respective code base.
-@anchor{taler-developer-manual term-wallet}@anchor{68}
+@anchor{taler-developer-manual term-wallet}@anchor{73}
@geindex wallet
@item wallet
-software running on a customer’s computer; withdraws, stores and
+software running on a customer's computer; withdraws, stores and
spends coins
-@anchor{taler-developer-manual term-WebExtension}@anchor{af}
+@anchor{taler-developer-manual term-WebExtension}@anchor{a1}
@geindex WebExtension
@item WebExtension
Cross-browser API used to implement the GNU Taler wallet browser extension.
-@anchor{taler-developer-manual term-wire-gateway}@anchor{b0}
+@anchor{taler-developer-manual term-wire-gateway}@anchor{a2}
@geindex wire gateway
@item wire gateway
-FIXME: explain
-@anchor{taler-developer-manual term-wire-transfer-identifier}@anchor{b1}
-@geindex wire transfer identifier
+API used by the exchange to talk with some real-time gross settlement system
+(core banking system, blockchain) to notice inbound credits wire transfers
+(during withdraw) and to trigger outbound debit wire transfers (primarily
+for deposits).
+@anchor{taler-developer-manual term-wire-transfer}@anchor{6f}
+@geindex wire transfer
+
+@item wire transfer
-@item wire transfer identifier@anchor{taler-developer-manual term-wtid}@anchor{b2}
-@geindex wtid
+a wire transfer is a method of sending funds between @ref{70,,bank} accounts
+@anchor{taler-developer-manual term-wire-transfer-identifier}@anchor{a3}
+@geindex wire transfer identifier
-@itemx wtid
+@item wire transfer identifier
Subject of a wire transfer from the exchange to a merchant;
set by the aggregator to a random nonce which uniquely
identifies the transfer.
-@anchor{taler-developer-manual term-withdraw}@anchor{73}
+@anchor{taler-developer-manual term-withdraw}@anchor{7b}
@geindex withdraw
-@item withdraw@anchor{taler-developer-manual term-withdrawing}@anchor{8a}
-@geindex withdrawing
+@item withdraw
-@itemx withdrawing@anchor{taler-developer-manual term-withdrawal}@anchor{b3}
-@geindex withdrawal
-
-@itemx withdrawal
-
-operation by which a @ref{68,,wallet} can convert funds from a @ref{71,,reserve} to
+operation by which a @ref{73,,wallet} can convert funds from a @ref{79,,reserve} to
fresh coins
-@anchor{taler-developer-manual term-zombie}@anchor{b4}
+@anchor{taler-developer-manual term-zombie}@anchor{a4}
@geindex zombie
-@item zombie@anchor{taler-developer-manual term-zombie-coin}@anchor{b5}
-@geindex zombie coin
-
-@itemx zombie coin
+@item zombie
-coin where the respective @ref{80,,denomination key} is past its
-@ref{81,,deposit} @ref{88,,expiration} time, but which is still (again) valid
-for an operation because it was @ref{96,,melted} while it was still
-valid, and then later again credited during a @ref{9f,,recoup} process
+@ref{75,,coin} where the respective @ref{7f,,denomination key} is past its
+@ref{80,,deposit} @ref{83,,expiration} time, but which is still (again) valid
+for an operation because it was @ref{85,,melted} while it was still
+valid, and then later again credited during a @ref{97,,recoup} process
@end table
@node Developer Tools,Index,Developer Glossary,Top
-@anchor{taler-developer-manual developer-tools}@anchor{b6}
+@anchor{taler-developer-manual developer-tools}@anchor{a5}
@chapter Developer Tools
@@ -3494,7 +3913,7 @@ developer.
@end menu
@node taler-harness,,,Developer Tools
-@anchor{taler-developer-manual taler-harness}@anchor{b7}
+@anchor{taler-developer-manual taler-harness}@anchor{a6}
@section taler-harness
diff --git a/texinfo/taler-exchange.texi b/texinfo/taler-exchange.texi
index 95451a54..c22795c9 100644
--- a/texinfo/taler-exchange.texi
+++ b/texinfo/taler-exchange.texi
@@ -19,7 +19,7 @@
@copying
@quotation
-GNU Taler 0.9.0, Feb 10, 2024
+GNU Taler 0.9.0, Mar 07, 2024
GNU Taler team
@@ -78,6 +78,7 @@ Copyright @copyright{} 2014-2022 Taler Systems SA (GPLv3+ or GFDL 1.3+)
* AML Configuration::
* Setup Linting::
* Testing and Troubleshooting::
+* Template Customization::
* Benchmarking::
* FIXMEs::
* Index::
@@ -176,6 +177,25 @@ Testing and Troubleshooting
* Database Scheme::
* Database upgrades::
+Template Customization
+
+* Generic Errors Templates::
+* kycaid-invalid-request::
+* oauth2-authentication-failure::
+* oauth2-authorization-failure::
+* oauth2-authorization-failure-malformed::
+* oauth2-bad-request::
+* oauth2-conversion-failure::
+* oauth2-provider-failure::
+* persona-exchange-unauthorized::
+* persona-load-failure::
+* persona-exchange-unpaid::
+* persona-logic-failure::
+* persona-invalid-response::
+* persona-network-timeout::
+* persona-kyc-failed::
+* persona-provider-failure::
+
Benchmarking
* Choosing a bank::
@@ -187,7 +207,7 @@ Benchmarking
@end menu
@node Introduction,Installation,Top,Top
-@anchor{taler-exchange-manual gnu-taler-exchange-operator-manual}@anchor{1}@anchor{taler-exchange-manual introduction}@anchor{2}
+@anchor{taler-exchange-manual exchange-operator-manual}@anchor{1}@anchor{taler-exchange-manual introduction}@anchor{2}
@chapter Introduction
@@ -295,7 +315,7 @@ subsystem. Such intermediary system abstracts the native banking protocol by
exposing the `Taler Wire Gateway API'; this way, the exchange can conduct its
banking operations in a simplified and JSON-based style.
-When customers wire money to the exchange’s bank account, the Taler Wire
+When customers wire money to the exchange's bank account, the Taler Wire
Gateway API must notify the exchange about the incoming wire transfers. The
exchange then creates a `reserve' based on the subject of the wire
transfer. The wallet which knows the secret key matching the wire transfer
@@ -332,7 +352,7 @@ binary is the @code{taler-exchange-httpd}.
`Crypto-Helpers':
The @code{taler-exchange-secmod-rsa}, @code{taler-exchange-secmod-cs} and
@code{taler-exchange-secmod-eddsa}
-are three programs that are responsible for managing the exchange’s
+are three programs that are responsible for managing the exchange's
online signing keys. They must run on the same machine as the
@code{taler-exchange-httpd} as the HTTP frontend communicates with the
crypto helpers using UNIX Domain Sockets.
@@ -351,7 +371,7 @@ excessively frequent transfers. The binary is the
The @code{taler-exchange-closer} tool check that reserves are properly
closed. If a customer wires funds to an exchange and then fails
to withdraw them, the closer will (eventually) trigger a wire
-transfer that sends the customer’s funds back to the originating
+transfer that sends the customer's funds back to the originating
wire account.
@item
@@ -391,7 +411,7 @@ process using libtalerfakebank. Note that this adapter is only
useful for tests, as all transaction data is kept in memory.
@item
-For production, `libeufin'’s @code{libeufin-nexus} component
+For production, `libeufin''s @code{libeufin-nexus} component
implements a wire adapter towards the traditional SEPA banking
system with IBAN accounts using the EBICS protocol.
@@ -424,7 +444,7 @@ computes the expected bank balance, revenue and risk exposure of the
exchange operator. The main binary is the @code{taler-auditor}.
Aside from the key setup procedures, the most critical setup for
deploying an auditor is providing the auditor with an up-to-date
-copy of the exchange’s database.
+copy of the exchange's database.
@end itemize
@node Key Types,Offline keys,Architecture overview,Introduction
@@ -450,14 +470,14 @@ denomination keys (signs digital coins)
security module keys (signs online message signing keys and denomination keys)
@end itemize
-Additionally, the exchange is sometimes concerned with the auditor’s public
+Additionally, the exchange is sometimes concerned with the auditor's public
key (to verify messages signed by auditors approved by the exchange operator)
-and the merchant’s public key (to verify refunds are authorized by the
+and the merchant's public key (to verify refunds are authorized by the
merchant).
Most of the keys are managed fully automatically or configured as part of the
denomination configuration. Some configuration settings must be manually
-set with regards to the exchange’s master key.
+set with regards to the exchange's master key.
@node Offline keys,Online signing key security,Key Types,Introduction
@anchor{taler-exchange-manual offline-keys}@anchor{9}
@@ -466,7 +486,7 @@ set with regards to the exchange’s master key.
The exchange (and ideally also its auditor(s)) uses a long-term offline master
siging key that identifies the operator and is used to authenticate critical
-information, such as the exchange’s bank account and the actual keys the
+information, such as the exchange's bank account and the actual keys the
exchange uses online.
Interactions with the offline system are performed using the
@@ -527,7 +547,7 @@ expires or if they are informed about a key having been revoked.
From a security point of view, the helpers are designed to `only' make it
-harder for an attacker who took control of the HTTP daemon’s account to
+harder for an attacker who took control of the HTTP daemon's account to
extract the private keys, limiting the attackers ability to creating
signatures to the duration of their control of that account.
@@ -547,7 +567,7 @@ The helper processes should be run under a user ID that is separate from that
of the user running the main @code{taler-exchange-httpd} service. To get any
security benefit from this, it is important that helpers run under a different
user ID than the main HTTP frontend. In fact, ideally, each helper should run
-under its own user ID. The @code{taler-exchange-httpd} service’s will securely
+under its own user ID. The @code{taler-exchange-httpd} service's will securely
communicate with the helpers using UNIX domain sockets.
@node Configuration,,Setup,Online signing key security
@@ -574,7 +594,7 @@ try to mitigate against.
We recommend the setup of offline signing keys to be done on a second machine that
does not have Internet access.
-In this guide’s shell-session fragments, the command prompt shows two pieces
+In this guide's shell-session fragments, the command prompt shows two pieces
of information:
@@ -685,7 +705,7 @@ backend:
@itemize -
@item
-“Sphinx RTD Theme” Python package aka @code{python3-sphinx-rtd-theme}
+"Sphinx RTD Theme" Python package aka @code{python3-sphinx-rtd-theme}
on Debian-based systems (for GNUnet documentation support, can be
omitted if GNUnet is configured with @code{--disable-documentation})
@@ -782,7 +802,7 @@ In any case, if @code{make check} fails, please consider filing a
bug report with the Taler bug tracker@footnote{https://bugs.taler.net}.
There is no need to actually run a GNUnet peer to use the Taler merchant
-backend – all the merchant needs from GNUnet is a number of headers and
+backend -- all the merchant needs from GNUnet is a number of headers and
libraries!
After installing GNUnet, unpack the GNU Taler exchange tarball,
@@ -1196,7 +1216,7 @@ for generating configuration files under @code{deployment/netzbon/}.
@chapter Exchange Database Setup
-The access credentials for the exchange’s database are configured in
+The access credentials for the exchange's database are configured in
@code{/etc/taler/secrets/exchange-db.secret.conf}. Currently, only PostgreSQL is
supported as a database backend.
@@ -1381,7 +1401,7 @@ must then have the following options:
@item
@code{VALUE}: How much is the coin worth, the format is
-CURRENCY:VALUE.FRACTION. For example, a 10 cent piece is “EUR:0.10”.
+CURRENCY:VALUE.FRACTION. For example, a 10 cent piece is "EUR:0.10".
@item
@code{DURATION_WITHDRAW}: How long can a coin of this type be withdrawn?
@@ -1541,10 +1561,10 @@ this offline signing machine are:
@itemize *
@item
-Generation of the exchange’s offline master signing key.
+Generation of the exchange's offline master signing key.
@item
-Secure storage of the exchange’s offline master signing key.
+Secure storage of the exchange's offline master signing key.
@item
Generation of certificates (signed with the offline master signing key) that will be imported by the exchange.
@@ -1640,7 +1660,7 @@ have two key pieces of information from that setup:
@itemize *
@item
-The username and password to access the exchange’s account in the system.
+The username and password to access the exchange's account in the system.
@item
The @code{payto://} URI of that account (see RFC 8905@footnote{https://www.rfc-editor.org/rfc/rfc8905}).
@@ -1765,7 +1785,7 @@ Such a wire gateway configuration can be tested with the following commands:
--section exchange-accountcredentials-1 --credit-history
@end example
-On success, you will see some of your account’s transaction history (or an
+On success, you will see some of your account's transaction history (or an
empty history), while on failure you should see an error message.
@node Legal Setup,KYC Configuration,Wire Gateway Setup,Top
@@ -1819,7 +1839,7 @@ setup and configure the legal conditions.
@section Terms of Service
-The service has an endpoint “/terms” to return the terms of service (in legal
+The service has an endpoint "/terms" to return the terms of service (in legal
language) of the service operator. Client software show these terms of
service to the user when the user is first interacting with the service.
Terms of service are optional for experimental deployments, if none are
@@ -1833,7 +1853,7 @@ in the configuration file for the service:
@itemize -
@item
-@code{TERMS_ETAG}: The current “Etag” to return for the terms of service.
+@code{TERMS_ETAG}: The current "Etag" to return for the terms of service.
This value must be changed whenever the terms of service are
updated. A common value to use would be a version number.
Note that if you change the @code{TERMS_ETAG}, you MUST also provide
@@ -1850,7 +1870,7 @@ process.
@section Privacy Policy
-The service has an endpoint “/pp” to return the terms privacy policy (in legal
+The service has an endpoint "/pp" to return the terms privacy policy (in legal
language) of the service operator. Clients should show the privacy policy to
the user when the user explicitly asks for it, but it should not be shown by
default. Privacy policies are optional for experimental deployments, if none
@@ -1864,7 +1884,7 @@ in the configuration file for the service:
@itemize -
@item
-@code{PRIVACY_ETAG}: The current “Etag” to return for the privacy policy.
+@code{PRIVACY_ETAG}: The current "Etag" to return for the privacy policy.
This value must be changed whenever the privacy policy is
updated. A common value to use would be a version number.
Note that if you change the @code{PRIVACY_ETAG}, you MUST also provide
@@ -1885,7 +1905,7 @@ The @code{TERMS_DIR} and @code{PRIVACY_DIR} directory structures must follow a
particular layout. You may use the same directory for both the terms of
service and the privacy policy, as long as you use different ETAGs. Inside of
the directory, there should be sub-directories using two-letter language codes
-like “en”, “de”, or “jp”. Each of these directories would then hold
+like "en", "de", or "jp". Each of these directories would then hold
translations of the current terms of service into the respective language.
Empty directories are permitted in case translations are not available.
@@ -1893,7 +1913,7 @@ Then, inside each language directory, files with the name of the value set as
the @code{TERMS_ETAG} or @code{PRIVACY_ETAG} must be provided. The extension of each
of the files should be typical for the respective mime type. The set of
supported mime types is currently hard-coded in the service, and includes
-“.epub”, “.html”, “.md”, “.pdf” and “.txt” files. If other files are present,
+".epub", ".html", ".md", ".pdf" and ".txt" files. If other files are present,
the service may show a warning on startup.
@menu
@@ -1906,7 +1926,7 @@ the service may show a warning on startup.
@subsection Example
-A sample file structure for a @code{TERMS_ETAG} of “tos-v0” would be:
+A sample file structure for a @code{TERMS_ETAG} of "tos-v0" would be:
@itemize -
@@ -1942,8 +1962,8 @@ TERMS_DIR/de/tos-v0.epub
TERMS_DIR/de/tos-v0.md
@end itemize
-If the user requests an HTML format with language preferences “fr” followed by
-“en”, the service would return @code{TERMS_DIR/en/tos-v0.html} lacking a version in
+If the user requests an HTML format with language preferences "fr" followed by
+"en", the service would return @code{TERMS_DIR/en/tos-v0.html} lacking a version in
French.
@node Generating the Legal Terms,Adding translations,Legal policies directory layout,Legal Setup
@@ -2056,7 +2076,7 @@ Wallet receives money via P2P payments over a threshold
Merchant receives money over a threshold
@item
-Reserve is “opened” for invoicing (`planned feature')
+Reserve is "opened" for invoicing (`planned feature')
@end itemize
@end quotation
@@ -2255,7 +2275,7 @@ specific backend.
The Challenger service for address validation supports OAuth2.0, but does not
have a static AUTHORIZE_URL. Instead, the AUTHORIZE_URL must be enabled by the client
-using a special authenticated request to the Challenger’s @code{/setup} endpoint.
+using a special authenticated request to the Challenger's @code{/setup} endpoint.
The exchange supports this by appending @code{#setup} to the AUTHORIZE_URL (note
that fragments are illegal in OAuth2.0 URLs). Be careful to quote the URL,
as @code{#} is otherwise interpreted as the beginning of a comment by the
@@ -2620,7 +2640,7 @@ via a management HTTP API.
@item
The offline signing system validates this request and signs it.
Additionally, the offline signing system signs policy messages
-to configure the exchange’s bank accounts and associated fees.
+to configure the exchange's bank accounts and associated fees.
@item
The messages generated by the offline signing system are uploaded
@@ -2779,7 +2799,7 @@ provision it with auditor signatures.
This is also done using the @code{taler-exchange-offline} tool on the offline
system. First, the auditor must be configured and provide the exchange
operator with its public key (using @code{taler-auditor-offline setup}) and the
-URL of it’s REST API. The exchange operator also needs a human-readable name
+URL of it's REST API. The exchange operator also needs a human-readable name
that may be shown to users to identify the auditor. For more information on
how to setup and operate an auditor, see
manpages/taler-auditor-offline.1 and taler-auditor-manual.
@@ -2866,11 +2886,11 @@ which staff has access to the AML operations:
upload < aml.json
@end example
-The above commands would add an AML officer with the given “Legal Name” with
-read-write (rw) access to the AML officer database. Using “ro” instead of
-“rw” would grant read-only access to the data, leaving out the ability to
+The above commands would add an AML officer with the given "Legal Name" with
+read-write (rw) access to the AML officer database. Using "ro" instead of
+"rw" would grant read-only access to the data, leaving out the ability to
actually make AML decisions. Once AML access has been granted, the AML
-officer can use the SPA to review cases and (with “rw” access) take AML
+officer can use the SPA to review cases and (with "rw" access) take AML
decisions.
Access rights can be revoked at any time using:
@@ -2931,8 +2951,8 @@ KYC_AML_TRIGGER = taler-exchange-kyc-aml-pep-trigger.sh
The given program will be given the KYC attributes in JSON format on standard
input, and must return 0 to continue without AML and non-zero to flag the
account for manual review. To disable this trigger, simply leave the option to
-its default value of ‘[/usr/bin/]true’. To flag all new users for manual
-review, simply set the program to ‘[/usr/bin/]false’.
+its default value of '[/usr/bin/]true'. To flag all new users for manual
+review, simply set the program to '[/usr/bin/]false'.
@node AML Forms,,AML Triggers,AML Configuration
@anchor{taler-exchange-manual aml-forms}@anchor{4a}
@@ -2967,7 +2987,7 @@ See DD 54 dynamic forms.
@cartouche
@quotation Attention
do not remove a form the list if it has been used. Otherwise you
-won’t be able to see the information save in the exchange database.
+won't be able to see the information save in the exchange database.
@end quotation
@end cartouche
@@ -2994,7 +3014,7 @@ You can optionally pass the @code{--debug} option to get more verbose output, an
@code{--continue} to continue with further checks even though a previous one has
failed.
-@node Testing and Troubleshooting,Benchmarking,Setup Linting,Top
+@node Testing and Troubleshooting,Template Customization,Setup Linting,Top
@anchor{taler-exchange-manual testing-and-troubleshooting}@anchor{4c}
@chapter Testing and Troubleshooting
@@ -3020,7 +3040,7 @@ Show the status of the manual withdrawal operation.
$ taler-wallet-cli transactions
@end example
-At this point, a bank transfer to the exchange’s bank account
+At this point, a bank transfer to the exchange's bank account
needs to be made with the correct subject / remittance information
as instructed by the wallet after the first step. With the
above configuration, it should take about 5 minutes after the
@@ -3068,10 +3088,10 @@ $ taler-wallet-cli transactions
@end example
If the transaction failed, fix any open issue(s) with the exchange and
-run the “run-pending” command.
+run the "run-pending" command.
The wallet can also track if the exchange wired the money to the merchant
-account. The “deposit group id” can be found in the output of the
+account. The "deposit group id" can be found in the output of the
transactions list.
@example
@@ -3178,7 +3198,7 @@ disks of the system.
While an exchange should use an external auditor to attest to regulators that
-it is operating correctly, an exchange operator can also use the auditor’s
+it is operating correctly, an exchange operator can also use the auditor's
logic to perform internal checks. For this, an exchange operator can generally
follow the auditor guide. However, instead of using @code{taler-auditor-sync},
an internal audit can and likely should be performed either directly against
@@ -3254,8 +3274,546 @@ exchange can then not detect double-spending. Hence this operation must
not be performed in a production system. You still also need to then
grant the permissions to the other exchange processes again.
-@node Benchmarking,FIXMEs,Testing and Troubleshooting,Top
-@anchor{taler-exchange-manual benchmarking}@anchor{57}@anchor{taler-exchange-manual exchangebenchmarking}@anchor{58}
+@node Template Customization,Benchmarking,Testing and Troubleshooting,Top
+@anchor{taler-exchange-manual exchangetemplatecustomization}@anchor{57}@anchor{taler-exchange-manual template-customization}@anchor{58}
+@chapter Template Customization
+
+
+The Exchange comes with various HTML templates that are shown to
+guide users through the KYC process. The Exchange uses Mustach@footnote{https://gitlab.com/jbol/mustach} as the templating engine. This section
+describes the various templates. In general, the templates must be installed
+to the @code{share/taler/exchange/templates/} directory. The file names must be of
+the form @code{$NAME.$LANG.must} where @code{$NAME} is the name of the template and
+@code{$LANG} is the 2-letter language code of the template. English templates
+must exist and will be used as a fallback. If the browser (user-agent) has
+provided language preferences in the HTTP header and the respective language
+exists, the correct language will be automatically served.
+
+The following subsections give details about each of the templates. Most
+subsection titles are the @code{$NAME} of the respective template.
+
+@menu
+* Generic Errors Templates::
+* kycaid-invalid-request::
+* oauth2-authentication-failure::
+* oauth2-authorization-failure::
+* oauth2-authorization-failure-malformed::
+* oauth2-bad-request::
+* oauth2-conversion-failure::
+* oauth2-provider-failure::
+* persona-exchange-unauthorized::
+* persona-load-failure::
+* persona-exchange-unpaid::
+* persona-logic-failure::
+* persona-invalid-response::
+* persona-network-timeout::
+* persona-kyc-failed::
+* persona-provider-failure::
+
+@end menu
+
+@node Generic Errors Templates,kycaid-invalid-request,,Template Customization
+@anchor{taler-exchange-manual generic-errors-templates}@anchor{59}
+@section Generic Errors Templates
+
+
+A number of templates are used for generic errors. These are:
+
+@quotation
+
+
+@itemize *
+
+@item
+kyc-proof-already-done (KYC process already completed)
+
+@item
+kyc-bad-request (400 Bad Request)
+
+@item
+kyc-proof-endpoint-unknown (404 Not Found for KYC logic)
+
+@item
+kyc-proof-internal-error (500 Internal Server Error)
+
+@item
+kyc-proof-target-unknown (404 Not Found for KYC operation)
+@end itemize
+@end quotation
+
+All of these templates are instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+message: String; optional, extended human-readable text provided to elaborate
+on the error, should be shown to provide additional context
+@end itemize
+@end quotation
+
+@node kycaid-invalid-request,oauth2-authentication-failure,Generic Errors Templates,Template Customization
+@anchor{taler-exchange-manual kycaid-invalid-request}@anchor{5a}
+@section kycaid-invalid-request
+
+
+The KYCaid plugin does not support requests to the
+@code{/kyc-proof/} endpoint (HTTP 400 bad request).
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+error: String; error code from the server
+
+@item
+error_details: String; optional error description from the server
+
+@item
+error_uri: optional URI with further details about the error from the server
+@end itemize
+@end quotation
+
+@node oauth2-authentication-failure,oauth2-authorization-failure,kycaid-invalid-request,Template Customization
+@anchor{taler-exchange-manual oauth2-authentication-failure}@anchor{5b}
+@section oauth2-authentication-failure
+
+
+The OAuth2 server said that the request was not
+properly authenticated (HTTP 403 Forbidden).
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+@end itemize
+@end quotation
+
+@node oauth2-authorization-failure,oauth2-authorization-failure-malformed,oauth2-authentication-failure,Template Customization
+@anchor{taler-exchange-manual oauth2-authorization-failure}@anchor{5c}
+@section oauth2-authorization-failure
+
+
+The OAuth2 server refused to return the KYC data
+because the authorization code provided was
+invalid (HTTP 403 Forbidden).
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+error: String; error code from the server
+
+@item
+error_message: String; error message from the server
+@end itemize
+@end quotation
+
+@node oauth2-authorization-failure-malformed,oauth2-bad-request,oauth2-authorization-failure,Template Customization
+@anchor{taler-exchange-manual oauth2-authorization-failure-malformed}@anchor{5d}
+@section oauth2-authorization-failure-malformed
+
+
+The server refused the authorization, but then provided
+a malformed response (HTTP 502 Bad Gateway).
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+debug: Bool; true if we are running in debug mode and are allowed to return HTML with potentially sensitive information
+
+@item
+server_response: Object; could be NULL; this includes the (malformed) OAuth2 server response, it should be shown to the use if "debug" is true
+@end itemize
+@end quotation
+
+@node oauth2-bad-request,oauth2-conversion-failure,oauth2-authorization-failure-malformed,Template Customization
+@anchor{taler-exchange-manual oauth2-bad-request}@anchor{5e}
+@section oauth2-bad-request
+
+
+The client made an invalid request (HTTP 400 Bad Request).
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+message: String; additional error message elaborating on what was bad about the request
+@end itemize
+@end quotation
+
+@node oauth2-conversion-failure,oauth2-provider-failure,oauth2-bad-request,Template Customization
+@anchor{taler-exchange-manual oauth2-conversion-failure}@anchor{5f}
+@section oauth2-conversion-failure
+
+
+Converting the KYC data into the exchange's internal
+format failed (HTTP 502 Bad Gateway).
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+debug: Bool; true if we are running in debug mode and are allowed to return HTML with potentially sensitive information
+
+@item
+converter: String; name of the conversion command that failed which was used by the Exchange
+
+@item
+attributes: Object; attributes returned by the conversion command, often NULL (after all, conversion failed)
+
+@item
+message: error message elaborating on the conversion failure
+@end itemize
+@end quotation
+
+@node oauth2-provider-failure,persona-exchange-unauthorized,oauth2-conversion-failure,Template Customization
+@anchor{taler-exchange-manual oauth2-provider-failure}@anchor{60}
+@section oauth2-provider-failure
+
+
+We did not get an acceptable response from the OAuth2
+provider (HTTP 502 Bad Gateway).
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+message: String; could be NULL; text elaborating on the details of the failure
+@end itemize
+@end quotation
+
+@node persona-exchange-unauthorized,persona-load-failure,oauth2-provider-failure,Template Customization
+@anchor{taler-exchange-manual persona-exchange-unauthorized}@anchor{61}
+@section persona-exchange-unauthorized
+
+
+The Persona server refused our request (HTTP 403 Forbidden from Persona, returned as a HTTP 502 Bad Gateway).
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+data: Object; data returned from Persona service, optional
+
+@item
+persona_http_status: Integer; HTTP status code returned by Persona
+@end itemize
+@end quotation
+
+@node persona-load-failure,persona-exchange-unpaid,persona-exchange-unauthorized,Template Customization
+@anchor{taler-exchange-manual persona-load-failure}@anchor{62}
+@section persona-load-failure
+
+
+The Persona server refused our request (HTTP 429 Too Many Requests from Persona, returned as a HTTP 503 Service Unavailable).
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+data: Object; data returned from Persona service, optional
+
+@item
+persona_http_status: Integer; HTTP status code returned by Persona
+@end itemize
+@end quotation
+
+@node persona-exchange-unpaid,persona-logic-failure,persona-load-failure,Template Customization
+@anchor{taler-exchange-manual persona-exchange-unpaid}@anchor{63}
+@section persona-exchange-unpaid
+
+
+The Persona server refused our request (HTTP 402 Payment REquired from Persona, returned as a HTTP 503 Service Unavailable).
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+data: Object; data returned from Persona service, optional
+
+@item
+persona_http_status: Integer; HTTP status code returned by Persona
+@end itemize
+@end quotation
+
+@node persona-logic-failure,persona-invalid-response,persona-exchange-unpaid,Template Customization
+@anchor{taler-exchange-manual persona-logic-failure}@anchor{64}
+@section persona-logic-failure
+
+
+The Persona server refused our request (HTTP 400, 403, 409, 422 from Persona, returned as a HTTP 502 Bad Gateway).
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+data: Object; data returned from Persona service, optional
+
+@item
+persona_http_status: Integer; HTTP status code returned by Persona
+@end itemize
+@end quotation
+
+@node persona-invalid-response,persona-network-timeout,persona-logic-failure,Template Customization
+@anchor{taler-exchange-manual persona-invalid-response}@anchor{65}
+@section persona-invalid-response
+
+
+The Persona server refused our request in an
+unexpected way; returned as a HTTP 502 Bad Gateway.
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+debug: Bool; true if we are running in debug mode and are allowed to return HTML with potentially sensitive information
+
+@item
+server_response: Object; could be NULL; this includes the (malformed) OAuth2 server response, it should be shown to the use if "debug" is true
+@end itemize
+@end quotation
+
+@node persona-network-timeout,persona-kyc-failed,persona-invalid-response,Template Customization
+@anchor{taler-exchange-manual persona-network-timeout}@anchor{66}
+@section persona-network-timeout
+
+
+The Persona server refused our request (HTTP 408 from Persona, returned as a HTTP 504 Gateway Timeout).
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+data: Object; data returned from Persona service, optional
+
+@item
+persona_http_status: Integer; HTTP status code returned by Persona
+@end itemize
+@end quotation
+
+@node persona-kyc-failed,persona-provider-failure,persona-network-timeout,Template Customization
+@anchor{taler-exchange-manual persona-kyc-failed}@anchor{67}
+@section persona-kyc-failed
+
+
+The Persona server indicated a problem with the KYC process, saying it was not completed.
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+persona_inquiry_id: String; internal ID of the inquiry within Persona, useful for further diagnostics by staff
+
+@item
+data: Object; could be NULL; this includes the server response, it contains extensive diagnostics, see Persona documentation on their @code{/api/v1/inquiries/$ID}.
+
+@item
+persona_http_status: Integer; HTTP status code returned by Persona
+@end itemize
+@end quotation
+
+@node persona-provider-failure,,persona-kyc-failed,Template Customization
+@anchor{taler-exchange-manual persona-provider-failure}@anchor{68}
+@section persona-provider-failure
+
+
+The Persona server refused our request (HTTP 500 from Persona, returned as a HTTP 502 Bad Gateway).
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+ec: Integer; numeric Taler error code, should be shown to indicate the
+error compactly for reporting to developers
+
+@item
+hint: String; human-readable Taler error code, should be shown for the
+user to understand the error
+
+@item
+data: Object; data returned from Persona service, optional
+
+@item
+persona_http_status: Integer; HTTP status code returned by Persona
+@end itemize
+@end quotation
+
+@node Benchmarking,FIXMEs,Template Customization,Top
+@anchor{taler-exchange-manual benchmarking}@anchor{69}@anchor{taler-exchange-manual exchangebenchmarking}@anchor{6a}
@chapter Benchmarking
@@ -3295,7 +3853,7 @@ some options that are determined at runtime by the setup logic provided by
@end menu
@node Choosing a bank,taler-bank-benchmark,,Benchmarking
-@anchor{taler-exchange-manual benchmark-choose-bank}@anchor{59}@anchor{taler-exchange-manual choosing-a-bank}@anchor{5a}
+@anchor{taler-exchange-manual benchmark-choose-bank}@anchor{6b}@anchor{taler-exchange-manual choosing-a-bank}@anchor{6c}
@section Choosing a bank
@@ -3315,7 +3873,7 @@ $ dropdb talercheck; createdb talercheck
$ taler-unified-setup.sh -emwt -c $CONF -f -u exchange-account-1
@end example
-libeufin is GNU Taler’s adapter to the core banking system using the EBICS
+libeufin is GNU Taler's adapter to the core banking system using the EBICS
banking protocol standard. It uses a Postgres database to persist data and is
thus much slower than fakebank. If your GNU Taler deployment uses libeufin in
production, it likely makes sense to benchmark with libeufin. When using the
@@ -3333,7 +3891,7 @@ $ taler-unified-setup.sh -emwt -c $CONF -ns -u exchange-account-2
@end example
@node taler-bank-benchmark,taler-exchange-benchmark,Choosing a bank,Benchmarking
-@anchor{taler-exchange-manual taler-bank-benchmark}@anchor{5b}
+@anchor{taler-exchange-manual taler-bank-benchmark}@anchor{6d}
@section taler-bank-benchmark
@@ -3355,12 +3913,12 @@ $ time taler-bank-benchmark -c "$CONF" -r 40 -p 1 -P1 -u exchange-account-2
@end example
For each `parallel' (@code{-p}) client, a number of `reserves' (@code{-r}) is first
-established by `transferring' money from a “user” account (42) to the
-Exchange’s account with the respective reserve public key as wire subject.
+established by `transferring' money from a "user" account (42) to the
+Exchange's account with the respective reserve public key as wire subject.
Processing is then handled by `parallel' (@code{-P}) service workers.
@node taler-exchange-benchmark,taler-aggregator-benchmark,taler-bank-benchmark,Benchmarking
-@anchor{taler-exchange-manual taler-exchange-benchmark}@anchor{5c}
+@anchor{taler-exchange-manual taler-exchange-benchmark}@anchor{6e}
@section taler-exchange-benchmark
@@ -3385,8 +3943,8 @@ $ taler-exchange-benchmark -c "$CONF".edited -u exchange-account-2 -L WARNING -n
@end example
For each `parallel' (@code{-p}) client, a number of `reserves' (@code{-r}) is first
-established by `transferring' money from a “user” account (42) to the
-Exchange’s account with the respective reserve public key as wire subject.
+established by `transferring' money from a "user" account (42) to the
+Exchange's account with the respective reserve public key as wire subject.
Next, the client will `withdraw' a `number of coins' (@code{-n}) from the
reserve and `deposit' them. Additionally, a `fraction' (@code{-R}) of the dirty
coins will then be subject to `refreshing'. For some deposits, the auditor
@@ -3398,7 +3956,7 @@ repetitions (i.e. if the operation failed the first time), total execution
time (operating system and user space) and other details.
@node taler-aggregator-benchmark,,taler-exchange-benchmark,Benchmarking
-@anchor{taler-exchange-manual taler-aggregator-benchmark}@anchor{5d}
+@anchor{taler-exchange-manual taler-aggregator-benchmark}@anchor{6f}
@section taler-aggregator-benchmark
@@ -3421,7 +3979,7 @@ time a single aggregator process in @code{--test} mode (asking it to terminate
as soon as there is no more pending work).
@node FIXMEs,Index,Benchmarking,Top
-@anchor{taler-exchange-manual fixmes}@anchor{5e}
+@anchor{taler-exchange-manual fixmes}@anchor{70}
@chapter FIXMEs
@@ -3430,11 +3988,11 @@ as soon as there is no more pending work).
@item
We should have some summary with the inventory of services that should be
-running. Systemd by default doesn’t show this nicely. Maybe suggest running
-“systemd list-dependencies taler-exchange.target”?
+running. Systemd by default doesn't show this nicely. Maybe suggest running
+"systemd list-dependencies taler-exchange.target"?
@item
-What happens when the TWG doesn’t like one particular outgoing transaction?
+What happens when the TWG doesn't like one particular outgoing transaction?
How to recover from that as a sysadmin when it happens in practice?
@end itemize
diff --git a/texinfo/taler-merchant-api-tutorial.texi b/texinfo/taler-merchant-api-tutorial.texi
index 6c6b6411..643d88da 100644
--- a/texinfo/taler-merchant-api-tutorial.texi
+++ b/texinfo/taler-merchant-api-tutorial.texi
@@ -19,7 +19,7 @@
@copying
@quotation
-GNU Taler 0.9.0, Feb 10, 2024
+GNU Taler 0.9.0, Mar 07, 2024
GNU Taler team
@@ -98,7 +98,7 @@ Advanced topics
@end menu
@node Introduction,Merchant Payment Processing,Top,Top
-@anchor{taler-merchant-api-tutorial gnu-taler-merchant-api-tutorial}@anchor{1}@anchor{taler-merchant-api-tutorial introduction}@anchor{2}@anchor{taler-merchant-api-tutorial merchant-api-tutorial}@anchor{3}
+@anchor{taler-merchant-api-tutorial id1}@anchor{1}@anchor{taler-merchant-api-tutorial introduction}@anchor{2}@anchor{taler-merchant-api-tutorial merchant-api-tutorial}@anchor{3}
@chapter Introduction
@@ -289,7 +289,7 @@ All endpoints for instances offer the same API. Thus, which instance
to be used is simply included in the base URL of the merchant backend.
@node Merchant Payment Processing,Giving Refunds,Introduction,Top
-@anchor{taler-merchant-api-tutorial id1}@anchor{9}@anchor{taler-merchant-api-tutorial merchant-payment-processing}@anchor{a}
+@anchor{taler-merchant-api-tutorial id2}@anchor{9}@anchor{taler-merchant-api-tutorial merchant-payment-processing}@anchor{a}
@chapter Merchant Payment Processing
@@ -449,7 +449,7 @@ the merchant’s obligations under the contract.
@cartouche
@quotation Note
You do not need to keep querying to notice changes
-to the order’s transaction status. The endpoints
+to the order's transaction status. The endpoints
support long polling, simply specify a @code{timeout_ms}
query parameter with how long you want to wait at most
for the order status to change to @code{paid}.
@@ -459,7 +459,7 @@ for the order status to change to @code{paid}.
@geindex refunds
@node Giving Refunds,Repurchase detection and fulfillment URLs,Merchant Payment Processing,Top
-@anchor{taler-merchant-api-tutorial id2}@anchor{f}
+@anchor{taler-merchant-api-tutorial id3}@anchor{f}
@chapter Giving Refunds
@@ -547,8 +547,8 @@ from the QR code).
The merchant backend then updates the session ID of the existing order to
the current session ID of the browser. When the payment status for the
-“new” unpaid order is checked (or already in long-polling), the backend
-detects that for the browser’s `session ID' and `fulfillment URL' there is an
+"new" unpaid order is checked (or already in long-polling), the backend
+detects that for the browser's `session ID' and `fulfillment URL' there is an
existing paid contract. It then tells the browser to immediately redirect to
the fulfillment URL where the already paid article is available.
@@ -567,7 +567,7 @@ considered to identify a resource you can pay for and thus do not have to be
unique.
@node Advanced topics,Index,Repurchase detection and fulfillment URLs,Top
-@anchor{taler-merchant-api-tutorial advanced-topics}@anchor{12}@anchor{taler-merchant-api-tutorial id3}@anchor{13}
+@anchor{taler-merchant-api-tutorial advanced-topics}@anchor{12}@anchor{taler-merchant-api-tutorial id4}@anchor{13}
@chapter Advanced topics
@@ -616,7 +616,7 @@ receipt is in the user’s wallet is also available as @code{last_session_id}
in the response to @code{/check-payment}.
@node Product Identification,The Taler Order Format,Session-Bound Payments,Advanced topics
-@anchor{taler-merchant-api-tutorial id4}@anchor{16}@anchor{taler-merchant-api-tutorial product-identification}@anchor{17}
+@anchor{taler-merchant-api-tutorial id5}@anchor{16}@anchor{taler-merchant-api-tutorial product-identification}@anchor{17}
@section Product Identification
@@ -637,7 +637,7 @@ contract with the same @code{resource_url} before, and if so replay the
previous payment.
@node The Taler Order Format,,Product Identification,Advanced topics
-@anchor{taler-merchant-api-tutorial id5}@anchor{18}@anchor{taler-merchant-api-tutorial the-taler-order-format}@anchor{19}
+@anchor{taler-merchant-api-tutorial id6}@anchor{18}@anchor{taler-merchant-api-tutorial the-taler-order-format}@anchor{19}
@section The Taler Order Format
@@ -948,8 +948,8 @@ render fields that they do not understand as a key-value list.
@printindex ge
-@anchor{taler-merchant-api-tutorial The-Taler-Order-Format}@w{ }
@anchor{c}@w{ }
+@anchor{taler-merchant-api-tutorial The-Taler-Order-Format}@w{ }
@c %**end of body
@bye
diff --git a/texinfo/taler-merchant.texi b/texinfo/taler-merchant.texi
index d233dd35..54e5e85a 100644
--- a/texinfo/taler-merchant.texi
+++ b/texinfo/taler-merchant.texi
@@ -19,7 +19,7 @@
@copying
@quotation
-GNU Taler 0.9.0, Feb 10, 2024
+GNU Taler 0.9.0, Mar 07, 2024
GNU Taler team
@@ -155,7 +155,7 @@ Customization
* Generating the Legal Terms::
* Adding translations::
* Updating legal documents::
-* Mustach HTML Templates::
+* Template Customization::
* Static files::
* Internationalization::
* Limitations::
@@ -164,6 +164,12 @@ Legal policies directory layout
* Example::
+Template Customization
+
+* request_payment::
+* offer_refund::
+* show_order_details::
+
Advanced topics
* taler-config::
@@ -183,7 +189,7 @@ Temporarily Abandoned Features
@end menu
@node Introduction,Terminology,Top,Top
-@anchor{taler-merchant-manual gnu-taler-merchant-backend-operator-manual}@anchor{1}@anchor{taler-merchant-manual introduction}@anchor{2}@anchor{taler-merchant-manual taler-merchant-backend-operator-manual}@anchor{3}
+@anchor{taler-merchant-manual introduction}@anchor{1}@anchor{taler-merchant-manual merchant-backend-operator-manual}@anchor{2}@anchor{taler-merchant-manual taler-merchant-backend-operator-manual}@anchor{3}
@chapter Introduction
@@ -235,17 +241,6 @@ We expect some moderate familiarity with the compilation and
installation of Free Software packages. An understanding of cryptography
is not required.
-This first chapter of the manual will give a brief overview of the
-overall Taler architecture, describing the environment in which the
-Taler backend operates. The second chapter then explains how to install
-the software, including key dependencies. The third chapter will explain
-how to configure the backend, including in particular the configuration
-of the bank account details of the merchant.
-
-The last chapter gives some additional information about advanced topics
-which will be useful for system administrators but are not necessary for
-operating a basic backend.
-
@node Architecture overview,,About this manual,Introduction
@anchor{taler-merchant-manual architecture-overview}@anchor{7}@anchor{taler-merchant-manual id2}@anchor{8}
@section Architecture overview
@@ -361,7 +356,7 @@ shop a request is intended for. Each instance has its own base URL in the
REST API of the merchant backend (@code{/instances/$INSTANCE/}). Each instance
can use its own bank accounts and keys for signing contracts. All major
accounting functionality is separate per instance. Access to each instance is
-controlled via a bearer token (to be set in the HTTP “Authorization” header).
+controlled via a bearer token (to be set in the HTTP "Authorization" header).
All instances share the same `database', top-level HTTP(S) address and the
main Taler configuration (especially the accepted `currency' and `exchanges').
@@ -369,12 +364,12 @@ main Taler configuration (especially the accepted `currency' and `exchanges').
@cartouche
@quotation Note
-This documentation does not use the term “user” or “username” in
+This documentation does not use the term "user" or "username" in
conjunction with instances as that might create confusion between
instances with paying customers using the system. We also do not use the
-term “account” in conjunction with instances, as that might cause
+term "account" in conjunction with instances, as that might cause
confusion with bank accounts. That said, conceptually it is of course
-acceptable to consider instances to be the “users” or “accounts” of a
+acceptable to consider instances to be the "users" or "accounts" of a
merchant backend and the bearer token is equivalent to a passphrase.
@end quotation
@end cartouche
@@ -392,7 +387,7 @@ To receive payments, an instance must have configured one or more bank
ideally also provide the address and credentials of an HTTP service
implementing the Taler Bank Revenue HTTP API. Given such a service, the GNU Taler merchant
backend can automatically reconcile wire transfers from the exchange to the
-merchant’s bank account with the orders that are being settled.
+merchant's bank account with the orders that are being settled.
This documentation exclusively uses the term `account' for the bank
accounts of a merchant or shop that may be associated with an instance.
@@ -517,13 +512,13 @@ in cases where the point-of-sale of a merchant is offline (and thus cannot
setup an order), or even in cases where a simple static QR code is desired to
accept payments or donations.
-When generating a template, the “summary” text of the contract and the
-“amount” to be paid by the customer can be fixed or left for the customer to
+When generating a template, the "summary" text of the contract and the
+"amount" to be paid by the customer can be fixed or left for the customer to
specify. If the customer is expected to provide either or both of these
values, the template link (or QR code) can specify a default value. For
-example, a cafeteria with a fixed price lunch may use a “lunch” template with
-both values fixed to the lunch price and the “lunch” product, a bakery might
-fix the summary to “baked goods” but allow the customer to enter the amount
+example, a cafeteria with a fixed price lunch may use a "lunch" template with
+both values fixed to the lunch price and the "lunch" product, a bakery might
+fix the summary to "baked goods" but allow the customer to enter the amount
based on the total price of the items being bought, and a charity may allow
donating an arbitrary amount and summary message while also suggesting default
values.
@@ -547,7 +542,7 @@ standard is described in RFC 6238@footnote{https://www.rfc-editor.org/rfc/rfc623
For GNU Taler merchant backends, OTP devices are used as a way to assure a
merchant without network connectivity that a customer made a digital
payment. The idea is described in depth in our SUERF Policy Brief@footnote{https://www.suerf.org/suer-policy-brief/69851/practical-offline-payments-using-one-time-passcodes}.
-To use this method, a merchant must configure the OTP device’s shared secret
+To use this method, a merchant must configure the OTP device's shared secret
in the merchant backend, and then associate the OTP device with a
@ref{10,,Templates}. Once the customer has paid, they are given a list of OTP
codes which must be shown to the merchant who can check that at least one of
@@ -566,7 +561,7 @@ payment.
The Taler backend can be used to verify that the exchange correctly wired all
of the funds to the merchant. However, if no Taler Bank Revenue HTTP API was provided for the respective bank account,
the backend does not have access to the incoming wire transfers of the
-merchant’s bank account. In this case, merchants should manually provide the
+merchant's bank account. In this case, merchants should manually provide the
backend with wire `transfer' data that specifies the `wire transfer subject'
and the amount that was received. Given this information, the backend can
detect and report any irregularities that might arise.
@@ -761,7 +756,7 @@ backend:
@itemize -
@item
-“Sphinx RTD Theme” Python package aka @code{python3-sphinx-rtd-theme}
+"Sphinx RTD Theme" Python package aka @code{python3-sphinx-rtd-theme}
on Debian-based systems (for GNUnet documentation support, can be
omitted if GNUnet is configured with @code{--disable-documentation})
@@ -858,7 +853,7 @@ In any case, if @code{make check} fails, please consider filing a
bug report with the Taler bug tracker@footnote{https://bugs.taler.net}.
There is no need to actually run a GNUnet peer to use the Taler merchant
-backend – all the merchant needs from GNUnet is a number of headers and
+backend -- all the merchant needs from GNUnet is a number of headers and
libraries!
After installing GNUnet, unpack the GNU Taler exchange tarball,
@@ -879,7 +874,7 @@ which requires you to run the last step as @code{root}. You have to specify
previous step.
There is no need to actually run a Taler exchange to use the Taler merchant
-backend – all the merchant needs from the Taler exchange is a few headers and
+backend -- all the merchant needs from the Taler exchange is a few headers and
libraries!
Please note that unlike most packages, if you want to run the @code{make check}
@@ -1470,16 +1465,16 @@ This is concern can be addressed using a properly configured
In order to setup an instance, you need the merchant backend to already be
-running, and you must either have the credentials for the “default” instance,
+running, and you must either have the credentials for the "default" instance,
or no instance must be configured at all yet.
To start, point your browser to @code{$PROTO://backend.$DOMAIN_NAME/}, replacing
-“$PROTO” with “https” or (rarely) “http” and “$DOMAIN_NAME” with your
+"$PROTO" with "https" or (rarely) "http" and "$DOMAIN_NAME" with your
organizations DNS domain or subdomain.
@cartouche
@quotation Note
-The label “backend” here is also just a suggestion, your administrator
+The label "backend" here is also just a suggestion, your administrator
can in principle choose any name.
@end quotation
@end cartouche
@@ -1517,7 +1512,7 @@ InstanceConfigurationMessage:
@end example
The @code{name} field will be shown as the name of your shop. The
-@code{address} field is expected to contain your shop’s physical address. The
+@code{address} field is expected to contain your shop's physical address. The
various defaults specify defaults for transaction fees your shop is willing to
cover, how long offers made to the customer are valid, and how long the
exchange has before it must wire the funds to your bank account. Those
@@ -1574,7 +1569,7 @@ the left of the page. The following page should be shown:
@image{taler-merchant-figures/no_default_account_yet,,,,png}
-Click on the blue “+” sign on the top right of the page to add a new
+Click on the blue "+" sign on the top right of the page to add a new
bank account. The following page should appear:
@image{taler-merchant-figures/enter_instance_details,,,,png}
@@ -1702,15 +1697,15 @@ SERVE = unix
UNIXPATH = "/some/path/here.sock"
@end example
-Do not use a UNIX domain socket path in “/tmp”: systemd (or other init
-systems) may give Web servers a private “/tmp” thereby hiding UNIX domain
-sockets created by other users/processes in “/tmp”.
+Do not use a UNIX domain socket path in "/tmp": systemd (or other init
+systems) may give Web servers a private "/tmp" thereby hiding UNIX domain
+sockets created by other users/processes in "/tmp".
If UNIX domain sockets are for some reason not possible, you `may' use a
host-based firewall to block access to the TCP port of the merchant backend,
but this is `not recommended'. If you do need a TCP socket, you should
-instead strongly consider using the “BIND_TO” option to at least bind it only
-to “localhost”.
+instead strongly consider using the "BIND_TO" option to at least bind it only
+to "localhost".
@node Reverse proxy configuration,Access control,Using UNIX domain sockets,Secure setup
@anchor{taler-merchant-manual id10}@anchor{35}@anchor{taler-merchant-manual reverse-proxy-configuration}@anchor{2a}
@@ -1783,8 +1778,8 @@ users of the default instance, and to @code{$BASE_URL/instances/$ID/private/} to
the authorized users of the instance @code{$ID}.
By default, the GNU Taler merchant backend simply requires the respective
-HTTP requests to include an “Authorization” header with a “Bearer” token
-set to the respective shared secret which must begin with “secret-token:”
+HTTP requests to include an "Authorization" header with a "Bearer" token
+set to the respective shared secret which must begin with "secret-token:"
(following RFC 8959).
Note that all of the other endpoints (without @code{/private/})
@@ -1840,7 +1835,7 @@ set-status 403
* Generating the Legal Terms::
* Adding translations::
* Updating legal documents::
-* Mustach HTML Templates::
+* Template Customization::
* Static files::
* Internationalization::
* Limitations::
@@ -1878,7 +1873,7 @@ setup and configure the legal conditions.
@section Terms of Service
-The service has an endpoint “/terms” to return the terms of service (in legal
+The service has an endpoint "/terms" to return the terms of service (in legal
language) of the service operator. Client software show these terms of
service to the user when the user is first interacting with the service.
Terms of service are optional for experimental deployments, if none are
@@ -1892,7 +1887,7 @@ in the configuration file for the service:
@itemize -
@item
-@code{TERMS_ETAG}: The current “Etag” to return for the terms of service.
+@code{TERMS_ETAG}: The current "Etag" to return for the terms of service.
This value must be changed whenever the terms of service are
updated. A common value to use would be a version number.
Note that if you change the @code{TERMS_ETAG}, you MUST also provide
@@ -1909,7 +1904,7 @@ process.
@section Privacy Policy
-The service has an endpoint “/pp” to return the terms privacy policy (in legal
+The service has an endpoint "/pp" to return the terms privacy policy (in legal
language) of the service operator. Clients should show the privacy policy to
the user when the user explicitly asks for it, but it should not be shown by
default. Privacy policies are optional for experimental deployments, if none
@@ -1923,7 +1918,7 @@ in the configuration file for the service:
@itemize -
@item
-@code{PRIVACY_ETAG}: The current “Etag” to return for the privacy policy.
+@code{PRIVACY_ETAG}: The current "Etag" to return for the privacy policy.
This value must be changed whenever the privacy policy is
updated. A common value to use would be a version number.
Note that if you change the @code{PRIVACY_ETAG}, you MUST also provide
@@ -1944,7 +1939,7 @@ The @code{TERMS_DIR} and @code{PRIVACY_DIR} directory structures must follow a
particular layout. You may use the same directory for both the terms of
service and the privacy policy, as long as you use different ETAGs. Inside of
the directory, there should be sub-directories using two-letter language codes
-like “en”, “de”, or “jp”. Each of these directories would then hold
+like "en", "de", or "jp". Each of these directories would then hold
translations of the current terms of service into the respective language.
Empty directories are permitted in case translations are not available.
@@ -1952,7 +1947,7 @@ Then, inside each language directory, files with the name of the value set as
the @code{TERMS_ETAG} or @code{PRIVACY_ETAG} must be provided. The extension of each
of the files should be typical for the respective mime type. The set of
supported mime types is currently hard-coded in the service, and includes
-“.epub”, “.html”, “.md”, “.pdf” and “.txt” files. If other files are present,
+".epub", ".html", ".md", ".pdf" and ".txt" files. If other files are present,
the service may show a warning on startup.
@menu
@@ -1965,7 +1960,7 @@ the service may show a warning on startup.
@subsection Example
-A sample file structure for a @code{TERMS_ETAG} of “tos-v0” would be:
+A sample file structure for a @code{TERMS_ETAG} of "tos-v0" would be:
@itemize -
@@ -2001,8 +1996,8 @@ TERMS_DIR/de/tos-v0.epub
TERMS_DIR/de/tos-v0.md
@end itemize
-If the user requests an HTML format with language preferences “fr” followed by
-“en”, the service would return @code{TERMS_DIR/en/tos-v0.html} lacking a version in
+If the user requests an HTML format with language preferences "fr" followed by
+"en", the service would return @code{TERMS_DIR/en/tos-v0.html} lacking a version in
French.
@node Generating the Legal Terms,Adding translations,Legal policies directory layout,Customization
@@ -2068,7 +2063,7 @@ You must restart the service whenever adding or updating legal documents or thei
@end quotation
@end cartouche
-@node Updating legal documents,Mustach HTML Templates,Adding translations,Customization
+@node Updating legal documents,Template Customization,Adding translations,Customization
@anchor{taler-merchant-manual updating-legal-documents}@anchor{44}
@section Updating legal documents
@@ -2086,18 +2081,129 @@ complete the translations and re-create the final files. Finally, do not
forget to update the @code{ETAG} configuration option to the new name and to
restart the service.
-@node Mustach HTML Templates,Static files,Updating legal documents,Customization
-@anchor{taler-merchant-manual mustach-html-templates}@anchor{45}
-@section Mustach HTML Templates
+@node Template Customization,Static files,Updating legal documents,Customization
+@anchor{taler-merchant-manual merchanttemplatecustomization}@anchor{45}@anchor{taler-merchant-manual template-customization}@anchor{46}
+@section Template Customization
+
+
+The installation process will install various HTML templates to be served to
+trigger the wallet interaction. You may change those templates to your own
+design. The templating language used is Mustach@footnote{https://gitlab.com/jbol/mustach}, and the templates are in the
+@code{share/taler/merchant/templates/} directory.
+
+The file names must be of the form @code{$NAME.$LANG.must} where @code{$NAME} is the
+name of the template and @code{$LANG} is the 2-letter language code of the
+template. English templates must exist and will be used as a fallback. If the
+browser (user-agent) has provided language preferences in the HTTP header and
+the respective language exists, the correct language will be automatically
+served.
+
+The following subsections give details about each of the templates. The
+subsection titles are the @code{$NAME} of the respective template.
+
+@menu
+* request_payment::
+* offer_refund::
+* show_order_details::
+
+@end menu
+
+@node request_payment,offer_refund,,Template Customization
+@anchor{taler-merchant-manual request-payment}@anchor{47}
+@subsection request_payment
+
+
+Page shown to request the user to make a payment.
+
+This template is instantiated using the following information:
+
+@quotation
-The installation process will install various HTML templates to be served
-to trigger the wallet interaction. You may change those templates to your
-own design. The templating language used is Mustach, and the templates
-are in the @code{share/taler/merchant/templates/} directory.
+@itemize *
+
+@item
+taler_pay_uri: String; the @code{taler://pay/} URI that must be given
+to the wallet to initiate the payment
+
+@item
+taler_pay_qrcode_svg: Image; an SVG image of the QR code with the
+@code{taler_pay_uri}.
+
+@item
+order_summary: String; a text summarizing the order
+
+@item
+order_status_url: URL of the merchant backend where the order status
+can be found, useful for long-polling to check if the order has been paid
+@end itemize
+@end quotation
+
+@node offer_refund,show_order_details,request_payment,Template Customization
+@anchor{taler-merchant-manual offer-refund}@anchor{48}
+@subsection offer_refund
+
+
+Page shown to offer a customer a refund.
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+taler_refund_uri: String; the @code{taler://pay/} URI that must be given
+to the wallet to initiate the payment
+
+@item
+taler_refund_qrcode_svg: Image; an SVG image of the QR code with the
+@code{taler_pay_uri}.
+
+@item
+refund_amount: Amount; how much did the merchant refund
+
+@item
+refund_taken: Amount; how much did the customer already take back in refunds
+
+@item
+order_summary: String; a text summarizing the order
+@end itemize
+@end quotation
+
+@node show_order_details,,offer_refund,Template Customization
+@anchor{taler-merchant-manual show-order-details}@anchor{49}
+@subsection show_order_details
+
+
+Page shown to the user when they go back to the payment page but
+no payment is required and no refund is present.
+
+This template is instantiated using the following information:
+
+@quotation
+
+
+@itemize *
+
+@item
+order_summary: String; a text summarizing the order
+
+@item
+contract_terms: Object; the full contract terms (shoud probably
+not be shown in full!)
+
+@item
+refund_amount: Amount; how much did the merchant refund
+
+@item
+refund_taken: Amount; how much did the customer already take back in refunds
+@end itemize
+@end quotation
-@node Static files,Internationalization,Mustach HTML Templates,Customization
-@anchor{taler-merchant-manual static-files}@anchor{46}
+@node Static files,Internationalization,Template Customization,Customization
+@anchor{taler-merchant-manual static-files}@anchor{4a}
@section Static files
@@ -2107,7 +2213,7 @@ logic to load a CSS file, but you can also put other resources such as
images or JavaScript.
@node Internationalization,Limitations,Static files,Customization
-@anchor{taler-merchant-manual internationalization}@anchor{47}
+@anchor{taler-merchant-manual internationalization}@anchor{4b}
@section Internationalization
@@ -2124,7 +2230,7 @@ returned. Otherwise, an internationalized file based on the language
preferences indicated by the browser is returned.
@node Limitations,,Internationalization,Customization
-@anchor{taler-merchant-manual limitations}@anchor{48}
+@anchor{taler-merchant-manual limitations}@anchor{4c}
@section Limitations
@@ -2134,7 +2240,7 @@ to increase the @code{ulimit} of the @code{taler-merchant-httpd} process if you
many static files. Note that Mustach templates do not increase the number of
open files.
-The backend determines the MIME type based on the file’s extension. The list
+The backend determines the MIME type based on the file's extension. The list
of supported extensions is hard-coded and includes common text and image
formats.
@@ -2143,7 +2249,7 @@ template expansion, and does not make use of scopes and other Mustach
features.
@node Upgrade procedure,Advanced topics,Customization,Top
-@anchor{taler-merchant-manual upgrade-procedure}@anchor{49}
+@anchor{taler-merchant-manual upgrade-procedure}@anchor{4d}
@chapter Upgrade procedure
@@ -2171,7 +2277,7 @@ REVOKE the database permissions. Finally, restart the merchant services
processes, either via your systemd or init system, or directly.
@node Advanced topics,Temporarily Abandoned Features,Upgrade procedure,Top
-@anchor{taler-merchant-manual advanced-topics}@anchor{4a}
+@anchor{taler-merchant-manual advanced-topics}@anchor{4e}
@chapter Advanced topics
@@ -2184,14 +2290,14 @@ processes, either via your systemd or init system, or directly.
@end menu
@node taler-config,Using taler-config,,Advanced topics
-@anchor{taler-merchant-manual taler-config}@anchor{4b}
+@anchor{taler-merchant-manual taler-config}@anchor{4f}
@section taler-config
@geindex taler-config
@node Using taler-config,Database Scheme,taler-config,Advanced topics
-@anchor{taler-merchant-manual using-taler-config}@anchor{4c}
+@anchor{taler-merchant-manual using-taler-config}@anchor{50}
@section Using taler-config
@@ -2245,7 +2351,7 @@ While the configuration file is typically located at
GNU Taler component using the @code{-c} option.
@node Database Scheme,Benchmarking,Using taler-config,Advanced topics
-@anchor{taler-merchant-manual database-scheme}@anchor{4d}@anchor{taler-merchant-manual merchantdatabasescheme}@anchor{4e}
+@anchor{taler-merchant-manual database-scheme}@anchor{51}@anchor{taler-merchant-manual merchantdatabasescheme}@anchor{52}
@section Database Scheme
@@ -2261,7 +2367,7 @@ The database scheme used by the merchant looks as follows:
@image{taler-merchant-figures/merchant-db,,,,png}
@node Benchmarking,,Database Scheme,Advanced topics
-@anchor{taler-merchant-manual benchmarking}@anchor{4f}@anchor{taler-merchant-manual merchantbenchmarking}@anchor{50}
+@anchor{taler-merchant-manual benchmarking}@anchor{53}@anchor{taler-merchant-manual merchantbenchmarking}@anchor{54}
@section Benchmarking
@@ -2293,7 +2399,7 @@ See Taler Exchange Manual for how to use @code{taler-unified-setup.sh} to setup
@end menu
@node Running taler-merchant-benchmark,,,Benchmarking
-@anchor{taler-merchant-manual running-taler-merchant-benchmark}@anchor{51}
+@anchor{taler-merchant-manual running-taler-merchant-benchmark}@anchor{55}
@subsection Running taler-merchant-benchmark
@@ -2379,7 +2485,7 @@ option:
@end itemize
@node Temporarily Abandoned Features,Index,Advanced topics,Top
-@anchor{taler-merchant-manual temporarily-abandoned-features}@anchor{52}
+@anchor{taler-merchant-manual temporarily-abandoned-features}@anchor{56}
@chapter Temporarily Abandoned Features
@@ -2389,7 +2495,7 @@ option:
@end menu
@node Installing Taler using Docker,,,Temporarily Abandoned Features
-@anchor{taler-merchant-manual installing-taler-using-docker}@anchor{53}
+@anchor{taler-merchant-manual installing-taler-using-docker}@anchor{57}
@section Installing Taler using Docker