Skip to content

Commit 5ff4b1f

Browse files
committed
Add tx_signatures encoding test
1 parent 22bb68e commit 5ff4b1f

File tree

1 file changed

+34
-14
lines changed

1 file changed

+34
-14
lines changed

lightning/src/ln/msgs.rs

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1489,16 +1489,15 @@ impl_writeable_msg!(TxSignatures, {
14891489

14901490
impl Writeable for Vec<Witness> {
14911491
fn write<W: Writer>(&self, w: &mut W) -> Result<(), io::Error> {
1492-
(self.len() as u16).write(w)?;
1492+
(self.len() as u16).write(w)?;
14931493
for witness in self {
14941494
(witness.len() as u16).write(w)?;
14951495
for element in witness.iter() {
1496-
(element.len() as u16).write(w)?;
14971496
element.to_vec().write(w)?;
14981497
}
14991498
}
15001499
Ok(())
1501-
}
1500+
}
15021501
}
15031502

15041503
impl Readable for Vec<Witness> {
@@ -1507,16 +1506,9 @@ impl Readable for Vec<Witness> {
15071506
let mut witnesses = Vec::with_capacity(num_witnesses as usize);
15081507
for _ in 0..num_witnesses {
15091508
let num_elements: u16 = Readable::read(r)?;
1510-
let mut witness_stack: Vec<Vec<u8>> = Vec::with_capacity(num_elements as usize);
1511-
for _ in 0..num_elements {
1512-
let element_len: u16 = Readable::read(r)?;
1513-
let mut element_bytes: Vec<u8> = Vec::with_capacity(element_len as usize);
1514-
for _ in 0..element_len {
1515-
element_bytes.push(Readable::read(r)?);
1516-
}
1517-
witness_stack.push(element_bytes);
1518-
}
1519-
witnesses.push(Witness::from_vec(witness_stack));
1509+
let mut witness = Vec::with_capacity(num_elements as usize);
1510+
for _ in 0..num_elements { witness.push(Readable::read(r)?) }
1511+
witnesses.push(Readable::read(r)?);
15201512
}
15211513
Ok(witnesses)
15221514
}
@@ -2966,7 +2958,35 @@ mod tests {
29662958

29672959
#[test]
29682960
fn encoding_tx_signatures() {
2969-
// TODO
2961+
let tx_signatures = msgs::TxSignatures {
2962+
channel_id: [2; 32],
2963+
tx_hash: Txid::from_hex("c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e").unwrap(),
2964+
witnesses: vec![
2965+
Witness::from_vec(vec![
2966+
hex::decode("304402206af85b7dd67450ad12c979302fac49dfacbc6a8620f49c5da2b5721cf9565ca502207002b32fed9ce1bf095f57aeb10c36928ac60b12e723d97d2964a54640ceefa701").unwrap(),
2967+
hex::decode("0301ab7dc16488303549bfcdd80f6ae5ee4c20bf97ab5410bbd6b1bfa85dcd6944").unwrap()]),
2968+
Witness::from_vec(vec![
2969+
hex::decode("3045022100ee00dbf4a862463e837d7c08509de814d620e4d9830fa84818713e0fa358f145022021c3c7060c4d53fe84fd165d60208451108a778c13b92ca4c6bad439236126cc01").unwrap(),
2970+
hex::decode("028fbbf0b16f5ba5bcb5dd37cd4047ce6f726a21c06682f9ec2f52b057de1dbdb5").unwrap()]),
2971+
],
2972+
};
2973+
let encoded_value = tx_signatures.encode();
2974+
let mut target_value = hex::decode("0202020202020202020202020202020202020202020202020202020202020202").unwrap(); // channel_id
2975+
target_value.append(&mut hex::decode("6e96fe9f8b0ddcd729ba03cfafa5a27b050b39d354dd980814268dfa9a44d4c2").unwrap()); // tx_hash (sha256) (big endian byte order)
2976+
target_value.append(&mut hex::decode("0002").unwrap()); // num_witnesses (u16)
2977+
// Witness 1
2978+
target_value.append(&mut hex::decode("0002").unwrap()); // num_witness_elements (u16)
2979+
target_value.append(&mut hex::decode("0047").unwrap()); // len of witness_element data (u16)
2980+
target_value.append(&mut hex::decode("304402206af85b7dd67450ad12c979302fac49dfacbc6a8620f49c5da2b5721cf9565ca502207002b32fed9ce1bf095f57aeb10c36928ac60b12e723d97d2964a54640ceefa701").unwrap());
2981+
target_value.append(&mut hex::decode("0021").unwrap()); // len of witness_element data (u16)
2982+
target_value.append(&mut hex::decode("0301ab7dc16488303549bfcdd80f6ae5ee4c20bf97ab5410bbd6b1bfa85dcd6944").unwrap());
2983+
// Witness 2
2984+
target_value.append(&mut hex::decode("0002").unwrap()); // num_witness_elements (u16)
2985+
target_value.append(&mut hex::decode("0048").unwrap()); // len of witness_element data (u16)
2986+
target_value.append(&mut hex::decode("3045022100ee00dbf4a862463e837d7c08509de814d620e4d9830fa84818713e0fa358f145022021c3c7060c4d53fe84fd165d60208451108a778c13b92ca4c6bad439236126cc01").unwrap());
2987+
target_value.append(&mut hex::decode("0021").unwrap()); // len of witness_element data (u16)
2988+
target_value.append(&mut hex::decode("028fbbf0b16f5ba5bcb5dd37cd4047ce6f726a21c06682f9ec2f52b057de1dbdb5").unwrap());
2989+
assert_eq!(encoded_value, target_value);
29702990
}
29712991

29722992
fn do_encoding_tx_init_rbf(contribution: bool) {

0 commit comments

Comments
 (0)