projects
/
rust-lightning
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge pull request #2023 from futurepaul/fallback-to-address
[rust-lightning]
/
lightning
/
src
/
offers
/
invoice.rs
diff --git
a/lightning/src/offers/invoice.rs
b/lightning/src/offers/invoice.rs
index 49c03a443475cb0c0c4f6ed556f5a242cda7d40b..48b8cec3536b2ab0576feca6826ed960f46d7a60 100644
(file)
--- a/
lightning/src/offers/invoice.rs
+++ b/
lightning/src/offers/invoice.rs
@@
-469,6
+469,11
@@
impl Invoice {
self.signature
}
self.signature
}
+ /// Hash that was used for signing the invoice.
+ pub fn signable_hash(&self) -> [u8; 32] {
+ merkle::message_digest(SIGNATURE_TAG, &self.bytes).as_ref().clone()
+ }
+
#[cfg(test)]
fn as_tlv_stream(&self) -> FullInvoiceTlvStreamRef {
let (payer_tlv_stream, offer_tlv_stream, invoice_request_tlv_stream, invoice_tlv_stream) =
#[cfg(test)]
fn as_tlv_stream(&self) -> FullInvoiceTlvStreamRef {
let (payer_tlv_stream, offer_tlv_stream, invoice_request_tlv_stream, invoice_tlv_stream) =
@@
-937,6
+942,11
@@
mod tests {
).is_ok()
);
).is_ok()
);
+ let digest = Message::from_slice(&invoice.signable_hash()).unwrap();
+ let pubkey = recipient_pubkey().into();
+ let secp_ctx = Secp256k1::verification_only();
+ assert!(secp_ctx.verify_schnorr(&invoice.signature, &digest, &pubkey).is_ok());
+
assert_eq!(
invoice.as_tlv_stream(),
(
assert_eq!(
invoice.as_tlv_stream(),
(