X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Foffers%2Fmerkle.rs;h=da3fab589966d8d3d5988437a72aec56bbc1b8d8;hb=7e085c5ce4a98e9ba8528810118d7b5c118eb45a;hp=5a9424500b37c8e037f22b0e9ea2ee7cd561c911;hpb=407762446cd4abaab5ea9c1c96e8c181a0f63b86;p=rust-lightning diff --git a/lightning/src/offers/merkle.rs b/lightning/src/offers/merkle.rs index 5a942450..da3fab58 100644 --- a/lightning/src/offers/merkle.rs +++ b/lightning/src/offers/merkle.rs @@ -12,10 +12,10 @@ use bitcoin::hashes::{Hash, HashEngine, sha256}; use bitcoin::secp256k1::{Message, PublicKey, Secp256k1, self}; use bitcoin::secp256k1::schnorr::Signature; -use core::convert::AsRef; use crate::io; use crate::util::ser::{BigSize, Readable, Writeable, Writer}; +#[allow(unused_imports)] use crate::prelude::*; /// Valid type range for signature TLV records. @@ -76,29 +76,24 @@ impl AsRef for TaggedHash { /// Error when signing messages. #[derive(Debug, PartialEq)] -pub enum SignError { +pub enum SignError { /// User-defined error when signing the message. - Signing(E), + Signing, /// Error when verifying the produced signature using the given pubkey. Verification(secp256k1::Error), } /// A function for signing a [`TaggedHash`]. pub(super) trait SignFn> { - /// Error type returned by the function. - type Error; - /// Signs a [`TaggedHash`] computed over the merkle root of `message`'s TLV stream. - fn sign(&self, message: &T) -> Result; + fn sign(&self, message: &T) -> Result; } -impl SignFn for F +impl SignFn for F where - F: Fn(&TaggedHash) -> Result, + F: Fn(&TaggedHash) -> Result, { - type Error = E; - - fn sign(&self, message: &TaggedHash) -> Result { + fn sign(&self, message: &TaggedHash) -> Result { self(message) } } @@ -112,14 +107,14 @@ where /// /// [`Bolt12Invoice`]: crate::offers::invoice::Bolt12Invoice /// [`InvoiceRequest`]: crate::offers::invoice_request::InvoiceRequest -pub(super) fn sign_message( +pub(super) fn sign_message( f: F, message: &T, pubkey: PublicKey, -) -> Result> +) -> Result where - F: SignFn, + F: SignFn, T: AsRef, { - let signature = f.sign(message).map_err(|e| SignError::Signing(e))?; + let signature = f.sign(message).map_err(|()| SignError::Signing)?; let digest = message.as_ref().as_digest(); let pubkey = pubkey.into(); @@ -296,7 +291,6 @@ mod tests { use bitcoin::hashes::hex::FromHex; use bitcoin::secp256k1::{KeyPair, Message, Secp256k1, SecretKey}; use bitcoin::secp256k1::schnorr::Signature; - use core::convert::Infallible; use crate::offers::offer::{Amount, OfferBuilder}; use crate::offers::invoice_request::{InvoiceRequest, UnsignedInvoiceRequest}; use crate::offers::parse::Bech32Encode; @@ -341,9 +335,9 @@ mod tests { .build_unchecked() .request_invoice(vec![0; 8], payer_keys.public_key()).unwrap() .build_unchecked() - .sign(|message: &UnsignedInvoiceRequest| -> Result<_, Infallible> { + .sign(|message: &UnsignedInvoiceRequest| Ok(secp_ctx.sign_schnorr_no_aux_rand(message.as_ref().as_digest(), &payer_keys)) - }) + ) .unwrap(); assert_eq!( invoice_request.to_string(), @@ -395,9 +389,9 @@ mod tests { .build_unchecked() .request_invoice(vec![0; 8], payer_keys.public_key()).unwrap() .build_unchecked() - .sign(|message: &UnsignedInvoiceRequest| -> Result<_, Infallible> { + .sign(|message: &UnsignedInvoiceRequest| Ok(secp_ctx.sign_schnorr_no_aux_rand(message.as_ref().as_digest(), &payer_keys)) - }) + ) .unwrap(); let mut bytes_without_signature = Vec::new(); @@ -427,9 +421,9 @@ mod tests { .build_unchecked() .request_invoice(vec![0; 8], payer_keys.public_key()).unwrap() .build_unchecked() - .sign(|message: &UnsignedInvoiceRequest| -> Result<_, Infallible> { + .sign(|message: &UnsignedInvoiceRequest| Ok(secp_ctx.sign_schnorr_no_aux_rand(message.as_ref().as_digest(), &payer_keys)) - }) + ) .unwrap(); let tlv_stream = TlvStream::new(&invoice_request.bytes).range(0..1)