View Issue Details

IDProjectCategoryView StatusLast Update
0010612Talermerchant backendpublic2026-07-05 22:36
ReporterFlorian Dold Assigned ToFlorian Dold 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
PrioritynormalSeveritymajorReproducibilityhave not tried
Status informingResolutionfixed 
Product Version1.0 
Target Version1.6Fixed in Version1.6 
Summary0010612: token family reported as expired, but should still be valid
DescriptionWe created a token family with a validity about a year in the future.

However, after about a month, the backend complained that the token family expired.

Maybe the backend doesn't properly re-generate the keys for a token family once one key has expired?
Tagsdebt

Required notifications

Address or linkRemarkAdded byNotifiedActions

Relationships

has duplicate 0010549 closedChristian Grothoff problem with token family key generation? 
child of 0009057 implementingavalos support subscription and discount tokens [meta] 

Activities

Christian Grothoff

2026-01-26 05:53

manager   ~0027361

POST /private/orders does contain the logic to create missing keys for output token families on-demand.
While the code is complex, it *looks* correct.

Christian Grothoff

2026-01-28 14:05

manager   ~0027412

I added a test (test_merchant_tokenfamilies.sh, not in make check yet!) including time-travel to check token family keys were created also past the first expiration interval. That works fine. However, when trying to pay, the wallet throws back a strange parse error, even though everything looks fine in wireshare. Ivan (or Florian): please investigate and see if this is a wallet-core issue or something in the merchant backend.
test_merchant_tokenfamilies.err (1,859 bytes)   
2026-01-28T13:59:25.834Z shepherd.ts INFO active tasks from DB: {
  "taskIds": [
    "purchase:GYRBNAW45H04W4FD2PMJ9JT9VH2ZY2R6WTRR828XVEWJ04M94ZM0",
    "exchange-update:http%3A%2F%2Flocalhost%3A8081%2F",
    "exchange-auto-refresh:http%3A%2F%2Flocalhost%3A8081%2F",
    "exchange-update:https%3A%2F%2Fexchange.demo.taler.net%2F",
    "exchange-auto-refresh:https%3A%2F%2Fexchange.demo.taler.net%2F",
    "validate-denoms:"
  ]
}
2026-01-28T13:59:25.888Z exchanges.ts INFO not updating exchange in status "initial"
2026-01-28T13:59:26.292Z wallet.ts INFO finished wallet core request preparePayForUri with error: {
  "code": 7020,
  "when": {
    "t_ms": 1769609366218
  },
  "hint": "validation for well-formedness failed"
}
An error occurred while running handle-uri
_TalerError: validation for well-formedness failed
    at _TalerError.fromUncheckedDetail (/home/grothoff/lib/taler-wallet-cli/node_modules/taler-wallet-cli/dist/taler-wallet-cli-bundled.cjs:8435:12)
    at Object.call (/home/grothoff/lib/taler-wallet-cli/node_modules/taler-wallet-cli/dist/taler-wallet-cli-bundled.cjs:61285:28)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async doPay (/home/grothoff/lib/taler-wallet-cli/node_modules/taler-wallet-cli/dist/taler-wallet-cli-bundled.cjs:63540:18)
    at async /home/grothoff/lib/taler-wallet-cli/node_modules/taler-wallet-cli/dist/taler-wallet-cli-bundled.cjs:64154:9
    at async withWallet (/home/grothoff/lib/taler-wallet-cli/node_modules/taler-wallet-cli/dist/taler-wallet-cli-bundled.cjs:63774:20)
    at async CommandGroup.myAction (/home/grothoff/lib/taler-wallet-cli/node_modules/taler-wallet-cli/dist/taler-wallet-cli-bundled.cjs:64141:3) {
  errorDetail: {
    code: 7020,
    when: { t_ms: 1769609366218 },
    hint: 'validation for well-formedness failed'
  },
  cause: undefined
}

Florian Dold

2026-05-27 13:06

manager   ~0028718

The test you mention doesn't even start on my system. But I implemented my own test in harness, and it indeed reproduces the issue we also see on shop.test.taler.net.

$ taler-harness run-integrationtests merchant-tokenfamilies

Christian Grothoff

2026-05-27 15:29

manager   ~0028720

66472c927d16f35b57d3d22d2d64ff6cd1195398 should fix the main issue, alas now the tests fails with a 451.

Florian Dold

2026-05-28 10:54

manager   ~0028721

Test passes, new merchant is deployed on test and the subscriptions demo merchant works.

Issue History

Date ModifiedUsernameFieldChange
2025-11-14 16:54Florian DoldNew Issue
2025-11-15 14:59Christian GrothoffSeverityminor => major
2025-11-15 14:59Christian GrothoffStatusnew => implementing
2025-11-15 14:59Christian GrothoffProduct Version => 1.0
2025-11-15 14:59Christian GrothoffTarget Version => 1.6
2025-12-19 19:13Christian GrothoffRelationship addedchild of 0009057
2026-01-25 11:30Christian GrothoffAssigned To => Christian Grothoff
2026-01-25 11:30Christian GrothoffStatusimplementing => assigned
2026-01-26 05:23Christian GrothoffRelationship addedhas duplicate 0010549
2026-01-26 05:53Christian GrothoffNote Added: 0027361
2026-01-28 14:05Christian GrothoffNote Added: 0027412
2026-01-28 14:05Christian GrothoffFile Added: test_merchant_tokenfamilies.err
2026-01-28 14:06Christian GrothoffAssigned ToChristian Grothoff => avalos
2026-02-04 08:29Christian GrothoffTag Attached: vivy
2026-02-04 08:29Christian GrothoffTag Attached: debt
2026-02-17 20:57Christian GrothoffAssigned Toavalos => Florian Dold
2026-02-17 20:57Christian GrothoffTag Detached: vivy
2026-02-22 14:04Christian GrothoffStatusassigned => implementing
2026-05-27 13:06Florian DoldNote Added: 0028718
2026-05-27 13:07Florian DoldAssigned ToFlorian Dold => Christian Grothoff
2026-05-27 13:10Christian GrothoffStatusimplementing => assigned
2026-05-27 15:29Christian GrothoffNote Added: 0028720
2026-05-27 15:29Christian GrothoffAssigned ToChristian Grothoff => Florian Dold
2026-05-28 10:54Florian DoldStatusassigned => informing
2026-05-28 10:54Florian DoldResolutionopen => fixed
2026-05-28 10:54Florian DoldNote Added: 0028721
2026-07-05 22:36Christian GrothoffFixed in Version => 1.6