commit 06749d5d4e173f9c121c168a987d7dcf4f48148f
parent 743b40b1062b0c62d5f1475acd7c121378baccaa
Author: Antoine A <>
Date: Fri, 31 Jul 2026 11:04:31 +0200
common: fix prepared transfer unregistration timestamp check
Diffstat:
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/libeufin-bank/src/main/kotlin/tech/libeufin/bank/api/PreparedTransferApi.kt b/libeufin-bank/src/main/kotlin/tech/libeufin/bank/api/PreparedTransferApi.kt
@@ -118,7 +118,8 @@ fun Routing.preparedTransferApi(db: Database, cfg: BankConfig) {
logger.error("${req.nbo().joinToString(", ") { (it.toInt() and 0xFF).toString() }}")
- if (req.timestamp.instant.isBefore(Instant.now().minus(Duration.ofMinutes(15))))
+ val now = Instant.now()
+ if (req.timestamp.instant.isBefore(now.minus(Duration.ofMinutes(15))) || req.timestamp.instant.isAfter(now))
throw conflict(
"timestamp too old",
TalerErrorCode.BANK_OLD_TIMESTAMP
diff --git a/libeufin-nexus/src/main/kotlin/tech/libeufin/nexus/api/PreparedTransferApi.kt b/libeufin-nexus/src/main/kotlin/tech/libeufin/nexus/api/PreparedTransferApi.kt
@@ -124,12 +124,13 @@ fun Routing.preparedTransferAPI(db: Database, cfg: NexusConfig) = conditional(cf
}) {
val req = call.receive<Unregistration>();
- if (req.timestamp.instant.isBefore(Instant.now().minus(Duration.ofMinutes(15))))
+ val now = Instant.now()
+ if (req.timestamp.instant.isBefore(now.minus(Duration.ofMinutes(15))) || req.timestamp.instant.isAfter(now))
throw conflict(
"timestamp too old",
TalerErrorCode.BANK_OLD_TIMESTAMP
)
-
+
if (!req.verify())
throw forbidden(
"invalid signature",