X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fln%2Fmod.rs;h=f1ba914cabd81caeebce00f427fb0cd755504fca;hb=6bfab9d30a4ddab27f785643f2d974ffdc8371c0;hp=3827cea84e0a3d983c8946bf9703fa5f9ff6826c;hpb=d3231a23919b49085c09c43d0c1b8f8841e3d23c;p=rust-lightning diff --git a/lightning/src/ln/mod.rs b/lightning/src/ln/mod.rs index 3827cea8..f1ba914c 100644 --- a/lightning/src/ln/mod.rs +++ b/lightning/src/ln/mod.rs @@ -27,7 +27,6 @@ pub mod msgs; pub mod peer_handler; pub mod chan_utils; pub mod features; -pub(crate) mod onchaintx; #[cfg(feature = "fuzztarget")] pub mod peer_channel_encryptor; @@ -53,5 +52,52 @@ mod reorg_tests; #[cfg(test)] #[allow(unused_mut)] mod onion_route_tests; +#[cfg(test)] +#[allow(unused_mut)] +mod monitor_tests; pub use self::peer_channel_encryptor::LN_MAX_MSG_LEN; + +/// payment_hash type, use to cross-lock hop +/// (C-not exported) as we just use [u8; 32] directly +#[derive(Hash, Copy, Clone, PartialEq, Eq, Debug)] +pub struct PaymentHash(pub [u8;32]); +/// payment_preimage type, use to route payment between hop +/// (C-not exported) as we just use [u8; 32] directly +#[derive(Hash, Copy, Clone, PartialEq, Eq, Debug)] +pub struct PaymentPreimage(pub [u8;32]); +/// payment_secret type, use to authenticate sender to the receiver and tie MPP HTLCs together +/// (C-not exported) as we just use [u8; 32] directly +#[derive(Hash, Copy, Clone, PartialEq, Eq, Debug)] +pub struct PaymentSecret(pub [u8;32]); + +use prelude::*; +use bitcoin::bech32; +use bitcoin::bech32::{Base32Len, FromBase32, ToBase32, WriteBase32, u5}; + +impl FromBase32 for PaymentSecret { + type Err = bech32::Error; + + fn from_base32(field_data: &[u5]) -> Result { + if field_data.len() != 52 { + return Err(bech32::Error::InvalidLength) + } else { + let data_bytes = Vec::::from_base32(field_data)?; + let mut payment_secret = [0; 32]; + payment_secret.copy_from_slice(&data_bytes); + Ok(PaymentSecret(payment_secret)) + } + } +} + +impl ToBase32 for PaymentSecret { + fn write_base32(&self, writer: &mut W) -> Result<(), ::Err> { + (&self.0[..]).write_base32(writer) + } +} + +impl Base32Len for PaymentSecret { + fn base32_len(&self) -> usize { + 52 + } +}