Commit Graph

345 Commits

Author SHA1 Message Date
Christian Grothoff
544ba42f44
-big renaming of structs for consistent naming with P suffix 2022-02-21 00:23:23 +01:00
71af4c539e
-reducing FIXMEs re: age restriction
- deposit info now carries h_age_commitment
- benchmark does age commitment, too
2022-02-18 02:07:38 +01:00
Christian Grothoff
a351bfc4b4
-fix CS nonce reuse check logic 2022-02-17 15:18:09 +01:00
8bdf6ab19d
[age restriction] progress 14/n - withdraw and deposit
Age restriction support for
  - withdraw is done and tested
  - deposit is done and tested

TODOs:
  - melt/refresh/reveal
  - link

------

Added functions
 - TALER_age_restriction_commit
 - TALER_age_commitment_derive
 - TALER_age_commitment_hash
 - TALER_age_restriction_commitment_free_inside
 - Hash of age commitment passed around API boundaries

Exchangedb adjustments for denominations
 - all prepared statements re: denominations now handle age_mask
 - signature parameters adjusted

Hash and signature verification of /keys adjusted
 - Hashes of (normal) denominations and age-restricted denominations are
   calculated seperately
 - The hash of the age-restricted ones will then be added to the other
   hash
 - The total hash is signed/verified

Tests for withdraw with age restriction added
 - TALER_EXCHANGE_DenomPublickey now carries age_mask
 - TALER_TESTING_cmd_withdraw_amount* takes age parameter
 - TALER_TESTING_find_pk takes boolean age_restricted
 - WithdrawState carries age_commitment and its hash
 - withdraw_run derives new age commitment, if applicable
 - Added age parameter to testing (13 as example)

Various Fixes and changes
 - Fixes of post handler for /management/extensions
 - Fixes for offline tool extensions signing
 - Slight refactoring of extensions
 - Age restriction extension simplified
   - config is now global to extension
   - added global TEH_age_restriction_enabled and TEH_age_mask in
     taler-exchange-httpd
   - helper functions and macros introduced
2022-02-16 22:01:05 +01:00
Christian Grothoff
ef938e0f7a
-correctly implement CS idempotency check on withdraw 2022-02-15 17:07:13 +01:00
Christian Grothoff
bd77bcb52d
-towards fixing the protocol 2022-02-14 23:02:25 +01:00
Christian Grothoff
bc14c215b3
-doxygen fixes 2022-02-12 11:12:33 +01:00
Christian Grothoff
819b67426c
-doxygen fixes 2022-02-12 10:33:23 +01:00
Christian Grothoff
532d4ad0dc
-fixes to tests, and half-baked fixes for CS-/link (still fails) 2022-02-10 23:39:00 +01:00
Christian Grothoff
b2e6fcae1a
fix DB API for generic blinded planchet storage 2022-02-07 13:14:25 +01:00
Christian Grothoff
fb9ba5b1d2
-rename fest 2022-02-07 12:33:35 +01:00
0b56de6c99
[age restriction] progress 12/n
- taler-offline-tool now handles extensions
  - command "extensions" added with subcommands "show" and "sign"
  - parses extensions from taler config
  - shows and signs of extensions and their configurations
  - creates signed set of configurations for upload
  - added test for retrieval of extension config

- simplified signature verification for extensions
  - remove per-extension signatures, also from DB schema
  - adjust prepared statements accordingly
  - adjust DB event handler for extensions
  - allow NULL for config for extension in DB schema
  - handler for /management/extensions adjusted to new datastructures

- changed test for TALER_denom_blind/TALER_denom_sign_blinded with and
  without TALER_AgeHash

- minor updates and various fixes
2022-01-21 15:41:02 +01:00
Christian Grothoff
e7aeec04f4
The current recoup API is broken. I guess this is another example where "trivial" API changes turn out to have (multiple!) unexpected consequences.
The current "/recoup" API does not have clear idempotency semantics, as we've discussed on the phone.  This is already bad by itself, as it makes it hard to write down what the API does other than "whatever the implementation does".

