@@ -1488,16 +1488,15 @@ impl_writeable_msg!(TxSignatures, {
14881488
14891489impl 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
15031502impl 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