View Issue Details

IDProjectCategoryView StatusLast Update
0009422Talerexchangepublic2026-10-13 09:05
ReporterChristian Grothoff Assigned ToChristian Grothoff Resolution deadline
ImplementerReviewer 
Release signed byDeployed by 
VerifierCommunicator 
Data protection authority notification requiredNo  
CSIRT notification requiredNo  
Estimated effort (hours)Actual effort (hours)0 
Fast-trackNo
Work packagenone
PrioritynormalSeverityminorReproducibilityN/A
Status informingResolutionfixed 
Platformi7OSDebian GNU/LinuxOS Versionsqueeze
Product Versiongit (master) 
Target Version1.6Fixed in Version1.6 
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.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

Christian Grothoff

2024-12-28 14:17

manager   ~0023919

Also, TALER_EXCHANGE_check_coin_denomination_conflict_ should actually be *used*.

oec

2026-09-24 12: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 15:08

developer   ~0030040

Please check the fix in the commit mentioned before.

Christian Grothoff

2026-10-09 19:14

manager   ~0030093

conflict detection function looks good, vCONFLICT branch was merged.

Issue History

Date ModifiedUsernameFieldChange
2024-12-28 14:06Christian GrothoffNew Issue
2024-12-28 14:06Christian GrothoffStatusnew => assigned
2024-12-28 14:06Christian GrothoffAssigned To => oec
2024-12-28 14:17Christian GrothoffNote Added: 0023919
2025-12-07 09:54Christian GrothoffStatusassigned => implementing
2026-09-24 12:33oecStatusimplementing => informing
2026-09-24 12:33oecResolutionopen => fixed
2026-09-24 12:33oecNote Added: 0030034
2026-09-24 14:10Christian GrothoffAssigned Tooec => Christian Grothoff
2026-09-24 14:10Christian GrothoffStatusinforming => assigned
2026-09-24 14:10Christian GrothoffTarget Versionpost-1.0 => 1.7
2026-09-24 15:08oecStatusassigned => feedback
2026-09-24 15:08oecNote Added: 0030040
2026-10-09 19:14Christian GrothoffStatusfeedback => informing
2026-10-09 19:14Christian GrothoffFixed in Version => 1.7
2026-10-09 19:14Christian GrothoffNote Added: 0030093
2026-10-13 09:05Christian GrothoffFixed in Version1.7 => 1.6
2026-10-13 09:05Christian GrothoffTarget Version1.7 => 1.6