However, it actually breaks correctness in this (admittedly kinda contrived, but not impossible) case:

Say that we have a coin A obtained via withdrawal and a coin B obtained via refreshing coin A. Now the denominations of A gets revoked..

The wallet does a recoup of A for EUR:1.

Now the denomination of B also gets revoked.  The wallet recoups B (incidentally also for EUR:1) and now A can be recouped again for EUR:1.  But now the exchange is in a state where it will refuse a legitimate recoup request for A because the detection for an idempotent request kicks in.

This is IMHO bad API design, and the exchange should simply always recoup the maximum amount.

Furthermore, we usually follow the principle of "API calls that take up DB space are paid".  With the current recoup API, I can do many tiny recoup requests which the exchange then has to store, right?

I guess it would not be a big change to remove the "amount" value from the recoup/recoup-refresh request bodies, right?

- Florian
2022-01-11 12:47:35 +01:00
cc7d7707ab
[age restriction] progress 10/n
More work towards support for extensions:
- Prepared statements and DB-plugin-functions for setting and retrieving
  configurations from the database added.
- primitive "registry" of extensions for age restrictions and peer2peer
  (stub)
- TALER_Extensions now with FP for parsing, setting and converting a
  configuration.
- /management/extensions handler now verifies signature of the (opaque)
  json object for all extensions.
- /management/extensions handler calls the FP in the corrensponding
  TALER_Extension for parsing and setting the configuration of a
  particular extension

More work towards age restriction:
- TALER_Extensions interfaces for config-parser, -setter and converter
  implemented for age restriction
- DB event handler now retrieves config from database, parses it and
  sets it (the age mask) in the global extension.
- load_age_mask now loads age mask from the global extension (and not
  from the config file)
- add age_restricted_denoms to /keys response
2022-01-08 14:40:20 +01:00
Christian Grothoff
070f442a11
resolve #7124: ensure -s also deletes work_shards 2021-12-26 13:05:39 +01:00
Christian Grothoff
74e4c6429a
clean up refresh-reveal logic, reducing local copying 2021-12-25 16:13:06 +01:00
Christian Grothoff
f6ecb6c895
-eliminate redundant hash operation on link signatures 2021-12-25 15:39:01 +01:00
Christian Grothoff
87376e02eb
protocol v12 changes (/recoup split, signature changes) plus database sharding plus O(n^2)=>O(n) worst-case complexity reduction on coin balance checks 2021-12-25 13:56:40 +01:00
1b23857f2c
[age restriction] progress 8/n
More work towards support for extensions and age restriction

- updated gana
- added handler for DB-Event
- added TEH_extensions_init() and _done()
- added global for age restriction
- added stub for post handler
- added SQL-table for extension metadata
- added enum type for extensions and other data structures

Also:
- fixed some warnings -Wmaybe-unitialized
2021-12-23 15:15:33 +01:00
Christian Grothoff
62444504f7
denormalize reserve_pub in reserve tables to enable sharding 2021-12-19 13:43:33 +01:00
Christian Grothoff
1a1fafbd43
introducing GNUNET_TIME_Timestamp, recoup now with amounts 2021-12-14 16:04:40 +01:00
Christian Grothoff
fba91c63d5
introduce stored procedure for coin balance check 2021-12-09 23:13:39 +01:00
Christian Grothoff
67de20d26e
major rework of withdraw transaction to use stored procedure and (presumably) reduce serialization failures by avoiding SELECT before INSERT 2021-12-05 17:16:00 +01:00
54c62f3ab9
[age restriction] progress 6/n
lift logic for detection of age restriction of a denomination out from
taler-exchange-secmod-rsa.c to taler-exchange_httpd_keys.c
2021-12-01 15:25:33 +01:00
97bae4dd65
[age restriction] progress 5/n
- taler-exchange-secmod-rsa
  - extracts AGE_RESTRICTED per denomination from config
  - propagates flag for each denomination to server
- if age restriction is set for a denomination,
  age _mask_ is taken (for now!) from config
