Self { bytes, contents, tagged_hash }
}
+ /// Returns the [`TaggedHash`] of the invoice to sign.
+ pub fn tagged_hash(&self) -> &TaggedHash {
+ &self.tagged_hash
+ }
+
/// Signs the [`TaggedHash`] of the invoice request using the given function.
///
/// Note: The hash computation may have included unknown, odd TLV records.
self.inner.chain()
}
- fn amount_msats(&self) -> Option<u64> {
+ pub(super) fn amount_msats(&self) -> Option<u64> {
self.inner.amount_msats
}
- fn features(&self) -> &InvoiceRequestFeatures {
+ pub(super) fn features(&self) -> &InvoiceRequestFeatures {
&self.inner.features
}
- fn quantity(&self) -> Option<u64> {
+ pub(super) fn quantity(&self) -> Option<u64> {
self.inner.quantity
}
self.payer_id
}
- fn payer_note(&self) -> Option<PrintableString> {
+ pub(super) fn payer_note(&self) -> Option<PrintableString> {
self.inner.payer_note.as_ref()
.map(|payer_note| PrintableString(payer_note.as_str()))
}
None => return Err(Bolt12ParseError::InvalidSemantics(Bolt12SemanticError::MissingSignature)),
Some(signature) => signature,
};
- merkle::verify_signature(&signature, SIGNATURE_TAG, &bytes, contents.payer_id)?;
+ let message = TaggedHash::new(SIGNATURE_TAG, &bytes);
+ merkle::verify_signature(&signature, message, contents.payer_id)?;
Ok(InvoiceRequest { bytes, contents, signature })
}
assert_eq!(invoice_request.quantity(), None);
assert_eq!(invoice_request.payer_id(), payer_pubkey());
assert_eq!(invoice_request.payer_note(), None);
- assert!(
- merkle::verify_signature(
- &invoice_request.signature, SIGNATURE_TAG, &invoice_request.bytes, payer_pubkey()
- ).is_ok()
- );
+
+ let message = TaggedHash::new(SIGNATURE_TAG, &invoice_request.bytes);
+ assert!(merkle::verify_signature(&invoice_request.signature, message, payer_pubkey()).is_ok());
assert_eq!(
invoice_request.as_tlv_stream(),