core-lightning/common/invoice_path_id.h
Rusty Russell 595fbd2a19 createinvoice: make a minimal blinded "path" in bolt12 invoice if none presented.
The "path" is just a message to ourselves.  This meets the minimal
requirement for bolt12 invoices: that there be a blinded path (at
least so we can use the path_id inside in place of "payment_secret").

We expose the method to make this path_id to a common routine: offers
will need this for generating more sophisticated paths.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-11-09 15:08:03 +01:00

30 lines
972 B
C

#ifndef LIGHTNING_COMMON_INVOICE_PATH_ID_H
#define LIGHTNING_COMMON_INVOICE_PATH_ID_H
#include "config.h"
#include <ccan/short_types/short_types.h>
#include <ccan/tal/tal.h>
struct secret;
struct sha256;
/* String to use with makesecret to get the invoice base secret */
#define INVOICE_PATH_BASE_STRING "bolt12-invoice-base"
/**
* invoice_path_id: generate the "path_id" field for the tlv_encrypted_data_tlv
* @ctx: tal context
* @payment_hash: the invoice payment hash
* @base_secret: the node-specific secret makesecret("bolt12-invoice-base")
*
* Receiving a blinded, encrypted tlv_encrypted_data_tlv containing
* the correct path_id is how we know this blinded path is the correct
* one for this invoice payment.
*
* It's exposed here as plugins may want to generate blinded paths.
*/
u8 *invoice_path_id(const tal_t *ctx,
const struct secret *base_secret,
const struct sha256 *payment_hash);
#endif /* LIGHTNING_COMMON_INVOICE_PATH_ID_H */