@@ -1489,16 +1489,15 @@ impl_writeable_msg!(TxSignatures, {
14891489
14901490impl 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
15041503impl Readable for Vec < Witness > {
@@ -1507,15 +1506,8 @@ 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- }
1509+ let mut witness_stack = Vec :: with_capacity ( num_elements as usize ) ;
1510+ for _ in 0 ..num_elements { witness_stack. push ( Readable :: read ( r) ?) }
15191511 witnesses. push ( Witness :: from_vec ( witness_stack) ) ;
15201512 }
15211513 Ok ( witnesses)
@@ -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