Browse Source
invoices: always validate that LNInvoice.invoice can be decoded
related: #6559
The LNInvoice.from_json() method previously did not validate, which is
used by e.g. wallet.import_invoices.
patch-4
SomberNight
4 years ago
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
2 changed files with
6 additions and
1 deletions
-
electrum/invoices.py
-
electrum/lnutil.py
|
|
@ -149,6 +149,10 @@ class LNInvoice(Invoice): |
|
|
|
|
|
|
|
__lnaddr = None |
|
|
|
|
|
|
|
@invoice.validator |
|
|
|
def check(self, attribute, value): |
|
|
|
lndecode(value) # this checks the str can be decoded |
|
|
|
|
|
|
|
@property |
|
|
|
def _lnaddr(self) -> LnAddr: |
|
|
|
if self.__lnaddr is None: |
|
|
|
|
|
@ -1036,7 +1036,8 @@ def validate_features(features: int) -> None: |
|
|
|
if (1 << fbit) & LN_FEATURES_IMPLEMENTED == 0 and fbit % 2 == 0: |
|
|
|
raise UnknownEvenFeatureBits(fbit) |
|
|
|
if not features.validate_transitive_dependecies(): |
|
|
|
raise IncompatibleOrInsaneFeatures("not all transitive dependencies are set") |
|
|
|
raise IncompatibleOrInsaneFeatures(f"not all transitive dependencies are set. " |
|
|
|
f"features={features}") |
|
|
|
|
|
|
|
|
|
|
|
def derive_payment_secret_from_payment_preimage(payment_preimage: bytes) -> bytes: |
|
|
|