diff --git a/core/embed/upymod/qstrdefsport.h b/core/embed/upymod/qstrdefsport.h index d747363b59..e507b04c6c 100644 --- a/core/embed/upymod/qstrdefsport.h +++ b/core/embed/upymod/qstrdefsport.h @@ -143,6 +143,7 @@ Q(apps.misc.cipher_key_value) Q(apps.misc.get_ecdh_session_key) Q(apps.misc.get_entropy) Q(apps.misc.get_firmware_hash) +Q(apps.misc.payment_notification) Q(apps.misc.sign_identity) Q(apps.nostr) Q(apps.nostr.get_pubkey) @@ -227,6 +228,7 @@ Q(omni) Q(ownership) Q(passphrase) Q(paths) +Q(payment_notification) Q(payment_request) Q(pin) Q(progress) diff --git a/core/src/apps/misc/payment_notification.py b/core/src/apps/misc/payment_notification.py new file mode 100644 index 0000000000..f7cfed7fd1 --- /dev/null +++ b/core/src/apps/misc/payment_notification.py @@ -0,0 +1,25 @@ +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from trezor.messages import PaymentNotification, Success + + from apps.common.keychain import Keychain + +from apps.common.keychain import with_slip44_keychain + + +@with_slip44_keychain(slip44_id=0, slip21_namespaces=[[b"SLIP-0024"]]) +async def payment_notification(msg: PaymentNotification, keychain: Keychain) -> Success: + from trezor.messages import Success + from trezor.wire import DataError + + from apps.common.payment_request import PaymentRequestVerifier + + if msg.payment_req is None: + raise DataError("Missing payment request.") + + PaymentRequestVerifier(msg.payment_req, 0, keychain).verify() + + # TODO Show payment request memos. + + return Success()