BOLT #12: * - MUST reject the invoice request if `signature` is not correct as detailed in * [Signature Calculation](#signature-calculation) using the * `invreq_payer_id`. *... * - MUST reject the invoice if `signature` is not a valid signature using * `invoice_node_id` as described in [Signature Calculation](#signature-calculation). */
| 626 | * `invoice_node_id` as described in [Signature Calculation](#signature-calculation). |
| 627 | */ |
| 628 | static bool check_payer_sig(struct command *cmd, |
| 629 | const struct tlv_invoice_request *invreq, |
| 630 | const struct pubkey *payer_key, |
| 631 | const struct bip340sig *sig) |
| 632 | { |
| 633 | struct sha256 merkle, sighash; |
| 634 | merkle_tlv(invreq->fields, &merkle); |
| 635 | sighash_from_merkle("invoice_request", "signature", &merkle, &sighash); |
| 636 | |
| 637 | return check_schnorr_sig(&sighash, &payer_key->pubkey, sig); |
| 638 | } |
| 639 | |
| 640 | static struct command_result *invreq_amount_by_quantity(struct command *cmd, |
| 641 | const struct invreq *ir, |
no test coverage detected