2021-11-28 18:51:25 +01:00
Christian Grothoff
422b0ffd4c
fix oauth_username issue 2021-11-16 19:31:27 +01:00
Christian Grothoff
e5ead88057
complete oauth logic (in theory) 2021-11-15 20:00:45 +01:00
Christian Grothoff
0325a79631
avoid duplication 2021-11-15 14:39:18 +01:00
Christian Grothoff
cd8d4bede1
add missing file 2021-11-07 11:41:53 +01:00
Christian Grothoff
57acad487d
move extension options to external table 2021-11-06 19:04:54 +01:00
Christian Grothoff
ba627bf84c
-fixes 2021-11-05 22:22:47 +01:00
Christian Grothoff
783d07b476
consistently distinguish blinded/unblinded denomination sigs 2021-10-31 18:12:54 +01:00
Christian Grothoff
3eae999efc
distinguish between blind and non-blind denomination signatures 2021-10-31 17:56:56 +01:00
Christian Grothoff
de8e0907aa
DB test passes again 2021-10-31 15:32:20 +01:00
Christian Grothoff
35e3506660
fixing SQL statements 2021-10-31 13:27:50 +01:00
Christian Grothoff
43ee9da01d
misc fixes 2021-10-31 12:49:51 +01:00
Christian Grothoff
b5e9523f94
fix test FTBFS 2021-10-31 10:32:10 +01:00
Christian Grothoff
2faf102a05
-more dB work 2021-10-30 21:26:40 +02:00
Christian Grothoff
bc57abc3da
-more dB work 2021-10-30 20:49:23 +02:00
Christian Grothoff
d83a65320a
-more work on FTBFS issues 2021-10-30 19:57:54 +02:00
Christian Grothoff
963a06c0aa
fix more FTBFS issues 2021-10-30 19:28:11 +02:00
Christian Grothoff
868a4ce76d
-resovling more FTBFS issues 2021-10-27 09:23:12 +02:00
Christian Grothoff
55632b1fbf
brutally fixing types in src/include/, creating plenty of FTBFS issues 2021-10-27 09:23:11 +02:00
Christian Grothoff
778a402d07
-implement more of the KYC handlers 2021-10-19 21:02:10 +02:00
Christian Grothoff
b38b51d5e8
implement /kyc-check, add skeleton for /kyc-proof 2021-10-17 15:58:23 +02:00
Christian Grothoff
4e3b133e47
-incomplete draft for /kyc-wallet handler 2021-10-17 14:12:13 +02:00
Christian Grothoff
932d2aaf88
implement returning KYC status from GET /deposits/ endpoint 2021-10-17 13:22:15 +02:00
Christian Grothoff
a48db85013
add KYC logic for /deposit handling (DB part incomplete) 2021-10-15 23:34:23 +02:00
Christian Grothoff
ca12adced4
-basic logic for withdraw KYC checks 2021-10-14 21:06:47 +02:00
Christian Grothoff
7d62fa065b
start with KYC support in DB 2021-10-14 14:45:10 +02:00
Christian Grothoff
b38f251beb
-DCE, nicer return values 2021-09-17 11:35:10 +02:00
Christian Grothoff
ae8d481e1c
implement taler-exchange-transfer DB sharding logic 2021-09-05 15:25:57 +02:00
Christian Grothoff
adc6c53b5c
doxygen and spelling fixes 2021-09-04 13:00:20 +02:00
Christian Grothoff
1c1d28d3f5
first draft for an aggregator benchmark, plus fixing inclusive/exclusive sharding range issues 2021-09-03 21:30:14 +02:00
Christian Grothoff
5149af9314
preliminary work on supporting sharding/parallel aggregation (undertested, but tests pass again) 2021-09-03 19:08:02 +02:00
Christian Grothoff
6e1877b142
-implement long-standing aggregation SQL query simplification 2021-09-03 09:55:16 +02:00
Christian Grothoff
c559b1c935
complete implementation of long-polling for reserve status; remove support for multi-threaded exchange httpd 2021-08-23 00:00:32 +02:00
Christian Grothoff
10f9272e45
-implement long polling support on reserve status (but not yet in C client library) 2021-08-22 00:12:18 +02:00
Christian Grothoff
41aa1ed41d
-add support for event notifications to exchangedb plugin 2021-08-13 22:35:13 +02:00
Christian Grothoff
ba5af82db1
-bugfixes, and FTBFS 2021-06-22 14:47:54 +02:00
Christian Grothoff
108bf57d04
preparations for sharded wirewatch 2021-06-20 16:41:04 +02:00
Christian Grothoff
a140c114d3
more doxygen fixes 2021-04-23 23:39:07 +02:00
Christian Grothoff
3b9c381112
remove master_pub from DB 2021-01-15 11:53:54 +01:00
Christian Grothoff
e3a0bc0d1f
fix sync issues, add rudimentary test 2021-01-13 19:47:45 +01:00
Christian Grothoff
2518da8f45
taler-auditor-sync WiP 2021-01-11 23:02:22 +01:00
Christian Grothoff
278b35a0fb
more work on INSERT statements 2021-01-10 18:40:39 +01:00
Christian Grothoff
af97a44ae6
complete select_serial_by_* SELECT statements 2021-01-10 18:06:18 +01:00
Christian Grothoff
b40afe196c
remove redundant old_coin_pub from link data 2021-01-10 12:15:47 +01:00
Christian Grothoff
ca66a1d1af
fix major bug with SQL statement missing ORDER BY freshcoin_index resulting in possible link failures (but usually lucky with old DB schema) 2021-01-10 00:54:12 +01:00
Christian Grothoff
02ecf68a3d
more optimizations of tables with foreign keys 2021-01-09 13:18:01 +01:00
Christian Grothoff
260e287685
change wire_reference to be uint64_t always; more work on lrbt_callbacks 2021-01-08 23:36:09 +01:00
Christian Grothoff
13555448b6
change exchange database to use denominations_serial instead of denom_pub_hash as foreign key 2021-01-08 18:14:46 +01:00
Christian Grothoff
40551fa08e
add -i option to taler-auditor 2021-01-06 22:51:55 +01:00
Christian Grothoff
57c9054784
implement #6161 2020-12-26 15:55:34 +01:00
Christian Grothoff
fe232f1fed
integrate auditor signature check logic with taler-helper-auditor-coins 2020-12-22 18:27:34 +01:00
Christian Grothoff
a644355c44
address FIXME: pass session when iterating over denominations 2020-12-22 18:13:46 +01:00
Christian Grothoff
c57d2f0468
spell checking issues 2020-12-20 17:11:52 +01:00
Christian Grothoff
35bec60894
implement POST /managment/keys 2020-12-10 11:49:20 +01:00
Christian Grothoff
fa1914b267
work on new logic to generate /wire response 2020-12-09 12:31:10 +01:00
Christian Grothoff
22c9321e67
expand exchangedb plugin for new /keys logic 2020-12-06 21:54:32 +01:00
Christian Grothoff
d9ac8e7975
incomplete work on forthcoming /keys implementation 2020-12-06 16:53:29 +01:00
Christian Grothoff
4b2504a3c3
doxygen fixes 2020-11-30 14:16:42 +01:00
Christian Grothoff
e89bb8edaa
more DB functions for new /management/ endpoints 2020-11-29 18:02:00 +01:00
Christian Grothoff
855e7829d7
more work on DB plugin for managemetn API 2020-11-29 17:27:53 +01:00
Christian Grothoff
6b434c626f
work on DB logic, add auditor_name to /management/auditors API 2020-11-29 16:21:10 +01:00
Christian Grothoff
3240844e48
get code for most new endpoints to build (but DB not done) 2020-11-29 14:32:39 +01:00
Christian Grothoff
b65a2f77eb
sketch logic for wire-fee management endpoint 2020-11-28 18:56:29 +01:00
Christian Grothoff
3d8abcc041
more work on new endpoints 2020-11-28 17:18:22 +01:00
Christian Grothoff
4f0e38ab12
more work on crypto RSA helper 2020-11-14 22:27:50 +01:00
Christian Grothoff
26f72f8572
fix refund handling: allow refund increases for the same coin 2020-08-12 13:02:59 +02:00
Christian Grothoff
ddf95c491a
remove unused/unusable coin_sig, return correct coin_pub in recoup-reveal failure context 2020-07-10 22:33:04 +02:00
Christian Grothoff
c3cd21508b
synchronize with latest GANA 2020-07-08 19:36:08 +02:00
Christian Grothoff
97dfbec081
add h_denom_pub to deposit signatures 2020-07-08 15:46:51 +02:00
Christian Grothoff
81fec09268
simplify DB access: do not fetch fields we do not need 2020-07-08 12:35:01 +02:00
Christian Grothoff
4f82885560
towards changing timestamp in deposit confirmation (tests failing) 2020-07-05 16:35:00 +02:00
Christian Grothoff
3404fda463
typos 2020-03-31 20:57:11 +02:00
Christian Grothoff
f052527ea5
fix recoup-refresh audit logic 2020-03-26 20:54:41 +01:00
Christian Grothoff
c20078010b
fix comments, naming consistency issues 2020-03-07 14:35:32 +01:00
Christian Grothoff
ffcadbff8c
code cleanup (comments, scoping, naming, indentation) 2020-03-07 00:28:07 +01:00
Christian Grothoff
52d41311ac
new coins => fresh coins, also move comments into the database itself 2020-03-05 23:49:47 +01:00
Christian Grothoff
a49bfef2fb
rename for consistency 2020-03-05 23:02:38 +01:00
Christian Grothoff
7dd52a0892
clean up comments, renaming for clarity 2020-03-05 22:38:19 +01:00
Christian Grothoff
642992f9c3
more renaming 2020-03-04 12:10:11 +01:00
Christian Grothoff
c6874cdb1b
fix comments 2020-03-04 12:04:28 +01:00
Christian Grothoff
7f37017e91
more renaming 2020-03-04 11:51:00 +01:00
Christian Grothoff
6cc516427b
minor code clean up, renaming for consistency 2020-03-04 11:47:22 +01:00
Christian Grothoff
0a2b049864
big rename fest related to #6067 API renaming 2020-02-29 16:42:10 +01:00
Florian Dold
801592b460
doxygen fix 2020-01-19 23:05:22 +01:00
Christian Grothoff
db669ee495
payback -> recoup stranglers 2020-01-18 23:49:37 +01:00
Christian Grothoff
5583b7a059
libraries were folded, fold headers as well 2020-01-18 14:24:55 +01:00
Christian Grothoff
9317d6d69d
doxygen work 2020-01-18 13:23:17 +01:00
Christian Grothoff
dac255329f
doxygen 2020-01-18 13:23:17 +01:00
Christian Grothoff
376277f7e8
remove bogus comment 2020-01-17 20:07:57 +01:00
Christian Grothoff
ae30ff9f7e
bogus comment, fields no longer exist, logic problem ditto 2020-01-17 19:34:24 +01:00
Christian Grothoff
0328ab313b
use more specific SELECT in exchange aggregator on refunds instead of filtering in application logic later 2020-01-17 15:43:04 +01:00
Christian Grothoff
540b22ce1c
implement rh caching 2020-01-17 12:52:33 +01:00
Christian Grothoff
d61c2e400a
kill another FIXME 2020-01-16 23:49:34 +01:00
Christian Grothoff
0305cf5f9e
move function to libtalerexchangedb, as planned 2020-01-16 22:40:12 +01:00
Christian Grothoff
19922fa046
pointless to check denom_sig, do not return 2020-01-16 22:21:18 +01:00
Christian Grothoff
9443c10d7f
major refactoring, eliminating wire-plugins and moving towards new bank API. main code compiles, testcases known to fail, code sure not to fully work yet 2020-01-11 15:20:17 +01:00
Christian Grothoff
385b3e77df
tighten formatting rules 2019-10-31 12:59:50 +01:00
Christian Grothoff
ebd2e7d763
fix leaks and unnecessary fetch of RSA signature on refresh/reveal 2019-09-15 12:39:15 +02:00
Christian Grothoff
d2b85341c4
auditor needs serial IDs in coin history 2019-09-03 03:45:18 +02:00
Florian Dold
eb55997084
re-format code 2019-08-25 16:18:24 +02:00
Christian Grothoff
4bf425c902
remove currency field from databases 2019-08-17 21:35:21 +02:00
Christian Grothoff
ccfe99a82d
more denom sig checking in auditor 2019-07-27 20:43:52 +02:00
Christian Grothoff
03af37ef23
add ppc progress points for payback ops 2019-07-24 14:13:25 +02:00
Christian Grothoff
a654ceafba
make sure reserves are not gc'ed before legal expiration 2019-07-24 12:19:36 +02:00
Christian Grothoff
7d43ad56d3
implement postges_get_old_coin_by_h_blind for #5777 2019-07-23 20:27:48 +02:00
Christian Grothoff
721c1ee73e
extending postgres plugin with functions required to store payback data on refreshed coins for #5777 2019-07-21 20:15:11 +02:00
Christian Grothoff
9a5030b993
add test for json_wire.c logic 2019-06-26 20:43:08 +02:00
Christian Grothoff
3a2f72b4aa
implement /link signatures 2019-06-26 15:34:44 +02:00
Christian Grothoff
4f846eab96
fix #5756, also change sepa->iban as per payto:// spec 2019-06-08 19:55:18 +02:00
Christian Grothoff
de9fdf860a
replace denom_pub with denom_pub_hash in exchange API to reduce bandwidth 2019-05-02 21:16:51 +02:00
Christian Grothoff
e56ed85f4f
preparations for #5536 2019-02-14 13:41:46 +01:00
Christian Grothoff
ac850bfcd2
add auditing of deposit confirmations to auditor (#5447) 2018-11-04 17:36:56 +01:00
Christian Grothoff
be9ff317dd
add operation to count number of known coins per denomination to exchangedb 2018-10-28 11:38:45 +01:00
Christian Grothoff
fb952babf6
reduce redundant data fetch (#5444) 2018-10-19 11:01:49 +02:00
Christian Grothoff
190a1fadaf
re-init logging so we can tell by PID who it is 2018-08-19 17:19:27 +02:00
Christian Grothoff
0df2028f96
make transactions smaller to try to reduce rollbacks 2018-08-19 16:01:57 +02:00
Marcello Stanisci
6df3227c24
Wire-plugin interface.
Add methods signatures to register merchants at banking institutions.
2018-07-23 14:32:20 +02:00
Marcello Stanisci
9942032ae9
Add "general_id" for merchants into the DB system. 2018-07-18 11:29:30 +02:00
Marcello Stanisci
dd9837ff8b
Put logic to delete KYC events for merchant 2018-07-10 15:53:35 +02:00
Marcello Stanisci
61e737f03e
Put logic to sum KYC-monitored wire transfers. 2018-07-10 15:30:17 +02:00
Marcello Stanisci
109a4a5aa1
KYC DB methods: store a wire transfer. 2018-07-10 13:08:53 +02:00
Marcello Stanisci
5e25d7dbcf
Improve KYC status callback.
More parameters for this callback.
2018-07-09 21:15:47 +02:00
Marcello Stanisci
01158a4817
Method to mark a merchant as NOT KYC-checked. 2018-07-09 10:55:31 +02:00
Marcello Stanisci
cd2538efb5
Method to retrieve the KYC status of a merchant. 2018-07-09 10:37:12 +02:00
Marcello Stanisci
7c94a71def
Method to mark merchant as KYC-checked. 2018-07-09 10:05:59 +02:00
Marcello Stanisci
c13973626b
KYC db methods.
Add method to insert a merchant into the monitored
entries, and associates a "FALSE" KYC status to it.
2018-07-09 09:44:16 +02:00