From ba40b1815fb61511a1b9dda2c72a88399c7e6b47 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Wed, 22 Mar 2023 14:23:42 -0400 Subject: [PATCH] Checks if the requested amount to matches the received LN Invoice's amount --- .../amethyst/service/lnurl/LightningAddressResolver.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/lnurl/LightningAddressResolver.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/lnurl/LightningAddressResolver.kt index c9ac7b34c..541a4c017 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/lnurl/LightningAddressResolver.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/lnurl/LightningAddressResolver.kt @@ -13,6 +13,7 @@ import okhttp3.Callback import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response +import java.math.BigDecimal import java.net.URLEncoder class LightningAddressResolver { @@ -165,7 +166,13 @@ class LightningAddressResolver { } lnInvoice?.get("pr")?.asText()?.let { pr -> - onSuccess(pr) + // Forces LN Invoice amount to be the requested amount. + val invoiceAmount = LnInvoiceUtil.getAmountInSats(pr) + if (invoiceAmount.multiply(BigDecimal(1000)).toLong() == BigDecimal(milliSats).toLong()) { + onSuccess(pr) + } else { + onError("Incorrect invoice amount (${invoiceAmount.toLong()} sats) from server") + } } ?: onError("Invoice Not Created (element pr not found in the resulting JSON)") }, onError = onError