@@ -737,23 +737,20 @@ impl Secp256k1 {
737
737
let blind_vec = map_vec ! ( blind_vec, |p| p. 0 . as_ptr( ) ) ;
738
738
let n_bits = 64 ;
739
739
740
- let ( extra_data_len, extra_data) = match extra_data_in {
740
+ let ( extra_data_len, extra_data) = match extra_data_in. as_ref ( ) {
741
741
Some ( d) => ( d. len ( ) , d. as_ptr ( ) ) ,
742
742
None => ( 0 , ptr:: null ( ) ) ,
743
743
} ;
744
744
745
- let message_out = match message. clone ( ) {
746
- Some ( mut m) => {
745
+ let mut message = message;
746
+ let message_ptr = match message. as_mut ( ) {
747
+ Some ( m) => {
747
748
while m. len ( ) < constants:: BULLET_PROOF_MSG_SIZE {
748
749
m. push ( 0u8 ) ;
749
750
}
750
751
m. truncate ( constants:: BULLET_PROOF_MSG_SIZE ) ;
751
- m
752
- }
753
- None => ProofMessage :: from_bytes ( & [ 0u8 ; constants:: BULLET_PROOF_MSG_SIZE ] ) ,
754
- } ;
755
- let message_ptr = match message {
756
- Some ( _) => message_out. as_ptr ( ) ,
752
+ m. as_ptr ( )
753
+ } ,
757
754
None => ptr:: null ( ) ,
758
755
} ;
759
756
@@ -826,23 +823,20 @@ impl Secp256k1 {
826
823
let blind_vec = map_vec ! ( blind_vec, |p| p. 0 . as_ptr( ) ) ;
827
824
let n_bits = 64 ;
828
825
829
- let ( extra_data_len, extra_data) = match extra_data_in {
826
+ let ( extra_data_len, extra_data) = match extra_data_in. as_ref ( ) {
830
827
Some ( d) => ( d. len ( ) , d. as_ptr ( ) ) ,
831
828
None => ( 0 , ptr:: null ( ) ) ,
832
829
} ;
833
830
834
- let message_out = match message. clone ( ) {
835
- Some ( mut m) => {
831
+ let mut message = message;
832
+ let message_ptr = match message. as_mut ( ) {
833
+ Some ( m) => {
836
834
while m. len ( ) < constants:: BULLET_PROOF_MSG_SIZE {
837
835
m. push ( 0u8 ) ;
838
836
}
839
837
m. truncate ( constants:: BULLET_PROOF_MSG_SIZE ) ;
840
- m
841
- }
842
- None => ProofMessage :: from_bytes ( & [ 0u8 ; constants:: BULLET_PROOF_MSG_SIZE ] ) ,
843
- } ;
844
- let message_ptr = match message {
845
- Some ( _) => message_out. as_ptr ( ) ,
838
+ m. as_ptr ( )
839
+ } ,
846
840
None => ptr:: null ( ) ,
847
841
} ;
848
842
@@ -861,10 +855,12 @@ impl Secp256k1 {
861
855
t_two_ptr = is_zero_pubkey ! ( retnone => t_two) ;
862
856
} ;
863
857
864
- let commits = if commits. len ( ) > 0 {
865
- let commit_vec = map_vec ! ( commits, |c| self . commit_parse( c. 0 ) . unwrap( ) ) ;
866
- let commit_vec = map_vec ! ( commit_vec, |c| c. as_ptr( ) ) ;
867
- commit_vec. as_ptr ( )
858
+ let commit_vec;
859
+ let commit_ptr_vec;
860
+ let commit_ptr_vec_ptr = if commits. len ( ) > 0 {
861
+ commit_vec = map_vec ! ( commits, |c| self . commit_parse( c. 0 ) . unwrap( ) ) ;
862
+ commit_ptr_vec = map_vec ! ( commit_vec, |c| c. as_ptr( ) ) ;
863
+ commit_ptr_vec. as_ptr ( )
868
864
} else {
869
865
ptr:: null ( )
870
866
} ;
@@ -896,7 +892,7 @@ impl Secp256k1 {
896
892
& value,
897
893
ptr:: null ( ) , // min_values: NULL for all-zeroes minimum values to prove ranges above
898
894
blind_vec. as_ptr ( ) ,
899
- commits ,
895
+ commit_ptr_vec_ptr ,
900
896
1 ,
901
897
constants:: GENERATOR_H . as_ptr ( ) ,
902
898
n_bits as size_t ,
@@ -931,8 +927,12 @@ impl Secp256k1 {
931
927
) -> Result < ProofRange , Error > {
932
928
let n_bits = 64 ;
933
929
930
+ let extra_data;
934
931
let ( extra_data_len, extra_data) = match extra_data_in {
935
- Some ( d) => ( d. len ( ) , d. as_ptr ( ) ) ,
932
+ Some ( d) => {
933
+ extra_data = d;
934
+ ( extra_data. len ( ) , extra_data. as_ptr ( ) )
935
+ } ,
936
936
None => ( 0 , ptr:: null ( ) ) ,
937
937
} ;
938
938
@@ -1006,13 +1006,13 @@ impl Secp256k1 {
1006
1006
} ;
1007
1007
1008
1008
// converting vec of vecs to expected pointer
1009
- let ( extra_data_vec, extra_data_lengths) = {
1010
- if extra_data_in. is_some ( ) {
1011
- let ed = extra_data_in. unwrap ( ) ;
1009
+ let ( extra_data_vec, extra_data_lengths) = match extra_data_in. as_ref ( ) {
1010
+ Some ( ed) => {
1012
1011
let extra_data_vec = map_vec ! ( ed, |d| d. as_ptr( ) ) ;
1013
1012
let extra_data_lengths = map_vec ! [ ed, |d| d. len( ) ] ;
1014
1013
( extra_data_vec, extra_data_lengths)
1015
- } else {
1014
+ }
1015
+ None => {
1016
1016
let extra_data_vec = vec ! [ ptr:: null( ) ; proof_vec. len( ) ] ;
1017
1017
let extra_data_lengths = vec ! [ 0 ; proof_vec. len( ) ] ;
1018
1018
( extra_data_vec, extra_data_lengths)
@@ -1059,7 +1059,7 @@ impl Secp256k1 {
1059
1059
extra_data_in : Option < Vec < u8 > > ,
1060
1060
proof : RangeProof ,
1061
1061
) -> Result < ProofInfo , Error > {
1062
- let ( extra_data_len, extra_data) = match extra_data_in {
1062
+ let ( extra_data_len, extra_data) = match extra_data_in. as_ref ( ) {
1063
1063
Some ( d) => ( d. len ( ) , d. as_ptr ( ) ) ,
1064
1064
None => ( 0 , ptr:: null ( ) ) ,
1065
1065
} ;
@@ -1349,7 +1349,7 @@ mod tests {
1349
1349
}
1350
1350
1351
1351
#[ test]
1352
- fn test_bullet_proof ( ) {
1352
+ fn test_bullet_proof_single ( ) {
1353
1353
// Test Bulletproofs without message
1354
1354
let secp = Secp256k1 :: with_caps ( ContextFlag :: Commit ) ;
1355
1355
let blinding = SecretKey :: new ( & secp, & mut thread_rng ( ) ) ;
0 commit comments