summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNic Eigel <nic@eigel.ch>2024-04-23 20:41:54 +0200
committerNic Eigel <nic@eigel.ch>2024-04-23 20:41:54 +0200
commitf9e977e4dc9b2c09a995ef10fb429cd74f21f033 (patch)
tree41445a8e0f44b960d508f575f9df0725f32fb479
parent1b986bcb496f4e6fe5240c07fdc96355a4a70a4f (diff)
parent84b2619ce107c71cf70421625a8ce880dcbf7f3a (diff)
downloadexchange-f9e977e4dc9b2c09a995ef10fb429cd74f21f033.tar.gz
exchange-f9e977e4dc9b2c09a995ef10fb429cd74f21f033.tar.bz2
exchange-f9e977e4dc9b2c09a995ef10fb429cd74f21f033.zip
Merge remote-tracking branch 'origin/master' into dev/nic/real-time-auditor
-rw-r--r--.gitignore2
-rw-r--r--.gitmodules3
-rwxr-xr-xbootstrap2
-rw-r--r--contrib/exchange-tos-tops-v0.rst610
m---------contrib/gana0
-rw-r--r--src/exchange/taler-exchange-httpd_config.c12
-rw-r--r--src/exchange/taler-exchange-httpd_config.h2
-rw-r--r--src/include/taler_pq_lib.h25
-rw-r--r--src/pq/pq_query_helper.c200
-rw-r--r--src/pq/pq_result_helper.c5
-rw-r--r--src/util/Makefile.am2
-rw-r--r--src/util/payto.c72
-rw-r--r--src/util/test_payto.c39
13 files changed, 530 insertions, 444 deletions
diff --git a/.gitignore b/.gitignore
index 6bdf30ae5..bda987c5b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -171,3 +171,5 @@ contrib/tos/conf.py
contrib/pp/conf.py
src/auditordb/test_auditordb_checkpoints-postgres
src/auditordb/test_auditordb_checkpoints_postgres
+/.cache
+/compile_commands.json
diff --git a/.gitmodules b/.gitmodules
index 6039d44b9..01c07d992 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,3 @@
-[submodule "doc/api"]
- path = doc/api
- url = https://git.taler.net/api.git
[submodule "doc/prebuilt"]
path = doc/prebuilt
url = https://git.taler.net/docs.git
diff --git a/bootstrap b/bootstrap
index a2d0c3b5d..b749f0da9 100755
--- a/bootstrap
+++ b/bootstrap
@@ -42,7 +42,7 @@ fi
# Generate Makefile.am in contrib/
cd contrib
rm -f Makefile.am
-find wallet-core/aml-backoffice/ -type f -printf ' %p \\\n' | sort > Makefile.am.ext
+find wallet-core/aml-backoffice/ -type f | sort | awk '{print " " $1 " \\" }' > Makefile.am.ext
# Remove extra '\' at the end of the file
truncate -s -2 Makefile.am.ext
cat Makefile.am.in Makefile.am.ext >> Makefile.am
diff --git a/contrib/exchange-tos-tops-v0.rst b/contrib/exchange-tos-tops-v0.rst
index b4c0f8325..2217f781c 100644
--- a/contrib/exchange-tos-tops-v0.rst
+++ b/contrib/exchange-tos-tops-v0.rst
@@ -17,48 +17,85 @@ Diese AGB gelten als akzeptiert, sobald die Kundin bzw. der Kunde in der TALER A
Einverständnis erklärt hat.
[KOMMENTAR SK]
-1. Wenn es wirklich nötig ist, für "Taler Operations AG" eine Abkürzung zu verwenden, dann
-würde "TALER AG" aus Sicht der GNU-Community den Namen von GNU Taler sehr vereinnahmen.
-Mein Vorschlag wäre noch kürzer als TALER AG und birgt keine Verwechslungsgefahr,
+1. Wenn es wirklich nötig ist, für "Taler Operations AG" eine Abkürzung zu verwenden, dann
+würde "TALER AG" aus Sicht der GNU-Community den Namen von GNU Taler sehr vereinnahmen.
+Mein Vorschlag wäre noch kürzer als TALER AG und birgt keine Verwechslungsgefahr,
Vereinnahmung oder Anmaßung: TOPS AG
-2. Bitte lasst uns Gendersprache vermeiden und statt "**Kundin und Kunde**" lieber
+
+CG: Warum nicht einfach "TOPS" statt "TOPS AG"? AG ist auch nicht relevant.
+
+2. Bitte lasst uns Gendersprache vermeiden und statt "**Kundin und Kunde**" lieber
"**Nutzer**" verwenden und möglichst im Plural schreiben.
-3. **Zahlungsdienst** wäre IMHO rechtlich und sprachlich besser als "Bezahlungssystem".
+
+CG: Absolut, Gendersprache ist auslaenderfeindlich weil fuer nicht-Muttersprachler
+ deutlich schwerer. Aber besser *Kunden* statt *Nutzer* weil vmtl. Kunde ein Rechtsbegriff ist.
+
+3. **Zahlungsdienst** wäre IMHO rechtlich und sprachlich besser als "Bezahlungssystem".
Dieser Begriff entspricht dem englischen 'payment service provider' auch nach ISO 220022.
-4. Ich würde dem Zahlungsdienst keinen "Namen" geben - vor allem nicht TALER, weil das
-sofort mit einer Währung assoziiert wird. Taler ist jedoch keine Währung, sondern ein
-Bezahlsystem, das in unserem Fall in CHF denominiertes e-Geld emittiert, genauer
-gesagt TOPS-CHF. Wenn wir dafür eine Kurzbezeichnung dafür brauchen, dann wäre
+
+CG: OK.
+
+4. Ich würde dem Zahlungsdienst keinen "Namen" geben - vor allem nicht TALER, weil das
+sofort mit einer Währung assoziiert wird. Taler ist jedoch keine Währung, sondern ein
+Bezahlsystem, das in unserem Fall in CHF denominiertes e-Geld emittiert, genauer
+gesagt TOPS-CHF. Wenn wir dafür eine Kurzbezeichnung dafür brauchen, dann wäre
mein Vorschlag **eCHF**.
+
+Ja, bin auch gegen die Benennung, vor allem weil es eben kein *eigenes* System ist,
+nur weil ich einen Web-Server betreibe, besitze ich ja nicht das Web ;-).
+
5. Weitere Begriffsbestimmungen wären hier sinnvoll:
-- **Zahlungsdienst** bezeichnet die Dienstleistung der Taler Operations AG mit Sitz in
-Biel (Höheweg 80, 2502 Biel, Mitglied in der anerkannten Selbstregulierungsorganisation
+- **Zahlungsdienst** bezeichnet die Dienstleistung der Taler Operations AG mit Sitz in
+Biel (Höheweg 80, 2502 Biel, Mitglied in der anerkannten Selbstregulierungsorganisation
gemäss Art. 24 GwG, dem VQF - Verein zur Qualitätssicherung von Finanzdienstleistungen).
-- **Selbstregulierung** bezeichnet die Eigenschaft der Taler Operations AG als Mitglied
-einer Selbstregulierungsorganisation wie dem VQF und Betreiberin einer
-Sandbox-Dienstleistung nach Art. 6 Abs. 2 BankV ohne gewerbsmäßige Bankeneigenschaft
+
+CG: Nein, zu komplex. Weglassen.
+
+- **Selbstregulierung** bezeichnet die Eigenschaft der Taler Operations AG als Mitglied
+einer Selbstregulierungsorganisation wie dem VQF und Betreiberin einer
+Sandbox-Dienstleistung nach Art. 6 Abs. 2 BankV ohne gewerbsmäßige Bankeneigenschaft
(Nichtbank).
-- **Taler-Wallet** bezeichnet eine von Taler Operations AG bereitgestellte Software, die
-digitales Bargeld (e-Geld) verwaltet, welches der Zahlungsdienst emittiert und zur
+
+CG: Auch nicht gut. "TOPS ist Mitglied im VQF, einer FINMA-akkreditierten
+Selbstregulierungsorganisation. TOPS wird daher nicht direkt von der FINMA
+beaufsichtigt, sondern betreibt eine Finanzdienstleisung nach Art. 6 Abs. 2
+BankV ohne gewerbsmäßige Bankeneigenschaft (Nichtbank) und somit ohne
+Kundeneinlagensicherung."
+
+- **Taler-Wallet** bezeichnet eine von Taler Operations AG bereitgestellte Software, die
+digitales Bargeld (e-Geld) verwaltet, welches der Zahlungsdienst emittiert und zur
Zahlung an Begünstigte wieder einlöst.
-- **Nutzer** bezeichnet Inhaber von Taler-Wallets und damit Zahlende bzw. potenziell
+- **Nutzer** bezeichnet Inhaber von Taler-Wallets und damit Zahlende bzw. potenziell
Zahlende.
-- **Begünstigte** bezeichnet Händler, Betriebe, Verkäufer und sonstige Empfänger von
+
+CG: "Kunden sind Inhaber von durch TOPS signierten und in CHF denominierten Wertmarken
+welche in Taler-Wallets in Eigenverantwortung gespeichert werden und mit denen Kunden
+bezahlen koennen."
+
+- **Begünstigte** bezeichnet Händler, Betriebe, Verkäufer und sonstige Empfänger von
Überweisungen des Zahlungsdiensts.
-- **Überweisungen von Nutzern** bezeichnet die Überweisungen an den hier angebotenen
-Zahlungsdienst mit dem Ziel des Abhebens von e-Geld in ein persönliches Wallet, die als
-Publikumseinlagen bei Nichtbanken gelten. Taler Operations AG unterliegt nicht der
-Einlagensicherung und als Nichtbank auch nicht der Bankenaufsicht. Die entgegengenommen
-Gelder werden auf einem Sammelkonto aufbewahrt, um Zahlungen zwischen den Nutzern bzw.
-zwischen Zahlenden (Käufern) und Begünstigen (Verkäufern) auszuführen.
-- **Überweisungen an Begünstigte** bezeichnet die Überweisungen des Zahlungsdiensts an
-Händler, Betriebe, Verkäufer und sonstige Empfänger, die IBAN-Konten an Finanzinstituten in
-der Schweiz führen müssen, um die Zahlungen ihrer Kunden über den Zahlungsdienst empfangen
+- **Überweisungen von Nutzern** bezeichnet die Überweisungen an den hier angebotenen
+Zahlungsdienst mit dem Ziel des Abhebens von e-Geld in ein persönliches Wallet.
+
+CG: Rest weg-kuerzen:
+
+"", die als
+Publikumseinlagen bei Nichtbanken gelten. Taler Operations AG unterliegt nicht der
+Einlagensicherung und als Nichtbank auch nicht der Bankenaufsicht. Die entgegengenommen
+Gelder werden auf einem Sammelkonto aufbewahrt, um Zahlungen zwischen den Nutzern bzw.
+zwischen Zahlenden (Käufern) und Begünstigen (Verkäufern) auszuführen."" (alles streichen)
+
+- **Überweisungen an Begünstigte** bezeichnet die Überweisungen des Zahlungsdiensts an
+Händler, Betriebe, Verkäufer und sonstige Empfänger, die IBAN-Konten an Finanzinstituten in
+der Schweiz führen müssen, um die Zahlungen ihrer Kunden über den Zahlungsdienst empfangen
zu können.
-- **Geschäftsbeziehung** bezeichnet die Beziehung zwischen Taler Operations AG und den
-Begünstigten (Händler, Betriebe, Verkäufer und sonstige Empfänger). Sollten für über 12
-Monate keine Transaktionen an die Begünstigen erfolgen, gilt die Geschäftsbeziehung als
+- **Geschäftsbeziehung** bezeichnet die Beziehung zwischen Taler Operations AG und den
+Begünstigten (Händler, Betriebe, Verkäufer und sonstige Empfänger). Sollten für über 12
+Monate keine Transaktionen an die Begünstigen erfolgen, gilt die Geschäftsbeziehung als
beendet.
+
+CG: Taler Operations AG => TOPS (ueberall!).
+
[KOMMENTAR SK]
1.2. Zugang zu den TALER Dienstleistungen
@@ -70,6 +107,9 @@ durchzuführen ("**P2P-Zahlung**") und als Zahlungsmittel im stationären Handel
Automaten, online und in Apps bei autorisierten Händlern oder Dienstleistungsanbietern, die
TALER als Zahlungsmittel akzeptieren (nachfolgend "**Händler**"), eingesetzt werden
("**P2M-Zahlung**").
+
+CG: nein, nicht noch Haendler einfuehren, einfach bei **Beguenstigten** bleiben!
+
Die TALER AG kann sodann die Verwendung der TALER App auch im Ausland bei Händlern zulassen,
die an einem mit dem TALER Zahlungssystem kooperierenden ausländischen Zahlungssystem
angeschlossen sind. Solche Transaktionen werden vom ausländischen Zahlungssystem an das
@@ -80,24 +120,30 @@ Mobile-Marketing. Diese Mehrwertleistungen erlauben Kundinnen und Kunden u.a., C
Stempelkarten und weitere Kampagnen in der TALER App zu erhalten und zu verwalten, Stempel
zu sammeln und Treuegeschenke, Rabatte und Gutschriften über die TALER App einzulösen.
+CG: obiger Paragraph ist kompletter Unsinn, einfach komplett Streichen. Wir machen
+KEINE internationalen Zahlungen, und auch keine "Mehrwertleistungen". Einfach killen!
+
[NETZBON-NEU]
-Der Verein Soziale Ökonomie arbeitet an der Digitalisierung des NetzBon mit GNU Taler,
-einem digitalen Bezahlsystem, das komplett auf Freier Software und quelloffener Software
-(FLOSS, Free Libre and Open-Source Software) basiert und den Grundsätzen der Sozialen
-Ökonomie folgt. Die Taler Operations AG stellt dieses Bezahlsystem dem Verein Soziale
-Ökonomie zur Verfügung. Die Erweiterung von NetzBon mit eNetzBon soll die Effizienz und
-Wirtschaftlichkeit des NetzBon verbessern, ohne jedoch die physische Form des NetzBon in
+Der Verein Soziale Ökonomie arbeitet an der Digitalisierung des NetzBon mit GNU Taler,
+einem digitalen Bezahlsystem, das komplett auf Freier Software und quelloffener Software
+(FLOSS, Free Libre and Open-Source Software) basiert und den Grundsätzen der Sozialen
+Ökonomie folgt. Die Taler Operations AG stellt dieses Bezahlsystem dem Verein Soziale
+Ökonomie zur Verfügung. Die Erweiterung von NetzBon mit eNetzBon soll die Effizienz und
+Wirtschaftlichkeit des NetzBon verbessern, ohne jedoch die physische Form des NetzBon in
naher Zukunft abzuschaffen.
[NETZBON-NEU]
[KOMMENTAR SK]
-- Treffender als "P2M-Zahlung" wäre m.E. "C2M-Zahlung" (Customer-to-Merchant), weil die
-Zahlenden im Normalfall keine "Peers" sind, sondern einfach nur deren Kunden. P2P-Zahlungen
-liegen hingegen definitionsgemäß auch vor, wenn Zahlende von ihrem Wallet auf das Wallet
-eines Händlers Coins übertragen (Wallet-Exchange-Wallet).
+- Treffender als "P2M-Zahlung" wäre m.E. "C2M-Zahlung" (Customer-to-Merchant), weil die
+Zahlenden im Normalfall keine "Peers" sind, sondern einfach nur deren Kunden. P2P-Zahlungen
+liegen hingegen definitionsgemäß auch vor, wenn Zahlende von ihrem Wallet auf das Wallet
+eines Händlers Coins übertragen (Wallet-Exchange-Wallet).
- Müssen wir "P2M" als Begriff in den AGB unbedingt verwenden? Bitte diskutieren.
[KOMMENTAR SK]
+CG: Ich sehe gar nicht, das wir ueberhaupt P2P vs. P2M/C2M-Zahlungen in den AGBs unterscheiden muessen/sollten.
+
+
1.3. Technische Voraussetzungen
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -106,17 +152,33 @@ Die Nutzung der Zahlungsfunktion und der Mehrwertleistungen erfordert eine aktiv
Internetverbindung.
[NETZBON-NEU]
-Um die angebotenen Dienste wahrnehmen zu können, müssen Nutzer ein Taler-Wallet
-(elektronische Geldbörse) als Taler-App auf ihrem Smartphone oder als Erweiterung in einem
+Um die angebotenen Dienste wahrnehmen zu können, müssen Nutzer ein Taler-Wallet
+(elektronische Geldbörse) als Taler-App auf ihrem Smartphone oder als Erweiterung in einem
Browser auf dem PC installieren.
[NETZBON-NEU]
+CG: Nutzer => Kunden
+
[KOMMENTAR SK]
-- Mir ist nicht klar, was in die Leerzeilen kommen soll.
-- Der Satz darunter ist korrekt, aber "Mehrwertleistungen" ein TWINT-Begriff, den wir
-streichen sollten.
-- Ich empfehle, den Satz von NETZBON zu übernehmen, denn er erwähnt auch die
+- Mir ist nicht klar, was in die Leerzeilen kommen soll.
+
+CG: Ditto.
+
+- Der Satz darunter ist korrekt, aber "Mehrwertleistungen" ein TWINT-Begriff, den wir
+streichen sollten.
+
+CG: JA!
+
+- Ich empfehle, den Satz von NETZBON zu übernehmen, denn er erwähnt auch die
Browser-Erweiterungen und spricht allumfassend von "Diensten".
+
+CG: Ja. Bitte noch hinzufuegen: "Kunden sind frei in der Wahl ihrer Taler-Wallet
+ Anwendung. Beguenstigte sind ebenfalls frei in der Wahl ihrer Taler-Wallet
+ Anwendung bzw. ihres Taler-Backends. Verschiedene Loesungen werden von
+ diversen Anbietern bereitgestellt.
+ TOPS macht hier keine Einschraenkungen, und uebernimmt keine Gewaehrleistung.
+ Kunden sind eigenverantwortlich fuer die Sicherheit ihrer Taler-Wallets bzw.
+ Taler-Backends und der darin gespeicherten Wertmarken bzw. Transaktionsdaten."
[KOMMENTAR SK]
1.4. Registrierung und Identifizierung
@@ -134,51 +196,62 @@ Die TALER AG behält sich vor, Registrierungsgesuche ohne Angabe von Gründen ab
bereits erfolgte Registrationen wieder rückgängig zu machen.
[NETZBON-NEU]
-Es werden keine Daten von zahlenden Nutzern benötigt und es erfolgt auch keine
-Registrierung oder Kontenanlage der Nutzer. Sie können ihre Waren ohne Preisgabe ihrer
+Es werden keine Daten von zahlenden Nutzern benötigt und es erfolgt auch keine
+Registrierung oder Kontenanlage der Nutzer. Sie können ihre Waren ohne Preisgabe ihrer
Identität erwerben.
-Am eNetzBon-System teilnehmende Betriebe (Händler, Verkäufer) halten beim Verein Soziale
-Ökonomie interne eNetzBon-Konten, auf welche sie die ihnen übergebenen Bareinzahlungen von
-Nutzern (Kunden, Käufern) übertragen, damit die Nutzer dann eNetzBon in ihre persönlichen
-Wallets abheben können. Sie benötigen diese internen eNetzBon-Konten ebenfalls für den
+Am eNetzBon-System teilnehmende Betriebe (Händler, Verkäufer) halten beim Verein Soziale
+Ökonomie interne eNetzBon-Konten, auf welche sie die ihnen übergebenen Bareinzahlungen von
+Nutzern (Kunden, Käufern) übertragen, damit die Nutzer dann eNetzBon in ihre persönlichen
+Wallets abheben können. Sie benötigen diese internen eNetzBon-Konten ebenfalls für den
Empfang von Zahlungen der Nutzer für Güter (Waren und Dienstleistungen) der Betriebe.
-Die Nutzer leisten Ihre Einzahlung an das Bezahlsystem entweder in bar an den Verein
-Soziale Ökonomie oder an seine Mitglieder (Händler, Verkäufer) oder überweisen von ihrem
-bestehenden Girokonto bei einer Schweizer Bank an das Bankkonto des Vereins Soziale Ökonomie
-in der Währung Schweizer Franken (CHF), um dann wertbasierte elektronische Münzen in ihre
-Taler-Wallets abzuheben. Sie beziehen damit digitale Wertmarken, die wie ein
-Gutschein oder Prepaid-Guthaben zu betrachten sind. Sie werden auch als Token
-oder Coins bezeichnet. Die elektronischen Münzen werden in der Komplementärwährung
-"eNetzBon" im Taler-Wallet angezeigt und stellen Repräsentanten der Geldwerte auf dem
+Die Nutzer leisten Ihre Einzahlung an das Bezahlsystem entweder in bar an den Verein
+Soziale Ökonomie oder an seine Mitglieder (Händler, Verkäufer) oder überweisen von ihrem
+bestehenden Girokonto bei einer Schweizer Bank an das Bankkonto des Vereins Soziale Ökonomie
+in der Währung Schweizer Franken (CHF), um dann wertbasierte elektronische Münzen in ihre
+Taler-Wallets abzuheben. Sie beziehen damit digitale Wertmarken, die wie ein
+Gutschein oder Prepaid-Guthaben zu betrachten sind. Sie werden auch als Token
+oder Coins bezeichnet. Die elektronischen Münzen werden in der Komplementärwährung
+"eNetzBon" im Taler-Wallet angezeigt und stellen Repräsentanten der Geldwerte auf dem
Verrechnungskonto des Vereins Soziale Ökonomie in "NetzBon" dar.
[NETZBON-NEU]
[KOMMENTAR SK]
Statt des ersten Absatzes von 1.4.:
-Zur Nutzung des Zahlungsdiensts bei Überweisungen an **Begünstige** von über 15.000
-CHF/Jahr sind diese verpflichtet, sich in bei Taler Operations AG zu registrieren und die
+Zur Nutzung des Zahlungsdiensts bei Überweisungen an **Begünstige** von über 15.000
+CHF/Jahr sind diese verpflichtet, sich in bei Taler Operations AG zu registrieren und die
dabei verlangten Informationen zur Verfügung zu stellen. Die Taler Operations AG behält
sich vor, zur Erfüllung regulatorischer Vorgaben jederzeit weitere Informationen zu
-verlangen.
+verlangen.
-Taler Operations AG benötigt zur Registrierung der Händler deren IBAN, Adresse und
-Telefonnummer (AMLA-Akte) oder es gelten die Empfangslimiten für Händler. Zur
-Nutzung des Zahlungsdiensts gehen die Begünstigten eine Geschäftsbeziehung mit Taler
-Operations AG ein. Ab einer bestimmten Umsatzhöhe sind sie verpflichtet, sich zu
+Taler Operations AG benötigt zur Registrierung der Händler deren IBAN, Adresse und
+Telefonnummer (AMLA-Akte) oder es gelten die Empfangslimiten für Händler. Zur
+Nutzung des Zahlungsdiensts gehen die Begünstigten eine Geschäftsbeziehung mit Taler
+Operations AG ein. Ab einer bestimmten Umsatzhöhe sind sie verpflichtet, sich zu
registrieren und die verlangten Informationen zur Verfügung zu stellen.
-Es erfolgt keine Registrierung oder Kontenanlage der **Nutzer** bei Taler Operations AG
-oder dem Bezahlsystem bzw. Zahlungsdienst. Es werden jedoch die IBAN-Konten erfasst, von
-denen die eingehenden Überweisungen erfolgen. Die Nutzer brauchen für das Abheben in
-Taler-Wallets eine Schweizer Telefonnummer zum Empfang von TANs, die der Zahlungsdienst
-versendet. Es gelten Höchstabhebegrenzen von 5.000 CHF pro Monat bzw. 15.000 CHF pro Jahr
+Es erfolgt keine Registrierung oder Kontenanlage der **Nutzer** bei Taler Operations AG
+oder dem Bezahlsystem bzw. Zahlungsdienst. Es werden jedoch die IBAN-Konten erfasst, von
+denen die eingehenden Überweisungen erfolgen. Die Nutzer brauchen für das Abheben in
+Taler-Wallets eine Schweizer Telefonnummer zum Empfang von TANs, die der Zahlungsdienst
+versendet. Es gelten Höchstabhebegrenzen von 5.000 CHF pro Monat bzw. 15.000 CHF pro Jahr
für die Nutzer. Bei Zahlungen an andere Nutzer (P2P-Zahlungen) bestehen für Nutzer mit
Wohnsitz in der Schweiz Limiten von CHF 1.000 pro Monat und CHF 5.000 pro Kalenderjahr für
das Senden und das Empfangen von e-Geld.
[KOMMENTAR SK]
+CG: Bitte allgemeiner halten, die Grenzwerte CHF sollten gar nicht explizit in
+den AGBs auftauchen! Stattdessen: "Zur Nutzung des Zahlungsdienstes sind
+Kunden und Beguenstigte verpflichtet TOPS bei der Erfuellung regulatorischer
+Vorgaben zu unterstuetzen. Insbesondere kann TOPS Auskunft verlangen ueber die
+Identitaet von wirtschaftlich Beguenstigten. TOPS hat das Recht und die
+Pflicht ggf. Kunden und Beguenstigte von der Nutzung des Systems
+auszuschliessen sollten diese die notwendigen Auskuenfte verweigern oder
+inkorrekte Angaben machen."
+
+
+
1.5. Geheimhaltung
~~~~~~~~~~~~~~~~~~
@@ -192,7 +265,7 @@ AG, aber insbesondere in folgenden Fällen, aufgehoben:
* Gerichtliche Auseinandersetzungen.
[NETZBON-NEU]
-Es werden keine Daten von zahlenden Nutzern benötigt und auch nicht erfasst. Es erfolgt auch
+Es werden keine Daten von zahlenden Nutzern benötigt und auch nicht erfasst. Es erfolgt auch
keine Registrierung oder Kontenanlage der Nutzer.
[NETZBON-NEU]
@@ -201,6 +274,13 @@ keine Registrierung oder Kontenanlage der Nutzer.
- Ergänzen: Satz aus NETZBON-NEU
[KOMMENTAR SK]
+CG: "Personenbezogene Daten werden von TOPS nur im Rahmen der zur Erfuellung
+gesetzlicher Verpflichtungen notwendigen Umfang erhoben, verarbeitet,
+aufbewahrt oder weitergegeben. Beim Bezahlvorgang mit e-Geld werden keine
+Daten zur Identitaet vom zahlenden Nutzer erfasst."
+
+
+
1.6. Support
~~~~~~~~~~~~
@@ -210,17 +290,24 @@ TALER AG auch Dritte beigezogen werden, an welche hierfür Zugriff auf relevante
gegeben werden kann.
[KOMMENTAR SK]
-Ich würde hier die Haftung für die Aktionen der Dritten einschränken. Zugriff auf relevante
-Daten hätten dritte Parteien wie z.B. Auditoren oder Behörden übrigens auch nur bei Händlern
+Ich würde hier die Haftung für die Aktionen der Dritten einschränken. Zugriff auf relevante
+Daten hätten dritte Parteien wie z.B. Auditoren oder Behörden übrigens auch nur bei Händlern
in Bezug auf deren Daten und Umsätze. Bitte diskutieren.
[KOMMENTAR SK]
+CG: Ich wuerde nur das Deutsch korrigieren wollen:
+"TOPS stellt den Nutzern auf Anfrage technischen Support zur Verfügung. An
+der Erbringung dieses Supports können Dritte beteiligt sein. Diese erhalten
+hierfür Zugriff auf notwendige personenbezogene Daten zur Kommunikation mit
+den Nutzern."
+
+
1.7. Sorgfalts- und andere Pflichten der Kundinnen und Kunden
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Beim Umgang mit TALER sind insbesondere folgende Sorgfaltspflichten durch die Kundinnen und
Kunden einzuhalten:
-* Das Smartphone, PC, Notebookd etc. ist vor unbefugter Benutzung oder Manipulation zu
+* Das Smartphone, PC, Notebook etc. ist vor unbefugter Benutzung oder Manipulation zu
schützen (z.B. mittels Geräte- bzw. Displaysperre).
* Der Code für die Nutzung von TALER ist geheim zu halten, darf keinesfalls an andere
Personen weitergegeben, oder zusammen mit dem Smartphone aufbewahrt werden.
@@ -244,26 +331,37 @@ auf dem Smartphone einer Kundin bzw. Kunden vornimmt, der Kundin bzw. dem Kunden
zugerechnet.
[NETZBON-NEU]
-Die Nutzer müssen sich darüber im klaren sein, elektronisches Geld wie Bargeld zu
-behandeln und ebenso zu sichern, d.h. ein Backup der Wallet-Daten anzulegen. Die Nutzer der
-Taler-App sind daher verpflichtet, den Zugang zum digitalen Endgerät zu sichern und vor
-unbefugtem Zugriff zu bewahren. Sie müssen die Wallet-Daten mit einer Sicherungskopie auf
-einem anderen Gerät speichern. Die Exportfunktion des Wallet hilft dabei, ein Backup der
-Wallet-Daten anzulegen und zu speichern. Ein verlorenes Nutzergerät mit einem Wallet darauf
-ohne Backup der eNetzBon auf einem anderen Gerät oder Datenträger bedeutet einen
+Die Nutzer müssen sich darüber im klaren sein, elektronisches Geld wie Bargeld zu
+behandeln und ebenso zu sichern, d.h. ein Backup der Wallet-Daten anzulegen. Die Nutzer der
+Taler-App sind daher verpflichtet, den Zugang zum digitalen Endgerät zu sichern und vor
+unbefugtem Zugriff zu bewahren. Sie müssen die Wallet-Daten mit einer Sicherungskopie auf
+einem anderen Gerät speichern. Die Exportfunktion des Wallet hilft dabei, ein Backup der
+Wallet-Daten anzulegen und zu speichern. Ein verlorenes Nutzergerät mit einem Wallet darauf
+ohne Backup der eNetzBon auf einem anderen Gerät oder Datenträger bedeutet einen
Totalverlust des Gegenwerts des NetzBon-Guthabens.
[NETZBON-NEU]
[KOMMENTAR SK]
-- Streichen: * Der Code für die Nutzung von TALER ist geheim zu halten...
+- Streichen: * Der Code für die Nutzung von TALER ist geheim zu halten...
- Streichen: * Der gewählte Code darf nicht...
+CG: 2x Ja.
+
- Streichen: * Es ist dafür zu sorgen, dass... (ist wohl ein TWINT-Rest)
+
+CG: Besser: ummuenzen auf **Beguenstigte**. D.h. wenn wir einem Haendler Geld schulden
+aber z.B. KYC brauchen, liegt es erst einmal beim Haendler dies zu merken (im Backend!)
+und uns zu kontaktieren! Wenn wir nachforschen muessen, wer hinter einer IBAN steckt
+um dann KYC zu bekommen, soll dies ruhig kosten. Der Text zu Schuldsalden muss natuerlich
+raus, Schulden gibt es ja bei uns nicht!
+
- Stattdessen den Text aus NETZBON-NEU verwenden und ergänzen mit:
-* Es ist dafür zu sorgen, dass sich das Endgerät mit einem darauf installierten Taler-Wallet
-innerhalb eines Jahres nach der letzten Transaktion mit dem Zahlungsdienst über das Internet
-verbindet, ansonsten kann das Guthaben im Wallet verloren werden. Ein Erneuern des Guthabens
-erfolgt regulär einen Monat vor dem Ende der Gültigkeit des elektronischen Bargelds, das ein
+* Es ist dafür zu sorgen, dass sich das Endgerät mit einem darauf installierten Taler-Wallet
+innerhalb eines Jahres nach der letzten Transaktion mit dem Zahlungsdienst über das Internet
+verbindet, ansonsten kann das Guthaben im Wallet verloren werden. Ein Erneuern des Guthabens
+erfolgt regulär einen Monat vor dem Ende der Gültigkeit des elektronischen Bargelds, das ein
Jahr beträgt.
+
+CG: "das zum Abhebezeitpunkt ca. ein Jahr betraegt" (ca. ist wichtig, wir runden...!).
[KOMMENTAR SK]
1.8. Nutzung; Missbräuche
@@ -278,23 +376,28 @@ Ansprüchen Dritter verlangen. Dasselbe gilt im Falle von unzutreffenden oder un
Angaben der Kunden bei der Registrierung.
[NETZBON-NEU]
-Die Taler-App ermöglicht keine direkten Interaktionen, sondern dient ausschliesslich dem
-Bezug und der Verwendung von eNetzBon bei teilnehmenden Geschäften. Spenden sind möglich.
-Die Nutzer verpflichten sich, die Taler-App gemäss den geltenden Gesetzen und Vorschriften
-zu verwenden. Dem Nutzer ist es nur möglich, mit öffentlichen Shops zu interagieren. Mit
+Die Taler-App ermöglicht keine direkten Interaktionen, sondern dient ausschliesslich dem
+Bezug und der Verwendung von eNetzBon bei teilnehmenden Geschäften. Spenden sind möglich.
+Die Nutzer verpflichten sich, die Taler-App gemäss den geltenden Gesetzen und Vorschriften
+zu verwenden. Dem Nutzer ist es nur möglich, mit öffentlichen Shops zu interagieren. Mit
anderen Privatpersonen kann ein Nutzer nicht interagieren.
-Der Verein Soziale Ökonomie behält sich vor, bei Verletzung von Regeln oder Missbrauch
+Der Verein Soziale Ökonomie behält sich vor, bei Verletzung von Regeln oder Missbrauch
gewisse Konten zu löschen.
[NETZBON-NEU]
[KOMMENTAR SK]
- Satz 1: die Kundinnen und Kunden --> die **Nutzer**
-- Satz 2: Dasselbe gilt im Falle von unzutreffenden oder unvollständigen Angaben der
+- Satz 2: Dasselbe gilt im Falle von unzutreffenden oder unvollständigen Angaben der
**Begünstigten (Händler, Verkäufer)** bei der Registrierung.
+CG: Satz 2: bei P2P brauchen wir ggf. auch angaben von Nutzern, wuerde ich bei **Nutzern** lassen.
+
- In NETZBON-NEU streichen: Mit anderen Privatpersonen kann ein Nutzer nicht interagieren.
-- Ändern: Der Verein Soziale Ökonomie behält sich vor, bei Verletzung von Regeln oder
+
+CG: Genau, ist auch bei Netzbon *falsch*.
+
+- Ändern: Der Verein Soziale Ökonomie behält sich vor, bei Verletzung von Regeln oder
Missbrauch Konten **(von Händlern, Betrieben, Verkäufern) zu sperren bzw.** zu löschen.
[KOMMENTAR SK]
@@ -312,6 +415,9 @@ oder anwendbare Gesetze zurückzuführen sind;
Überlastungen der relevanten Informatiksysteme bzw. Netze;
* aufgrund von Zahlungen, die nicht oder verzögert verarbeitet werden;
* in Bezug auf Mehrwertleistungen;
+
+CG: streichen? Mehrwertleistungen machen wir doch gar nicht?
+
* die auf Handlungen oder Unterlassungen von Dritten (inkl. Hilfspersonen der TALER AG)
zurückzuführen sind,
es sei denn, diese Verluste oder Schäden sind auf grobe Fahrlässigkeit oder vorsätzliches
@@ -326,18 +432,22 @@ Anweisungen entstehen.
[KOMMENTAR SK]
- Vorschlag zur Ergänzung des obigen Absatzes:
-Die Taler Operations AG haftet bei der Erfüllung ihrer Verpflichtungen für jedes Verschulden
-ihrer Mitarbeiter und der Personen, die sie zur Erfüllung ihrer Verpflichtungen hinzuzieht.
-Soweit die Sonderbedingungen für einzelne Geschäftsbeziehungen oder sonstige Vereinbarungen
+Die Taler Operations AG haftet bei der Erfüllung ihrer Verpflichtungen für jedes Verschulden
+ihrer Mitarbeiter und der Personen, die sie zur Erfüllung ihrer Verpflichtungen hinzuzieht.
+Soweit die Sonderbedingungen für einzelne Geschäftsbeziehungen oder sonstige Vereinbarungen
etwas Abweichendes regeln, gehen diese Regelungen vor.
-Hat ein Nutzer des Taler-Bezahlsystems durch schuldhaftes Verhalten - zum Beispiel durch
-Verletzung von Mitwirkungspflichten wie regelmässige Sicherungen und Vorsichtsmassnahmen -
-zur Entstehung eines Schadens beigetragen, bestimmt sich nach den Grundsätzen des
-Mitverschuldens, in welchem Umfang Taler Operations AG und Nutzer den Schaden zu tragen
+Hat ein Nutzer des Taler-Bezahlsystems durch schuldhaftes Verhalten - zum Beispiel durch
+Verletzung von Mitwirkungspflichten wie regelmässige Sicherungen und Vorsichtsmassnahmen -
+zur Entstehung eines Schadens beigetragen, bestimmt sich nach den Grundsätzen des
+Mitverschuldens, in welchem Umfang Taler Operations AG und Nutzer den Schaden zu tragen
haben.
+CG: Nein, weglassen. Hilft uns nicht, nur mehr Text. AGB steht eh nicht ueber Recht und Gesetz.
+
- Streichen: * in Bezug auf Mehrwertleistungen;
+
+CG: genau.
[KOMMENTAR SK]
1.10. Kommunikation
@@ -351,13 +461,22 @@ sicher.
[KOMMENTAR SK]
- Satz 1: Die Kommunikation zwischen der TALER AG und den Begünstigten erfolgt grundsätzlich
über die TALER AG.
-- Satz 2: Bei Bedarf kann die TALER AG die registrierten Begünstigten (Händler, Betriebe,
+
+- Satz 2: Bei Bedarf kann die TALER AG die registrierten Begünstigten (Händler, Betriebe,
Verkäufer) kontaktieren.
-- Ergänzen: Falls eine Kommunikation zwischen der TALER AG und den Nutzern notwendig werden
-sollte, kann diese über ein Finanzinstitut (Bank des überweisenden Girokontos der Nutzer)
+- Ergänzen: Falls eine Kommunikation zwischen der TALER AG und den Nutzern notwendig werden
+sollte, kann diese über ein Finanzinstitut (Bank des überweisenden Girokontos der Nutzer)
oder/und über die Taler-Apps erfolgen, sofern dies technisch möglich ist.
[KOMMENTAR SK]
+CG: alles falsch. Die Kommunikation von TOPS zu Nutzern erfolgt grundsätzlich
+über Benachrichtigungen im GNU Taler Protokoll. Nutzer sind dafuer verantwortlich auf
+entsprechende Benachrichtigungen zu reagieren. TOPS hat das Recht, Transaktionen
+nicht auszufuehren bis Nutzer auf diesem Weg angeforderte rechtlich notwendige Daten
+bereitstellen.
+
+
+
1.11. Änderung AGB
~~~~~~~~~~~~~~~~~~
@@ -367,16 +486,25 @@ Kundin bzw. der Kunde die TALER App nicht mehr verwenden.
[KOMMENTAR SK]
Vorschlag statt des obigen Absatzes:
-Die Taler Operations AG behält sich das Recht vor, diese Allgemeinen Geschäftsbedingungen
-(AGB) ändern zu können. Die Nutzer werden über Änderungen in der Taler-App benachrichtigt.
-Die fortgesetzte Nutzung der Taler-App nach Änderungen der AGB gilt als Zustimmung zu den
+Die Taler Operations AG behält sich das Recht vor, diese Allgemeinen Geschäftsbedingungen
+(AGB) ändern zu können. Die Nutzer werden über Änderungen in der Taler-App benachrichtigt.
+Die fortgesetzte Nutzung der Taler-App nach Änderungen der AGB gilt als Zustimmung zu den
geänderten Bedingungen.
-Der Zahlungsdienst sendet automatisch Änderungen in den AGB und Datenschutzbestimmungen
-an die Taler-Wallets mit der Notwendigkeit der Bestätigung durch die Nutzer, nach der sie
+Der Zahlungsdienst sendet automatisch Änderungen in den AGB und Datenschutzbestimmungen
+an die Taler-Wallets mit der Notwendigkeit der Bestätigung durch die Nutzer, nach der sie
die Taler-App weiterverwenden können.
[KOMMENTAR SK]
+CG: "TOPS kann die AGB jederzeit ändern. Änderungen haben nur Wirkung auf nach der
+Änderung bezogene Wertmarken. Korrekte Wallets informieren Nutzer über Änderungen
+vor dem Bezug von neuen Wertmarken. Der Bezug von Wertmarken der TOPS nach
+Änderungen der AGB gilt als Zustimmung zu den geänderten Bedingungen."
+
+weil: du kannt den Leuten nicht verbieten, eine GPL-Wallet nicht zu benutzen wenn sie
+TOPS AGBs nicht zustimmen! Das waere GPL-widrig!
+
+
1.12. Vorbehalt gesetzlicher Regelungen und Beschränkung der Dienstleistungen
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -388,6 +516,9 @@ unterliegen oder unter Umständen Regeln des ausländischen Rechts verletzen. Di
Zahlungsfunktion ist grundsätzlich auf das Hoheitsgebiet der Schweiz beschränkt und darf im
Ausland nicht in Anspruch genommen werden. Zulässig sind aber internationale Zahlungen über
ein mit dem TALER Zahlungssystem kooperierendes ausländisches Zahlungssystem.
+
+CG: Letzten Satz hier streichen. Nix international.
+
Die TALER AG behält sich vor, das Angebot von TALER jederzeit und ohne vorherige Ankündigung
zu ändern, zu beschränken oder vollständig einzustellen, insbesondere aufgrund rechtlicher
Anforderungen, technischen Problemen, zwecks Verhinderung von Missbräuchen, auf behördliche
@@ -404,6 +535,8 @@ Die Kundinnen und Kunden sind verpflichtet, der TALER AG auf Verlangen Auskünft
erteilen, die die TALER AG benötigt, um den gesetzlichen oder internen Abklärungs- oder
Meldepflichten nachzukommen.
+CG: scheint mir vieles vorher gesagtes zu duplizieren. Ggf. oben Text streichen?
+
1.13. Geistiges Eigentum
~~~~~~~~~~~~~~~~~~~~~~~~
@@ -413,12 +546,22 @@ aus den vorliegenden AGB. Alle Immaterialgüterrechte verbleiben bei der TALER A
berechtigten Dritten.
[KOMMENTAR SK]
-Satz 1: Für die Dauer der **Nutzung** erhalten die Nutzer das unübertragbare, nicht
-ausschliessliche Recht zur Verwendung des Bezahlsystems. Die Vertragspartner (Händler,
-Betriebe, Verkäufer) als Begünstigte erhalten im Fall der Nutzung der P2P- oder
+Satz 1: Für die Dauer der **Nutzung** erhalten die Nutzer das unübertragbare, nicht
+ausschliessliche Recht zur Verwendung des Bezahlsystems. Die Vertragspartner (Händler,
+Betriebe, Verkäufer) als Begünstigte erhalten im Fall der Nutzung der P2P- oder
P2M-Funktion des Bezahlsystems dieses Recht wie alle anderen Nutzer eingeräumt.
[KOMMENTAR SK]
+CG: Wuerde ich alles streichen. IP-Unsinn. Besser:
+
+1.13: Trademark
+~~~~~~~~~~~~~~~
+
+Beguenstigte haben das nicht ausschliessliche Recht das Taler-Logo zu
+nutzen um zu signalisieren, dass sie Zahlungen mit Taler akzeptieren.
+
+
+
1.14 Datenschutz
~~~~~~~~~~~~~~~~
@@ -426,13 +569,26 @@ Die TALER AG verpflichtet sich hinsichtlich der Beschaffung, Bearbeitung und
Nutzung der personenbezogenen Daten der Kundinnen und Kunden die Bestimmungen der
schweizerischen Datenschutzgesetzgebung (insbesondere Bundesgesetz über den Datenschutz,
DSG, und Verordnung über den Datenschutz, VDSG) einzuhalten.
-Alle Systemdaten werden ausschliesslich in der Schweiz gehostet. Der KYC Prozess wird durch
+
+Alle Systemdaten werden ausschliesslich in der Schweiz gehostet.
+
+CG: ausschliesslich => primaer
+
+Der KYC Prozess wird durch
einen Dienstleister übernommen, welcher verpflichtet wird, die Daten ebenfalls nach Recht
-und Gesetz von der Schweiz zu sichern. Die eigentichen Daten des Kernsystems werden auf
+und Gesetz von der Schweiz zu sichern.
+
+CG: KYC Prozesse werden ggf. durch Dienstleister gesteuert. Diese sind ebenfalls verpflichtet
+die Daten ebenfalls nach Recht und Gesetz der Schweiz zu sichern.
+
+Die eigentichen Daten des Kernsystems werden auf
verschlüsselten Festplatten redundant (d.h. mit Backup) gespeichert und sind nur
autorisiertem Personal zugänglich. Autorisiertes Personal wird von TALER AG einer
Sicherheitsprüfung unterzogen. Das gesamte Design wurde strikt nach den Grundsätzen
-"Privacy-by-Design” und "Privacy-by-Default” umgesetzt. Taler nutzt blinde Signaturen, damit
+"Privacy-by-Design” und "Privacy-by-Default” umgesetzt.
+
+>>>
+Taler nutzt blinde Signaturen, damit
TALER AG nicht lernen kann, welcher legitimierte Nutzer bei welchem Verkäufer einkauft.
Weitere nicht-blinde digitale Signaturen werden eingesetzt, um alle Transaktionsschritte
gegenseitig zu bestätigen und auch extern z.B. gegenüber Auditoren überprüfbar zu machen.
@@ -443,30 +599,38 @@ Bankkonten haben bereits bankenseitig eine KYC-Prüfung der Käufer durchgeführ
deren Namen und Adressen in Verbindung mit der Bankkontennummer (IBAN). Von den Verkäufern
sind ebenfalls IBAN-Kontennummern bekannt. Diese können bei Bedarf zuständigen Behörden und
Auditoren offengelegt werden
+<<<
+CG: obigen >>>Paragraph<<< bitte komplett streichen. Nicht falsch, aber viel zu viele Details.
+
Weitere Informationen zu den Datenbearbeitungen finden sich in der Datenschutzerklärung auf
der Webseite der TALER AG (www.TALER.ch).
[NETZBON-NEU]
-Die Datenschutzrichtlinien sind in einem separaten Dokument festgelegt, das die Nutzer auch
-in der Taler-App finden. Der Schutz der persönlichen Daten und finanziellen Informationen
-hat für uns höchste Priorität. Daten der Nutzer werden nicht erhoben. Beim Bezahlen mit
-eNetzBon werden nur Ort, Uhrzeit und der die eNetzBon empfangende Betrieb (Händler,
-Verkäufer) erhoben. Die anonymisierten Daten des Kaufs und der Überweisung von NetzBon an
-den Betrieb werden im Falle einer Untersuchung der Finma erhoben. Dies betrifft jedoch nicht
-Nutzer, die mit eNetzBon zahlen, sondern die Transaktionen in NetzBon zwischen dem Verein
+Die Datenschutzrichtlinien sind in einem separaten Dokument festgelegt, das die Nutzer auch
+in der Taler-App finden. Der Schutz der persönlichen Daten und finanziellen Informationen
+hat für uns höchste Priorität. Daten der Nutzer werden nicht erhoben. Beim Bezahlen mit
+eNetzBon werden nur Ort, Uhrzeit und der die eNetzBon empfangende Betrieb (Händler,
+Verkäufer) erhoben. Die anonymisierten Daten des Kaufs und der Überweisung von NetzBon an
+den Betrieb werden im Falle einer Untersuchung der Finma erhoben. Dies betrifft jedoch nicht
+Nutzer, die mit eNetzBon zahlen, sondern die Transaktionen in NetzBon zwischen dem Verein
Soziale Ökonomie und den teilnehmenden Betrieben.
-Den Datenschutzbeauftragten des Vereins Soziale Ökonomie erreichen Sie beim Sitz des Vereins
-in der Klybeckstrasse 95, 4057 Basel, und per E-Mail an kontakt@sozialeoekonomie.org.
+Den Datenschutzbeauftragten des Vereins Soziale Ökonomie erreichen Sie beim Sitz des Vereins
+in der Klybeckstrasse 95, 4057 Basel, und per E-Mail an kontakt@sozialeoekonomie.org.
-Den Datenschutzbeauftragten der Taler Operations AG erreichen Sie per Post an Taler
+Den Datenschutzbeauftragten der Taler Operations AG erreichen Sie per Post an Taler
Operations AG, Höheweg 80, 2502 Biel, und über die unten genannten Kontaktmöglichkeiten.
[NETZBON-NEU]
[KOMMENTAR SK]
- Satz 1 von 1.14.: Kundinnen und Kunden --> Begünstigte
-- Beide Texte können ansonsten nach Korrektur orthografischer Fehler so bleiben und sollten
+
+CG: Besser: "Nutzer" (weil: beides, Kunden + Beguenstigte)
+
+- Beide Texte können ansonsten nach Korrektur orthografischer Fehler so bleiben und sollten
auch in den AGB so angezeigt werden. Bitte diskutieren und eventuell kürzen.
+
+CG: Ja, definitiv viel kuerzen (siehe oben).
[KOMMENTAR SK]
1.15. Dauer und Kündigung
@@ -478,21 +642,36 @@ Die Kundinnen und Kunden können ihr TALER Guthaben auf TALER jederzeit saldiere
schliessen, was als Kündigung gilt. Die TALER AG kann ihrerseits die Geschäftsbeziehung
jederzeit mit sofortiger Wirkung kündigen. Eine schriftliche Kündigung der TALER AG erfolgt
an die zuletzt bekanntgegebene (E-Mail-) Adresse der Kundin bzw. des Kunden.
+
+CG: Das ist Unsin, wir haben keine E-mail addressen von Kunden!
+
Erfolgt während 4 Jahren keine Transaktion, gilt die Geschäftsbeziehung als durch die Kundin
bzw. den Kunden gekündigt.
[KOMMENTAR SK]
-- Satz 1: Die Geschäftsbeziehung zwischen den Begünstigten (Händler, Betriebe, Verkäufer
-und sonstige Empfänger von Überweisungen des Zahlungsdienst an die begünstigten
+- Satz 1: Die Geschäftsbeziehung zwischen den Begünstigten (Händler, Betriebe, Verkäufer
+und sonstige Empfänger von Überweisungen des Zahlungsdienst an die begünstigten
IBAN-Konten) und dem Zahlungsdienstleister wird auf eine unbestimmte Dauer abgeschlossen.
-- Satz 2: Die Nutzer von Taler-Wallets können das Guthaben jederzeit an die Bankkonten
-zurücküberweisen lassen, von denen die Überweisung der Nutzer an den Zahlungsdienst
+
+CG: Ja.
+
+- Satz 2: Die Nutzer von Taler-Wallets können das Guthaben jederzeit an die Bankkonten
+zurücküberweisen lassen, von denen die Überweisung der Nutzer an den Zahlungsdienst
erfolgte, und so das Guthaben auf Null setzen.
-- Satz 3: Die TALER AG kann die Geschäftsbeziehung mit den Begünstigten jederzeit -
+
+CG: Auch OK, wobei "saldieren" ggf. besser ist.
+
+- Satz 3: Die TALER AG kann die Geschäftsbeziehung mit den Begünstigten jederzeit -
insbesondere in Missbrauchsfällen mit sofortiger Wirkung - kündigen.
-- Satz 4: Eine schriftliche Kündigung der TALER AG erfolgt an eine der zuletzt
+- Satz 4: Eine schriftliche Kündigung der TALER AG erfolgt an eine der zuletzt
bekanntgegebenen Adressen der Geschäftspartner (z.B. per E-Mail oder Brief).
- Satz 5: Streichen
+
+CG: Ja, wir brauchen ggf. noch etwas das TOPS bei Betriebsaufgabe die Nutzer ueber
+ das Taler-Protokoll informiert und die Wallets in diesem Fall die Kunden
+ auffordern werden, bestehende Restguthaben zu saldieren. Kunden die dies
+ unterlassen, verlieren dann nach 3 Monaten den Anspruch auf das Restguthaben.
+
[KOMMENTAR SK]
1.16. Übertragung
@@ -504,10 +683,14 @@ Gesellschaft der TALER Gruppe übertragen.
[KOMMENTAR SK]
Änderungsvorschlag:
-Die Taler Operations AG kann eine vertraglich geregelte Geschäftsbeziehung jederzeit an
+Die Taler Operations AG kann eine vertraglich geregelte Geschäftsbeziehung jederzeit an
eine andere Firma ihrer Muttergesellschaft übertragen.
[KOMMENTAR SK]
+CG: Nein, einfach "auf eine andere Gesellschaft uebertragen".
+Gar keine Einschraenkung auf Gruppe/Mutter, bitte!
+
+
1.17. Anwendbares Recht und Gerichtsstand
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -520,16 +703,26 @@ ausschliesslicher Gerichtsstand und Erfüllungsort. Für Kundinnen und Kunden mi
ausserhalb der Schweiz ist Zürich sodann auch Betreibungsort.
[NETZBON-NEU]
-Bei etwaigen Streitigkeiten oder Unstimmigkeiten, die aus der Nutzung von Taler, der
-Taler-App und eNetzBon entstehen, verpflichten sich die Parteien, zunächst eine gütliche
-Einigung anzustreben. Wenn keine Einigung erzielt werden kann, unterliegt die
+Bei etwaigen Streitigkeiten oder Unstimmigkeiten, die aus der Nutzung von Taler, der
+Taler-App und eNetzBon entstehen, verpflichten sich die Parteien, zunächst eine gütliche
+Einigung anzustreben. Wenn keine Einigung erzielt werden kann, unterliegt die
Streitbeilegung den geltenden schweizerischen Gesetzen und der Gerichtsbarkeit von Biel.
+
+CG: Netzbon is Biel!? Nicht Basel?
[NETZBON-NEU]
[KOMMENTAR SK]
- Satz 1: Kundinnen und Kunden --> Nutzern
+
+CG: immer ;-)
+
- Satz 2: Zürich --> Biel
+
+CG: TOPS: Ich denke Bern, nicht Biel (so was ist doch bestimmt Kantonal!?)
+
- Satz aus NETZBON-NEU ebenfalls verwenden
+
+CG: OK.
[KOMMENTAR SK]
2. Zahlungsfunktionen
@@ -542,16 +735,22 @@ Die Kundinnen und Kunden können bis CHF "___________________".
Bei Zahlungen an andere TALER Nutzer (P2P-Zahlung) bestehen für Kundinnen und Kunden mit
Wohnsitz in der Schweiz Limiten von CHF 1‘000 pro Monat und CHF 5‘000 pro Kalenderjahr für
das Senden und das Empfangen von Geld
+
+CG: 1000/5000 fuer das Abheben von e-Geld von einem Girokonto bzw. fuer den Empfang von
+ P2P Zahlungen zwischen Taler-Wallets mit bestaetigter Schweizer Mobilfunknummer.
+
Die TALER AG behält sich vor, diese Limite jederzeit zu senken oder zu erhöhen bzw.
zusätzliche Limite einzuführen, insbesondere aus regulatorischen sowie Sicherheitsgründen.
[KOMMENTAR SK]
Änderungsvorschlag für Satz 3:
-Die TALER AG behält sich insbesondere aus regulatorischen Gründen vor, die Limite jederzeit
-zu senken oder zu erhöhen. Die Änderung wird in aktualisierten AGB angezeigt, welche die
+Die TALER AG behält sich insbesondere aus regulatorischen Gründen vor, die Limite jederzeit
+zu senken oder zu erhöhen. Die Änderung wird in aktualisierten AGB angezeigt, welche die
Nutzer vor der weiteren Nutzung des Zahlungsdiensts zu bestätigen haben.
[KOMMENTAR SK]
+CG: Das wir die AGB aendern koennen haben wir bereits gesagt, wuerde ich nicht doppeln.
+
2.2. Aufbuchen
~~~~~~~~~~~~~~
@@ -572,28 +771,30 @@ Ladeoption mehrere Tage Zeit in Anspruch nehmen.
Die Kundin bzw. der Kunde erteilt für den Fall der Einrichtung der LSV-Anbindung der TALER
AG die Ermächtigung, einzelne Daten zwecks Bonitätsprüfung an Dritte weitergeben zu können.
+CG: Den letzten Satz streichen.
+
[NETZBON-KOMMENTAR]
-Die Nutzer können eNetzBon durch zwei Verfahren erwerben bzw. das Guthaben auf ihrem Wallet
+Die Nutzer können eNetzBon durch zwei Verfahren erwerben bzw. das Guthaben auf ihrem Wallet
erhöhen:
-a. Per Bareinzahlung durch Nutzung der "Taler Cashier-App" in der
-Markthalle und in der Buchhandlung, wo ein Nutzer den abzuhebenden Betrag in CHF an das
-Personal bar übergeben kann und dann durch das Wallet der Betrag in CHF abgehoben und im
+a. Per Bareinzahlung durch Nutzung der "Taler Cashier-App" in der
+Markthalle und in der Buchhandlung, wo ein Nutzer den abzuhebenden Betrag in CHF an das
+Personal bar übergeben kann und dann durch das Wallet der Betrag in CHF abgehoben und im
Wallet in eNetzBon umgetauscht wird.
-b. Per Banküberweisung an das PostFinanz-Konto des Vereins Soziale Ökonomie. Das Wallet
-hilft dabei den Nutzern, den Abhebevorgang einzuleiten und gibt dazu einen Verwendungszweck
-an, d.h. eine mehrstellige Kombination aus Nummer und Buchstaben, die im Kontoauszug des
-persönlichhen Girokontos des jeweiligen Nutzers als Buchungstext angezeigt wird. Mit diesem
-Verwendungszweck kann das Wallet den Betrag zuerst in CHF abheben und dann im Wallet in
-eNetzBon umtauschen.
+b. Per Banküberweisung an das PostFinanz-Konto des Vereins Soziale Ökonomie. Das Wallet
+hilft dabei den Nutzern, den Abhebevorgang einzuleiten und gibt dazu einen Verwendungszweck
+an, d.h. eine mehrstellige Kombination aus Nummer und Buchstaben, die im Kontoauszug des
+persönlichhen Girokontos des jeweiligen Nutzers als Buchungstext angezeigt wird. Mit diesem
+Verwendungszweck kann das Wallet den Betrag zuerst in CHF abheben und dann im Wallet in
+eNetzBon umtauschen.
-Der Preis eines eNetzBon beträgt 1 CHF. Bitte beachten Sie, dass NetzBon nicht
+Der Preis eines eNetzBon beträgt 1 CHF. Bitte beachten Sie, dass NetzBon nicht
rückerstattbar sind, daher müssen sie ausgegeben werden.
-In der Phase der Markteinführung von eNetzBon werden keine Transaktionskosten von Nutzern
-erhoben. Bei der Bezahlung mit eNetzBon fallen daher vorerst keine Transaktionsgebühren an.
-Diese Allgemeinen Geschäftsbedingungen erlauben jedoch die Möglichkeit zukünftiger
+In der Phase der Markteinführung von eNetzBon werden keine Transaktionskosten von Nutzern
+erhoben. Bei der Bezahlung mit eNetzBon fallen daher vorerst keine Transaktionsgebühren an.
+Diese Allgemeinen Geschäftsbedingungen erlauben jedoch die Möglichkeit zukünftiger
Änderungen der Gebührenordnung.
[NETZBON-KOMMENTAR]
@@ -602,10 +803,15 @@ Diese Allgemeinen Geschäftsbedingungen erlauben jedoch die Möglichkeit zukünf
- Satz 5: durch die Kundinnen und Kunden --> durch die Nutzer
- Satz 6: Das TALER Guthaben --> Guthaben der Nutzer in Wallets
- Satz 7: Kundinnen und Kunden --> Nutzer
-- Satz 8: Aufladen bzw. Entladen des TALER Guthabens --> Erhöhen und Verringern des
+- Satz 8: Aufladen bzw. Entladen des TALER Guthabens --> Erhöhen und Verringern des
Guthabens im Wallet
-- Satz 9: Diesen Satz kann ich nicht interpretieren (was ist LSV-Anbindung?); Kundin bzw.
+
+CG: alle OK.
+
+- Satz 9: Diesen Satz kann ich nicht interpretieren (was ist LSV-Anbindung?); Kundin bzw.
der Kunde --> Nutzer
+
+CG: LSV Lastschriftverfahren. Streichen, machen wir *nie*.
[KOMMENTAR SK]
2.3. Abbuchen
@@ -617,6 +823,9 @@ Das Entladen muss "_____________________________________________".
Was soll in den Platzhalter kommen?
[KOMMENTAR SK]
+CG: ... auf ein Schweizer Bankkonto erfolgen. Internationale Zahlungen sind nicht erlaubt.
+
+
2.4. Zahlen mit TALER
~~~~~~~~~~~~~~~~~~~~~
@@ -627,13 +836,18 @@ und an andere TALER Nutzer im Rahmen der geltenden Limiten bezahlen.
Bei einer Bezahlung wird der entsprechende Betrag direkt vom TALER Wallet abgebucht. Es muss
mindestes im TALER Wallet in Höhe des Transaktionsbetrags verfügbar sein.
+CG: Mehrwertleistungen streichen.
+
[KOMMENTAR SK]
-Änderungsvorschlag für Satz 1: Die Nutzer können mit dem im Smartphone oder Webbrowser
-installierten Taler-Wallet innerhalb der geltenden Limiten bezahlen bei natürlichen und
-juristischen Personen, die diese Bezahloption akzeptieren und ein Schweizer Bankkonto zum
+Änderungsvorschlag für Satz 1: Die Nutzer können mit dem im Smartphone oder Webbrowser
+installierten Taler-Wallet innerhalb der geltenden Limiten bezahlen bei natürlichen und
+juristischen Personen, die diese Bezahloption akzeptieren und ein Schweizer Bankkonto zum
Geldempfang führen (z.B. Ladengeschäfte, Webshops, Apps und sonstige Begünstigte).
[KOMMENTAR SK]
+CG: Scheint mir aequivalent, ist mir egal ;-).
+
+
2.5. Belastung der Bezahlungen
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -642,64 +856,104 @@ dem TALER Wallet von ihrem Smartphone aus erfolgt sind, selbst wenn diese Zahlun
ihre Zustimmung erfolgt sind.
[KOMMENTAR SK]
-Es handelt sich bei dem Guthaben auf den Wallets der Nutzer um digitales Bargeld, dessen
-Eigentümerschaft technisch nicht ermittelbar ist. Jeder Teil des Guthabens erscheint in
-Form einer Datei mit alphanumerischen Zeichenfolgen und wird beim Abheben ins Wallet blind
-signiert, wodurch der Signatar keinen Rückschluss auf den Eigentümer des eingelösten
-Guthabens ziehen kann. Ist ein Guthaben eingelöst worden, kann dieses nicht noch ein
-weiteres Mal eingelöst werden. Wer das Guthaben zuerst einlöst, hat den Wert des Guthabens
+Es handelt sich bei dem Guthaben auf den Wallets der Nutzer um digitales Bargeld, dessen
+Eigentümerschaft technisch nicht ermittelbar ist. Jeder Teil des Guthabens erscheint in
+Form einer Datei mit alphanumerischen Zeichenfolgen und wird beim Abheben ins Wallet blind
+signiert, wodurch der Signatar keinen Rückschluss auf den Eigentümer des eingelösten
+Guthabens ziehen kann. Ist ein Guthaben eingelöst worden, kann dieses nicht noch ein
+weiteres Mal eingelöst werden. Wer das Guthaben zuerst einlöst, hat den Wert des Guthabens
zur Zahlung verwendet.
[KOMMENTAR SK]
+CG: Smartphone ist zu einschraenkend (kann ja auch ein Browser oder CLI-wallet sein!)
+CG: KOMMENTAR SK ist zu lang. Eher was von oben zum Thema Eigenverantwortung/Eigenverwahrung
+ runterziehen?
+
+
2.6. Preise und Drittvergütungen
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Die Installation von TALER und die Nutzung der damit verbundenen Dienstleistungen sind
grundsätzlich kostenlos.
+
+CG: Streichen. TOPS hat *nichts* mit der Installation zu tun. Die machen ggf. Dritte,
+ und da haben wir auch nichts zu zu sagen, was da die Kosten sind!
+
Internationale Zahlungen in Fremdwährungen werden automatisch zu einem von einem Dritten
gestellten Wechselkurs in Schweizer Franken umgerechnet. Die TALER AG kann diesen
Wechselkurs erhöhen (sog. Mark-up) sowie eine zusätzliche Gebühr für die
Fremdwährungstransaktion verlangen. Der Mark-up und die Gebühren fliessen alleine der TALER
-AG zu. Den Kundinnen und Kunden wird in jedem Fall der finale Betrag in Schweizer Franken
+AG zu.
+
+CG: Streichen, wir machen keine Konvertierung.
+
+Den Kundinnen und Kunden wird in jedem Fall der finale Betrag in Schweizer Franken
zur Bestätigung angezeigt. Kommt es zu einer Rückabwicklung einer internationalen Zahlung,
so wird diese zum dannzumal gestellten Wechselkurs durchgeführt. Die Kundinnen und Kunden
tragen das entsprechende Wechselkursrisiko.
+
+CG: Streichen, wir machen keine Konvertierung.
+
TALER kann für die Nutzung von Aufladeoptionen Gebühren erheben. Die Kundinnen und Kunden
werden in diesem Fall vor der Nutzung der
kostenpflichtigen Aufladeoption in der TALER App über die zu bezahlenden Gebühren
informiert.
+
+CG: Archivieren, nur wenn wir das wirklich machen in die AGB aufnehmen!
+
Änderungen von Preisen und die Einführung neuer Preise werden grundsätzlich in der TALER App
bekanntgegeben. Eine Anpassung gilt als genehmigt, wenn die Kundin bzw. der Kunde nicht vor
Inkrafttreten der Änderung den Vertrag kündigt (Ziffer 1.15). Änderungen von Preisen für
-internationale Zahlungen müssen nicht separat bekanntgegeben werden. Den Kundinnen und
+internationale Zahlungen müssen nicht separat bekanntgegeben werden.
+
+CG: Streichen, wir machen keine internationalen Zahlungen.
+
+Den Kundinnen und
Kunden wird aber immer der Endbetrag in Schweizer Franken inkl. allen Gebühren angezeigt,
+
+
bevor eine internationale Zahlung bestätigt wird.
+
+CG: Streichen, wir machen keine internationalen Zahlungen.
+
+
Bei P2M-Zahlungen und der Inanspruchnahme von Mehrwertleistungen erhält die TALER AG unter
Umständen gewisse Vergütungen von Dritten. Diese Drittvergütungen sind hier detailliert
-beschrieben. Sie erlauben der TALER AG, die Benutzung der TALER App grundsätzlich kostenlos
+beschrieben.
+
+CG: Streichen, wir machen keine Mehrwertleistungen.
+
+Sie erlauben der TALER AG, die Benutzung der TALER App grundsätzlich kostenlos
anzubieten. **Die Kundin bzw. der Kunde verzichtet auf die Erstattung sämtlicher
Drittvergütungen, die die TALER AG in der Vergangenheit erhalten hat und in Zukunft erhalten
könnte.**
+CG: Archivieren: wir bekommen keine Drittverguetungen, und *TOPS* bietet die Taler App gar nicht an!
+
+
[KOMMENTAR SK]
- Satz 1: --> Die Installation von Taler-Wallets ...
-- Satz 2: Internationale **eingehende** Zahlungen in Fremdwährungen werden automatisch zu
-einem von **der Schweizerischen Nationalbank** festgestellten Wechselkurs in Schweizer
+- Satz 2: Internationale **eingehende** Zahlungen in Fremdwährungen werden automatisch zu
+einem von **der Schweizerischen Nationalbank** festgestellten Wechselkurs in Schweizer
Franken umgerechnet.
-- Satz 6: Bei Rückbuchungen aus dem Guthaben in Taler-Wallets auf Nutzeranweisung oder bei
-erfolglosem Abheben ins Wallet erfolgen diese in derselben internationalen Fremdwährung wie
-die Eingangszahlung und verringert um anfallende Gebühren für Rücküberweisungen und
+- Satz 6: Bei Rückbuchungen aus dem Guthaben in Taler-Wallets auf Nutzeranweisung oder bei
+erfolglosem Abheben ins Wallet erfolgen diese in derselben internationalen Fremdwährung wie
+die Eingangszahlung und verringert um anfallende Gebühren für Rücküberweisungen und
Fremdwährungstransaktionen.
- Satz 7 streichen
- Satz 8: TALER --> Taler Operations AG
-- Satz 11: Eine Anpassung gilt als genehmigt, wenn die **Nutzer** die aktualisierten AGB in
-der App akzeptieren. Eine Anpassung gilt als genehmigt, wenn die Begünstigten (Händler,
+- Satz 11: Eine Anpassung gilt als genehmigt, wenn die **Nutzer** die aktualisierten AGB in
+der App akzeptieren. Eine Anpassung gilt als genehmigt, wenn die Begünstigten (Händler,
Betriebe, Verkäufer) nicht vor Inkrafttreten der Änderung den Vertrag kündigen.
-- Sätze 14 bis Ende: Bitte streichen, denn "Mehrwertleistungen" umfassen bei TWINT z.B.
-“Mobile-Marketing-Kampagnen”, Rabatt- und Kundenbindungsprogramme und die "Später
-zahlen"-Funktion. Diese Funktionen sind jedoch für das Taler-Bezahlsystem abträglich und
+- Sätze 14 bis Ende: Bitte streichen, denn "Mehrwertleistungen" umfassen bei TWINT z.B.
+“Mobile-Marketing-Kampagnen”, Rabatt- und Kundenbindungsprogramme und die "Später
+zahlen"-Funktion. Diese Funktionen sind jedoch für das Taler-Bezahlsystem abträglich und
dürften sowieso eher von der Seite der Händler angeboten werden.
-Dankeschön, dass alle Kommentare bis hierhin durchgelesen wurden! Der AGB-Text muss ggf.
+CG: Genau.
+
+Dankeschön, dass alle Kommentare bis hierhin durchgelesen wurden! Der AGB-Text muss ggf.
stilistisch noch umformuliert werden, denn er ist zu weiten Teilen identisch mit TWINT-AGB.
[KOMMENTAR SK]
+
+CG: Stilistische Gleichheit ist IMO kein Problem. Nur muss eben richtig sein ;-).
diff --git a/contrib/gana b/contrib/gana
-Subproject 63ab2f3c99c86334cc433450d7b99375ebf9d6b
+Subproject 61556908520df557832b04bb5e1ee91c708aeef
diff --git a/src/exchange/taler-exchange-httpd_config.c b/src/exchange/taler-exchange-httpd_config.c
index e17a9a050..257dfa6ba 100644
--- a/src/exchange/taler-exchange-httpd_config.c
+++ b/src/exchange/taler-exchange-httpd_config.c
@@ -33,10 +33,17 @@ TEH_handler_config (struct TEH_RequestContext *rc,
const char *const args[])
{
static struct MHD_Response *resp;
+ static struct GNUNET_TIME_Absolute a;
+ (void) args;
+ if ( (GNUNET_TIME_absolute_is_past (a)) &&
+ (NULL != resp) )
+ {
+ MHD_destroy_response (resp);
+ resp = NULL;
+ }
if (NULL == resp)
{
- struct GNUNET_TIME_Absolute a;
struct GNUNET_TIME_Timestamp km;
char dat[128];
@@ -62,7 +69,8 @@ TEH_handler_config (struct TEH_RequestContext *rc,
GNUNET_JSON_pack_string ("name",
"taler-exchange"),
GNUNET_JSON_pack_string ("implementation",
- "urn:net:taler:specs:taler-exchange:c-reference"),
+ "urn:net:taler:specs:taler-exchange:c-reference")
+ ,
GNUNET_JSON_pack_string ("version",
EXCHANGE_PROTOCOL_VERSION));
diff --git a/src/exchange/taler-exchange-httpd_config.h b/src/exchange/taler-exchange-httpd_config.h
index c0a14104a..068f51d41 100644
--- a/src/exchange/taler-exchange-httpd_config.h
+++ b/src/exchange/taler-exchange-httpd_config.h
@@ -41,7 +41,7 @@
*
* Returned via both /config and /keys endpoints.
*/
-#define EXCHANGE_PROTOCOL_VERSION "19:1:2"
+#define EXCHANGE_PROTOCOL_VERSION "19:2:2"
/**
diff --git a/src/include/taler_pq_lib.h b/src/include/taler_pq_lib.h
index 6fae8562a..f45de61d9 100644
--- a/src/include/taler_pq_lib.h
+++ b/src/include/taler_pq_lib.h
@@ -422,31 +422,6 @@ TALER_PQ_result_spec_array_amount (
struct TALER_Amount **amounts);
-/**
- * Blind sign public key expected.
- *
- * @param name name of the field in the table
- * @param[out] public_key where to store the denomination signature
- * @return array entry for the result specification to use
- */
-struct GNUNET_PQ_ResultSpec
-TALER_PQ_result_spec_blind_sign_pub (
- const char *name,
- struct GNUNET_CRYPTO_BlindSignPublicKey *public_key);
-
-
-/**
- * Blind sign private key expected.
- *
- * @param name name of the field in the table
- * @param[out] private_key where to store the denomination signature
- * @return array entry for the result specification to use
- */
-struct GNUNET_PQ_ResultSpec
-TALER_PQ_result_spec_blind_sign_priv (
- const char *name,
- struct GNUNET_CRYPTO_BlindSignPrivateKey *private_key);
-
#endif /* TALER_PQ_LIB_H_ */
/* end of include/taler_pq_lib.h */
diff --git a/src/pq/pq_query_helper.c b/src/pq/pq_query_helper.c
index d25b3223e..b1dfd4cf1 100644
--- a/src/pq/pq_query_helper.c
+++ b/src/pq/pq_query_helper.c
@@ -1336,204 +1336,4 @@ TALER_PQ_query_param_array_amount_with_currency (
}
-/**
- * Function called to convert input argument into SQL parameters.
- *
- * @param cls closure
- * @param data pointer to input argument
- * @param data_len number of bytes in @a data (if applicable)
- * @param[out] param_values SQL data to set
- * @param[out] param_lengths SQL length data to set
- * @param[out] param_formats SQL format data to set
- * @param param_length number of entries available in the @a param_values, @a param_lengths and @a param_formats arrays
- * @param[out] scratch buffer for dynamic allocations (to be done via #GNUNET_malloc()
- * @param scratch_length number of entries left in @a scratch
- * @return -1 on error, number of offsets used in @a scratch otherwise
- */
-static int
-qconv_blind_sign_pub (void *cls,
- const void *data,
- size_t data_len,
- void *param_values[],
- int param_lengths[],
- int param_formats[],
- unsigned int param_length,
- void *scratch[],
- unsigned int scratch_length)
-{
- const struct GNUNET_CRYPTO_BlindSignPublicKey *public_key = data;
- size_t tlen;
- size_t len;
- uint32_t be;
- char *buf;
- void *tbuf;
-
- (void) cls;
- (void) data_len;
- GNUNET_assert (1 == param_length);
- GNUNET_assert (scratch_length > 0);
- GNUNET_break (NULL == cls);
- be = htonl ((uint32_t) public_key->cipher);
- switch (public_key->cipher)
- {
- case GNUNET_CRYPTO_BSA_RSA:
- tlen = GNUNET_CRYPTO_rsa_public_key_encode (
- public_key->details.rsa_public_key,
- &tbuf);
- break;
- case GNUNET_CRYPTO_BSA_CS:
- tlen = sizeof (public_key->details.cs_public_key);
- break;
- default:
- GNUNET_assert (0);
- }
- len = tlen + sizeof (be);
- buf = GNUNET_malloc (len);
- GNUNET_memcpy (buf,
- &be,
- sizeof (be));
- switch (public_key->cipher)
- {
- case GNUNET_CRYPTO_BSA_RSA:
- GNUNET_memcpy (&buf[sizeof (be)],
- tbuf,
- tlen);
- GNUNET_free (tbuf);
- break;
- case GNUNET_CRYPTO_BSA_CS:
- GNUNET_memcpy (&buf[sizeof (be)],
- &public_key->details.cs_public_key,
- tlen);
- break;
- default:
- GNUNET_assert (0);
- }
-
- scratch[0] = buf;
- param_values[0] = (void *) buf;
- param_lengths[0] = len;
- param_formats[0] = 1;
- return 1;
-}
-
-
-/**
- * Generate query parameter for a blind sign public key of variable size.
- *
- * @param public_key pointer to the query parameter to pass
- */
-struct GNUNET_PQ_QueryParam
-TALER_PQ_query_param_blind_sign_pub (
- const struct GNUNET_CRYPTO_BlindSignPublicKey *public_key)
-{
- struct GNUNET_PQ_QueryParam res = {
- .conv = &qconv_blind_sign_pub,
- .data = public_key,
- .num_params = 1
- };
-
- return res;
-}
-
-
-/**
- * Function called to convert input argument into SQL parameters.
- *
- * @param cls closure
- * @param data pointer to input argument
- * @param data_len number of bytes in @a data (if applicable)
- * @param[out] param_values SQL data to set
- * @param[out] param_lengths SQL length data to set
- * @param[out] param_formats SQL format data to set
- * @param param_length number of entries available in the @a param_values, @a param_lengths and @a param_formats arrays
- * @param[out] scratch buffer for dynamic allocations (to be done via #GNUNET_malloc()
- * @param scratch_length number of entries left in @a scratch
- * @return -1 on error, number of offsets used in @a scratch otherwise
- */
-static int
-qconv_blind_sign_priv (void *cls,
- const void *data,
- size_t data_len,
- void *param_values[],
- int param_lengths[],
- int param_formats[],
- unsigned int param_length,
- void *scratch[],
- unsigned int scratch_length)
-{
- const struct GNUNET_CRYPTO_BlindSignPrivateKey *private_key = data;
- size_t tlen;
- size_t len;
- uint32_t be;
- char *buf;
- void *tbuf;
-
- (void) cls;
- (void) data_len;
- GNUNET_assert (1 == param_length);
- GNUNET_assert (scratch_length > 0);
- GNUNET_break (NULL == cls);
- be = htonl ((uint32_t) private_key->cipher);
- switch (private_key->cipher)
- {
- case GNUNET_CRYPTO_BSA_RSA:
- tlen = GNUNET_CRYPTO_rsa_private_key_encode (
- private_key->details.rsa_private_key,
- &tbuf);
- break;
- case GNUNET_CRYPTO_BSA_CS:
- tlen = sizeof (private_key->details.cs_private_key);
- break;
- default:
- GNUNET_assert (0);
- }
- len = tlen + sizeof (be);
- buf = GNUNET_malloc (len);
- GNUNET_memcpy (buf,
- &be,
- sizeof (be));
- switch (private_key->cipher)
- {
- case GNUNET_CRYPTO_BSA_RSA:
- GNUNET_memcpy (&buf[sizeof (be)],
- tbuf,
- tlen);
- GNUNET_free (tbuf);
- break;
- case GNUNET_CRYPTO_BSA_CS:
- GNUNET_memcpy (&buf[sizeof (be)],
- &private_key->details.cs_private_key,
- tlen);
- break;
- default:
- GNUNET_assert (0);
- }
-
- scratch[0] = buf;
- param_values[0] = (void *) buf;
- param_lengths[0] = len;
- param_formats[0] = 1;
- return 1;
-}
-
-
-/**
- * Generate query parameter for a blind sign private key of variable size.
- *
- * @param private_key pointer to the query parameter to pass
- */
-struct GNUNET_PQ_QueryParam
-TALER_PQ_query_param_blind_sign_priv (
- const struct GNUNET_CRYPTO_BlindSignPrivateKey *private_key)
-{
- struct GNUNET_PQ_QueryParam res = {
- .conv = &qconv_blind_sign_priv,
- .data = private_key,
- .num_params = 1
- };
-
- return res;
-}
-
-
/* end of pq/pq_query_helper.c */
diff --git a/src/pq/pq_result_helper.c b/src/pq/pq_result_helper.c
index e81c78302..384200cfb 100644
--- a/src/pq/pq_result_helper.c
+++ b/src/pq/pq_result_helper.c
@@ -1544,8 +1544,6 @@ TALER_PQ_result_spec_array_amount (
.cls = info,
};
return res;
-
-
}
@@ -1574,9 +1572,6 @@ TALER_PQ_result_spec_array_hash_code (
.cls = info,
};
return res;
-
-
}
-
/* end of pq_result_helper.c */
diff --git a/src/util/Makefile.am b/src/util/Makefile.am
index ed3f382d3..d2504588b 100644
--- a/src/util/Makefile.am
+++ b/src/util/Makefile.am
@@ -120,7 +120,7 @@ libtalerutil_la_LIBADD = \
-lm
libtalerutil_la_LDFLAGS = \
- -version-info 3:2:2 \
+ -version-info 3:3:2 \
-no-undefined
diff --git a/src/util/payto.c b/src/util/payto.c
index 5e0391883..6092b73fd 100644
--- a/src/util/payto.c
+++ b/src/util/payto.c
@@ -1,6 +1,6 @@
/*
This file is part of TALER
- Copyright (C) 2019-2022 Taler Systems SA
+ Copyright (C) 2019-2024 Taler Systems SA
TALER is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
@@ -101,7 +101,9 @@ TALER_payto_get_method (const char *payto_uri)
char *
TALER_xtalerbank_account_from_payto (const char *payto)
{
+ const char *host;
const char *beg;
+ const char *nxt;
const char *end;
if (0 != strncasecmp (payto,
@@ -111,23 +113,27 @@ TALER_xtalerbank_account_from_payto (const char *payto)
GNUNET_break_op (0);
return NULL;
}
- beg = strchr (&payto[strlen (PAYTO "x-taler-bank/")],
+ host = &payto[strlen (PAYTO "x-taler-bank/")];
+ beg = strchr (host,
'/');
if (NULL == beg)
{
GNUNET_break_op (0);
return NULL;
}
- beg++; /* now points to $ACCOUNT */
+ beg++; /* now points to $ACCOUNT or $PATH */
+ nxt = strchr (beg,
+ '/');
end = strchr (beg,
'?');
if (NULL == end)
+ end = &beg[strlen (beg)];
+ while ( (NULL != nxt) &&
+ (end - nxt > 0) )
{
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- "Invalid payto URI `%s'\n",
- payto);
- GNUNET_break_op (0);
- return GNUNET_strdup (beg); /* optional part is missing */
+ beg = nxt + 1;
+ nxt = strchr (beg,
+ '/');
}
return GNUNET_strndup (beg,
end - beg);
@@ -200,36 +206,63 @@ static char *
validate_payto_xtalerbank (const char *account_url)
{
const char *user;
+ const char *nxt;
+ const char *beg;
+ const char *end;
const char *host;
bool dot_ok;
bool post_colon;
+ bool port_ok;
-#define XTALERBANK_PREFIX "payto://x-taler-bank/"
+#define XTALERBANK_PREFIX PAYTO "x-taler-bank/"
if (0 != strncasecmp (account_url,
XTALERBANK_PREFIX,
strlen (XTALERBANK_PREFIX)))
return NULL; /* not an IBAN */
host = &account_url[strlen (XTALERBANK_PREFIX)];
#undef XTALERBANK_PREFIX
- user = strchr (host, '/');
- if (NULL == user)
+ beg = strchr (host,
+ '/');
+ if (NULL == beg)
{
return GNUNET_strdup ("account name missing");
}
- if (user == host)
+ beg++; /* now points to $ACCOUNT or $PATH */
+ nxt = strchr (beg,
+ '/');
+ end = strchr (beg,
+ '?');
+ if (NULL == end)
+ {
+ return GNUNET_strdup ("'receiver-name' parameter missing");
+ }
+ while ( (NULL != nxt) &&
+ (end - nxt > 0) )
+ {
+ beg = nxt + 1;
+ nxt = strchr (beg,
+ '/');
+ }
+ user = beg;
+ if (user == host + 1)
{
return GNUNET_strdup ("domain name missing");
}
if ('-' == host[0])
return GNUNET_strdup ("invalid character '-' at start of domain name");
- if (NULL != strchr (user + 1, '/'))
- return GNUNET_strdup ("invalid character '/' after account name");
dot_ok = false;
post_colon = false;
+ port_ok = false;
while (host != user)
{
char c = host[0];
+ if ('/' == c)
+ {
+ /* path started, do not care about characters
+ in the path */
+ break;
+ }
if (':' == c)
{
post_colon = true;
@@ -247,6 +280,7 @@ validate_payto_xtalerbank (const char *account_url)
c);
return err;
}
+ port_ok = true;
}
else
{
@@ -275,6 +309,10 @@ validate_payto_xtalerbank (const char *account_url)
}
host++;
}
+ if (post_colon && (! port_ok) )
+ {
+ return GNUNET_strdup ("port missing after ':'");
+ }
{
char *target;
@@ -304,7 +342,7 @@ TALER_payto_validate (const char *payto_uri)
/* This is more strict than RFC 8905, alas we do not need to support messages/instructions/etc.,
and it is generally better to start with a narrow whitelist; we can be more permissive later ...*/
#define ALLOWED_CHARACTERS \
- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/:&?-.,=+%"
+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/:&?-.,=+%~"
if (NULL == strchr (ALLOWED_CHARACTERS,
(int) payto_uri[i]))
{
@@ -358,10 +396,10 @@ TALER_payto_get_receiver_name (const char *payto)
/**
- * Normalize "payto://x-taler-bank/$HOSTNAME/$USERNAME"
+ * Normalize "payto://x-taler-bank/$HOSTNAME/[$PATH/]$USERNAME"
* URI in @a input.
*
- * Converts to lower-case, except for $USERNAME which
+ * Converts to lower-case, except for [$PATH/]$USERNAME which
* is case-sensitive.
*
* @param len number of bytes in @a input
diff --git a/src/util/test_payto.c b/src/util/test_payto.c
index b37a6f721..62ba7d28e 100644
--- a/src/util/test_payto.c
+++ b/src/util/test_payto.c
@@ -22,16 +22,16 @@
#include "taler_util.h"
#define CHECK(a,b) do { \
- GNUNET_assert (a != NULL); \
- GNUNET_assert (b != NULL); \
- if (0 != strcmp (a,b)) { \
- GNUNET_break (0); \
- fprintf (stderr, "Got %s, wanted %s\n", b, a); \
- GNUNET_free (b); \
- return 1; \
- } else { \
- GNUNET_free (b); \
- } \
+ GNUNET_assert (a != NULL); \
+ GNUNET_assert (b != NULL); \
+ if (0 != strcmp (a,b)) { \
+ GNUNET_break (0); \
+ fprintf (stderr, "Got %s, wanted %s\n", b, a); \
+ GNUNET_free (b); \
+ return 1; \
+ } else { \
+ GNUNET_free (b); \
+ } \
} while (0)
@@ -54,11 +54,20 @@ main (int argc,
"payto://x-taler-bank/hostname/username?receiver-name=foo");
GNUNET_assert (NULL == r);
r = TALER_payto_validate (
+ "payto://x-taler-bank/hostname/~path/username?receiver-name=foo");
+ GNUNET_assert (NULL == r);
+ r = TALER_payto_validate (
+ "payto://x-taler-bank/hostname/~path/username?receiver-name=fo/o");
+ GNUNET_assert (NULL == r);
+ r = TALER_payto_validate (
+ "payto://x-taler-bank/hostname/path/username?receiver-name=foo");
+ GNUNET_assert (NULL == r);
+ r = TALER_payto_validate (
"payto://x-taler-bank/https://hostname/username?receiver-name=foo");
GNUNET_assert (NULL != r);
GNUNET_free (r);
r = TALER_payto_validate (
- "payto://x-taler-bank/hostname/username/extra?receiver-name=foo");
+ "payto://x-taler-bank/hostname:4a2/path/username?receiver-name=foo");
GNUNET_assert (NULL != r);
GNUNET_free (r);
r = TALER_payto_validate (
@@ -82,6 +91,14 @@ main (int argc,
CHECK ("alice",
r);
r = TALER_xtalerbank_account_from_payto (
+ "payto://x-taler-bank/localhost:1080/path/alice");
+ CHECK ("alice",
+ r);
+ r = TALER_xtalerbank_account_from_payto (
+ "payto://x-taler-bank/localhost:1080/path/alice?receiver-name=ali/cia");
+ CHECK ("alice",
+ r);
+ r = TALER_xtalerbank_account_from_payto (
"payto://x-taler-bank/localhost:1080/alice?subject=hello&amount=EUR:1");
CHECK ("alice",
r);