Commit Graph

163 Commits

Author SHA1 Message Date
acab20a2ab
Merge branch 'master' into ar14-merging 2022-02-15 23:20:33 +01:00
327361adda
[age restriction] progress 14/n - withdraw and deposit
Age restriction support for
  - withdraw is done and tested
  - deposit is done and tested
  - melt is done, untested
  - reveal started
  - link started

Added functions
 - TALER_age_commitment_hash
 - TALER_age_restriction_commit
 - TALER_age_commitment_derive
 - 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
  - WithdrawState carries age_commitment and its hash
  - withdraw_run derives new age commitment, if applicable
  - Added age parameter to testing (13 as example)
  - TALER_TESTING_find_pk takes boolean age_restricted
  - struct RefreshMeltState carries age commitment of melted coin
  - melt_run calls TALER_age_commitment_derive, if necessary

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-14 09:22:38 +01:00
Christian Grothoff
730d8c893c
-more doxygen fixes 2022-02-12 12:35:03 +01:00
Christian Grothoff
819b67426c
-doxygen fixes 2022-02-12 10:33:23 +01:00
Christian Grothoff
94a5359494
-address misc. fixmes 2022-02-12 00:52:19 +01:00
Gian Demarmels
f239b01be1
secmod cs signatures implementation 2022-02-04 15:33:11 +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
ef4238874f
[age restriction] progress 9/n
More worke towards support for extensions and age restriction:

- taler-exchange-httpd_management_extensions.c almost completed
  - handling of request implemented
  - stub "set_extensions" for database transaction added

- utility functions added
  - TALER_exchange_offline_extension_agemask_{sign,verify}
  - TALER_agemask_parse_json
2021-12-27 23:24:48 +01:00
Christian Grothoff
84c9adf5a6
v12: also do not sign over merchant_pub in REFUND signature, centralize logic 2021-12-25 14:58:04 +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
Christian Grothoff
2c14d33870
deduplicate melt signing logic, remove coin_pub from data being signed over 2021-12-25 13:56:40 +01:00
Christian Grothoff
1acc851deb
-fix recoup ugliness 2021-12-16 20:18:44 +01:00
Christian Grothoff
1a1fafbd43
introducing GNUNET_TIME_Timestamp, recoup now with amounts 2021-12-14 16:04:40 +01:00
Christian Grothoff
b61f601028
-use different hash for RSA vs. Denomination hashing 2021-11-17 23:02:05 +01:00
Christian Grothoff
9d6e104066
include h_extensions in deposit confirmation 2021-11-06 19:43:47 +01:00
Christian Grothoff
0b370a6814
add extension hashing 2021-11-06 17:26:11 +01:00
Christian Grothoff
ba627bf84c
-fixes 2021-11-05 22:22:47 +01:00
Christian Grothoff
2faf102a05
-more dB work 2021-10-30 21:26:40 +02:00
Christian Grothoff
fef26ec525
-fixes 2021-10-28 19:48:01 +02:00
Christian Grothoff
f7d08e8c2b
-work on FTBFS; 2021-10-27 09:23:13 +02:00
Christian Grothoff
42bdb5aa6e
-fixing more FTBFS 2021-10-27 09:23:11 +02:00
Christian Grothoff
55632b1fbf
brutally fixing types in src/include/, creating plenty of FTBFS issues 2021-10-27 09:23:11 +02:00
e6d55a77f9
remove unused anastasis signature tag 2021-10-21 08:27:22 +02:00
Christian Grothoff
4e3b133e47
-incomplete draft for /kyc-wallet handler 2021-10-17 14:12:13 +02:00
Christian Grothoff
0739405f67
-add missing def 2021-10-17 10:42:02 +02:00
Christian Grothoff
8951abfc50
-finish implemnetation of /kyc-check client library 2021-10-10 17:18:24 +02:00
Christian Grothoff
098bd64f39
-fix struct name 2021-07-23 18:43:03 +02:00
Christian Grothoff
068068f40f
return signed error message with HTTP_GONE status if denomination is not currently valid for specified operation (#6889) 2021-05-25 21:34:18 +02:00
Christian Grothoff
0d1ab614c0
return signed 404 statements for unknown denomination key hashes (#6889) 2021-05-25 20:52:58 +02:00
Christian Grothoff
b40afe196c
remove redundant old_coin_pub from link data 2021-01-10 12:15:47 +01:00
Christian Grothoff
26410a72c2
fix #6666, bump protocol version to 9 2021-01-01 15:48:43 +01:00
Christian Grothoff
70b0839644
implement new taler-auditor-offline tool 2020-12-06 00:05:45 +01:00
Christian Grothoff
3d8abcc041
more work on new endpoints 2020-11-28 17:18:22 +01:00
Christian Grothoff
a69079ef6c
add cmd to revoke exchange online signing key 2020-11-27 00:36:19 +01:00
Christian Grothoff
1e6091d1dd
cmd to add/del wire methods from list of accounts 2020-11-27 00:05:34 +01:00
Christian Grothoff
1c1d4d9974
cmd to add auditor 2020-11-26 22:49:42 +01:00
Christian Grothoff
77dbb83276
implement exchange online signing key client library 2020-11-23 20:30:10 +01:00
Christian Grothoff
3e37c63fbd
implement sm signing of key announcements 2020-11-23 16:36:07 +01:00
Christian Grothoff
0846ab93bc
doxygen fixes 2020-08-29 00:37:37 +02:00
Florian Dold
93923c168d
remove refund_fee from refund confirmation message and signature 2020-07-22 19:29:27 +05:30
Christian Grothoff
70090ed9a8
kill order for Florian 2020-07-22 14:48:06 +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
8e03498a48
add h_denom to melt signatures (for #6416) 2020-07-08 17:59:05 +02:00
Christian Grothoff
97dfbec081
add h_denom_pub to deposit signatures 2020-07-08 15:46:51 +02:00
Christian Grothoff
5220e8394f
synchronize with latest GANA 2020-07-05 16:50:15 +02:00
Christian Grothoff
4f82885560
towards changing timestamp in deposit confirmation (tests failing) 2020-07-05 16:35:00 +02:00
Christian Grothoff
5ac448738d
fix status code 2020-07-05 16:34:59 +02:00
Christian Grothoff
b22ec7570e
this signature was pretty much always obsolete 2020-04-07 18:43:36 +02:00
Christian Grothoff
3404fda463
typos 2020-03-31 20:57:11 +02:00