View Issue Details

IDProjectCategoryView StatusLast Update
0009422Talerexchangepublic2026-09-24 17:08
ReporterChristian Grothoff Assigned ToChristian Grothoff  
PrioritynormalSeverityminorReproducibilityN/A
Status feedbackResolutionfixed 
Platformi7OSDebian GNU/LinuxOS Versionsqueeze
Product Versiongit (master) 
Target Version1.7 
Summary0009422: TALER_EXCHANGE_check_coin_conflict_ was never implemented
DescriptionThis is to check client-side that coins were actually in conflict (say different denoms or different age commitments).
TagsNo tags attached.

Activities

Christian Grothoff

2024-12-28 15:17

manager   ~0023919

Also, TALER_EXCHANGE_check_coin_denomination_conflict_ should actually be *used*.

oec

2026-09-24 14:33

developer   ~0030034

Fixed with commit 13bdc0e3419a27d8d9b1fef915b8c91b765e257f in dev/oec/vCONFLICT:

lib: verify the coin conflict proofs of 409 responses
Following the vCONFLICT spec, the denomination conflict reply now
carries the stored age commitment hash and the age commitment conflict
reply the stored denomination signature, so both can be verified with
the coin data alone.

The client library parses these replies into
struct TALER_EXCHANGE_CoinConflict and checks them in
TALER_EXCHANGE_check_coin_conflict_(): the denomination resp. age
commitment named by the exchange must differ from what the client
used, and the exchange's signature must verify against the
denomination from /keys. If that denomination is not in /keys, the
reply is accepted as unverifiable (verified=false). Batch deposit,
melt, purse create, purse deposit, reserve open and both recoup
clients run the check and expose the details in their results; a
failed check yields TALER_EC_GENERIC_REPLY_MALFORMED. The details
are released only for a 409 with one of the two error codes, as they
share a union with the details of other replies. The unimplemented
stub and the unused helpers are removed.

The JSON parsers for denomination public keys now fill pub_key_hash,
so parsed keys compare equal to locally created ones.

oec

2026-09-24 17:08

developer   ~0030040

Please check the fix in the commit mentioned before.

Issue History

Date Modified Username Field Change
2024-12-28 15:06 Christian Grothoff New Issue
2024-12-28 15:06 Christian Grothoff Status new => assigned
2024-12-28 15:06 Christian Grothoff Assigned To => oec
2024-12-28 15:17 Christian Grothoff Note Added: 0023919
2025-12-07 10:54 Christian Grothoff Status assigned => confirmed
2026-09-24 14:33 oec Status confirmed => resolved
2026-09-24 14:33 oec Resolution open => fixed
2026-09-24 14:33 oec Note Added: 0030034
2026-09-24 16:10 Christian Grothoff Assigned To oec => Christian Grothoff
2026-09-24 16:10 Christian Grothoff Status resolved => assigned
2026-09-24 16:10 Christian Grothoff Target Version post-1.0 => 1.7
2026-09-24 17:08 oec Status assigned => feedback
2026-09-24 17:08 oec Note Added: 0030040