X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning-invoice%2Fsrc%2Fser.rs;h=8f0ff31b904b78b42f4708ea3af8c4b7fd099a04;hb=b5f0ebab77961ce243fcf5a5fad3d4e161f4952a;hp=2b4332f8633bea9c16fd943de8844d99b5b69e68;hpb=8088e4ba1505c026ac91f8c1489fb7d53d6b656e;p=rust-lightning diff --git a/lightning-invoice/src/ser.rs b/lightning-invoice/src/ser.rs index 2b4332f8..8f0ff31b 100644 --- a/lightning-invoice/src/ser.rs +++ b/lightning-invoice/src/ser.rs @@ -297,18 +297,6 @@ impl Base32Len for PayeePubKey { } } -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 { - bytes_size_to_base32_size(32) - } -} - impl ToBase32 for ExpiryTime { fn write_base32(&self, writer: &mut W) -> Result<(), ::Err> { writer.write(&encode_int_be_base32(self.as_seconds())) @@ -365,22 +353,26 @@ impl Base32Len for Fallback { } } -impl ToBase32 for Route { +impl ToBase32 for RouteHint { fn write_base32(&self, writer: &mut W) -> Result<(), ::Err> { let mut converter = BytesToBase32::new(writer); for hop in self.iter() { - converter.append(&hop.pubkey.serialize()[..])?; - converter.append(&hop.short_channel_id[..])?; + converter.append(&hop.src_node_id.serialize()[..])?; + let short_channel_id = try_stretch( + encode_int_be_base256(hop.short_channel_id), + 8 + ).expect("sizeof(u64) == 8"); + converter.append(&short_channel_id)?; let fee_base_msat = try_stretch( - encode_int_be_base256(hop.fee_base_msat), + encode_int_be_base256(hop.fees.base_msat), 4 ).expect("sizeof(u32) == 4"); converter.append(&fee_base_msat)?; let fee_proportional_millionths = try_stretch( - encode_int_be_base256(hop.fee_proportional_millionths), + encode_int_be_base256(hop.fees.proportional_millionths), 4 ).expect("sizeof(u32) == 4"); converter.append(&fee_proportional_millionths)?; @@ -397,7 +389,7 @@ impl ToBase32 for Route { } } -impl Base32Len for Route { +impl Base32Len for RouteHint { fn base32_len(&self) -> usize { bytes_size_to_base32_size(self.0.len() * 51) } @@ -450,12 +442,14 @@ impl ToBase32 for TaggedField { TaggedField::PaymentSecret(ref payment_secret) => { write_tagged_field(writer, constants::TAG_PAYMENT_SECRET, payment_secret) }, - + TaggedField::Features(ref features) => { + write_tagged_field(writer, constants::TAG_FEATURES, features) + }, } } } -impl ToBase32 for Signature { +impl ToBase32 for InvoiceSignature { fn write_base32(&self, writer: &mut W) -> Result<(), ::Err> { let mut converter = BytesToBase32::new(writer); let (recovery_id, signature) = self.0.serialize_compact();