Skip to content

Commit 724bddd

Browse files
committed
f move and fix Vec<Witness> ser impl
1 parent fbb6157 commit 724bddd

File tree

2 files changed

+34
-28
lines changed

2 files changed

+34
-28
lines changed

lightning/src/ln/msgs.rs

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1625,33 +1625,6 @@ impl_writeable_msg!(TxSignatures, {
16251625
witnesses,
16261626
}, {});
16271627

1628-
impl Writeable for Vec<Witness> {
1629-
fn write<W: Writer>(&self, w: &mut W) -> Result<(), io::Error> {
1630-
(self.len() as u16).write(w)?;
1631-
for witness in self {
1632-
(witness.len() as u16).write(w)?;
1633-
for element in witness.iter() {
1634-
element.to_vec().write(w)?;
1635-
}
1636-
}
1637-
Ok(())
1638-
}
1639-
}
1640-
1641-
impl Readable for Vec<Witness> {
1642-
fn read<R: Read>(r: &mut R) -> Result<Self, DecodeError> {
1643-
let num_witnesses: u16 = Readable::read(r)?;
1644-
let mut witnesses = Vec::with_capacity(num_witnesses as usize);
1645-
for _ in 0..num_witnesses {
1646-
let num_elements: u16 = Readable::read(r)?;
1647-
let mut witness_stack = Vec::with_capacity(num_elements as usize);
1648-
for _ in 0..num_elements { witness_stack.push(Readable::read(r)?) }
1649-
witnesses.push(Witness::from_vec(witness_stack));
1650-
}
1651-
Ok(witnesses)
1652-
}
1653-
}
1654-
16551628
impl_writeable_msg!(TxInitRbf, {
16561629
channel_id,
16571630
locktime,

lightning/src/util/ser.rs

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use bitcoin::secp256k1::schnorr;
3131
use bitcoin::blockdata::constants::ChainHash;
3232
use bitcoin::blockdata::script::Script;
3333
use bitcoin::blockdata::transaction::{OutPoint, Transaction, TxOut};
34-
use bitcoin::consensus;
34+
use bitcoin::{consensus, Witness};
3535
use bitcoin::consensus::Encodable;
3636
use bitcoin::hashes::sha256d::Hash as Sha256dHash;
3737
use bitcoin::hash_types::{Txid, BlockHash};
@@ -772,6 +772,39 @@ impl Readable for Vec<u8> {
772772
impl_for_vec!(ecdsa::Signature);
773773
impl_for_vec!((A, B), A, B);
774774

775+
impl Writeable for Vec<Witness> {
776+
fn write<W: Writer>(&self, w: &mut W) -> Result<(), io::Error> {
777+
(self.len() as u16).write(w)?;
778+
for witness in self {
779+
(witness.len() as u16).write(w)?;
780+
for element in witness.iter() {
781+
(element.len() as u16).write(w)?;
782+
w.write_all(element)?;
783+
}
784+
}
785+
Ok(())
786+
}
787+
}
788+
789+
impl Readable for Vec<Witness> {
790+
fn read<R: Read>(r: &mut R) -> Result<Self, DecodeError> {
791+
let num_witnesses = <u16 as Readable>::read(r)? as usize;
792+
let mut witnesses = Vec::with_capacity(num_witnesses);
793+
for _ in 0..num_witnesses {
794+
let num_elements = <u16 as Readable>::read(r)? as usize;
795+
let mut witness_stack = Vec::with_capacity(num_elements);
796+
for _ in 0..num_elements {
797+
let len = <u16 as Readable>::read(r)? as usize;
798+
let mut buf = vec![0; len];
799+
r.read_exact(&mut buf)?;
800+
witness_stack.push(buf);
801+
}
802+
witnesses.push(Witness::from_vec(witness_stack));
803+
}
804+
Ok(witnesses)
805+
}
806+
}
807+
775808
impl Writeable for Script {
776809
fn write<W: Writer>(&self, w: &mut W) -> Result<(), io::Error> {
777810
(self.len() as u16).write(w)?;

0 commit comments

Comments
 (0)