@@ -17,7 +17,7 @@ use crate::elem::{
1717 elem_reduced_to_scalar, elem_to_unencoded, scalar_add, scalar_inv_to_mont, scalar_mul,
1818 scalar_sub, scalar_to_unencoded, Elem , Scalar , R ,
1919} ;
20- use crate :: err:: KeyRejected ;
20+ use crate :: err:: KeyRejectedError ;
2121use crate :: jacobian:: exchange:: affine_from_jacobian;
2222use crate :: key:: private:: create_private_key;
2323use crate :: key:: public:: PublicKey ;
@@ -34,7 +34,7 @@ pub struct KeyPair {
3434}
3535
3636impl KeyPair {
37- pub fn new ( private_key : & [ u8 ] ) -> Result < Self , KeyRejected > {
37+ pub fn new ( private_key : & [ u8 ] ) -> Result < Self , KeyRejectedError > {
3838 let mut key_limb = [ 0 ; LIMB_LENGTH ] ;
3939 parse_big_endian ( & mut key_limb, private_key) ?;
4040 let d = Scalar {
@@ -49,12 +49,14 @@ impl KeyPair {
4949 self . pk
5050 }
5151
52- pub fn sign ( & self , message : & [ u8 ] ) -> Result < Signature , KeyRejected > {
52+ pub fn sign ( & self , message : & [ u8 ] ) -> Result < Signature , KeyRejectedError > {
5353 let ctx = libsm:: sm2:: signature:: SigCtx :: new ( ) ;
5454 let pk_point = ctx
5555 . load_pubkey ( self . pk . bytes_less_safe ( ) )
56- . map_err ( |_| KeyRejected :: sign_error ( ) ) ?;
57- let digest = ctx. hash ( "1234567812345678" , & pk_point, message) ;
56+ . map_err ( |e| KeyRejectedError :: LibSmError ( format ! ( "{e}" ) ) ) ?;
57+ let digest = ctx
58+ . hash ( "1234567812345678" , & pk_point, message)
59+ . map_err ( |e| KeyRejectedError :: LibSmError ( format ! ( "{e}" ) ) ) ?;
5860
5961 self . sign_digest ( & mut DefaultRand ( rand:: thread_rng ( ) ) , & digest)
6062 }
@@ -63,12 +65,14 @@ impl KeyPair {
6365 & self ,
6466 rng : & mut dyn SecureRandom ,
6567 message : & [ u8 ] ,
66- ) -> Result < Signature , KeyRejected > {
68+ ) -> Result < Signature , KeyRejectedError > {
6769 let ctx = libsm:: sm2:: signature:: SigCtx :: new ( ) ;
6870 let pk_point = ctx
6971 . load_pubkey ( self . pk . bytes_less_safe ( ) )
70- . map_err ( |_| KeyRejected :: sign_error ( ) ) ?;
71- let digest = ctx. hash ( "1234567812345678" , & pk_point, message) ;
72+ . map_err ( |e| KeyRejectedError :: LibSmError ( format ! ( "{e}" ) ) ) ?;
73+ let digest = ctx
74+ . hash ( "1234567812345678" , & pk_point, message)
75+ . map_err ( |e| KeyRejectedError :: LibSmError ( format ! ( "{e}" ) ) ) ?;
7276
7377 self . sign_digest ( rng, & digest)
7478 }
@@ -77,7 +81,7 @@ impl KeyPair {
7781 & self ,
7882 rng : & mut dyn SecureRandom ,
7983 digest : & [ u8 ] ,
80- ) -> Result < Signature , KeyRejected > {
84+ ) -> Result < Signature , KeyRejectedError > {
8185 for _ in 0 ..100 {
8286 #[ allow( unused_variables) ]
8387 let rk = create_private_key ( rng) ?;
@@ -153,7 +157,7 @@ impl KeyPair {
153157
154158 return Ok ( Signature :: from_scalars ( r, s) ) ;
155159 }
156- Err ( KeyRejected :: sign_digest_error ( ) )
160+ Err ( KeyRejectedError :: SignDigestFailed )
157161 }
158162}
159163
@@ -171,24 +175,31 @@ mod tests {
171175
172176 let sig = key_pair. sign ( test_word) . unwrap ( ) ;
173177
178+ println ! (
179+ "pk: {}, r: {}, s: {}" ,
180+ hex:: encode( key_pair. pk. bytes_less_safe( ) ) ,
181+ hex:: encode( & sig. r( ) ) ,
182+ hex:: encode( & sig. s( ) )
183+ ) ;
184+
174185 sig. verify ( & key_pair. public_key ( ) , test_word) . unwrap ( )
175186 }
176187
177188 #[ test]
178189 fn free_input_verify ( ) {
179- let msg = b"abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd " ;
190+ let msg = b"hello world " ;
180191
181192 let pk = PublicKey :: new (
182- & hex:: decode ( "0259e738b6e8a699ad38011a85fc59f35a83ed6c287d944e8401c9b6e8793d0a " )
193+ & hex:: decode ( "B0E4E03D589C97375BBD6EA49483DD976FB88BBB0C07C72827CD8808B5794D5E " )
183194 . unwrap ( ) ,
184- & hex:: decode ( "71c19ebd9a5750eb4ca1bb68f9b42057c5f25666385197f44544f97e2f4472c1 " )
195+ & hex:: decode ( "2881721E8D9BF56E81FC1E0C325F4FFC052E67FC3A31510D66E7B8749B93B636 " )
185196 . unwrap ( ) ,
186197 ) ;
187198
188199 let sig = Signature :: new (
189- & hex:: decode ( "b027c1d33771a1f693f07dec8d952b7c72afeff08fe3c05358610edbe8a1953e " )
200+ & hex:: decode ( "45FACCE4BDE9B8A34D43E6060210928802878DDD86A6EAE2938313A165F9F100 " )
190201 . unwrap ( ) ,
191- & hex:: decode ( "99e911d3dc93381ba40c87e5c577ccbb855ea153ce25ef5022618c0af3c3bff3 " )
202+ & hex:: decode ( "D9656DA4EC90FB2EFA399C0ECC6301882CA3301925281C58C2E29D9FD6F9C221 " )
192203 . unwrap ( ) ,
193204 )
194205 . unwrap ( ) ;
@@ -231,7 +242,7 @@ mod sign_bench {
231242 fn libsm_sign_bench ( bench : & mut test:: Bencher ) {
232243 let test_word = b"hello world" ;
233244 let ctx = libsm:: sm2:: signature:: SigCtx :: new ( ) ;
234- let ( pk, sk) = ctx. new_keypair ( ) ;
245+ let ( pk, sk) = ctx. new_keypair ( ) . unwrap ( ) ;
235246
236247 bench. iter ( || {
237248 let _ = ctx. sign ( test_word, & sk, & pk) ;
@@ -265,8 +276,8 @@ mod sign_bench {
265276 fn libsm_verify_bench ( bench : & mut test:: Bencher ) {
266277 let test_word = b"hello world" ;
267278 let ctx = libsm:: sm2:: signature:: SigCtx :: new ( ) ;
268- let ( pk, sk) = ctx. new_keypair ( ) ;
269- let sig = ctx. sign ( test_word, & sk, & pk) ;
279+ let ( pk, sk) = ctx. new_keypair ( ) . unwrap ( ) ;
280+ let sig = ctx. sign ( test_word, & sk, & pk) . unwrap ( ) ;
270281
271282 bench. iter ( || {
272283 let _ = ctx. verify ( test_word, & pk, & sig) ;
0 commit comments