From 6f611461f2056b9d5b1f4d467765e5cb1ef2472e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dni=20=E2=9A=A1?= Date: Wed, 2 Apr 2025 17:46:24 +0200 Subject: [PATCH] fix: FakeWallet, bolt11 payment_secret is not the preimage (#3084) --- lnbits/wallets/fake.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lnbits/wallets/fake.py b/lnbits/wallets/fake.py index bacdf42c0..528231d64 100644 --- a/lnbits/wallets/fake.py +++ b/lnbits/wallets/fake.py @@ -2,7 +2,7 @@ import asyncio from datetime import datetime from hashlib import sha256 from os import urandom -from typing import AsyncGenerator, Dict, Optional, Set +from typing import AsyncGenerator, Optional from bolt11 import ( Bolt11, @@ -34,8 +34,8 @@ class FakeWallet(Wallet): def __init__(self) -> None: self.queue: asyncio.Queue = asyncio.Queue(0) - self.payment_secrets: Dict[str, str] = {} - self.paid_invoices: Set[str] = set() + self.payment_secrets: dict[str, str] = {} + self.paid_invoices: set[str] = set() self.secret = settings.fake_wallet_secret self.privkey = fake_privkey(self.secret) @@ -80,11 +80,12 @@ class FakeWallet(Wallet): secret = urandom(32).hex() tags.add(TagChar.payment_secret, secret) - payment_hash = sha256(secret.encode()).hexdigest() + preimage = urandom(32) + payment_hash = sha256(preimage).hexdigest() tags.add(TagChar.payment_hash, payment_hash) - self.payment_secrets[payment_hash] = secret + self.payment_secrets[payment_hash] = preimage.hex() bolt11 = Bolt11( currency="bc", @@ -96,7 +97,10 @@ class FakeWallet(Wallet): payment_request = encode(bolt11, self.privkey) return InvoiceResponse( - ok=True, checking_id=payment_hash, payment_request=payment_request + ok=True, + checking_id=payment_hash, + payment_request=payment_request, + # preimage=preimage.hex(), ) async def pay_invoice(self, bolt11: str, _: int) -> PaymentResponse: