View Issue Details

IDProjectCategoryView StatusLast Update
0010003Talerexchangepublic2025-08-31 17:09
ReporterFlorian Dold 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
PriorityurgentSeverityblockReproducibilityalways
Status closedResolutionfixed 
Target Version1.0 stretch goalsFixed in Version1.0 stretch goals 
Summary0010003: exchange KYC auth does not work when non-normalized payto URI differs between withdrawal and KYC auth
DescriptionThere will be two entries in exchange.wire_targets with the same normalized payto URI, but only one will have the target_pub set properly when doing a KYC auth.
Steps To Reproduce* Withdraw into wallet using bank account X (with receiver name "Florian Dold")
* Set up merchant instance, using bank account X
* Do KYC auth transafer, but somehow the bank capitalizes the receiver-name to "FLORIAN DOLD"

=> Boom, KYC auth transfer never succeeds, merchant hangs forever in KYC auth required.
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

Florian Dold

2025-05-22 00:37

manager   ~0024965

Relevant SQL that leads to this problem:

-- Find the access token and the current account public key.
SELECT access_token
      ,target_pub
      ,payto_uri
  INTO my_wtrec
  FROM wire_targets
 WHERE h_normalized_payto=in_h_normalized_payto;

Christian Grothoff

2025-05-22 05:24

manager   ~0024966

Ok, so superficially here the problem is that the h_normalized_payto is in the above assumed to be UNIQUE, while it is not.

So we either should make h_normalized_payto UNIQUE (with a constraint!) and handle on INSERT the case that we already have a wire target with a "similar" payto_uri (how? not insert again? update payto_uri?) __or__ we don't assume UNIQUEness and need to handle the case here.

First feeling: make UNIQUE.

Christian Grothoff

2025-05-22 09:01

manager   ~0024967

It's more complicated, I think we need to split up the table...

Christian Grothoff

2025-05-24 20:24

manager   ~0024978

Fixed in c887cfd76734ea1896bbe844f81bd29962aab7f7

Issue History

Date ModifiedUsernameFieldChange
2025-05-22 00:36Florian DoldNew Issue
2025-05-22 00:36Florian DoldStatusnew => assigned
2025-05-22 00:36Florian DoldAssigned To => Christian Grothoff
2025-05-22 00:37Florian DoldNote Added: 0024965
2025-05-22 05:24Christian GrothoffNote Added: 0024966
2025-05-22 09:01Christian GrothoffNote Added: 0024967
2025-05-24 20:24Christian GrothoffStatusassigned => informing
2025-05-24 20:24Christian GrothoffResolutionopen => fixed
2025-05-24 20:24Christian GrothoffFixed in Version => 1.0 stretch goals
2025-05-24 20:24Christian GrothoffNote Added: 0024978
2025-08-31 17:09Christian GrothoffStatusinforming => closed