Skip to content

Commit e485289

Browse files
committed
Add tx_signatures encoding test
1 parent 34dcbcc commit e485289

File tree

1 file changed

+33
-13
lines changed

1 file changed

+33
-13
lines changed

lightning/src/ln/msgs.rs

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1488,16 +1488,15 @@ impl_writeable_msg!(TxSignatures, {
14881488

14891489
impl Writeable for Vec<Witness> {
14901490
fn write<W: Writer>(&self, w: &mut W) -> Result<(), io::Error> {
1491-
(self.len() as u16).write(w)?;
1491+
(self.len() as u16).write(w)?;
14921492
for witness in self {
14931493
(witness.len() as u16).write(w)?;
14941494
for element in witness.iter() {
1495-
(element.len() as u16).write(w)?;
14961495
element.to_vec().write(w)?;
14971496
}
14981497
}
14991498
Ok(())
1500-
}
1499+
}
15011500
}
15021501

15031502
impl Readable for Vec<Witness> {
@@ -1506,15 +1505,8 @@ impl Readable for Vec<Witness> {
15061505
let mut witnesses = Vec::with_capacity(num_witnesses as usize);
15071506
for _ in 0..num_witnesses {
15081507
let num_elements: u16 = Readable::read(r)?;
1509-
let mut witness_stack: Vec<Vec<u8>> = Vec::with_capacity(num_elements as usize);
1510-
for _ in 0..num_elements {
1511-
let element_len: u16 = Readable::read(r)?;
1512-
let mut element_bytes: Vec<u8> = Vec::with_capacity(element_len as usize);
1513-
for _ in 0..element_len {
1514-
element_bytes.push(Readable::read(r)?);
1515-
}
1516-
witness_stack.push(element_bytes);
1517-
}
1508+
let mut witness_stack = Vec::with_capacity(num_elements as usize);
1509+
for _ in 0..num_elements { witness_stack.push(Readable::read(r)?) }
15181510
witnesses.push(Witness::from_vec(witness_stack));
15191511
}
15201512
Ok(witnesses)
@@ -2965,7 +2957,35 @@ mod tests {
29652957

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

29712991
fn do_encoding_tx_init_rbf(contribution: bool) {

0 commit comments

Comments
 (0)