core-lightning/common/bolt12_merkle.h
Rusty Russell 59efd160c1 hsmd: code to sign bolt12 messages with a tweaked key.
Invoices are signed with our own key, but we use a transient payer_key with a
tweak for invoice_requests (and refunds).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2020-12-23 14:24:39 +01:00

33 lines
1.0 KiB
C

#ifndef LIGHTNING_COMMON_BOLT12_MERKLE_H
#define LIGHTNING_COMMON_BOLT12_MERKLE_H
#include "config.h"
#include <wire/bolt12_exp_wiregen.h>
/**
* merkle_tlv - bolt12-style merkle hash of this tlv minus signature fields
* @fields: tal_arr of fields from tlv.
* @merkle: returned merkle hash.
*/
void merkle_tlv(const struct tlv_field *fields, struct sha256 *merkle);
/**
* sighash_from_merkle - bolt12-style signature hash using this merkle root.
* @messagename: message name, such as "offer".
* @fieldname: field name, such as "recurrence_signature".
* @merkle: the merkle root as calculated by merkle_tlv.
* @sighash: the returned hash.
*/
void sighash_from_merkle(const char *messagename,
const char *fieldname,
const struct sha256 *merkle,
struct sha256 *sighash);
/**
* payer_key_tweak - get the actual tweak to use for a payer_key
*/
void payer_key_tweak(const struct pubkey32 *bolt12,
const u8 *publictweak, size_t publictweaklen,
struct sha256 *tweak);
#endif /* LIGHTNING_COMMON_BOLT12_MERKLE_H */